Pertemuan 5 Konsep dan Prinsip Desain TIK : Menjelaskan konsep, prinsip dan tahapan dalam perancangan software
1. Analisis dan Desain Model
Gambar 4.1 Hubungan antara Analysis Sistem dan Design Model 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 : desain data desain arsitektur desain interface 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. 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 langsung ditelusuri sampai data spesifik, fungsional, dan persyaratan behavioral) 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 structural 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. Componentlevel design menghasilkan deskripsi prosedur software. 2. Desain Arsitektur Software
Gambar 4.2 Aktivitas dan Perancangan Suatu sistem, entah itu besar atau tidak, dibangun dari sub-sub sistem yang lebih kecil. Sub-sub sistem ini memiliki fungsi sendiri-sendiri. Proses merancang untuk menentukan sub-sub sistem dan membangun kerangka kerja untuk kendali dan komunikasi antar sub sistem disebut design arsitektural. Proses meranca ng ini menghasilkan arsitektur software atau arsitektur sistem. Desain arsitektur adalah aktifitas desain yang pertama dalam pembangunan software seperti yang digambarkan pada Gambar 4.2. Desain arsitektur memberikan 3 keuntungan yaitu: 1. arsitektur software menjadi media komunikasi dan diskusi karena mudah dipahami 2. memberi kemudahan dalam melakukan analisis terhadap software yang akan dibangun 3. arsitektur- nya bisa digunakan lagi untuk sistem selanjutnya (reusable) Tiap perancang sistem memiliki kemampuan dan pengetahuan yang berbeda dalam merancang arsitektural. Aktifitas-aktifitas berikut adalah aktifitas dalam merancang dan aktifitas ini tidak dikerjakan satu persatu berurutan, tapi bisa dilakukan bersamaan, yang meliputi :
1. Menyusun sistem (system structuring) : sistem disusun menjadi beberapa subsistem utama, dimana subsistem adalah unit bagian software yang berdiri sendiri. 2. Membuat model kendali (Control modelling) : berkaitan dengan hubungan antara bagian dalam sistem. 3. Membuat pembagian sistem menjadi modul- modul (modular decomposition): membagi sub-sub sistem menjadi modul- modul. Untuk menghindari kesalahan dalam pemahaman terhadap istilah modul dan sub sistem, perlu diketahui bahwa sub sistem adalah bagian dari sistem yang bias berdiri sendiri dan tidak bergantung pada layanan sub sistem lain. Sub system terdiri dari beberapa modul dan dilengkapi interface untuk berkomunikasi / bertukar data dengan sub sistem lain. 3. Struktur Program dan Data
Gambar 4.3 Terminologi Struktur Terminologi struktur dapat didefinisikan sebgai berikut: 1. Program structure menampilkan / menyajikan organisasi ( seringkali organisasi hirarki ) ari komponen-komponen program ( modul- modul ) dan mengandung arti hirarki dari kontrol Program 2. Notasi yang digunakan adalah diagram tree. Biasanya dinamakan structure chart Sedangkan struktur data menggambarkan relasi logikal antara sejumlah elemen, Contoh: type G = array [1..100] of integer; ... ... Procedure S ( var T : G ; n : integer ; sum : integer ); Var I : integer; begin sum := 0; for I:=1 to n do sum := sum + t[i]; end; 5. Software Prosedur
Difokuskan pada detail pemrosesan dari setiap modul secara individu. Prosedur harus mengandung spesifikasi yang benar / tepat dari pemrosesan, termasuk : sequence of events, decision points, repetitive operations, dan struktur data. Software dibagi kedalam nama-nama yang terpisah dan elemen-elemen yang dapat dipanggil, yang disebut dengan modul, yang termasuk kedalam memenuhi syarat-syarat permasalahan Misalkan : C(x) = fungsi kompleksitas dari suatu masalah E(x) = fungsi usaha/waktu yang diperlukan untuk memecahkan suatu masalah P1 ,P2 = masalah 1, masalah 2 Jika : C(P1) > C(P2) maka : E(P1) > E(P2) Berdasarkan penelitian : 1. C ( P1 + P2 ) > C ( P1 ) + C ( P2 ) 2. E ( P1 + P2 ) > E ( P1 ) + E ( P2 )
Gambar 4.4 Prosedur dengan sebuah modul Modular design digunakan untuk 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. Adapun type Module meliputi : Abstraksi dan penyembunyian informasi dipakai untuk mendefinisikan modulmodul di dalam lingkungan software architecture. Di dalam structure software, suatu modul mungkin dikategorikan sebagai berikut : 1. Sequential module :dieksekusi tanpa interupsi yang dilakukan software aplikasi 2. Incremental module:dapat diinterupsi oleh program aplikasi dan kemudian kembali ke titik semula setelah interupsi selesai 3. Parallel module:dieksekusi secara simultan dengan modul lain dalam lingkungan Concurrent multiprocessor.
Konsep functional independence berkembang dari modularitas dan konsep abstraksi serta information hiding. Independence diukur dengan menggunakan 2 kriteria ualitatif, yaitu 1. Cohesion 2. Coupling Modularitas yang efektif pada heuristik desain perlu diperhatikan : a. Evaluasi “iterasi pertama” dari struktur program untuk mengurangi perangkaian dan meningkatkan kohesi. b. Usahakan meminimalkan struktur dengan fan-out yang tinggi; usahakan untuk melakukan fan- in pada saat kedalaman (depth) bertambah. c. Jagalah supaya lingkup efek dari suatu model ada dalam lingkup control. d. Evaluasi interface modul untuk mengurangi kompleksitas dan redundansi. e. Tetapkan modul- modul yang fungsinya dapat diprediksi, tetapi hindari modul yang terlalu restriktif. f. Usahakan modul- modul “entri kontrol" dengan menghindari “hubungan patalogis” g. Kemaslah software berdasarkan batasan desain dan persyaratan probabilitas.
Daftar Pustaka 1. Presman, Rouger S, Software Enigineering, 4th Edition, Mc. Graw Hill,1997. 2. Sommerville,Ian, Software Engineering, 7th Edition, Addison Wesley, 2004. 3. Kendall & Kendall, Systems Analysis and Design, 6th Edition, Prentice Hall,2006.