Software Architecture TemanCatat — Is this my lucky day?
“Jadi, Pak, saya mau coba klaim nilai mengenai Software Architecture. Jadi, Software Architecture yang diterapkan pada proyek TemanCatat adalah Model-View-Presenter (MVP) pattern. Penerapannya adalah bla bla bla……………”
Beberapa menit kemudian, ketika sudah hening dan saya tidak tahu lagi mau bercerita apa…
“… Oke. Baik. Jadi, yang kamu sampaikan itu tidak salah, tapi belum sepenuhnya benar. Yang kamu sampaikan itu adalah subset dari Software Architecture” a.k.a “Better Luck Next Time”
Setelah mencoba mengklaim nilai mengenai Software Architecture dan ternyata malah agak tersasar ke Design Pattern, persayaan saya tidak tenang. Nilai yang tak jadi didapat tidak seberapa menyakitkan, tapi malunya itu…
Tapi, saya tidak bisa terus menerus terpuruk dalam rasa malu. I have to make sure next time I have better luck.
Arsitektur Perangkat Lunak — Apa Itu?
Hal yang terbayang ketika saya mendengar kata arsitektur adalah cetak biru mengenai sesuatu. Dan ternyata hal tersebut tidak salah! Software architecture atau arsitektur perangkat lunak adalah cetak biru mengenai perangkat lunak yang dibangun. Seperti halnya dalam membangun bangunan diperlukan berbagai ahli dari tukang listrik sampai kontraktor, banyak pihak yang terlibat dalam merealisasikan suatu proyek perangkat lunak, mulai dari customer hingga developer.
Berikut merupakan prinsip-prinsip arsitektur perangkat lunak:
- Arsitektur suatu perangkat lunak sebaiknya hanya menjelaskan bagaimana memenuhi kebutuhan customer tanpa membeberkan detail implementasinya
- Arsitektur sebaiknya dipersiapkan dengan berpegang pada pandangan bahwa sistem perangkat lunak harus fleksibel untuk dapat menerima perubahan di masa mendatang dan kebutuhan pemeliharaan sistem
- Arsitektur harus didesain sedemikian hingga sistem yang dihasilkan sudah mencakup seluruh kebutuhan fungsional dan non-fungsional customer
- Arsitektur dari sistem perangkat lunak harus berusaha memprediksi segala kemungkinan risiko atau masalah yang mengancam sistem di kemudian hari
- Arsitektur harus mendukung pemanfaatan optimum terhadap sumber daya sistem
Lalu apa saja keuntungan membuat arsitektur perangkat lunak? Banyak. Diantaranya:
- Arsitektur perangkat lunak adalah langkah awal dalam pengembangan yang memberitahu kita bagaimana menyelesaikan masalah yang ada, sehingga dapat memberitahu kita behaviour dari sistem sebelum melakukan implementasi
- Arsitektur perangkat lunak membantu mengestimasi kebutuhan sumber daya
- Dengan bantuan arsitektur, kita dapat dengan mudah menemukan daerah rawan risiko pada sistem, sehingga dapat mengurangi dampak dan biaya terkait risiko tersebut
- Arsitektur perangkat lunak menampilkan sistem dari segi komponen penyusunnya, sehingga kita dapat melakukan reusability komponen
- Dengan bantuan arsitektur, kita dapat dengan mudah meningkatkan kualitas sistem sehingga dapat mengembangkan produk yang memiliki atribut kualitas seperti “maintainability”, “reliability”, “efficiency”,” usability”, dsb. Dokumen arsitektur perangkat lunak mencerminkan bentuk dari sistem dengan antarmuka yang berhubungan.
Architectural styles and patterns mendefinisikan cara kita mengatur komponen-komponen sistem untuk membentuk sistem yang utuh dan sesuai dengan kebutuhan customer. Ada beberapa architectural styles and patterns yang ada di industri perangkat lunak, sehingga kita perlu mengetahui tiap architecture style untuk menentukan mana yang cocok terhadap proyek kita:
Tabel berikut ini berisi informasi mengenai kelebihan dari tiap-tiap architectural style:
Awareness of Software Architecure — Kesadaran akan Arsitektur Perangkat Lunak, Sudahkah?
Meskipun tidak membuat dokumen arsitektur perangkat lunak secara eksplisit, ternyata tim TemanCatat secara tidak langsung dan tidak sadar sudah membahas poin-poin penting yang terdapat pada sebuah arsitektur perangkat lunak. Jadi, pendek kata, tim ini sudah sadar.
Lalu, seperti apa gambaran arsitektur perangkat lunak TemanCatat?
Untuk menjawab pertanyaan tersebut, maka kita perlu menelaah kembali project vision TemanCatat.
- Aplikasi TemanCatat ditujukan untuk pengusaha ritel dan berfokus pada proses inventaris barang
- Aplikasi TemanCatat berbasis Android, dan kita semua tahu komponen-komponen Android cukup (jika bukan sangat) high-coupling
- TemanCatat akan diintegrasikan pada aplikasi induk milik partner (jika sesuai ekspektasi)
- TemanCatat memiliki fitur notifikasi
- TemanCatat sebagian besar akan beroperasi secara luring, jika customer memutuskan untuk menggunakan hanya fitur-fitur dasar dari aplikasi
Dari poin-poin di atas, maka architectural type yang tepat untuk diterapkan adalah Component-based Architectural Type. Tipe ini cocok karena untuk menghasilkan aplikasi Android yang testable dan memiliki code-coverage yang tinggi, diperlukan pemisahan komponen-komponen pada Android agar bagian yang mengatur tampilan, model, dan logic, terpisah dan dapat dites secara independen.
Referensi:
Anubha Sharma, Manoj Kumar, Sonali Agarwal,
A Complete Survey on Software Architectural Styles and Patterns
http://www.sciencedirect.com/science/article/pii/S187705091503183X