Architectural design digunakan untuk menggambarkan hubungan antar elemen struktural utama dari perangkat lunak, gaya arsitektur dan pola desain yang membantu mencapai tujuan dibuatnya suatu sistem. Menurut Mathiassen (2000, p197), Architectural design memiliki tujuan untuk menstrukturkan suatu sistem yang menggunakan komputerisasi. Desain ini sangat mempengaruhi dalam seberapa baik suatu sistem, seperti dalam kecepatan, keamanan, dan kemudahan dalam dimodifikasi.

Arsitektur berfungsi sebagai ‘Blue Print’ untuk suatu sistem. Ini memberikan abstraksi untuk mengelola kompleksitas sistem dan membangun mekanisme komunikasi dan koordinasi antar komponen. Ini mendefinisikan solusi terstruktur untuk memenuhi semua persyaratan teknis dan operasional, sambil mengoptimalkan atribut kualitas umum seperti kinerja  dan keamanan.

Lebih lagi, ini melibatkan serangkaian keputusan penting tentang organisasi yang terkait dengan pengembangan perangkat lunak dan masing-masing keputusan ini dapat memiliki dampak yang besar pada kualitas, pemeliharaan, kinerja, dan keberhasilan keseluruhan produk akhir. Keputusan-keputusan ini terdiri dari :

  • Keputusan arsitektur selaras dengan tujuan bisnis.
  • Gaya arsitektur memandu organisasi.
  • Komposisi elemen struktural dan perilaku ini menjadi subsistem
  • Pemilihan elemen struktural dan antarmuka mereka yang digunakan
  • Perilaku sebagaimana ditentukan dalam kolaborasi antara elemen-elemen

Kenapa software architecture penting?

  1. Arsitektur menjadi kerangka sebuah sistem
    Setiap sistem memiliki sebuah arsitektur, secara sadar atau pun tidak sadar pengembang memilihnya. Setiap arsitektur memiliki keunggulannya masing-masing. Oleh karena itu kita harus memilih kerangka yang sesuai.
  1. Arsitektur mempengaruhi quality attributes
    Quality attributes adalah properti yang terlihat secara eksternal, berupa security, usability, latency atau modifiability. Kerangka yang berbeda dapat mempermudah ataupun mempersulit dalam menangani suatu permasalahan. Dengan demikian memiliki arsitektur yang tepat dapat mempermudah kita dalam mencapai kualitas yang diinginkan
  1. Sebagian arsitektur adalah ortogonal terhadap fungsionalitas.
    Hal ini mungkin untuk membuat sistem yang sama dengan arsitektur yang berbeda. Jika arsitektur yang digunakan tidak cocok dengan fungsionalitas, developer akan kesulitan dalam mengembangkannya
  1. Arsitektur membatasi sistem
    Arsitektur adalah seni dalam menentukan batasan yang cukup sehingga sistem memiliki quality attributes yang diinginkan. Contohnya, sebuah desain yang menjamin scalability memerlukan beberapa komponen harus stateless agar scalability dapat didapat.

Prinsip dari software design juga disebut sebagai teknik penyediaan, adalah ide utama berdasarkan pada berbagai pendekatan dan konsep yang berbeda dari software  design. Macam enabling techniques sebagai berikut:

  • Abstraction
  • Coupling and cohesion
  • Decomposition and modularization
  • Encapsulation / information hiding
  • Separation of interface and implementation

Pola arsitektur dalam aplikasi

