Desain dan Arsitektur Perangkat Lunak
Desain dan arsitektur perangkat lunak berkaitan dengan bagaimana sistem perangkat lunak distrukturkan menjadi komponen dan konektor, bagaimana tanggung jawab didekomposisi, dan bagaimana keputusan desain memenuhi kebutuhan fungsional dan atribut kualitas.
Definition
Desain perangkat lunak adalah proses mendefinisikan arsitektur, komponen, antarmuka, dan karakteristik lain dari suatu sistem, dan arsitektur perangkat lunak adalah seperangkat struktur yang terdiri dari elemen-elemen sistem, hubungan-hubungannya, dan properti keduanya.
Scope
Area ini mencakup gaya dan pola arsitektur (berlapis, klien-server, layanan mikro, berbasis peristiwa, pipa-dan-filter); prinsip-prinsip desain seperti modularitas, penyembunyian informasi, kohesi, kopling, dan pemisahan perhatian; desain berorientasi objek dan berbasis komponen; pola desain; atribut kualitas arsitektur dan pertukarannya; serta notasi pemodelan seperti UML yang digunakan untuk mengekspresikan desain.
Sub-topics
Core questions
- Bagaimana seharusnya suatu sistem didekomposisi menjadi modul dan komponen?
- Gaya arsitektur mana yang paling baik mendukung atribut kualitas yang dibutuhkan?
- Bagaimana prinsip-prinsip desain seperti kopling dan kohesi memandu struktur yang baik?
- Bagaimana masalah desain yang berulang diselesaikan oleh pola yang dapat digunakan kembali?
Key theories
- Penyembunyian informasi dan modularitas
- Parnas berpendapat bahwa modul harus didefinisikan untuk menyembunyikan keputusan desain yang kemungkinan akan berubah di balik antarmuka yang stabil, sehingga perubahan terlokalisasi; prinsip ini mendasari modularitas, enkapsulasi, dan kopling rendah.
- Atribut kualitas arsitektur dan pertukaran
- Arsitektur didorong oleh atribut kualitas seperti kinerja, modifiabilitas, ketersediaan, dan keamanan; karena ini saling bertentangan, arsitektur pada dasarnya adalah tentang penalaran atas pertukaran yang dipandu oleh taktik dan pola.
- Pola desain
- Masalah desain yang berulang memiliki solusi yang dipahami dengan baik dan diberi nama — pola kreasi, struktural, dan perilaku — yang menangkap praktik ahli dan menyediakan kosakata bersama untuk desain berorientasi objek.
Clinical relevance
Keputusan arsitektur adalah yang paling sulit diubah di kemudian hari dan paling kuat menentukan atribut kualitas sistem, sehingga desain dan arsitektur yang baik mengurangi biaya pemeliharaan jangka panjang, memungkinkan skalabilitas dan evolusi, serta membentuk organisasi tim.
Evidence & guidelines
Standar ISO/IEC/IEEE 42010 menstandardisasi deskripsi arsitektur, dan area pengetahuan Desain Perangkat Lunak SWEBOK bersama dengan teks referensi seperti Software Architecture in Practice memberikan panduan konsensus.
History
Prinsip-prinsip desain modular diartikulasikan oleh Parnas pada awal 1970-an. Desain berorientasi objek dan pola desain matang pada 1980-an dan 1990-an, arsitektur perangkat lunak muncul sebagai disiplin yang berbeda dengan karya Shaw dan Garlan pada pertengahan 1990-an, dan gaya berorientasi layanan serta layanan mikro menyusul pada 2000-an dan 2010-an.
Debates
- Arsitektur monolitik versus layanan mikro
- Apakah akan membangun sistem sebagai monolit tunggal yang dapat di-deploy atau sebagai banyak layanan yang dapat di-deploy secara independen masih banyak diperdebatkan; layanan mikro menawarkan penskalaan dan deployment independen dengan biaya kompleksitas sistem terdistribusi, sehingga pilihan yang tepat bergantung pada skala dan struktur organisasi.
Key figures
- David Parnas
- Mary Shaw
- Len Bass
- Erich Gamma
- Grady Booch
Related topics
Seminal works
- parnas1972
- gamma1994
- bass2012
Frequently asked questions
- Apa perbedaan antara desain dan arsitektur?
- Arsitektur berkaitan dengan struktur tingkat tertinggi dan keputusan yang paling mahal untuk diubah — komponen utama, interaksinya, dan atribut kualitas di seluruh sistem — sementara desain mencakup struktur internal yang lebih rinci dari komponen-komponen tersebut; batasnya adalah masalah signifikansi daripada garis yang tajam.
- Mengapa pola desain penting?
- Pola menangkap solusi yang terbukti untuk masalah desain yang berulang dan memberikan kosakata bersama kepada para insinyur, membuat desain lebih mudah dikomunikasikan, dipertimbangkan, dan dikembangkan; pola adalah panduan yang harus diterapkan secara bijaksana, bukan resep wajib.