- Beranda
- Komunitas
- Tech
- Programmer Forum
Dua Cara Menyusun Struktur Direktori Perangkat Lunak yang Baik


TS
dumpsys
Dua Cara Menyusun Struktur Direktori Perangkat Lunak yang Baik
Setidaknya ada 2 pilihan yang bisa digunakan untuk mengorganisasikan kode kita:
- Package by Layer
Seperti namanya, kita mengelompokkan kelas-kelas yang kita buat berdasarkan layer aplikasi. perhatikan layer onion architecture/clean architecture diagram di atas. Dengan ini dalam aplikasi akan terlihat struktur package kurang lebih seperti berikut:
- com.kaskus.action
- com.kaskus.model
- com.kaskus.co.idecase
- com.kaskus.dao
Masing-masing package akan berisi kelas-kelas serupa yang tergambar dari nama package tersebut. misalnya semua kelas model seperti: User, Post, Question, dll berada dalam package com.kaskus.model
Di sini satu fitur aplikasi akan bergantung pada kelas-kelas yang tersebar dalam berbagai package yang berbeda. Akibatnya, keterkaitan antar package menjadi tinggi (low cohesion) dan aplikasi menjadi tidak cukup modular (low modularity). Saat diperlukan perubahan pada sebuah fitur, sangat mungkin perubahannya akan meliputi beberapa package yang berbeda. Begitu juga saat penghapusan atau penghilangan sebuah fitur, maka yang diperlukan adalah menghapus kelas-kelas yang diperlukan oleh fitur tersebut yang tersebar dalam berbagai package.
- Package by Feature
Berbeda dengan package by layer, package by feature mengelompokkan kelas-kelas yang diperlukan untuk implementasi sebuah fitur aplikasi dalam sebuah package. Sehingga nama package merupakan representasi dari feture yang diimplementasikannya. Dengan demikian, struktur sebuah aplikasi akan terlihat kurang lebih seperti berikut:
- com.kaskus.feature.statistics
- com.kaskus.feature.profile
- com.kaskus.feature.questions
- com.kaskus.feature.security
- com.kaskus.feature.util
Dengan menyusun direktory/package aplikasi kita seperti ini, membuat ketergantungan antar package sangat kecil atau hampir tidak ada (high cohesion) dan aplikasi menjadi lebih modular (high modularity).
Kelas-kelas yang terkait dengan sebuah fitur tidak lagi tersebar dalam berbagai package akan tetapi terkumpul dalam sebuah package. Jika seandainya ada satu fitur yang berubah, perubahannya juga hanya pada satu pacakge fitur yang mengalami perubahan (proses bisnis) tersebut. Pada kasus tertentu, seandainya sebuah fitur tidak lagi diperlukan, maka penghapusan fitur tersebut seakan semudah melakukan satu operasi yaitu menghapus satu package/direktori.
gambar dari: bliki: PresentationDomainDataLayering
Jadi, jika menyusun struktur direktori proyek perangkat lunak, sangat dianjurkan untuk menyusun direktori berdasarkan fitur (package by feature) alih-alih menyusunnya berdasarkan layer (package by layer).
Semoga bermanfaat

referensi:
1. https://martinfowler.com/bliki/Prese...aLayering.html
2. http://www.javapractices.com/topic/T...tion.do?Id=205
Ini contoh project yang menggunakan package by feature gan https://github.com/googlesamples/and...prints/todoapp
aplikasi Android sih, tapi ini juga bisa untuk project perangkat lunak apapun
Diubah oleh dumpsys 28-05-2019 20:54






nona212 dan 5 lainnya memberi reputasi
6
1.3K
10


Komentar yang asik ya
Urutan
Terbaru
Terlama


Komentar yang asik ya
Komunitas Pilihan