Prinsip Fundamental dalam
Desain Perangkat Lunak
Introduksi
Prinsip Desain
SEN-261 : Rekayasa Perangkat
Lunak
Tazeen Muzammil
S/W Design Fundamentals 2
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.
S/W Design Fundamentals 3
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.
S/W Design Fundamentals 4
S/W Design Fundamentals 5
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.
S/W Design Fundamentals 6
Prinsip Desain
1. Proses desain harus dilakukan untuk mengakomodir semua
tujuan, bukan terpaku atas suatu tujuan sempit
2. Desain dapat ditelusuri kembali oleh analisis model 3. Desain tidak mengulang proses yang telah dilakukan 4. Desain menunjukkan keseragaman dan integritas 5. Desain dirancang untuk mengakomodir perubahan
6. Desain bukanlah pemrograman dan pemrograman bukanlah
desain
S/W Design Fundamentals 7
Model Desain Perangkat
Lunak
Model informasi Model fungsional Model perilaku Kebutuhan lainnya Desain Pemrograman Pengujian Desain data Desain arsitekturalDesain tingkat Prosedur/Komponen
Modul program Perangkat lunak terintegrasi & tervalidasi Desain antar muka
S/W Design Fundamentals 8
Desain data
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
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.
S/W Design Fundamentals 9
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
S/W Design Fundamentals 10
11
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.
S/W Design Fundamentals 12
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
S/W Design Fundamentals 13
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…
S/W Design Fundamentals 14
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
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
S/W Design Fundamentals 15
S/W Design Fundamentals 16
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 internal
- Diagram kontrol berbentuk pohon
S/W Design Fundamentals 17 Module D Module E Module F Module I Module G Module J Module H Module A Module K Module B Module L Module N Module R
Module O Module P Module Q Module M
Module C Manager
S/W Design Fundamentals 18
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
S/W Design Fundamentals 19
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
S/W Design Fundamentals 20
Desain Modular
Keuntungan
Mengurangi kompleksitas Memfasilitasi perubahanLebih mudah untuk dikembangkan Lebih mudah untuk dirawat dan diuji
Lebih mudah diimplementasikan dalam lingkungan paralel
S/W Design Fundamentals 21
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