Dokumentasi Arsitektur: C4 vs UML
Bukan rahasia bila imajinasi, lebih berarti dari sekedar ilmu pasti.
- Dewa 19, Bukan Rahasia
Sebelum memulai pengembangan sebuah proyek perangkat lunak, akan lebih baik apabila kita melakukan proses diskusi, imajinasi dan dokumentasi dulu untuk menentukan langkah dan detail penting terkait dengan perangkat lunak yang akan kita buat. Salah satu detail penting yang sebaiknya ada di awal adalah arsitektur sistem. Dengan melakukan diskusi mengenai arsitektur, kita dapat memperkirakan langkah pengembangan ke depannya. Hasil diskusi dapat dituangkan ke dalam beberapa jenis diagram, di antaranya adalah C4 dan UML.
C4 Model
C4 Model adalah kerangka kerja untuk memvisualisasikan arsitektur perangkat lunak yang dikembangkan oleh Simon Brown. Model ini dirancang untuk membantu tim pengembang dan pemangku kepentingan lainnya memahami struktur dan interaksi dalam sistem perangkat lunak dengan cara yang jelas dan konsisten. C4 Model menekankan pentingnya memberikan pandangan yang berbeda dari sistem, mulai dari tingkat tinggi hingga detail teknis, sehingga semua pihak dapat memahami bagaimana sistem bekerja dan berinteraksi.
C4 Model terdiri dari 4 level diagram yang berbeda:
System Context,
Container,
Component,
Code.
Diagram System Context memberikan gambaran umum tentang sistem dalam konteks lingkungan eksternalnya, termasuk pengguna dan sistem eksternal lainnya. Diagram Container menggambarkan kontainer utama dalam sistem, seperti aplikasi web, basis data, dan layanan mikro, serta interaksi antar kontainer tersebut. Diagram Component memecah setiap kontainer menjadi komponen-komponen yang lebih kecil, menunjukkan bagaimana mereka berinteraksi satu sama lain. Terakhir, Diagram Code, meskipun tidak selalu digunakan, dapat memberikan detail pada tingkat kode untuk menunjukkan struktur internal dari komponen tertentu.

Untuk sebagian besar tim pengembang, pembuatan Diagram System Context & Diagram Container dirasa cukup untuk permulaan proyek.
Diagram System Context berfokus pada persona, pengguna sistem dan hubungan antar sistem. Hindari jargon teknis seperti protokol, teknologi yang digunakan atau detail lainnya. Diagram ini sebaiknya dapat dipahami oleh pengguna non teknis.

Container adalah sebuah sistem yang dapat dijalankan/di-deploy secara terpisah. Diagram Container menunjukann arsitektur perangkat lunak secara umum dan pemilihan teknologi, komunikasi antar sistem dapat dilihat di sini. Diagram ini sebaiknya disusun agar dapat dipahami oleh tim pengembang atau tim support.

Kelebihan dari C4 Model adalah kemampuannya untuk menyajikan informasi yang kompleks dengan cara yang terstruktur dan mudah dipahami. Dengan menyediakan berbagai tingkat detail, model ini memungkinkan berbagai pemangku kepentingan, dari pengembang hingga manajer proyek, untuk mendapatkan pandangan yang mereka butuhkan. Namun, salah satu tantangan dari C4 Model adalah kebutuhan untuk menjaga diagram tetap mutakhir seiring dengan perubahan sistem, yang dapat memerlukan usaha dan disiplin tambahan dari tim pengembang. Meskipun demikian, bagi banyak organisasi, C4 Model menawarkan pendekatan yang efektif untuk mendokumentasikan dan berkomunikasi tentang arsitektur perangkat lunak.
Alternatif lain untuk C4 Model termasuk Unified Modeling Language (UML), yang juga digunakan untuk memvisualisasikan desain sistem perangkat lunak. UML menyediakan berbagai jenis diagram, seperti diagram kelas dan diagram urutan, yang dapat digunakan untuk menggambarkan aspek struktural dan perilaku sistem. Namun, UML sering dianggap lebih kompleks dan memerlukan lebih banyak waktu untuk dipelajari dan diterapkan dibandingkan dengan C4 Model. Pilihan antara C4 Model dan UML atau metode lainnya sering kali bergantung pada kebutuhan spesifik proyek, preferensi tim, dan tingkat detail yang diperlukan.
UML (Unified Modeling Language)
Unified Modeling Language (UML) adalah bahasa pemodelan standar yang digunakan untuk merancang dan mendokumentasikan sistem perangkat lunak. Konsep awal UML dikembangkan pada pertengahan 1990-an oleh Grady Booch, James Rumbaugh, dan Ivar Jacobson di Rational Software, yang kemudian diakuisisi oleh IBM. Tujuan utama dari UML adalah menyediakan cara yang seragam untuk memvisualisasikan desain sistem perangkat lunak yang kompleks, memungkinkan pengembang dan pemangku kepentingan lainnya untuk berkomunikasi secara efektif tentang struktur dan perilaku sistem.

UML terdiri dari berbagai jenis diagram yang masing-masing menggambarkan aspek berbeda dari sistem. Diagram ini dapat dibagi menjadi dua kategori utama: diagram struktural dan diagram perilaku. Diagram struktural, seperti diagram kelas, diagram objek, dan diagram komponen, digunakan untuk memodelkan elemen-elemen statis dari sistem. Sementara itu, diagram perilaku, seperti diagram urutan, diagram aktivitas, dan diagram kasus penggunaan, digunakan untuk memodelkan dinamika dan interaksi dalam sistem. Dengan menggunakan berbagai diagram ini, UML memungkinkan pengembang untuk menangkap baik struktur maupun aliran proses dalam sistem perangkat lunak.
Kelebihan dari UML adalah kemampuannya untuk menyediakan pandangan yang komprehensif dan terstruktur tentang sistem perangkat lunak, yang dapat meningkatkan pemahaman dan komunikasi di antara tim pengembang. UML juga mendukung standar industri, sehingga banyak alat dan platform yang mendukung pembuatan dan analisis diagram UML. Namun, UML juga memiliki beberapa kelemahan, seperti kompleksitasnya yang dapat membuatnya sulit dipelajari dan diterapkan, terutama untuk proyek kecil atau tim yang tidak berpengalaman. Selain itu, menjaga diagram UML tetap mutakhir seiring perubahan sistem bisa menjadi tantangan tersendiri.
C4 atau UML?
Untuk permulaan awal pengembangan perangkat lunak, C4 lebih cocok karena tidak membutuhkan usaha yang terlalu tinggi untuk pembuatannya. Seiring dengan proses pengembangan yang lebih kompleks, UML bisa digunakan apabila dibutuhkan.