Jumat, 24 April 2020

Rangkuman Pertemuan 4 - KONSEP PERANCANGAN - REKAYASA PERANGKAT LUNAK



MODEL PERANCANGAN

• Perancangan data/kelas

o Mengubah model kelas menjadi realisasi kelas perancangan dan struktur data yang diperlukan untuk mengimplementasikan Perangkat Lunak.
o Objek, hubungan dan konten data rinci yang digambarkan oleh atribut kelas dan notasi lainnya memberikan dasar untuk aktivitas perancangan data.
o Bagian dari perancangan kelas dapat terjadi bersamaan dengan perancangan arsitektur Perangkat Lunak. 
o Perancangan kelas yang lebih rinci terjadi karena setiap komponen Perangkat Lunak dirancang

• Perancangan arsitektur 

o Mendefinisikan hubungan antara elemen struktural utama dari Perangkat Lunak, gaya dan pola arsitektur yang dapat digunakan untuk mencapai kebutuhan yang ditentukan untuk sistem, dan kendala yang mempengaruhi cara dimana arsitektur dapat diimplementasikan. 
o Mewakili perancangan kerangka kerja arsitektur sistem berbasis komputer berasal dari model kebutuhan.

• Perancangan antarmuka

o Menggambarkan bagaimana Perangkat Lunak berkomunikasi dengan sistem, dan dengan manusia yang menggunakannya.
o Antarmuka menyiratkan aliran informasi (misalnya: data atau kontrol) dan jenis perilaku tertentu.
o Perancangan antarmuka pada tingkat komponen mengubah elemen struktural dari arsitektur Perangkat Lunak menjadi deskripsi prosedural komponen Perangkat Lunak
o Informasi yang diperoleh dari model berbasis kelas dan model perilaku berfungsi sebagai dasar untuk perancangan komponen.


PROSES PERANCANGAN

• Perancangan Perangkat Lunak adalah proses yang bersifat iteratif dimana spesifikasi kebutuhan Perangkat Lunak diterjemahkan menjadi “blue print" untuk membangun Perangkat Lunak.
• Blue print menggambarkan pandangan holistik Perangkat Lunak. Yaitu, perancangan diwakili pada tingkat abstraksi yang tinggi pada tingkat yang dapat langsung ditelusuri ke tujuan sistem dan data yang lebih rinci, fungsional, dan kebutuhan perilaku
• Saat iterasi perancangan Perangkat Lunak berlangsung, penghalusan lebih lanjut akan menggerakkan abstraksi yang lebih rendah.


Atribut-Atribut Kualitas Perangkat Lunak

• Tiga karakteristik umum yang berfungsi sebagai panduan untuk evaluasi perancangan yang baik:
o Perancangan Perangkat Lunak harus menerapkan semua spesifikasi kebutuhan yang secara eksplisit ada dalam model kebutuhan, dan mengakomodasi semua spesifikasi kebutuhan implisit yang diinginkan oleh stakeholder.
o Perancangan Perangkat Lunak harus menghasilkan produk kerja yang mudah dibaca dan dimengerti bagi mereka yang membuat kode-kode program dan yang akan melakukan mengujian untuk kemudian mendukung Perangkat Lunak. 
o Perancangan Perangkat Lunak seharusnya menyediakan gambaran lengkap tentang Perangkat Lunak, menangani permasalahan data, fungsional, dan perilaku dari perspektif implementasi.

Panduan Kualitas Perangkat Lunak
• Tujuannya untuk mengevaluasi kualitas representasi perancangan
o Rancangan Perangkat Lunak harus menunjukkan arsitektur yang :
 Telah dibuat menggunakan gaya atau pola arsitektur yang dapat dikenali  
 Tersusun atas komponen-komponen yang menunjukkan karakteristik perancangan yang baik  
 Dapat diimplementasikan secara evolusioner, dan memfasilitasi implementasi dan pengujian.
