Coupling vs Kohesi
Coupling dan kohesi adalah dua konsep yang ditemukan di Java (dan semua bahasa berorientasi objek lainnya). Coupling mengukur seberapa besar masing-masing modul program bergantung pada modul program lainnya. Kohesi mengukur seberapa kuat masing-masing fungsi terkait dalam sebuah modul. Sebenarnya, setiap bahasa berorientasi objek (termasuk Java) memiliki dua tujuan utama untuk meningkatkan keterpaduan dan mengurangi kopling pada saat yang sama, untuk mengembangkan program yang paling efisien. Kedua metrik rekayasa perangkat lunak ini dikembangkan oleh Larry Constantine untuk mengurangi biaya modifikasi dan pemeliharaan perangkat lunak.
Apa itu Kohesi?
Cohesion mengukur seberapa kuat masing-masing fungsi terkait dalam modul program. Kelas yang terstruktur dengan baik mengarah pada program yang sangat kohesif. Jika kelas tertentu melakukan serangkaian fungsi yang sangat terkait, kelas itu dikatakan kohesif. Di sisi lain, jika sebuah kelas melakukan banyak fungsi yang sama sekali tidak terkait, itu berarti kelas tersebut tidak kohesif sama sekali. Penting untuk dipahami bahwa tidak memiliki keterpaduan tidak berarti bahwa aplikasi secara keseluruhan tidak memiliki fungsionalitas yang diperlukan. Hanya saja tanpa kohesi, akan sangat sulit untuk mengatur fungsionalitas karena akan tersebar di banyak tempat yang salah seiring dengan meningkatnya kompleksitas aplikasi dari waktu ke waktu. Mempertahankan, memodifikasi, dan memperluas perilaku yang tersebar di seluruh kode sangat membosankan bahkan untuk sebagian besar programmer berpengalaman.
Apa itu Kopling?
Coupling mengukur seberapa besar setiap modul program bergantung pada modul program lainnya. Interaksi antara dua objek terjadi karena adanya coupling. Program yang digabungkan secara longgar memiliki fleksibilitas dan ekstensibilitas yang tinggi. Kopling yang kuat tidak pernah baik karena satu objek bisa sangat bergantung pada beberapa objek lain. Ini adalah mimpi buruk ketika kode dimodifikasi, karena kopling tinggi berarti bahwa programmer harus bekerja di beberapa tempat kode bahkan untuk satu modifikasi perilaku. Kopling yang kuat selalu mengarah ke program dengan fleksibilitas rendah dan skalabilitas/ekstensibilitas yang lebih rendah. Namun, dalam bahasa pemrograman seperti Java, menghindari kopling sepenuhnya tidak mungkin. Tetapi disarankan agar pemrogram memberikan upaya terbaik mereka untuk mengurangi kopling sebanyak mungkin. Dimungkinkan juga untuk memiliki beberapa kopling untuk membantu objek berinteraksi satu sama lain tanpa menghambat skalabilitas dan fleksibilitasnya.
Apa perbedaan antara Kopling dan Kohesi?
Meskipun kopling dan kohesi berhubungan dengan kualitas modul dalam rekayasa perangkat lunak, mereka adalah konsep yang sama sekali berbeda. Kohesi berbicara tentang seberapa banyak fungsionalitas yang terkait satu sama lain di dalam modul, sementara kopling berkaitan dengan seberapa banyak satu modul bergantung pada modul program lain dalam keseluruhan aplikasi. Untuk memiliki perangkat lunak dengan kualitas terbaik, kohesi dan kopling harus mencapai dua ujung spektrum yang berlawanan. Dengan kata lain, kopling longgar dan kohesi yang kuat menyediakan perangkat lunak terbaik. Memiliki bidang pribadi, kelas non-publik, dan metode pribadi menyediakan kopling longgar, sementara membuat semua anggota terlihat di dalam kelas dan memiliki paket sebagai visibilitas default memberikan kohesi tinggi.