REKAYASA PERANGKAT LUNAK : 10. DESAIN ARSITEKTUR PERANGKAT LUNAK

 


Halo, pembaca setia! Kali ini kita akan membahas tahap awal yang krusial dalam pengembangan perangkat lunak: Desain Arsitektur. Tahap ini dimulai dari perancangan data dan dilanjutkan dengan penurunan struktur arsitektural sistem. Arsitektur sistem atau perangkat lunak adalah struktur yang menggabungkan berbagai komponen perangkat lunak, menggambarkan sifat-sifat komponen tersebut, dan menjelaskan hubungan antar komponen. Hasil dari tahap ini adalah model arsitektur yang menunjukkan bagaimana sistem diatur sebagai satu set komponen yang saling berkomunikasi.

Arsitektur Perangkat Lunak

Arsitektur perangkat lunak mencakup beberapa aspek penting:

  1. Integrasi Komponen: Bagaimana berbagai komponen bangunan dapat diintegrasikan menjadi suatu kesatuan yang kohesif.
  2. Keserasian Lingkungan: Bangunan yang dibuat harus sesuai dengan lingkungannya.
  3. Fungsionalitas dan Estetika: Bangunan harus sesuai dengan kegunaannya serta memiliki tekstur, warna, dan material yang dikombinasikan untuk menciptakan tampilan yang menarik.
  4. Perancangan Detail: Ini termasuk pencahayaan, template, dan garis batas, serta memadukan aspek seni dalam perancangan arsitektur.

Arsitektur perangkat lunak memungkinkan analisis efektivitas perancangan, mempertimbangkan alternatif arsitektural, dan mengurangi risiko yang terkait dengan konstruksi perangkat lunak. Alasan utama kita membutuhkan arsitektur perangkat lunak adalah untuk memfasilitasi komunikasi antar pihak yang terlibat dalam pengembangan sistem dan untuk memastikan bahwa semua pekerjaan rekayasa perangkat lunak selanjutnya dapat diprediksi dan terstruktur dengan baik.

Deskripsi Arsitektural

Tujuan deskripsi arsitektural adalah untuk:

  1. Menetapkan kerangka kerja konseptual dan kosa kata yang digunakan selama perancangan arsitektur perangkat lunak.
  2. Menyediakan panduan rinci untuk merepresentasikan deskripsi arsitektural.
  3. Memandu praktik perancangan yang baik.

Keputusan Arsitektural

Pola deskripsi keputusan arsitektural mencakup:

  1. Permasalahan Perancangan: Mengidentifikasi masalah perancangan yang harus diselesaikan.
  2. Penyelesaian: Menentukan pendekatan yang dipilih untuk menyelesaikan masalah.
  3. Kategori: Menentukan kategori perancangan yang akan diselesaikan.
  4. Asumsi: Menunjukkan asumsi saat mengambil keputusan.
  5. Alternatif: Menggambarkan alternatif yang dipertimbangkan dan mengapa ditolak.
  6. Argumen: Menjelaskan alasan pemilihan solusi dan penolakan alternatif lain.
  7. Keputusan Terkait: Dokumentasi keputusan yang berkaitan dengan keputusan yang diambil.
  8. Implikasi: Menunjukkan konsekuensi desain.

Tampilan Arsitektural

Tampilan arsitektural mencakup beberapa perspektif yang berbeda:

  1. Tampilan Logis: Abstraksi sistem sebagai objek atau kelas objek.
  2. Tampilan Proses: Menunjukkan bagaimana (pada saat run-time) sistem terdiri dari proses yang saling berinteraksi.
  3. Tampilan Pengembangan: Menguraikan perangkat lunak untuk pengembangan, menunjukkan detail dalam komponen yang akan diimplementasikan oleh pengembang tunggal atau tim pengembang.
  4. Tampilan Fisik: Menunjukkan perangkat keras sistem dan bagaimana komponen perangkat lunak didistribusikan di seluruh sistem.

Gaya Arsitektur

Gaya arsitektur mendeskripsikan kategori sistem yang mencakup:

  1. Kumpulan Komponen: Seperti sistem basis data dan modul-modul yang melaksanakan fungsi tertentu yang diperlukan oleh sistem.
  2. Penghubung (Konektor): Memungkinkan komunikasi, koordinasi, dan kerja antar komponen.
  3. Batasan: Mendefinisikan bagaimana komponen dapat diintegrasikan untuk membentuk suatu sistem/perangkat lunak.
  4. Model Semantik: Memungkinkan perancang sistem memahami properti keseluruhan sistem.

Gaya dan struktur arsitektur juga harus mempertimbangkan persyaratan non-fungsional seperti:

  1. Kinerja (Performance): Arsitektur harus dirancang agar semua komponen dapat digunakan pada berbagai komputer/prosesor dan didistribusikan di seluruh jaringan.
  2. Keamanan (Security): Menggunakan struktur berlapis untuk melindungi aset yang paling penting di lapisan terdalam dengan tingkat validasi keamanan yang tinggi.
  3. Keselamatan (Safety): Operasi yang terkait dengan keselamatan terletak di salah satu komponen tunggal atau komponen kecil.
  4. Ketersediaan (Availability): Arsitektur harus dirancang untuk menyertakan komponen redundan sehingga dimungkinkan saat mengganti dan memperbarui komponen tanpa menghentikan sistem.
  5. Pemeliharaan (Maintainability): Arsitektur sistem harus dirancang menggunakan komponen mandiri yang dapat diubah dengan mudah. Struktur data bersama harus dihindari.

Struktur Dasar Arsitektur

