Arsitektur Hirarkis
Arsitektur hierarki memandang keseluruhan sistem sebagai struktur hierarki, di mana sistem perangkat lunak diuraikan menjadi modul atau subsistem logis pada tingkat yang berbeda dalam hierarki. Pendekatan ini biasanya digunakan dalam merancang perangkat lunak sistem seperti protokol jaringan dan sistem operasi.
Dalam desain hierarki perangkat lunak sistem, subsistem tingkat rendah memberikan layanan kepada subsistem tingkat atas yang berdekatan, yang memanggil metode di tingkat bawah. Lapisan bawah menyediakan fungsionalitas yang lebih spesifik seperti layanan I / O, transaksi, penjadwalan, layanan keamanan, dll. Lapisan tengah menyediakan lebih banyak fungsi yang bergantung pada domain seperti logika bisnis dan layanan pemrosesan inti. Dan, lapisan atas menyediakan fungsionalitas yang lebih abstrak dalam bentuk antarmuka pengguna seperti GUI, fasilitas pemrograman shell, dll.
Ini juga digunakan dalam organisasi perpustakaan kelas seperti perpustakaan kelas .NET dalam hierarki namespace. Semua jenis desain dapat mengimplementasikan arsitektur hierarki ini dan sering kali digabungkan dengan gaya arsitektur lain.
Gaya arsitektur hierarkis dibagi sebagai -
- Main-subroutine
- Master-slave
- Mesin virtual
Utama-subrutin
Tujuan dari gaya ini adalah untuk menggunakan kembali modul dan secara bebas mengembangkan modul atau subrutin individu. Dalam gaya ini, sistem perangkat lunak dibagi menjadi beberapa subrutin dengan menggunakan perbaikan top-down sesuai dengan fungsionalitas yang diinginkan dari sistem.
Perbaikan ini mengarah secara vertikal hingga modul yang diuraikan cukup sederhana untuk memiliki tanggung jawab independen yang eksklusif. Fungsionalitas dapat digunakan kembali dan digunakan bersama oleh banyak penelepon di lapisan atas.
Ada dua cara untuk mengirimkan data sebagai parameter ke subrutin, yaitu -
Pass by Value - Subrutin hanya menggunakan data masa lalu, tetapi tidak dapat memodifikasinya.
Pass by Reference - Subrutin menggunakan serta mengubah nilai data yang direferensikan oleh parameter.
Keuntungan
Mudah untuk menguraikan sistem berdasarkan penyempurnaan hierarki.
Dapat digunakan dalam subsistem desain berorientasi objek.
Kekurangan
Rentan karena berisi data yang dibagikan secara global.
Kopling yang ketat dapat menyebabkan lebih banyak efek riak perubahan.
Tuan-Budak
Pendekatan ini menerapkan prinsip 'divide and conquer' dan mendukung komputasi kesalahan dan akurasi komputasi. Ini adalah modifikasi dari arsitektur subrutin utama yang memberikan keandalan sistem dan toleransi kesalahan.
Dalam arsitektur ini, budak memberikan layanan duplikat kepada master, dan master memilih hasil tertentu di antara budak dengan strategi pemilihan tertentu. Para budak dapat melakukan tugas fungsional yang sama dengan algoritma dan metode yang berbeda atau fungsi yang sama sekali berbeda. Ini termasuk komputasi paralel di mana semua budak dapat dieksekusi secara paralel.
Implementasi pola Master-Slave mengikuti lima langkah -
Tentukan bagaimana komputasi tugas dapat dibagi menjadi sekumpulan sub-tugas yang sama dan mengidentifikasi sub-layanan yang diperlukan untuk memproses sub-tugas.
Tentukan bagaimana hasil akhir dari seluruh layanan dapat dihitung dengan bantuan hasil yang diperoleh dari pemrosesan sub-tugas individu.
Tentukan antarmuka untuk sub-layanan yang diidentifikasi di langkah 1. Ini akan diterapkan oleh budak dan digunakan oleh master untuk mendelegasikan pemrosesan sub-tugas individu.
Implementasikan komponen budak sesuai dengan spesifikasi yang dikembangkan pada langkah sebelumnya.
Implementasikan master sesuai dengan spesifikasi yang dikembangkan pada langkah 1 hingga 3.
Aplikasi
Cocok untuk aplikasi di mana keandalan perangkat lunak merupakan masalah kritis.
Diterapkan secara luas di bidang komputasi paralel dan terdistribusi.
Keuntungan
Komputasi lebih cepat dan skalabilitas mudah.
Memberikan ketahanan karena budak dapat diduplikasi.
Slave dapat diimplementasikan secara berbeda untuk meminimalkan kesalahan semantik.
Kekurangan
Overhead komunikasi.
Tidak semua masalah bisa dibagi.
Sulit diimplementasikan dan masalah portabilitas.
Arsitektur Mesin Virtual
Arsitektur Mesin Virtual menganggap beberapa fungsionalitas, yang tidak asli dari perangkat keras dan / atau perangkat lunak yang diimplementasikan. Mesin virtual dibangun di atas sistem yang ada dan menyediakan abstraksi virtual, sekumpulan atribut, dan operasi.
Dalam arsitektur mesin virtual, master menggunakan 'subservice' yang sama dari slave dan menjalankan fungsi seperti pekerjaan terpisah, memanggil budak, dan menggabungkan hasil. Ini memungkinkan pengembang untuk mensimulasikan dan menguji platform, yang belum dibangun, dan mensimulasikan mode "bencana '' yang akan terlalu rumit, mahal, atau berbahaya untuk diuji dengan sistem sebenarnya.
Dalam kebanyakan kasus, mesin virtual memisahkan bahasa pemrograman atau lingkungan aplikasi dari platform eksekusi. Tujuan utamanya adalah menyediakanportability. Interpretasi modul tertentu melalui Mesin Virtual dapat dianggap sebagai -
Mesin interpretasi memilih instruksi dari modul yang sedang diinterpretasikan.
Berdasarkan instruksi, mesin memperbarui status internal mesin virtual dan proses di atas diulangi.
Gambar berikut menunjukkan arsitektur infrastruktur VM standar pada satu mesin fisik.
Itu hypervisor, juga disebut virtual machine monitor, berjalan pada OS host dan mengalokasikan sumber daya yang cocok untuk setiap OS tamu. Saat tamu melakukan panggilan sistem, hypervisor memotong dan menerjemahkannya ke panggilan sistem terkait yang didukung oleh OS host. Hypervisor mengontrol setiap akses mesin virtual ke CPU, memori, penyimpanan persisten, perangkat I / O, dan jaringan.
Aplikasi
Arsitektur mesin virtual cocok di domain berikut -
Cocok untuk memecahkan masalah dengan simulasi atau terjemahan jika tidak ada solusi langsung.
Contoh aplikasi termasuk penerjemah mikroprogram, pemrosesan XML, eksekusi bahasa perintah skrip, eksekusi sistem berbasis aturan, Smalltalk dan bahasa pemrograman yang diketik juru bahasa Java.
Contoh umum mesin virtual adalah interpreter, sistem berbasis aturan, shell sintaksis, dan pemroses bahasa perintah.
Keuntungan
Portabilitas dan independensi platform mesin.
Kesederhanaan pengembangan perangkat lunak.
Memberikan fleksibilitas melalui kemampuan untuk menginterupsi dan menanyakan program.
Simulasi model kerja bencana.
Memperkenalkan modifikasi pada waktu proses.
Kekurangan
Eksekusi penerjemah lambat karena sifat penerjemah.
Ada biaya kinerja karena penghitungan tambahan yang terlibat dalam eksekusi.
Gaya Berlapis
Dalam pendekatan ini, sistem diuraikan menjadi sejumlah lapisan yang lebih tinggi dan lebih rendah dalam suatu hierarki, dan setiap lapisan memiliki tanggung jawabnya sendiri dalam sistem.
Setiap lapisan terdiri dari sekelompok kelas terkait yang dienkapsulasi dalam sebuah paket, dalam komponen yang diterapkan, atau sebagai kelompok subrutin dalam format pustaka metode atau file header.
Setiap lapisan menyediakan layanan ke lapisan di atasnya dan berfungsi sebagai klien untuk lapisan di bawahnya yaitu permintaan ke lapisan i +1 memanggil layanan yang disediakan oleh lapisan i melalui antarmuka lapisan i. Tanggapan dapat kembali ke lapisan i +1 jika tugas selesai; jika tidak, lapisan i akan terus memanggil layanan dari lapisan i -1 di bawah.
Aplikasi
Gaya berlapis cocok di bidang berikut -
Aplikasi yang melibatkan kelas layanan berbeda yang dapat diatur secara hierarki.
Aplikasi apa pun yang dapat diuraikan menjadi bagian khusus aplikasi dan khusus platform.
Aplikasi yang memiliki divisi yang jelas antara layanan inti, layanan kritis, dan layanan antarmuka pengguna, dll.
Keuntungan
Desain berdasarkan tingkat abstraksi tambahan.
Memberikan independensi peningkatan karena perubahan fungsi satu lapisan mempengaruhi paling banyak dua lapisan lainnya.
Pemisahan antarmuka standar dan implementasinya.
Diimplementasikan dengan menggunakan teknologi berbasis komponen yang membuat sistem lebih mudah untuk memungkinkan plug-and-play komponen baru.
Setiap lapisan dapat menjadi mesin abstrak yang digunakan secara independen yang mendukung portabilitas.
Mudah untuk menguraikan sistem berdasarkan definisi tugas dengan cara penyempurnaan top-down
Implementasi yang berbeda (dengan antarmuka yang identik) dari lapisan yang sama dapat digunakan secara bergantian
Kekurangan
Banyak aplikasi atau sistem tidak mudah terstruktur secara berlapis.
Performa runtime yang lebih rendah karena permintaan klien atau respons terhadap klien harus melalui beberapa lapisan yang berpotensi.
Ada juga masalah performa pada overhead pada marshaling data dan buffering oleh setiap lapisan.
Pembukaan komunikasi antar lapisan dapat menyebabkan kebuntuan dan "penghubung" dapat menyebabkan sambungan yang erat.
Pengecualian dan penanganan kesalahan adalah masalah dalam arsitektur berlapis, karena kesalahan dalam satu lapisan harus menyebar ke semua lapisan pemanggil