Desain adalah langkah pertama
dalam fase pengembangan bagi setiap produk atau sistem yang direkayasa. Desain
dapat didefinisikan berbagai “proses aplikasi berbagai teknik dan prinsip bagi
tujuan pendefinisian suatu perangkat, suatu proses atau sistem dalam detail
yang memadai untuk memungkinkan realisasi fisiknya”[TAY59]. Tujuan desainer
adalah untuk menghasilkan suatu model atau representasi dari entitas yang
kemudian akan dibangun.
Desain Perangkat Lunak Dan
Rekayasa Perangkat Lunak
Desain perangkat lunak berada
pada inti teknik dari proses rekayasa perangkat lunak dan diaplikasikan tanpa
memperhatikan model proses perangkat lunak yang digunakan. Begitu persyaratan
perangkat lunak telah mulai dianalisis dan ditentukan, maka desain perangkat
lunak menjadi yang pertama dari tiga aktivitas teknik – desain, pembuatan kode
dan pengujian – yang diperlukan untuk membangun dan menguji perangkat lunak.
Persyaratan perangkat lunak, yang dimanifestasi oleh data, fungsional, dan
model-model perilaku, mengisi langkah desain. Dengan menggunakan satu dari
sejumlah metode desain, langkah desain menghasilkan
a. desain data
b. desain arsitektur
c. desain interface
d. desain prosedural
Selama desain, kita dapat membuat
keputusan yang akan mempengaruhi kesuksesan konstruksi perangkat lunak dan
kemudahan maintenance-nya. Desain sangat penting karena dapat menentukan
kualitas dari suatu perangkat lunak.
Proses Desain
Desain perangkat lunak adalah
suatu proses interaktif yang melaluinya persyaratan diterjemahkan ke dalam
suatu “cetak biru” untuk membangun perangkat lunak. Cetak biru menggambarkan
suatu pandangan menyeluruh perangkat lunak, yaitu bahwa desain dihadirkan pada
tingkat abstraksi yang tinggi (dapat secara lanngsung ditelusuri sampai data
spesifik, fungsional, dan persyaratan behavioral)
1. Desain dan kualitas perangkat
lunak
McGlaughlin mengusulkan 3
karakteristik yang berfungsi sebagai pedoman bagi evaluasi suatu desain yang
baik :
a. desain harus
mengimplementasikan keseluruhan persyaratan eksplisit yang dibebankan dalam
model analisis, dan harus mengakomodasikan semua persyaratan implisit yang
diinginkan pelanggan.
b. Desain harus menjadi panduan
yang dapat dibaca, dapat dipahami bagi mereka yang menghasilkan kode dan yang
menguji serta memelihara perangkat lunak.
c. Desain harus memberikan suatu
gambaran lengkap mengenai perangkat lunak, yang menekankan data, dan domain
perilaku dari perspektif implementasi.
Kriteria teknis untuk desain yang
baik :
a. Desain harus memperlihatkan
suatu organisasi yang dengan baik menggunakan kontrol di antara elemen-elemen
perangkat lunak.
b. Desain harus modular : yaitu
bahwa perangkat lunak harus dipartisi secara logika ke dalam elemen-elemen yang
melakukan fungsi dan subfungsi khusus.
c. Desain harus berisi data dan
abstraksi prosedural.
d. Desain harus membawa ke arah
modul (misal subrutin atau prosedur) yang memperlihatkan karakteristik
fungsional independent.
e. Desain harus mengarah kepada
interface yang mengurangi kompleksitas hubungan antara modul-modul dan dengan
lingkunga eksternal.
f. Desain harus didapat dengan
menggunakan metode berulang yang dikendalikan oleh informasi yang diperoleh
selama analisis persyaratan perangkat lunak.
2. Evolusi desain perangkat lunak
Merupakan suatu proses kontinu
yang terus berlangsung selama tiga dekade. Kerja desain awal dikonsentrasikan
pada kriteria untuk pengembangan program moduler dan metode-metode untuk
menyaring arsitektur perangkat lunak dengan cara top-down. Aspek-aspek prosedural
dari definisi desain yang tercakup dalam suatu filosofi disebut pemrograman
terstruktur. Usaha selanjutnya mengusulkan metode-metode translasi aliran data
atau struktur data ke dalam definisi desain. Pendekatan desain yang lebih baru
mengusulkan suatu pendekatan orientasi obyek ke derivasi desain.
Banyak metode desain yang tumbuh
dari kerja tersebut, sedang diaplikasi pada industri. Setiap metode tersebut
mempunyai sejumlah karakteristik umum :
a. mekanisme penerjemahan suatu
model analisis ke dalam representasi desain.
b. Notasi untuk merepresentasikan
komponen-komponen fungsional dan interface-nya.
c. Heuristik bagi penyaringan dan
partisi
d. Pedoman bagi penilaian
kualitas
Prinsip desain
Desain perangkat lunak berupa
model dan proses. Proses desain adalah serangkaian langkah iteratif yang
memungkinkan desainer menggambarkan semua aspek perangkat lunak yang dibangun.
Model desain adalah ekivalen rencana arsitek untuk sebuah “rumah”, yang dimulai
dengan menyajikan totalitas dari hal yang akan dibangun. Prinsip desain dasar
memungkinkan perekayasa perangkat lunak untuk mengendalikan proses desain.
a. Proses desain tidak boleh
menderita karena “tunnel vision”
b. Desain harus dapat ditelusuri
sampai model analisis.
c. Desain tidak boleh berulang.
d. Desain harus “meminimalkan
kesenjangan intelektual” di antara perangkat lunak dan masalah yang ada di
dunia nyata.
e. Desain harus mengungkap
keseragaman dan integrasi.
f. Desain harus terstruktur untuk
mengakomodasi perubahan.
g. Desain harus terstruktur untuk
berdegradasi dengan baik, bahkan pada saat data dan event-event menyimpang,
atau menghadapi kondisi operasi.
h. Desain bukanlah pengkodean,
dan pengkodean bukanlah desain.
i. Desain harus dinilai
kualitasnya pada saat desain dibuat, bukan setelah jadi.
j. Desain harus dikaji untuk
meminimalkan kesalahan-kesalahan konseptual (semantik).
Konsep-konsep desain
1. Abstraksi
Abstraksi memungkinkan desainer
menentukan prosedur dan data, dan masih menekan detail tingkat rendah.
Terdapat 3 macam bentuk abstraksi,
yaitu :
a. Abstraksi prosedural.
Merupakan urutan instruksi yang
diberi nama yang mempunyai fungsi tertentu dan terbatas.
b. Abstraksi data.
Kumpulan data yang bernama yang
menggambarkan obyek data.
c. Abstraksi kontrol.
Mengimplikasikan suatu mekanisme
kontrol program tanpa menentukan detail-detail internal
2. Penyaringan.
Penyaringan stepwise (dengan
serangkaian langkah) adalah strategi desain top-down yang diusulkan oleh
Wiklaus Wirth. Kajian dari konsep tersebut adalah
“Pada setiap langkah
(penyaringan), satu atau beberapa instruksi dari program yang diberikan
didekomposisi ke dalam instruksi-instruksi yang lebih detail. Dekomposisi
berurutan atau penyaringan spesifikasi berhenti bila semua instruksi
diekspresikan dalam bentuk bahasa pemrograman atau komputer yang mendasar. Jika
tugas-tugas disaring, maka data harus disaring juga, didekomposisi atau
distruktur, dan adalah wajar untuk menyaring program dan spesifikasi data
secara paralel” .
Abstraksi dan penyaringan adalah
konsep kompementer. Kedua konsep tersebut membantu desainer dalam menciptakan
suatu model desain lengkap jika desain berkembang.
3. Modularitas
Modularitas merupakan atribut
tunggal dari perangkat lunak yang memungkinkan sebuah program untuk dikelola
secara intelektual.
Meyer menyebutkan 5 kriteria yang
memungkinkan kita untuk mengevaluasi suatu metode desain dengan merujuk pada
kemampuannya untuk menentukan sistem modular yang efektif.
a. Dekomposisi modular.
b. Komposabilitas modular.
c. Kemampuan pemahaman modular.
d. Kontinuitas modular.
e. Proteksi modular.
4. Arsitektur perangkat lunak
Arsitektur perangkat lunak
mencakup “struktur keseluruhan perangkat lunak dan cara dimana struktur
memberikan integrasi konseptual bagi suatu sistem”.
Shaw dan Garlan menjelaskan
sekumpulan properti yang seharusnya ditetapkan sebagai bagian dari desain
arsitektural :
a. Properti struktural.
Menentukan komponen suatu sistem
dan cara dimana komponen-komponen tersebut dikemas dan berinteraksi satu dengan
yang lain.
b. Properti ekstra-fungsional.
Menekankan pada bagaimana
arsitektur desain memenuhi persyaratan kinerja, kapasitas, reliabilitas, keamanan,
adaptibilitas, dan karakteristik sistem yang lain.
c. Keluarga dari sistem yang
berhubungan.
Desain harus memiliki kemampuan
untuk memakai lagi blok bangunan arsitektural tersebut.
5. Hirarki Kontrol
Hirarki kontrol, disebut juga
struktur program merepresentasikan organisasi komponen program serta
mengimplikasikan suatu hirarki kontrol. Hirarki kontrol tidak mengimplikasikan
aspek prosedural dari perangkat lunak, seperti urutan proses, kejadian/urutan
dari keputusan, atau pengulangan operasi.
6. Partisi struktural
Struktur progam harus dipartisi
baik secara horizontal maupun vertikal.
Partisi horizontal menentukan
cabang-cabang terpisah dari hirarki modular untuk setiap fungsi program mayor.
Keuntungannya :
a. menghasilkan perangkat lunak
yang lebih mudah diuji.
b. Membawa kepada perangkat lunak
yang lebih mudah dipelihara.
c. Menghasilkan penyebaran efek
samping yang lebih sedikit.
d. Menghasilkan suatu perangkat
lunak yang lebih mudah untuk diperluas.
Partisi vertikal menyatakan bahwa
kontrol dan kerja harus didistribusikan secara top-down dalam arsitektur
program.
7. Struktur data
Struktur data adalah representasi
dari hubungan logis antara elemen-elemen data individual.
8. Prosedur perangkat lunak
Prosedur perangkat lunak berfokus
pada detail-detail pemrosesan dari masing-masing modul secara individual.
Prosedur harus memberikan spesifikasi yang teliti terhadap pemrosesan, mencakup
urutan event, poin-poin keputusan nyata, operasi repetitif, dan organisasi
struktur data.
9. Penyembunyian informasi
Prinsip penyembunyian informasi
menyatakan bahwa bahwa modul ditandai dengan keputusan desain tersembunyi dari
semua desain lain.
Desain Modular Afektif
1. Independensi fungsional
Merupakan hasil pertumbuhan
langsung dari modularitas dan konsep abstraksi dan penyembunyian informasi.
Independensi fungsional dicapai
dengan mengembangkan modul dengan fungsi “single-minded” dan suatu “aversi” ke
interaksi eksesif dengan modul yang lain.
2. Kohesi
Kohesi adalah suatu ekstensi
natural dari konsep penyembunyian informasi. Modul kohesi melakukan suatu tugas
tunggal pada suatu prosedur perangkat lunak yang memerlukan sedikit interaksi
dengan prosedur yang sedang dilakukan di bagian lain dari suatu program.
3. Perangkaian
Perangkaian adalah pengukuran
interkoneksi diantara modul-modul pada sebuah struktur progam. Perangkaian
tergantung pada kompleksitas interface diantara modul-modul, titik dimana entri
atau referensi dibuat untuk sebuah modul dan data yang dilewatkan pada
interface tersebut.
Sumber : https://rplhlw117a04.wordpress.com/2015/11/16/konsep-desain/
Sumber : https://rplhlw117a04.wordpress.com/2015/11/16/konsep-desain/
Komentar
Posting Komentar