Pola arsitektur membantu menentukan karakteristik dasar dan perilaku suatu aplikasi yang membuat sebuah aplikasi berbeda dengan aplikasi lainnya.

  1. Layered Architecture (Arsitektur berlapis)
    Seluruh komponen yang ada dalam arsitektur berlapis dibuat ke dalam bentuk horizontal, dimana setiap lapisan melakukan peran tertentu dalam sebuah aplikasi. Salah satu kelebihan dibanding arsitektur lain adalah arsitektur berlapis memisahkan kepentingan antar komponen (yang berada di layer yang berbeda). Pemisahan komponen di layer berbeda memudahkan membangun peran yang efektif, mudah untuk dikembangkan, diperbaharui, dan dapat menghubungkan komponen dengan baik.

  1. Event-Driven Architecture (arsitektur berbasis acara)

    Arsitektur berbasis acara relatif kompleks dan sulit untuk diterapkan karena sifatnya yang didistribusikan secara tidak sinkron. Untuk menerapkan arsitektur ini, harus mempertimbangkan ketersediaan proses jarak jauh, kurangnya respon, dan koneksi ulang ketika terjadi kegagalan. Salah satu kesulitan penerapan arsitektur ini adalah penciptaan awal arsitektur, pemeliharaan, dan pengelolaan komponen.

  1. Microkernel Architecture
    Arsitektur microkernel (kadang disebut sebagai arsitektur plug-in) adalah pola untuk menerapkan aplikasi berbasis produk yang mana dikemas dan tersedia untuk diunduh dalam versi produk pihak ketiga. Arsitektur microkernel terdiri dari dua jenis komponen arsitektur, yaitu sistem inti dan plug-in module. Sistem inti dari pola arsitektur microkernel hanya berisi fungsionalitas minimal yang diperlukan untuk membuat sistem operasional.

    Modul plug-in adalah komponen independen yang berisi pemrosesan khusus, fitur tambahan dan kode khusus yang diperuntukkan untuk meningkatkan sistem inti. Anda dapat merancang plug-in yang independen, namun juga dapat berupa plug-in yang membutuhkan plug-in lainnya. Dalam bentuk apa pun, komunikasi tiap plug-in harus dibuat seminimal mungkin untuk menghindari masalah ketergantungan.

  1. Microservices Architecture Pattern
    Konsep dari pola ini adalah unit yang dikelola secara terpisah, yang mana setiap komponen arsitektur digunakan sebagai unit yang terpisah dan memungkinkan untuk penyebaran yang lebih mudah, meningkatkan skalabilitas, dan tingkat aplikasi yang tinggi.

  1. Space-Based Architecture (arsitektur berbasis ruang)
    Pola arsitektur berbasis ruang (terkadang disebut sebagai cloud architecture pattern atau pola arsitektur awan) dirancang khusus untuk mengatasi dan memecahkan masalah skalabilitas yang ekstrem dan konkurensi. Pola ini juga berguna untuk aplikasi yang volume penggunanya tidak dapat diprediksi. Pola ini dinamakan berdasar pada konsep tuple space dimana menggunakan shared memory yang terdistribusi.

Mapping Requirements Into A Software Architecture

  1. Transform Flow
    Mengingat sistem model fundamental (level 0 data flow diagram), informasi harus keluar dan masuk software dalam bentuk “external world”. Informasi masuk ke dalam sistem melalui jalur yang mengubah data eksternal menjadi bentuk internal. Jalur ini disebut incoming flow. Di kernel software, transaksi terjadi. Data yang masuk adalah data melewati pusat transformasi dan mulai bergerak di sepanjang jalan yang sekarang mengarah “keluar” software. Ini disebut outgoing flow. Secara keseluruhan aliran data terjadi secara berurutan dan mengikuti satu, atau hanya beberapa jalur “straight line”. Ketika segmen diagram aliran data menunjukkan karakteristik ini, transform flow pun terjadi.
  1. Transaction Flow
    Aliran informasi data sering kali dikarakterisasikan oleh item data single, yang disebut transaction, yang memicu aliran data lain di sepanjang satu jalan dari banyak jalan.
Saat DFD menunjukkan bentuk seperti gambar, disitulah transaction flow.

Referensi

Richards, M. 2015. Software Architecture Patterns: Understanding Common Architecture Patterns and When to Use Them (second edition). United States of America: O’Reilly Media.

Author : Chandra, David Christopher, Edward Susanto, Felix Fernando, Vannessa Angel
Supervised by : Irma Kartika W, S.Kom., M.T.I