o Rancangan Perangkat Lunak harus bersifat modular, artinya Perangkat Lunak harus secara logis menjadi bagian dalam elemen-elemen atau subsistem
o Rancangan Perangkat Lunak harus berisi representasi data, arsitektur, objek-objek, antarmuka, dan komponen yang berbeda.
o Rancangan Perangkat Lunak harus memuat struktur data yang sesuai untuk kelas yang akan diimplementasikan dan digambarkan dari pola-pola data yang dapat dikenali.
o Rancangan Perangkat Lunak harus mengarah pada komponen yang menunjukkan karakteristik fungsional yang bersifat independen.
o Rancangan Perangkat Lunak harus memuat antarmuka yang mengurangi kompleksitas hubungan antar komponen dan dengan lingkungan eksternal.
o Rancangan Perangkat Lunak harus diturunkan dari metode perulangan yang dikendalikan oleh informasi yang diperoleh selama analisis kebutuhan Perangkat Lunak.
o Sebuah perancangan harus direpresentasikan menggunakan notasi yang secara efektif mengkomunikasikan maknanya.

Atribut-Atribut Kualitas

• Fungsionalitas
o Dinilai dengan mengevaluasi sejumlah fitur dan kemampuan program, fungsi-fungsi umum yang disampaikan, dan keamanan sistem secara keseluruhan.
• Peggunaan
o Dinilai dengan mempertimbangkan faktor manusia, estetika, konsistensi, dan dokumentasi.
• Keandalan
o Dievaluasi dengan mengukur frekuensi dan tingkat keparahan kegagalan, akurasi hasil keluaran, waktu antar kegagalan, recovery, dan prediktabilitas program.
• Kinerja
o Diukur menggunakan kecepatan pemrosesan, waktu tanggap, konsumsi sumber daya, throughput, dan efisiensi.
• Daya dukung
o Menggabungkan kemampuan program untuk dikembangkan, kemampuan beradaptasi, dan kemampuan melayani kebutuhan pengguna, kemampuan uji, kompatibilitas, konfigurabilitas (kemampuan untuk mengatur dan mengontrol elemen-elemen konfigurasi Perangkat Lunak).


KONSEP-KONSEP PERANCANGAN

