ARCHITECTURAL DESIGN
Why Architecture?
Arsitektur bukan perangkat lunak operasional. Sebaliknya, ini adalah representasi yang memungkinkan insinyur perangkat lunak untuk:
- menganalisis efektivitas desain dalam memenuhi persyaratan yang dinyatakan
- mempertimbangkan alternatif arsitektur pada tahap ketika membuat perubahan desain masih relatif mudah, dan
- mengurangi risiko yang terkait dengan pembangunan perangkat lunak.
Mengapa Arsitektur Penting?
- Representasi arsitektur perangkat lunak adalah enabler untuk komunikasi antara semua pihak (pemangku kepentingan) yang tertarik dalam pengembangan sistem berbasis komputer.
- Arsitektur menyoroti keputusan desain awal yang akan memiliki dampak mendalam pada semua pekerjaan rekayasa perangkat lunak yang mengikuti dan, yang penting, pada keberhasilan akhir sistem sebagai entitas operasional.
- Arsitektur "merupakan mode yang relatif kecil, dapat dipahami secara intelektual tentang bagaimana sistem disusun dan bagaimana komponen-komponennya bekerja bersama" [BAS03].
Deskripsi Arsitektur
Ø Masyarakat Komputer IEEE telah mengusulkan IEEE-Std-1471-2000, Praktek yang Direkomendasikan untuk Deskripsi Arsitektur Sistem Perangkat Lunak-Intensif, [IEE00]
· untuk membangun kerangka kerja konseptual dan kosakata untuk digunakan selama desain arsitektur perangkat lunak,
· untuk memberikan pedoman terperinci untuk mewakili deskripsi arsitektur, dan
· untuk mendorong praktik desain arsitektur yang baik.
Ø Standar IEEE mendefinisikan deskripsi arsitektur (AD) sebagai "kumpulan produk untuk mendokumentasikan arsitektur."
· Deskripsi itu sendiri diwakili menggunakan beberapa pandangan, di mana setiap pandangan adalah "representasi dari keseluruhan sistem dari perspektif seperangkat keprihatinan [pemangku kepentingan] terkait."
Architectural Genres
Ø Genre menyiratkan kategori tertentu dalam domain perangkat lunak keseluruhan.
Ø Dalam setiap kategori, Anda menemukan sejumlah subkategori.
· Misalnya, dalam genre bangunan, Anda akan menemukan gaya umum berikut: rumah, kondominium, gedung apartemen, gedung perkantoran, gedung industri, gudang, dan sebagainya.
· Dalam setiap gaya umum, gaya yang lebih spesifik mungkin berlaku. Setiap gaya akan memiliki struktur yang dapat digambarkan menggunakan seperangkat pola yang dapat diprediksi.
Architectural Styles
Setiap gaya menggambarkan kategori sistem yang mencakup: (1) satu set komponen (misalnya, database, modul komputasi) yang melakukan fungsi yang diperlukan oleh suatu sistem, (2) satu set konektor yang memungkinkan "komunikasi, koordinasi dan kerja sama" di antara komponen, (3) kendala yang menentukan bagaimana komponen dapat diintegrasikan untuk membentuk sistem, dan (4) model semantik yang memungkinkan perancang memahami sifat keseluruhan sistem dengan menganalisis properti yang diketahui dari bagian-bagian penyusunnya.
§ Arsitektur yang berpusat pada data
§ Arsitektur aliran data
§ Panggil dan kembalikan arsitektur
§ Arsitektur berorientasi objek
§ Arsitektur berlapis
Layered Architecture
Architectural Patterns
1. Concurrency — aplikasi harus menangani banyak tugas dengan cara yang mensimulasikan paralelisme
§ pola manajemen proses sistem operasi
§ pola penjadwal tugas
2. Kegigihan — Data tetap ada jika data bertahan melewati proses yang membuatnya. Dua pola umum:
§ pola sistem manajemen basis data yang menerapkan kemampuan penyimpanan dan pengambilan DBMS ke arsitektur aplikasi
§ pola persistensi tingkat aplikasi yang membangun fitur kegigihan ke dalam arsitektur aplikasi
3. Distribusi - cara di mana sistem atau komponen dalam sistem berkomunikasi satu sama lain dalam lingkungan terdistribusi
§ Pialang bertindak sebagai 'perantara' antara komponen klien dan komponen server.
Architectural Design
Ø Perangkat lunak harus ditempatkan dalam konteks
§ desain harus mendefinisikan entitas eksternal (sistem lain, perangkat, orang) yang berinteraksi dengan perangkat lunak dan sifat interaksi
Ø Seperangkat arketipe arsitektur harus diidentifikasi
§ Arketipe adalah abstraksi (mirip dengan kelas) yang mewakili satu elemen perilaku sistem
Ø Perancang menentukan struktur sistem dengan mendefinisikan dan memperbaiki komponen perangkat lunak yang menerapkan setiap arketipe
Architectural Complexity (Kompleksitas Arsitektur)
n kompleksitas keseluruhan dari arsitektur yang diusulkan dinilai dengan mempertimbangkan ketergantungan antara komponen dalam arsitektur [Zha98]
§ Berbagi dependensi merupakan hubungan ketergantungan antara konsumen yang menggunakan sumber daya yang sama atau produsen yang memproduksi untuk konsumen yang sama.
§ Ketergantungan dependensi merupakan hubungan ketergantungan antara produsen dan konsumen sumber daya.
§ Ketergantungan dependensi merupakan kendala pada aliran relatif kontrol di antara serangkaian kegiatan.





