Desain merupakan langkah pertama dalam fase pengembangan bagi setiap produsen perangkat lunak. Ini bertindak sebagai dasar bagi semua rekayasa perangkat lunak dan pemeliharaan perangkat lunak dengan langkah-langkah yang mengikuti. Tujuan seorang perancang adalah menciptakan suatu model (atau representasi) dari entitas yang akan dibangun.
Input desain perangkat lunak: Model analisis kebutuhan dan dokumentasi spesifikasi. Output desain perangkat lunak: Model desain dan dokumentasi spesifikasi desain.
Desain melibatkan menerjemahkan kebutuhan menjadi model desain yang lengkap untuk sebuah produk perangkat lunak. Ini juga memberikan representasi yang dapat diantisipasi dari perangkat lunak yang dihasilkan dalam hal kualitas.
Dalam hal ini, perancangan perangkat lunak merupakan langkah krusial dalam proses pengembangan, karena ia membentuk landasan untuk seluruh tahapan yang mengikutinya dan memastikan bahwa perangkat lunak yang dihasilkan sesuai dengan kebutuhan dan tujuan yang telah ditentukan sebelumnya.
Desain Perangkat Lunak
Ada beberapa metode desain yang dapat digunakan untuk menghasilkan desain perangkat lunak:
- Desain Data: Mengubah model domain informasi menjadi struktur data.
- Desain Arsitektur: Menggambarkan hubungan antara elemen struktural utama dalam program.
- Desain Antarmuka: Mendeskripsikan bagaimana perangkat lunak berinteraksi dengan pengguna.
- Desain Prosedur: Mengubah elemen struktural arsitektur program menjadi deskripsi prosedur komponen perangkat lunak.
Evolusi Desain Perangkat Lunak:
- Konstruksi Program Moduler dan Pendekatan Perbaikan Top-Down.
- Pemrograman Terstruktur.
- Pemindahan Aliran Data/Struktur Data ke Definisi Desain.
- Pendekatan Berorientasi Objek.
Pemahaman dan penerapan metode-metode ini dalam desain perangkat lunak sangat penting untuk menciptakan solusi perangkat lunak yang efisien, terstruktur, dan sesuai dengan kebutuhan yang telah ditetapkan.
Fitur Umum Metode Desain Perangkat Lunak:
- Mekanisme untuk Mentransformasi Model Analisis ke Representasi Desain.
- Notasi untuk Merepresentasikan Komponen Fungsional dan Antarmuka.
- Heuristik untuk Peningkatan dan Pembagian (Partisi).
- Panduan untuk Penilaian Kualitas.
Proses Desain
Desain perangkat lunak adalah sebuah proses iteratif di mana kebutuhan diterjemahkan menjadi suatu “blueprint” untuk membangun perangkat lunak. Desain direpresentasikan pada tingkat abstraksi tertinggi. Saat iterasi desain berlangsung, perbaikan berikutnya akan mengarahkan representasi desain ke tingkat abstraksi yang lebih mendalam.
Kualitas desain memiliki peranan yang sangat penting. Ada dua metode yang digunakan untuk memeriksa kualitasnya: a) Tinjauan Teknis Formal: Melibatkan pemeriksaan dan evaluasi formal oleh pihak terkait. b) Desain Walkthrough: Melibatkan sesi diskusi dan evaluasi secara interaktif terhadap desain.
Tiga fitur umum dari sebuah desain yang baik, menurut McGlaughlin:
- Desain harus mengimplementasikan semua kebutuhan (baik yang eksplisit maupun yang tersirat).
- Desain harus mudah dibaca dan dipahami oleh para stakeholder.
- Desain harus menyediakan gambaran komprehensif tentang perangkat lunak dalam hal data, fungsi, dan perilaku.
Pentingnya kualitas desain dan penerapan prinsip-prinsip tersebut membantu memastikan bahwa perangkat lunak yang dihasilkan sesuai dengan kebutuhan, mudah dimengerti, dan mampu berfungsi secara efektif dan efisien.
Kualitas Desain
Untuk mengevaluasi desain perangkat lunak, dapat digunakan kriteria kualitas desain tertentu. Berikut adalah panduan untuk sebuah desain yang baik:
- Desain harus menunjukkan organisasi hierarkis tentang perangkat lunak.
- Desain harus bersifat modular berdasarkan partisi logis.
- Desain harus mencakup elemen data dan abstraksi prosedural.
- Desain harus menghasilkan modul dengan fitur fungsional yang independen.
- Desain harus memiliki antarmuka yang sederhana antar modul.
- Desain harus dapat didekomposisi menggunakan metode yang dapat diulang.
- Proses desain perangkat lunak mendorong penerapan desain yang baik melalui penerapan prinsip-prinsip desain yang mendasar, metodologi yang sistematis, dan melalui proses ulasan (pengulangan).
Dengan mengikuti panduan ini, desain perangkat lunak dapat diarahkan menuju kualitas yang lebih baik, dengan struktur hierarkis yang jelas, modularitas yang efisien, dan kemampuan untuk dikelola dan dikembangkan dengan lebih baik.
Konsep Desain
Abstraksi: Setiap langkah dalam proses rekayasa perangkat lunak adalah peningkatan pada tingkat abstraksi dari solusi perangkat lunak.
- Abstraksi Data: Kumpulan data.
- Abstraksi Prosedural: Urutan instruksi dalam suatu fungsi spesifik.
- Abstraksi Kontrol: Program yang mengendalikan mekanisme tanpa menguraikan detail internal.
Perbaikan (Refinement): Perbaikan sebenarnya adalah proses elaborasi. Pendekatan perbaikan secara bertahap adalah strategi desain top-down yang diperkenalkan oleh Niklaus. Arsitektur program berkembang dengan sukses melalui perbaikan tingkat detail prosedural.
Proses perbaikan program analog dengan proses perbaikan dan pembagian yang digunakan selama analisis kebutuhan. Perbedaan utamanya terletak pada tingkat detail implementasi, selain pendekatannya.
Abstraksi dan perbaikan saling melengkapi dalam konsep ini. Abstraksi memungkinkan seorang perancang untuk menentukan prosedur dan data tanpa harus memperhatikan detail. Perbaikan membantu perancang untuk mengungkapkan detail pada tingkat rendah.
Arsitektur Software
Perangkat Lunak adalah struktur hierarki dari komponen-komponen program dan interaksinya.
Shaw dan Garlan menggambarkan sejumlah properti desain arsitektur: Properti Struktural: Desain arsitektur mendefinisikan komponen-komponen sistem dan interaksinya. Properti Ekstra-Fungsional: Desain arsitektur harus mengatasi bagaimana arsitektur mengakomodasi kebutuhan performa, kapasitas, ketersediaan (kehandalan), adaptabilitas, dan keamanan.
Kumpulan Sistem Terkait: Desain arsitektur harus menggambarkan pola yang dapat diulang pada desain sistem yang serupa.
Berbagai Metode Desain Arsitektural: Model Struktural: Menggambarkan arsitektur sebagai kumpulan terorganisir dari komponen. Model Kerangka Kerja: Meningkatkan tingkat abstraksi desain dengan mengidentifikasi pola-pola kerangka kerja arsitektural secara berulang. Model Dinamis: Mengatasi aspek perilaku arsitektur program. Model Proses: Berfokus pada desain bisnis atau proses teknis. Model Fungsional: Dapat digunakan untuk merepresentasikan hierarki fungsional sistem.
Konsep ini menggambarkan pentingnya desain arsitektur dalam mengorganisir komponen-komponen perangkat lunak dan interaksinya, serta memastikan pemenuhan kebutuhan kualitatif dan fungsional dari perangkat lunak yang dibangu