• Konsep perancangan pada dasarnya akan menyediakan kebutuhan:
o Kriteria yang digunakan untuk membagi Perangkat Lunak menjadi komponen yang bersifat mandiri
o Rincian fungsi/struktur data yang dapat dipisahkan dari representasi konseptual
o Kriteria yang digunakan untuk mendefinisikan kualitas teknis perancangan Perangkat Lunak
Abstraksi
• Pada tingkat abstraksi tertinggi, penyelesaian masalah dinyatakan dalam istilah luas menggunakan bahasa pada lingkungan permasalahan.
o Pada tingkat abstraksi lebih rendah, deskripsi yang lebih rinci dari penyelesaian masalah harus diberikan.
o Terminologi berorientasi masalah digabungkan dengan terminologi berorientasi implementasi dengan tujuan untuk lebih dapat menyelesaikan permasalahan
o Pada tingkat abstraksi yang paling rendah, penyelesaian masalah dapat langsung diimplementasikan menggunakan bahasa pemrograman yang dipilih.
Arsitektur
• Arsitektur sistem/Perangkat Lunak merupakan struktur keseluruhan Perangkat Lunak dan cara bagaimana struktur tersebut memberikan integritas konseptual untuk suatu sistem/Perangkat Lunak.
• Arsitektur sistem/Perangkat Lunak juga merupakan struktur/organisasi dari komponen program (modul) yang menjelaskan bagaimana komponen-komponen tersebut berinteraksi, dan struktur data yang digunakan oleh komponen.
Pola (Pattern)
• Pola adalah suatu wawasan yang di dalamnya memuat esensi dari solusi yang terbukti untuk permasalahan perancangan Perangkat Lunak dalam konteks tertentu.
• Tujuan dari setiap pola perancangan adalah untuk memberikan deskripsi yang memungkinkan perancang untuk menentukan:
o Apakah pola berlaku untuk pekerjaan saat ini
o Apakah pola dapat digunakan kembali
o Apakah pola dapat berfungsi sebagai panduan untuk mengembangkan pola yang serupa, tetapi berbeda secara fungsional atau struktural
Pemisahan Perhatian
• Pemisahan perhatian adalah konsep perancangan yang menunjukkan bahwa masalah yang kompleks dapat diselesaikan jika permasalahan itu dibagi menjadi bagian-bagian yang lebih kecil yang lebih mudah diselesaikan dan/atau dioptimalkan secara independen.
• Pemisahan perhatian dapat diimplementasikan menggunakan konsep perancangan Perangkat Lunak yang saling berhubungan seperti: modularitas, aspek-aspek, kemandirian fungsional, dan penghalusan.
Modularitas
• Modularitas adalah atribut tunggal dari Perangkat Lunak yang memungkinkan suatu program untuk dapat dikelola secara cerdas.
• Perangkat Lunak monolitik adalah program besar yang terdiri dari satu modul.
• Perangkat Lunak monolitik tidak dapat dengan mudah dipahami oleh rekayasawan Perangkat Lunak. Jumlah lintasan kendali, rentang referensi, jumlah variabel, dan kompleksitas keseluruhan hampir tidak mungkin dimengerti.
Penyembunyian Informasi
• Maksudnya bahwa Modul Perangkat Lunak harus dispesifikasikan dan dirancang sedemikian rupa sehingga informasi (algoritma dan data) yang terdapat dalam modul tidak dapat diakses oleh modul lain yang tidak memerlukan informasi tersebut.
• Penyembunyian informasi (Information hiding) menyiratkan bahwa modularitas yang efektif dapat dicapai dengan mendefinisikan sejumlah modul independen yang berkomunikasi satu sama lain dalam hal informasi yang diperlukan untuk mencapai fungsi Perangkat Lunak.
• Manfaatnya ketika modifikasi tertentu perlu dilakukan selama pengujian Perangkat Lunak dan selama pemeliharaan Perangkat Lunak.
Independensi Fungsional
• Konsep independensi fungsional adalah hasil langsung dari pemisahan masalah, modularitas, dan konsep abstraksi dan penyembunyian informasi.
• Independensi fungsional dicapai dengan cara mengembangkan modul yang memiliki fungsi tunggal (single-minded) dan memiliki interaksi yang bersifat tertutup dengan modul lain.
• Modul independen lebih mudah dikembangkan karena fungsi-fungsi di dalamnya dapat dilokalisasi dan antarmuka disederhanakan.
• Modul independen lebih mudah dipelihara dan diuji
Penghalusan
• Penghalusan merupakan proses elaborasi yang dimulai dengan pernyataan fungsi (atau deskripsi informasi) yang didefinisikan pada tingkat abstraksi yang tinggi.
• Penghalusan langkah demi langkah menggunakan strategi perancangan top-down.
• Hirarki Perangkat Lunak dikembangkan dengan melakukan dekomposisi pernyataan fungsi yang bersifat makro (abstraksi prosedural) secara bertahap hingga pernyataan dalam bahasa pemrograman dapat tercapai.
• Penghalusan membantu untuk mendapatkan rincian pada tingkat rendah saat perancangan berlangsung.
Refaktorisasi
• Refaktorisasi adalah teknik reorganisasi perancangan Perangkat Lunak yang bertujuan untuk menyederhanakan perancangan (atau kode) dari komponen tanpa harus mengubah fungsi atau perilakunya.
• Refaktorisasi Perangkat Lunak, diperiksa kembali untuk:
o Menemukan redundansi
o Menemukan elemen perancangan yang tidak digunakan
o Menemukan algoritma yang tidak efisien (tidak perlu)
o Menemukan struktur data yang konstruksinya buruk
o Menemukan kegagalan perancangan lainnya yang dapat diperbaiki untuk menghasilkan perancangan yang lebih baik.