Component Based Architecture in TemanCatat

Cindy Adelia
temancatat
Published in
4 min readMay 2, 2018

Halo semua! Minggu lalu arsitektur software temancatat telah dibahas secara umum pada post ini. Pembahasan kali ini menjelaskan secara lebih detil komponen-komponen dari Component-based Architectural Type di temancatat.

TemanCatat sendiri terdiri dari 8 komponen.

Komponen pertama adalah User Interface yang mengatur bagaimana data ditampilkan dan diterima dari pengguna. User Interface terdiri dari kelas-kelas Activity, View, Adapter, dan Fragment. Activity, Adapter, dan Fragment mendefinisikan user interface yang ditampilkan pada aplikasi Android. Sedangkan, View adalah interface untuk Activity sesuai dengan pattern MVP yang digunakan pada aplikasi ini.

Komponen kedua adalah Model, yang mendefinisikan representasi data sebagai kelas-kelas Java, ditambah dengan operasi Create, Read, Update, Delete (CRUD) data ke database Realm. Kelas-kelas model ini juga merepresentasikan bagian Model dari pattern MVP. Model digunakan pada hampir setiap komponen karena mendefinisikan objek-objek yang dimanipulasi, sementara hanya menggunakan interface dari RealmDB.

Komponen ketiga adalah Presenter. Sesuai dengan pattern MVP, Presenter memuat hampir semua logic dari program. Fungsi utama dari Presenter adalah menjadi jembatan antara View dengan Model, melakukan komputasi-komputasi logic yang dibutuhkan untuk mengolah hal yang diterima dari interface (View) dan memberikannya ke representasi internal program (Model) dan sebaliknya.

Komponen keempat adalah Resources, yakni definisi-definisi dari asset-asset yang digunakan oleh aplikasi. Resources terdiri dari drawable, yakni gambar-gambar yang digunakan pada aplikasi (misalnya icon), font, layout, yang mendefinisikan penampilan Activity, values, yang menyimpan berbagai nilai konstanta seperti strings, dan xml. Resources tidak menggunakan interface dari komponen lain dan digunakan oleh banyak komponen lain terutama User Interface.

Komponen kelima adalah Utils. Utils memuat fungsi-fungsi umum yang digunakan di berbagai fungsi lain, tetapi tidak terkait dengan fungsionalitas tertentu pada komponen lain berbeda dengan misalnya RealmDataManager yang ada pada komponen Model, yang walaupun juga memuat fungsi-fungsi umum tapi terkait erat dengan kelas-kelas lain pada komponen Model dan Realm. Kelas-kelas yang terdefinisi pada komponen Utils antara lain Error / Exception yang didefinisikan untuk aplikasi ini dan Formatter utility untuk harga dan tanggal. Utils tidak menggunakan interface dari komponen lain.

Komponen keenam adalah RealmDB. RealmDB adalah database yang digunakan dalam aplikasi ini. RealmDB menyimpan objek-objek yang digunakan aplikasi secara non-volatile sehingga dapat diakses kembali saat aplikasi dibuka kembali setelah dimatikan sebelumnya. Dalam arsitektur Temancatat, RealmDB hanya berinteraksi langsung dengan komponen Model, terutama pada kelas RealmDataManager.

Komponen ketujuh adalah Seeder. Seeder merupakan suatu komponen yang sesuai namanya melakukan seeding data pada aplikasi. Seeding dilakukan pada setiap development environment selain Production, dan memiliki tujuan antara lain memudahkan pengujian suatu fitur baru dan memudahkan presentasi dari aplikasi. Seeder hanya berinteraksi langsung dengan komponen Model, menggunakan kelas-kelas yang terdefinisi untuk membuat dummy objek dan menggunakan RealmDataManager untuk melakukan pengisian data ke RealmDB.

Komponen terakhir adalah Crashlytics yang digunakan untuk monitoring. Komponen ini merupakan suatu pengecualian karena seluruh komponen terhubung dengan Crashlytics, tetapi hanya dalam keadaan terjadinya suatu error atau exception yang tidak dihandle dan menyebabkan kerusakan pada aplikasi.

Secara singkat, keterhubungan antarkomponen tergambar pada diagram di bawah ini. Garis penghubung antarkomponen menandakan adanya keterhubungan dari komponen satu dengan komponen lain.

Diagram keterhubungan antar komponen di TemanCatat

--

--