Struktur dasar arsitektur mencakup berbagai jenis struktur yang dapat digunakan dalam perancangan:

  1. Struktur Fungsional:

    • Komponen: Merepresentasikan fungsi atau entitas.
    • Konektor: Merepresentasikan antarmuka untuk melewatkan data ke suatu komponen.
    • Properti: Mendefinisikan sifat dari komponen dan mengorganisasikan antarmuka.
  2. Struktur Implementasi:

    • Komponen: Berbentuk paket, kelas, objek, prosedur, fungsi, metode, dll., yang merupakan sarana untuk mengemas fungsionalitas komponen pada berbagai peringkat abstraksi.
    • Konektor: Meliputi kemampuan untuk melewatkan data dan kendali, berbagi data, menggunakan, dan menginstansiasi.
    • Properti: Fokus pada karakteristik kualitas, seperti kemampuan untuk maintenance dan reuse yang dihasilkan saat struktur diimplementasikan.
  3. Struktur Konkurensi:

    • Komponen: Merepresentasikan unit-unit konkurensi yang terorganisasi sebagai pekerjaan paralel (thread).
    • Konektor: Mencakup sinkronisasi, prioritas, mengirim data, dan menjalankan proses/fungsi.
    • Properti: Mencakup prioritas, kemampuan untuk meramalkan, dan waktu eksekusi.
  4. Struktur Fisik:

    • Komponen: Merupakan perangkat keras fisik.
    • Konektor: Merupakan antarmuka antar komponen perangkat keras.
    • Properti: Berkaitan dengan kapasitas, bandwidth, kinerja, dan atribut lainnya.
  5. Struktur Pengembangan:

    • Komponen: Mendefinisikan produk kerja dan sumber informasi lainnya.
    • Konektor: Merepresentasikan relasi antar produk kerja.
    • Properti: Mengidentifikasi karakteristik tiap-tiap item.

Pola Arsitektur (Architectural Patterns)

  1. Lapisan Arsitektur (Layered Architecture):

    • Pemahaman tentang pemisahan dan independensi sangat penting karena memungkinkan perubahan secara lokal.
    • Menambahkan atau mengubah tampilan baru dapat dilakukan tanpa perubahan data dalam model.




  2. Arsitektur Repositori (Repository Architecture):

    • Mengelola bagaimana satu set komponen yang saling berinteraksi dapat berbagi data.
    • Cocok untuk aplikasi di mana data dihasilkan oleh satu komponen dan digunakan oleh komponen lainnya.
    • Komponen harus beroperasi di sekitar model data repositori yang disepakati.



  3. Client–Server Architecture:

    • Sistem diatur sebagai satu set layanan server dan client yang mengakses layanan tersebut.
    • Komponen Utama: Server (memberikan layanan), Client (menggunakan layanan), dan Jaringan (menghubungkan client dengan server).
    • Memungkinkan penambahan server baru dan integrasi tanpa mempengaruhi sistem lainnya.

  4. Pipe and Filter Architecture:

    • Sistem run-time di mana transformasi secara fungsional memproses input dan menghasilkan output.
    • Data bergerak secara berurutan melalui pipa, dengan setiap langkah pemrosesan diimplementasikan sebagai transformasi.


Arsitektur Aplikasi

  1. Sistem Pemrosesan Transaksi (Transaction Processing Systems):

    • Aplikasi yang berpusat pada database dan memproses permintaan pengguna untuk informasi serta memperbarui informasi dalam basis data.
    • Terdiri dari dua komponen: perangkat lunak ATM dan perangkat lunak pemrosesan akun di server basis data bank.

  2. Sistem Informasi:

    • Sistem yang melibatkan interaksi dengan basis data dan memungkinkan akses yang terkontrol ke basis informasi yang besar.
    • Contoh: katalog perpustakaan, jadwal penerbangan, atau catatan pasien di rumah sakit.

  3. Sistem Pemrosesan Bahasa (Language Processing Systems):

    • Sistem di mana maksud pengguna dinyatakan dalam bahasa formal (seperti Java) dan diproses menjadi representasi internal.
    • Meliputi compiler yang menerjemahkan bahasa program tingkat tinggi ke dalam kode mesin.

Kesimpulan

Desain arsitektur perangkat lunak adalah proses yang kompleks dan memerlukan pemahaman mendalam tentang kebutuhan sistem serta kemampuan untuk merancang solusi yang efektif dan efisien. Dengan memahami berbagai aspek dari arsitektur perangkat lunak, termasuk pola, gaya, dan struktur, kita dapat merancang sistem yang tidak hanya memenuhi kebutuhan saat ini tetapi juga mampu berkembang seiring dengan perubahan dan pertumbuhan.

Mengikuti langkah-langkah yang terstruktur dalam merancang arsitektur akan membantu memastikan bahwa solusi yang kita buat adalah yang terbaik untuk memenuhi kebutuhan fungsional dan non-fungsional sistem. Jangan lupa untuk selalu melibatkan semua pemangku kepentingan dan melakukan iterasi desain berdasarkan umpan balik yang diterima. Dengan demikian, kita dapat menciptakan perangkat lunak yang berkualitas tinggi dan dapat diandalkan.

Sekian pembahasan lengkap tentang desain arsitektur perangkat lunak. Dengan memahami konsep-konsep ini, Anda dapat merancang sistem yang modular, mudah dikelola, dan fleksibel. Selamat merancang!




Comments

Popular posts from this blog

REKAYASA PERANGKAT LUNAKA : 09. PERANCANGAN SISTEM BERORIENTASI OBJEK

REKAYASA PERANGKAT LUNAK : 05. KEBUTUHAN PERANGKAT LUNAK