Prinsip Utama
Arsitektur perangkat lunak digambarkan sebagai organisasi dari suatu sistem, di mana sistem tersebut mewakili sekumpulan komponen yang menyelesaikan fungsi yang ditentukan.
Gaya arsitektur
Itu architectural style, juga disebut sebagai architectural pattern, adalah sekumpulan prinsip yang membentuk sebuah aplikasi. Ini mendefinisikan kerangka abstrak untuk keluarga sistem dalam hal pola organisasi struktural.
Gaya arsitektur bertanggung jawab untuk -
Berikan leksikon komponen dan konektor dengan aturan tentang bagaimana mereka dapat digabungkan.
Tingkatkan partisi dan izinkan penggunaan kembali desain dengan memberikan solusi untuk masalah yang sering terjadi.
Jelaskan cara tertentu untuk mengonfigurasi kumpulan komponen (modul dengan antarmuka yang terdefinisi dengan baik, dapat digunakan kembali, dan dapat diganti) dan konektor (tautan komunikasi antar modul).
Perangkat lunak yang dibangun untuk sistem berbasis komputer menunjukkan salah satu dari banyak gaya arsitektur. Setiap gaya menjelaskan kategori sistem yang meliputi -
Seperangkat tipe komponen yang menjalankan fungsi yang dibutuhkan oleh sistem.
Seperangkat konektor (panggilan subrutin, panggilan prosedur jarak jauh, aliran data, dan soket) yang memungkinkan komunikasi, koordinasi, dan kerja sama di antara berbagai komponen.
Batasan semantik yang menentukan bagaimana komponen dapat diintegrasikan untuk membentuk sistem.
Tata letak topologi dari komponen yang menunjukkan keterkaitan waktu proses mereka.
Desain Arsitektur Umum
Tabel berikut mencantumkan gaya arsitektur yang dapat diatur menurut area fokus utamanya -
Kategori | Desain arsitektur | Deskripsi |
---|---|---|
Komunikasi | Bus pesan | Menjelaskan penggunaan sistem perangkat lunak yang dapat menerima dan mengirim pesan menggunakan satu atau lebih saluran komunikasi. |
Arsitektur Berorientasi Layanan (SOA) | Mendefinisikan aplikasi yang mengekspos dan menggunakan fungsionalitas sebagai layanan menggunakan kontrak dan pesan. | |
Penyebaran | Server klien | Pisahkan sistem menjadi dua aplikasi, di mana klien membuat permintaan ke server. |
3-tier atau N-tier | Memisahkan fungsionalitas menjadi segmen terpisah dengan setiap segmen menjadi tingkat yang terletak di komputer yang terpisah secara fisik. | |
Domain | Desain Berbasis Domain | Berfokus pada pemodelan domain bisnis dan mendefinisikan objek bisnis berdasarkan entitas dalam domain bisnis. |
Struktur | Berbasis Komponen | Uraikan desain aplikasi menjadi komponen fungsional atau logis yang dapat digunakan kembali yang mengekspos antarmuka komunikasi yang terdefinisi dengan baik. |
Berlapis | Bagilah masalah aplikasi ke dalam kelompok bertumpuk (lapisan). | |
Berorientasi pada objek | Berdasarkan pembagian tanggung jawab suatu aplikasi atau sistem menjadi objek, masing-masing berisi data dan perilaku yang relevan dengan objek tersebut. |
Jenis Arsitektur
Ada empat jenis arsitektur dari sudut pandang suatu perusahaan dan secara kolektif, arsitektur ini disebut sebagai enterprise architecture.
Business architecture - Mendefinisikan strategi bisnis, tata kelola, organisasi, dan proses bisnis utama dalam suatu perusahaan dan berfokus pada analisis dan desain proses bisnis.
Application (software) architecture - Berfungsi sebagai cetak biru untuk sistem aplikasi individu, interaksi mereka, dan hubungannya dengan proses bisnis organisasi.
Information architecture - Mendefinisikan aset data logis dan fisik serta sumber daya manajemen data.
Information technology (IT) architecture - Mendefinisikan blok bangunan perangkat keras dan perangkat lunak yang membentuk sistem informasi keseluruhan organisasi.
Proses Desain Arsitektur
Proses desain arsitektur berfokus pada penguraian sistem menjadi komponen yang berbeda dan interaksinya untuk memenuhi persyaratan fungsional dan nonfungsional. Input utama untuk desain arsitektur perangkat lunak adalah -
Persyaratan yang dihasilkan oleh tugas analisis.
Arsitektur perangkat keras (arsitek perangkat lunak pada gilirannya memberikan persyaratan kepada arsitek sistem, yang mengkonfigurasi arsitektur perangkat keras).
Hasil atau keluaran dari proses desain arsitektur adalah sebuah architectural description. Proses desain arsitektur dasar terdiri dari langkah-langkah berikut -
Pahami Masalahnya
Ini adalah langkah paling krusial karena mempengaruhi kualitas desain yang mengikutinya.
Tanpa pemahaman yang jelas tentang masalah, tidak mungkin tercipta solusi yang efektif.
Banyak proyek dan produk perangkat lunak dianggap gagal karena tidak benar-benar memecahkan masalah bisnis yang valid atau memiliki laba atas investasi (ROI) yang dapat dikenali.
Identifikasi Elemen Desain dan Hubungannya
Dalam fase ini, buat baseline untuk mendefinisikan batasan dan konteks sistem.
Penguraian sistem menjadi komponen utamanya berdasarkan persyaratan fungsional. Dekomposisi dapat dimodelkan dengan menggunakan matriks struktur desain (DSM), yang menunjukkan ketergantungan antara elemen desain tanpa menentukan perincian elemen.
Pada langkah ini, validasi arsitektur pertama dilakukan dengan mendeskripsikan sejumlah instance sistem dan langkah ini disebut sebagai desain arsitektur berbasis fungsionalitas.
Evaluasi Desain Arsitektur
Setiap atribut kualitas diberi perkiraan sehingga untuk mengumpulkan ukuran kualitatif atau data kuantitatif, desain dievaluasi.
Ini melibatkan evaluasi arsitektur untuk kesesuaian dengan persyaratan atribut kualitas arsitektur.
Jika semua atribut kualitas yang diperkirakan sesuai dengan standar yang dipersyaratkan, proses desain arsitektur selesai.
Jika tidak, tahap ketiga dari desain arsitektur perangkat lunak dimasukkan: transformasi arsitektur. Jika atribut kualitas yang diamati tidak memenuhi persyaratannya, maka desain baru harus dibuat.
Ubah Desain Arsitektur
Langkah ini dilakukan setelah dilakukan evaluasi terhadap desain arsitektur. Desain arsitektur harus diubah hingga memenuhi persyaratan atribut kualitas secara sempurna.
Ini berkaitan dengan pemilihan solusi desain untuk meningkatkan atribut kualitas sambil mempertahankan fungsionalitas domain.
Sebuah desain diubah dengan menerapkan operator desain, gaya, atau pola. Untuk transformasi, ambil desain yang ada dan terapkan operator desain seperti dekomposisi, replikasi, kompresi, abstraksi, dan berbagi sumber daya.
Desain dievaluasi lagi dan proses yang sama diulangi beberapa kali jika perlu dan bahkan dilakukan secara rekursif.
Transformasi (yaitu solusi pengoptimalan atribut kualitas) umumnya meningkatkan satu atau beberapa atribut kualitas sementara mereka mempengaruhi yang lain secara negatif
Prinsip Arsitektur Utama
Berikut adalah prinsip-prinsip utama yang harus dipertimbangkan saat merancang arsitektur -
Bangun untuk Berubah Daripada Membangun untuk Tahan Lama
Pertimbangkan bagaimana aplikasi mungkin perlu berubah dari waktu ke waktu untuk mengatasi persyaratan dan tantangan baru, dan membangun fleksibilitas untuk mendukungnya.
Kurangi Risiko dan Model untuk Menganalisis
Gunakan alat desain, visualisasi, sistem pemodelan seperti UML untuk menangkap persyaratan dan keputusan desain. Dampaknya juga dapat dianalisis. Jangan memformalkan model sedemikian rupa sehingga menekan kemampuan untuk mengulang dan menyesuaikan desain dengan mudah.
Gunakan Model dan Visualisasi sebagai Alat Komunikasi dan Kolaborasi
Komunikasi yang efisien dari desain, keputusan, dan perubahan berkelanjutan pada desain sangat penting untuk arsitektur yang baik. Gunakan model, tampilan, dan visualisasi lain dari arsitektur untuk berkomunikasi dan berbagi desain secara efisien dengan semua pemangku kepentingan. Hal ini memungkinkan komunikasi perubahan desain yang cepat.
Identifikasi dan pahami keputusan teknik utama dan area di mana kesalahan paling sering dibuat. Berinvestasilah untuk mengambil keputusan penting dengan benar pada kali pertama untuk membuat desain lebih fleksibel dan kecil kemungkinannya rusak oleh perubahan.
Gunakan Pendekatan Inkremental dan Iteratif
Mulailah dengan arsitektur dasar dan kemudian kembangkan arsitektur kandidat dengan pengujian berulang untuk meningkatkan arsitektur. Tambahkan detail secara berulang ke desain melalui beberapa gerakan printhead untuk mendapatkan gambar besar atau benar, lalu fokus pada detailnya.
Prinsip Desain Utama
Berikut ini adalah prinsip desain yang harus dipertimbangkan untuk meminimalkan biaya, persyaratan pemeliharaan, dan memaksimalkan keterpanjangan, kegunaan arsitektur -
Pemisahan Masalah
Bagilah komponen sistem menjadi fitur tertentu sehingga tidak ada tumpang tindih di antara fungsionalitas komponen. Ini akan memberikan kohesi tinggi dan kopling rendah. Pendekatan ini menghindari saling ketergantungan antar komponen sistem yang membantu dalam memelihara sistem dengan mudah.
Prinsip Tanggung Jawab Tunggal
Setiap modul dari suatu sistem harus memiliki satu tanggung jawab khusus, yang membantu pengguna untuk memahami sistem dengan jelas. Ini juga akan membantu integrasi komponen dengan komponen lain.
Prinsip Pengetahuan Terkecil
Setiap komponen atau objek tidak boleh memiliki pengetahuan tentang detail internal komponen lain. Pendekatan ini menghindari saling ketergantungan dan membantu pemeliharaan.
Minimalkan Desain Besar di Muka
Minimalkan desain besar di awal jika persyaratan aplikasi tidak jelas. Jika ada kemungkinan memodifikasi persyaratan, hindari membuat desain besar untuk keseluruhan sistem.
Jangan Ulangi Fungsi tersebut
Jangan mengulang fungsionalitas menentukan bahwa fungsionalitas komponen tidak boleh diulang dan karenanya sepotong kode harus diimplementasikan dalam satu komponen saja. Duplikasi fungsionalitas dalam aplikasi dapat mempersulit penerapan perubahan, mengurangi kejelasan, dan menimbulkan potensi inkonsistensi.
Lebih memilih Komposisi daripada Warisan sambil Menggunakan Kembali Fungsionalitas
Inheritance menciptakan ketergantungan antara kelas anak dan induk dan karenanya memblokir penggunaan kelas anak secara gratis. Sebaliknya, komposisi memberikan tingkat kebebasan yang tinggi dan mengurangi hierarki warisan.
Identifikasi Komponen dan Kelompokkan dalam Lapisan Logis
Identitas komponen dan area perhatian yang dibutuhkan dalam sistem untuk memenuhi persyaratan. Kemudian kelompokkan komponen terkait ini dalam lapisan logis, yang akan membantu pengguna untuk memahami struktur sistem pada tingkat tinggi. Hindari mencampur komponen dari jenis masalah yang berbeda di lapisan yang sama.
Tentukan Protokol Komunikasi antar Lapisan
Memahami bagaimana komponen akan berkomunikasi satu sama lain yang membutuhkan pengetahuan lengkap tentang skenario penerapan dan lingkungan produksi.
Tentukan Format Data untuk Layer
Berbagai komponen akan berinteraksi satu sama lain melalui format data. Jangan mencampur format data sehingga aplikasi mudah diterapkan, diperluas, dan dipelihara. Usahakan untuk menjaga format data tetap sama untuk sebuah lapisan, sehingga berbagai komponen tidak perlu mengkodekan / mendekode data saat berkomunikasi satu sama lain. Ini mengurangi overhead pemrosesan.
Komponen Layanan Sistem harus Abstrak
Kode yang terkait dengan keamanan, komunikasi, atau layanan sistem seperti logging, profil, dan konfigurasi harus diabstraksikan dalam komponen terpisah. Jangan gabungkan kode ini dengan logika bisnis, karena mudah untuk memperluas desain dan memeliharanya.
Pengecualian Desain dan Mekanisme Penanganan Pengecualian
Menentukan pengecualian sebelumnya, membantu komponen untuk mengelola kesalahan atau situasi yang tidak diinginkan dengan cara yang elegan. Manajemen pengecualian akan sama di seluruh sistem.
Konvensi Penamaan
Konvensi penamaan harus ditetapkan sebelumnya. Mereka menyediakan model yang konsisten yang membantu pengguna untuk memahami sistem dengan mudah. Lebih mudah bagi anggota tim untuk memvalidasi kode yang ditulis oleh orang lain, dan karenanya akan meningkatkan kemudahan pemeliharaan.