Apa itu Arsitektur Perangkat Lunak?
Arsitektur Aplikasi dari setiap perusahaan atau setiap developers team pasti berbeda-beda, tapi dari setiap arsitektur memiliki tujuan yang sama, yaitu:
Disiplin menciptakan struktur dan sistem seperti itu
Arsitektur yang disepakati bersama ini memudahkan tim maupun developers lain (terutama yang baru masuk sebagai team member) bisa membaca codingan maupun structure project atau class yang telah dibuat sebelumnya. Karena telah dibuat kesepakatan tentang arsitektur apa yang dipakai, biasanya memudahkan Technical Writer untuk membuat documentation setiap project atau aplikasi yang dibuat.
Mengapa kita harus mengkhawatirkan hal itu?
Pertanyaan yang paling common dikalangan para developers, tapi masing-masing dari mereka memiliki pendapatnya sendiri-sendiri. Setiap developers memiliki arsitekturnya sendiri, bahkan mungkin ada yang agak selfish terhadap arsitekturnya, dan tidak mau menerima arsitektur lain.
Berdasarkan pertanyaan diatas, munculah arsitektur-arsitektur diluar sana yang (harapannya) bisa membantu para developers dalam membuat aplikasi lebih rapih strukturnya, lebih mudah untuk ditest, dan mudah dimengerti oleh developers lain (terutama untuk new team member).
Lapisan untuk implementasi Arsitektur
Dalam penerapannya, mungkin bisa berbeda-beda setiap orang, Tapi untuk starting point, kita akan menggunakan 5 Layers seperti dibawah ini:
1. Domain
Disini berkaitan dengan model bisnis yang dimiliki oleh aplikasi kita. Dalam penerapannya, saya ambil contoh seperti Use Cases, Navigation Router. Sebagian besar aplikasi android yang dibuat adalah menggunakan API, sehingga kemungkinan aplikasi akan lebih banyak berinteraksi dengan cara Requesting dan Persisting. Maka dari itu Layers ini akan sangat berguna untuk mengelompokkan Use Cases yang telah dibuat.
2. Data
Layer ini berfungsi sebagai tempat dimana kalian bisa mendefinisikan tentang variasi Data Model yang akan digunakan dalam aplikasi. Dalam pembuatan aplikasi, sebaiknya kalian menyimpan data secara local.
Maksudnya adalah agar aplikasi tidak selalu mengambil data dari API maupun dari resources lain setiap aplikasi dijalankan. Jadi, Layer ini bisa difungsikan untuk menyimpan Attribute Data untuk Local Database maupun Response Data dari API.
3. Presentasi
Presentation Layer gunanya untuk mengelompokkan class yang berfungsi sebagai / berinteraksi dengan UI. Mungkin dalam penerapannya, kalian memiliki cara pandang masing-masing.
Layer ini biasanya berisi Android UI (Activity, Fragment, Views), Presenter atau ViewModels tergantung Pattern apa yang kalian pakai.
4. Kasus Penggunaan
Use cases ini biasanya di istilahkan dengan Interactor, yang berisi fungsi-fungsi untuk mengambil atau mengirim data ke API. Kenapa butuh Layer ini? karena bisa memudahkan kalian jika ingin membuat Mocking Request ke API untuk keperluan Unit Test.
5. Eksternal
Kita biasa membuat Function-function atau Object yang konteksnya bisa jadi Reusable function atau Class. Contohnya seperti Helper Class, Util Class, Scheduler Class, Constant Object, dll. Fungsi-fungsi atau variable yang ada di Layer ini harus as simple as possible karena sifatnya harus se-reusable mungkin.
Fathurrahman
Android Mobile
Hallo saya trainer Android Mobile di Mataweb dan saya sudah berpengalaman lebih dari 5 tahun. jadi kali ini saya akan share tutorial ataupun tips seputar mobile aplikasi. Salam kenal