A. Desain Perangkat Lunak Dan Rekayasa Perangkat Lunak
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 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.
B. 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 :
- desain harus mengimplementasikan keseluruhan persyaratan eksplisit yang dibebankan dalam model analisis, dan harus mengakomodasikan semua persyaratan implisit yang diinginkan pelanggan.
- Desain harus menjadi panduan yang dapat dibaca, dapat dipahami bagi mereka yang menghasilkan kode dan yang menguji serta memelihara perangkat lunak.
-
Desain harus memberikan suatu gambaran lengkap mengenai perangkat
lunak, yang menekankan data, dan domain perilaku dari perspektif
implementasi.
Kriteria teknis untuk desain yang baik :
- Desain harus memperlihatkan suatu organisasi yang dengan baik menggunakan kontrol di antara elemen-elemen perangkat lunak.
- Desain harus modular : yaitu bahwa perangkat lunak harus dipartisi secara logika ke dalam elemen-elemen yang melakukan fungsi dan subfungsi khusus.
- Desain harus berisi data dan abstraksi prosedural.
- Desain harus membawa ke arah modul (misal subrutin atau prosedur) yang memperlihatkan karakteristik fungsional independent.
- Desain harus mengarah kepada interface yang mengurangi kompleksitas hubungan antara modul-modul dan dengan lingkunga eksternal.
- 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 :
Banyak metode desain yang tumbuh dari kerja tersebut, sedang diaplikasi pada industri. Setiap metode tersebut mempunyai sejumlah karakteristik umum :
- mekanisme penerjemahan suatu model analisis ke dalam representasi desain.
- Notasi untuk merepresentasikan komponen-komponen fungsional dan interface-nya.
- Heuristik bagi penyaringan dan partisi
- Pedoman bagi penilaian kualitas
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.
- Proses desain tidak boleh menderita karena “tunnel vision”
- Desain harus dapat ditelusuri sampai model analisis.
- Desain tidak boleh berulang.
- Desain harus “meminimalkan kesenjangan intelektual” di antara perangkat lunak dan masalah yang ada di dunia nyata.
- Desain harus mengungkap keseragaman dan integrasi.
- Desain harus terstruktur untuk mengakomodasi perubahan.
- Desain harus terstruktur untuk berdegradasi dengan baik, bahkan pada saat data dan event-event menyimpang, atau menghadapi kondisi operasi.
- Desain bukanlah pengkodean, dan pengkodean bukanlah desain.
- Desain harus dinilai kualitasnya pada saat desain dibuat, bukan setelah jadi.
- Desain harus dikaji untuk meminimalkan kesalahan-kesalahan konseptual (semantik).
PROSES DESAIN
C. 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” .
“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.
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.
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.
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.
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.
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.
Prinsip penyembunyian informasi menyatakan bahwa bahwa modul ditandai dengan keputusan desain tersembunyi dari semua desain lain.
D. Desain Modular Afektif
Modular design àmereduksi komplesitas masalah, menyediakan fasilitas untuk melakukan perubahan (dalam hal pemeliharaan ), dan memudahkan implementasi dengan pengembangan paralel dari bagian-bagian yang berbeda dalam suatu sistem
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.
E. Heuristik Design Bagi Modularitas yang Efektif
- Evaluasi “iterasi pertama” dari struktur program untuk mengurangi perangkaian dan meningkatkan kohesi.
- Usahakan meminimalkan struktur dengan fan-out yang tinggi; usahakan untuk melakukan fan-in pada saat kedalaman (depth) bertambah.
- Jagalah supaya lingkup efek dari suatu model ada dalam lingkup control.
- Evaluasi interface modul untuk mengurangi kompleksitas dan redundansi.
- Tetapkan modul-modul yang fungsinya dapat diprediksi, tetapi hindari modul yang terlalu restriktif.
- Usahakan modul-modul “entri kontrol" dengan menghindari “hubungan patalogis”
- Kemaslah software berdasarkan batasan desain dan persyaratan probabilitas.
F. Model Desain
Data design mengubah informasi menjadi struktur data untuk mengimplementasikan software. Data design dibuat berdasarkan data dictionary dan ERD.
- Architectural design mendefinisikan relasi antara elemen-elemen struktural utama, pola desain yang digunakan untuk mencapai kebutuhan yang ditentukan untuk sistem dan batasan-batasan yang mempengaruhi bagaimana desain arsitektural ini diterapkan. Desain ini berdasarkan spesifikasi sistem, model analisis (bagian DFD) dan interaksi antara subsistem.
- Interface design menjelaskan bagaimana software berkomunikasi dalam dirinya, dengan sistem yang bertukar informasi dengannya, dan dengan manusia yang menggunakannya. DFD diperlukan untuk desain ini.
- Component-level design menghasilkan deskripsi prosedur software.
G. DOKUMENTASI DESAIN
Outline spesifikasi desain :
I. Ruang Lingkup
A. Sasaran Sistem
B. Persyaratan utama software
C. Batasan-batasan dan pembatasan desain
II. Desain Data
A. Obyek data dan struktur data resultan
B. Struktur file dan database
1. Struktur file eksternal
a. struktur logis
b. deskripsi record logis
c. metode akses
2. data global
III. Desain Arsitektural3. file dan referensi lintas data
A. Kajian data dan aliran controlIV. Desain Interface
B. Struktur program yang diperoleh
A. Spesifikasi interface manusia-mesin
B. Aturan desain interface manusia-mesin
C. Desain interface eksternal
V. Desain Prosedural1. Interface untuk data eksternal
2. Interface untuk sistem atau peralatan eksternal
Untuk masing-masing modul :
A. Naratif pemrosesanVI. Persyaratan Lintas-Referensi
B. Deskripsi Interface
C. Deskripsi bahasa (atau lainnya) desain
D. Modul-modul yang digunakan
E. Struktur data internal
F. Keterangan/larangan/pembatasan
VII. Ketetentuan pengujian
1. Panduan pengujianVIII. Catatan Khusus
2. Strategi integrasi
3. Pertimbangan Khusus
IX. Lampiran