Prinsip Fundamental dalam Desain Perangkat Lunak Introduksi Prinsip Desain
SEN-261 : Rekayasa Perangkat Lunak Tazeen Muzammil
Desain Perangkat Lunak
Definisi umum desain
“… suatu proses menerapkan berbagai teknik dan prinsip dengan tujuan menentukan suatu perangkat, proses atau sistem dalam tingkat kejelasan yang cukup untuk dapat menghasilkan produk akhir.”
Tujuan: Untuk menghasilkan suatu model atau representasi yang nantinya akan dibangun
Disiplin ilmu terkait: Desain data Desain arsitektur Desain antar muka Desain komponen
Kualitas desain dan perangkat lunak Kualitas Dalam RPL, desain adalah titik pengembangan kualitas. Desain memberikan suatu representasi perangkat lunak yang dapat ditentukan kualitasnya. Desain adalah satu-satunya cara untuk menerjemahkan kebutuhan pelanggan menjadi suatu perangkat lunak atau sistem. Desain perangkat lunak merupakan fondasi untuk setiap tahap pada rekayasa perangkat lunak.
Karakteristik suatu desain yang baik Desain yang dikembangkan mencakup semua kebutuhan eksplisit hasil analisis, dan mengakomodir semua kebutuhan implisit pelanggan. Desain harus dapat dibaca dengan mudah, sehingga menjadi suatu panduan bagi pembuat kode maupun penguji dan pendukung aplikasi. Desain memberikan gambaran utuh mengenai perangkat lunak yang dirancang, tercakup dalamnya adalah data, fungsi maupun perilaku perangkat lunak dilihat dari sudut pandang implementasi.
Panduan umum desain Suatu desain sepatutnya menggunakan suatu struktur arsitektur yang 1) telah dikembangkan dengan pola desain yang dikenal secara umum, 2) terdiri atas komponen yang sesuai dengan karakteristik suatu desain yang baik 3) dan dapat diterapkan dalam waktu yang cepat. Dibagi secara jelas ke dalam komponen-komponen yang hanya menjalankan suatu tugas atau sub-tugas tertentu. Menghasilkan suatu antar muka yang mengurangi kompleksitas antar modul dan lingkungan eksternal. Dihasilkan dengan suatu metode yang dapat diuji kembali, dan didorong oleh informasi yang telah terkumpul pada tahap analisa kebutuhan. Menghasilkan struktur data yang sesuai untuk diterapkan.
Prinsip Desain 1. Proses desain harus dilakukan untuk mengakomodir semua 2. 3. 4. 5. 6. 7.
tujuan, bukan terpaku atas suatu tujuan sempit Desain dapat ditelusuri kembali oleh analisis model Desain tidak mengulang proses yang telah dilakukan Desain menunjukkan keseragaman dan integritas Desain dirancang untuk mengakomodir perubahan Desain bukanlah pemrograman dan pemrograman bukanlah desain Desain harus diulas agar meminimalisir kesalahan logika
Model Desain Perangkat Lunak Model fungsional
Model informasi Desain data
Model perilaku
Kebutuhan lainnya
Desain arsitektural Desain
Desain antar Pemrograman muka
Modul program
Desain tingkat Prosedur/Komponen
Perangkat lunak terintegrasi Pengujian & tervalidasi
Desain data Aktivitas utama pada tahap desain data ialah menentukan representasi logis entitas data (tipe data) yang telah teridentifikasi pada tahap analisis kebutuhan dan spesifikasi. Pemilihan representasi dapat berlandaskan atas analisis algoritma untuk mendapatkan perilaku yang paling efisien, atau berdasarkan operasi yang dilakukan pada entitas tersebut.
Desain data mengubah model informasi yang diciptakan pada tahap analisis menjadi suatu struktur data yang menjadi kebutuhan perangkat lunak. Entitas dan hubungan data didefinisikan secara umum dengan ERD, dan secara spesifik dengan Kamus Data, yang selanjutnya menjadi landasan dalam aktivitas desain selanjutnya
Desain arsitektural Bertujuan untuk mengembangkan suatu struktur program modular yang merepresentasikan hubungan antar tiap modul Diperoleh dari spesifikasi sistem, analisis model, dan interaksi sub-sistem yang telah didefinisikan pada tahap analisis model.
Desain Antar Muka Menggabungkan program dan struktur data dengan menentukan suatu antar muka yang memungkinkan terjadi perpindahan data pada program Desain antar muka menjelaskan bagaimana perangka lunak berkomunikasi dengan dirinya, antar sistem maupun dengan manusia yang menggunakannya. Data dan diagram alur data memberikan informasi yang dibutuhkan untuk melakukan desain antar muka
Desain prosedur Merubah elemen dasar pada arsitektur perangkat lunak menjadi deskripsi prosedural komponen aplikasi Setelah data dan struktur program ditentukan, menentukan deskripsi dan detail prosedur tanpa ambigu menjadi suatu keharusan Informasi yang diperoleh dari spesifikasi proses, spesifikasi kendali dan desain perangkat lunak menjadi landasan untuk desain komponen.
Prinsip Fundamental Desain Perangkat Lunak “Awal dari pengetahuan seorang pemrogram komputer ialah mengenali perbedaan antara mendapatkan suatu program yang berjalan dengan program yang benar.” [Jackson]
Abstraksi Penyempurnaan Modularitas Arsitektur Perangkat Lunak Architecture Hierarki kendali Struktur Data Prosedur perangkat lunak Penyamaran informasi
Prinsip Fundamental Desain Abstraksi Merupakan satu cara fundamental yang dapat digunakan untuk mengatasi kompleksitas. Tingkatan kejelasan/bahasa yang digunakan untuk mendeskripsikan suatu permasalahan Tingkat tertinggi Tingkat bawah Tingkat ter-rendah
Jenis-jenis: Abstraksi prosedural Abstraksi data Abstraksi kendali
Konsep abstraksi secara psikologis memungkinkan seseorang memusatkan perhatian pada suatu permasalahan secara umum tanpa memedulikan penjelasan dan permasalahan tingkat bawah yang tidak terkait; salah satu fungsi abstraksi adalah memungkinkan seseorang menggunakan konsep dan terminologi yang biasa digunakan pada cakupan permasalahan yang dibahas… [Wasserman]
Prinsip Fundamental Desain (lanjut) Penyempurnaan Strategi Top-down Abstraksi dan penyempurnaan merupakan pelengkap
Pada tiap tahap, satu atau beberapa instruksi pada program dipecah menjadi instruksi yang lebih detail. Proses ini terus dilakukan secara berulang hingga semua instruksi merupakan suatu instruksi yang dapat diekspresikan ke dalam bahasa pemrograman. [Wirth]
Prinsip Fundamental Desain (lanjut) Modularitas Memecah aplikasi menjadi beberapa komponen, yang sering disebut sebagai modul, yang pada akhirnya diintegrasikan untuk menyelesaikan permasalahan
Kriteria untuk mengevaluasi metoda desain Tingkat keteruraian suatu modul Tingkat ketersusunan suatu modul Tingkat keter-pemahaman suatu modul Tingkat kontinuitas suatu modul Tingkat proteksi suatu modul
Prinsip Fundamental Desain (lanjut) Arsitektur perangkat lunak Struktur hierarkis dari komponen program, cara interaksi komponen dan struktur data yang digunakan tiap komponen.
Sifat suatu desain arsitektur Sifat struktural Mendefinisikan komponen sistem, cara pembungkusan komponen tersebut, dan interaksi dengan komponen lainnya.
Sifat fungsional lainnya Menjelaskan bagaimana desain arsitektur tersebut memenuhi persyaratan pada performa, kapasitas, ketersediaan, keandalan, keamanan, kemampuan adaptasi, dan karakteristik sistem lainnya.
Himpunan sifat yang terkait Kenali pola yang berulang, yang sering dijumpai pada desain sistem yang serupa. Desain yang ada seharusnya mampu digunakan kembali pada desain sistem serupa.
Prinsip Fundamental Desain (lanjut) Hierarki kendali /Struktur Program Pengaturan modul sedemikian rupa sehingga mengimplikasikan hierarki kendali Tingkat kedalaman, tingkat kelebaran, tingkat keterhubungan eksternal, tingkat keterhubungan Manager internal Module A
Module B
- Diagram kontrol berbentuk pohon Module D
Module F
Module E
Module K
Module G
Module H
Module I
Module J
Module C
Module L
Module N
Module M
Module O
Module R
Module P
Module Q
Prinsip Fundamental Desain (lanjut) Struktur Data Representasi logis tentang keterkaitan antar tiap elemen data Skalar, vektor, array, linked list, stacks, dsb
Prosedur perangkat lunak Detail pemrosesan tiap modul Spesifikasi mencakup tahapan kejadian, titik kondisi, perulangan dan organisasi data
Prinsip Fundamental Desain (lanjut) Penyamaran Informasi Tiap modul seharusnya memiliki karakter yang secara sadar didesain agar menyamarkan informasi yang digunakan terhadap modul lainnya” Modul didesain sedemikian rupa agar informasi yang tidak dibutuhkan tidak dapat diakses oleh modul lain Mendefinisikan dan melaksankan batasan pengaksesan informasi
Desain Modular Keuntungan Mengurangi kompleksitas Memfasilitasi perubahan Lebih mudah untuk dikembangkan Lebih mudah untuk dirawat dan diuji Lebih mudah diimplementasikan dalam lingkungan paralel
Kemandirian fungsional
Rancanglah perangkat lunak agar tiap modul menyelesaikan satu permasalahan spesifik dan memiliki antar muka yang sederhana jika dilihat dari keterhubungan dengan bagian program yang lain
Keuntungan Lebih mudah untuk dikembangkan Lebih mudah untuk dirawat dan diuji
Tingkat kemandirian Kepaduan Ukuran secara relatif terhadap tingkat kepentingan fungsional secara modul Suatu modul terpadu (secara ideal) hanya menyelesaikan satu masalah/melakukan satu tugas
Keterhubungan Tingkat relatif ketergantungan antar modul