prinsip dasar untuk desain yang baik
prinsip dasar untuk desain yang baik
Oleh : Adam Fahsyah Nurzaman
Pada artikel ini, akan dibahas mengenai prinsip – prinsip dasar apa saja yang dapat digunakan Ketika melakukan desain system yang baik dan benar. Dalam PMBOK (Project Management Body of Knowledge) dalam Project Quality Management area, mengidentifikasi beberapa karakteristik dari yang Namanya “Good” Software. Pembahasan berikut ini tentang prinsip-prinsip desain yang baik adalah titik awal bagi Anda untuk memahami bagaimana merancang perangkat lunak berkualitas tinggi. Namun, ini bukan diskusi yang komprehensif. Ada banyak buku dan artikel bagus tentang prinsip-prinsip desain berorientasi objek yang baik, yang selanjutnya menjelaskan prinsip dan teknik desain yang baik.
- Object Responsibility
- Salah satu prinsip paling mendasar dari desain berorientasi objek adalah gagasan tentang tanggung jawab objek; yaitu, objek harus bertanggung jawab untuk melakukan pemrosesan sistem. Tanggung jawab ini dikategorikan dalam dua bidang utama: mengetahui dan melakukan.
- Mengetahui mencakup tanggung jawab suatu objek untuk mengetahui tentang datanya sendiri dan mengetahui tentang kelas-kelas lain yang dengannya ia harus berkolaborasi untuk melakukan kasus penggunaan. Jelas, kelas harus tahu tentang datanya sendiri, atribut apa yang ada, dan bagaimana menjaga informasi dalam atribut tersebut. Itu juga harus tahu ke mana harus pergi untuk mendapatkan informasi ketika diperlukan.
- Melakukan mencakup semua aktivitas yang dilakukan objek untuk menyelesaikan kasus penggunaan. Beberapa kegiatan tersebut termasuk menerima dan memproses pesan. Aktivitas lain adalah untuk instantiate, atau membuat, objek baru yang mungkin diperlukan untuk menyelesaikan use case. Kelas harus berkolaborasi untuk melakukan use case, dan beberapa kelas bertanggung jawab untuk mengoordinasikan kolaborasi.
- Separation of Responsibilities or Separation of Concerns
- Pemisahan tanggung jawab, juga disebut pemisahan keprihatinan, adalah prinsip desain yang diterapkan pada sekelompok kelas daripada setiap kelas secara individual. Ide dasar pemisahan tanggung jawab adalah untuk memisahkan kelas ke dalam paket atau pengelompokan berdasarkan fokus utama dari pemrosesan tanggung jawab. Pemisahan tanggung jawab adalah prinsip dasar di balik desain multilayer. Dalam desain multilayer, ada kelas user interface, kelas logika bisnis, dan kelas akses data. Setiap lapisan memiliki fokus atau bidang tanggung jawab tertentu. Kelas-kelas yang memiliki fokus atau perhatian yang sama dikelompokkan bersama dalam satu lapisan. Prinsip desain ini memungkinkan fleksibilitas dalam penyebaran sistem karena lapisan yang berbeda, yaitu, pengelompokan kelas, dapat ditempatkan di komputer yang berbeda atau di lokasi yang berbeda.
- Protection from Variations
- prinsip bahwa bagian-bagian dari sistem yang tidak mungkin berubah harus dipisahkan (atau dilindungi) dari yang akan berubah. Saat Anda merancang sistem, Anda harus mencoba mengisolasi bagian-bagian yang akan berubah dari yang lebih stabil. Perlindungan dari variasi adalah prinsip yang memengaruhi pola desain multilayer. Desainer dapat menggabungkan semua logika antarmuka pengguna dan logika bisnis bersama di kelas yang sama.
- Indirection
- adalah prinsip memisahkan dua kelas atau komponen sistem lainnya dengan menempatkan kelas menengah di antara mereka untuk berfungsi sebagai tautan. Dengan kata lain, instruksi tidak langsung dari A ke B; mereka dikirim melalui C terlebih dahulu. Atau dalam terminologi pesan, jangan mengirim pesan dari A ke B. Biarkan A mengirim pesan ke C dan kemudian membiarkan C meneruskannya ke B.
- Meskipun ada banyak cara untuk menerapkan perlindungan dari variasi, tipuan sering digunakan untuk tujuan itu. Memasukkan objek perantara memungkinkan variasi dalam satu sistem diisolasi dalam objek perantara tersebut. Tipuan juga berguna untuk banyak sistem keamanan perusahaan.
- Coupling
- Prinsip ini, kopling, dan prinsip berikutnya, kohesi, pada awalnya didefinisikan pada masa awal perancangan dan pemrograman perangkat lunak. Namun, kedua prinsip terus menjadi sangat penting dan berlaku untuk desain yang berorientasi objek.
- adalah ukuran kualitatif seberapa dekat kelas dalam diagram kelas desain dihubungkan. Cara sederhana untuk memikirkan tentang kopling adalah dengan jumlah hubungan asosiasi dan hubungan seluruh / bagian pada diagram kelas desain. Sebelumnya, Anda belajar tentang visibilitas navigasi, yang mengukur apa yang dapat dihubungkan dan diakses oleh suatu kelas.
- Kopling rendah biasanya lebih baik untuk sistem daripada kopling tinggi.
- Cohesion
- mengacu pada konsistensi fungsi dalam satu kelas dan merupakan ukuran kualitatif dari fokus atau kesatuan tujuan. Tidak seperti kopling (di mana Anda ingin kopling rendah), kelas harus sangat kohesif agar dirancang dengan baik.
- Kelas dengan kohesi rendah memiliki beberapa efek negatif. Pertama, mereka sulit dipertahankan. Karena mereka melakukan banyak fungsi yang berbeda, mereka cenderung terlalu sensitif terhadap perubahan dalam sistem, menderita efek riak. Kedua, sulit untuk menggunakan kembali kelas-kelas seperti itu karena mereka memiliki banyak fungsi yang berbeda dan seringkali tidak terkait.
- Meskipun tidak ada metrik yang kuat untuk mengukur keterpaduan, kita dapat berpikir bahwa kelas memiliki kohesi yang sangat rendah, rendah, sedang, atau tinggi. Ingat, kohesi tinggi adalah yang paling diinginkan. Contoh kohesi yang sangat rendah adalah kelas yang memiliki tanggung jawab untuk layanan di berbagai bidang fungsional, seperti kelas yang mengakses Internet dan basis data. Kedua jenis kegiatan ini berbeda dan mencapai tujuan yang berbeda. Menyatukan mereka dalam satu kelas menyebabkan kohesi yang sangat rendah.