(4) PRINSIP DAN DIAGRAM UNTUK PERANCANGAN PERANGKAT LUNAK

 A. Prinsip Perancangan Perangkat Lunak

Desain sistem perangkat lunak adalah proses merancang arsitektur dan komponen

perangkat lunak yang dapat memecahkan masalah yang dihadapi pengguna atau organisasi.

1. Prinsip Modularitas & Reusability

  • Modularitas adalah prinsip desain yang mengedepankan pemecahan sistem menjadi

bagian-bagian yang lebih kecil dan independen, yang disebut modul. Setiap modul memiliki

fungsi atau tanggung jawab tertentu dan berinteraksi dengan modul lain melalui antarmuka

yang terdefinisi dengan baik.

  • Reusability kemampuan perangkat untuk lunak digunakan adalah kembali komponen

perangkat lunak yang ada atau mudah tersedia untuk mengurangi waktu dan biaya untuk

komputasi dan sumber daya manusia

  • DRY (Don’t Repeat Yourself)

Don't Repeat Yourself (DRY) adalah prinsip pengembangan perangkat lunak yang

mendorong pengembang untuk menghindari duplikasi kode dalam suatu sistem.

  • KISS (Keep It Simple, Stupid)

Prinsip KISS betapa pentingnya kemudahan dalam desain perangkat lunak. Prinsip ini

mendorong pengembang untuk menghindari kerumitan yang tidak perlu dan menciptakan

solusi yang lugas dan mudah dipahami.


2. Prinsip SOLID dalam OOP

  • Single Responsibility Princip

principle artinya setiap class wajib hanya memiliki satu tanggung jawab, dan hanya

memiliki satu alasan untuk diubah. 

  • Open/Closed Principle

Dengan menerapkan Open-close principle kita harusnya bisa menambahkan fitur baru

tanpa harus mengubah kode lama yang sudah ditulis sebelumnya.

  • Liskov Substitution Principle

Konsep ini terkait dengan proses inheritance suatu fungsi atau objek.

  • Dependency Inversion Principle

Prinsip DIP mengatakan bahwa kelas seharusnya bergantung pada abstraksi, bukan pada

implementasi.


3. Kohesi dan Coupling

  • Kopling mengacu pada tingkat saling ketergantungan antara modul perangkat lunak.

Kopling yang tinggi berarti bahwa modul-modul saling terhubung erat dan perubahan dalam

satu modul dapat memengaruhi modul-modul lainnya. Kopling yang rendah berarti bahwa

modul-modul bersifat independen, dan perubahan dalam satu modul memiliki dampak yang

kecil pada modul-modul lainnya.

Berikut ini adalah jenis-jenis Kopling:

a. Penggabungan Data: Jika ketergantungan antara modul didasarkan pada fakta bahwa

mereka berkomunikasi dengan hanya mengirimkan data, maka modul tersebut

dikatakan sebagai penggabungan data. Dalam penggabungan data, komponen-

komponennya independen satu sama lain dan berkomunikasi melalui data. Komunikasi

modul tidak berisi data tramp. Contoh-sistem penagihan pelanggan.

b. Stamp Coupling Dalam stamp coupling, struktur data lengkap diteruskan dari satu

modul ke modul lainnya. Oleh karena itu, hal ini melibatkan data tramp. Hal ini

mungkin diperlukan karena faktor efisiensi - pilihan ini dibuat oleh desainer yang

cerdas, bukan programmer yang malas.

c. Kopling Kontrol: Jika modul berkomunikasi dengan cara menyampaikan informasi

kontrol, maka modul tersebut disebut sebagai kopling kontrol. Kopling kontrol dapat

dikatakan buruk jika parameter menunjukkan perilaku yang sama sekali berbeda, dan

dapat dikatakan baik jika parameter memungkinkan pemfaktoran dan penggunaan

kembali fungsionalitas. Contoh- fungsi sortir yang menggunakan fungsi perbandingan

sebagai argumen.

d. Kopling Eksternal: Dalam kopling eksternal, modul-modul bergantung pada modul-

modul lain, yang berada di luar perangkat lunak yang sedang dikembangkan atau pada

jenis perangkat keras tertentu. Misalnya protokol, berkas eksternal, format perangkat,

dll.

e. Common Coupling: Modul-modul memiliki data bersama seperti struktur data global.

Perubahan dalam data global berarti menelusuri kembali ke semua modul yang

mengakses data tersebut untuk mengevaluasi dampak perubahan. Jadi, ada beberapa

kelemahan seperti kesulitan dalam menggunakan kembali modul, berkurangnya

kemampuan untuk mengendalikan akses data, dan berkurangnya pemeliharaan.

f. Content Coupling: Dalam content coupling, satu modul dapat mengubah data modul

lain, atau aliran kontrol diteruskan dari satu modul ke modul lainnya. Ini adalah bentuk

coupling terburuk dan harus dihindari.

g. Kopling Temporal: Kopling temporal terjadi ketika dua modul bergantung pada waktu

atau urutan kejadian, seperti satu modul perlu dijalankan sebelum modul lainnya. Jenis

kopling ini dapat mengakibatkan masalah desain dan kesulitan dalam pengujian dan

pemeliharaan.

h. Kopling Berurutan: Kopling berurutan terjadi saat output dari satu modul digunakan

sebagai input modul lain, yang menciptakan rantai atau urutan ketergantungan. Jenis

kopling ini sulit dipertahankan dan dimodifikasi.

i. Kopling Komunikasi: Kopling komunikasi terjadi ketika dua atau lebih modul berbagi

mekanisme komunikasi yang sama, seperti antrean pesan atau basis data yang sama.

Jenis kopling ini dapat menyebabkan masalah kinerja dan kesulitan dalam debugging.

  • Kohesi mengacu pada tingkat di mana elemen-elemen dalam suatu modul bekerja sama untuk

memenuhi satu tujuan yang ditetapkan dengan baik. Kohesi yang tinggi berarti bahwa elemen-

elemen saling terkait erat dan terfokus pada satu tujuan, sedangkan kohesi yang rendah berarti

bahwa elemen-elemen saling terkait secara longgar dan melayani berbagai tujuan.

Berikut ini adalah jenis-jenis Kohesi:

a. Kohesi Fungsional: Setiap elemen penting untuk satu komputasi terkandung dalam

komponen. Kohesi fungsional menjalankan tugas dan fungsinya. Ini adalah situasi yang

ideal.

b. Kohesi Berurutan: Suatu elemen mengeluarkan sejumlah data yang menjadi masukan

bagi elemen lainnya, yaitu aliran data antar bagian. Hal ini terjadi secara alami dalam

bahasa pemrograman fungsional.

c. Kohesi Komunikasi: Dua elemen beroperasi pada data masukan yang sama atau

berkontribusi terhadap data keluaran yang sama. Contoh: memperbarui catatan dalam

basis data dan mengirimkannya ke printer.

d. Kohesi Prosedural: Elemen-elemen kohesi prosedural memastikan urutan pelaksanaan.

Tindakan masih terhubung secara lemah dan tidak mungkin dapat digunakan kembali.

Misalnya menghitung IPK siswa, mencetak catatan siswa, menghitung IPK kumulatif,

mencetak IPK kumulatif.

e. Kohesi Temporal: Elemen-elemen tersebut saling terkait berdasarkan waktu yang

terlibat. Modul yang terhubung dengan kohesi temporal mengharuskan semua tugas

dieksekusi dalam rentang waktu yang sama. Kohesi ini berisi kode untuk

menginisialisasi semua bagian sistem. Banyak aktivitas berbeda terjadi, semuanya

dalam waktu satuan.

f. Kohesi Logis: Elemen-elemen tersebut terkait secara logis dan tidak secara fungsional.

Misalnya, komponen A membaca input dari pita, disk, dan jaringan. Semua kode untuk

fungsi-fungsi ini ada dalam komponen yang sama. Operasi-operasinya terkait, tetapi

fungsinya sangat berbeda.

g. Kohesi Kebetulan: Elemen-elemen tidak terkait (tidak berhubungan). Elemen-elemen

tidak memiliki hubungan konseptual selain lokasi dalam kode sumber. Itu tidak

disengaja dan merupakan bentuk kohesi terburuk. Contoh: cetak baris berikutnya dan

balikkan karakter string dalam satu komponen.

h. Kohesi Prosedural: Jenis kohesi ini terjadi ketika elemen atau tugas dikelompokkan

bersama dalam sebuah modul berdasarkan urutan pelaksanaannya, seperti modul yang

menjalankan serangkaian prosedur terkait dalam urutan tertentu. Kohesi prosedural

dapat ditemukan dalam bahasa pemrograman terstruktur.

i. Kohesi Komunikasi: Kohesi komunikasi terjadi ketika elemen atau tugas

dikelompokkan bersama dalam sebuah modul berdasarkan interaksinya satu sama lain,

seperti modul yang menangani semua interaksi dengan sistem atau modul eksternal

tertentu. Jenis kohesi ini dapat ditemukan dalam bahasa pemrograman berorientasi

objek.

j. Kohesi Temporal: Kohesi temporal terjadi ketika elemen atau tugas dikelompokkan

bersama dalam sebuah modul berdasarkan waktu atau frekuensi pelaksanaannya,

seperti modul yang menangani semua tugas periodik atau terjadwal dalam sebuah

sistem. Kohesi temporal umumnya digunakan dalam sistem real-time dan embedded.

k. Kohesi Informasional: Kohesi informasional terjadi ketika elemen atau tugas

dikelompokkan bersama dalam sebuah modul berdasarkan hubungannya dengan

struktur data atau objek tertentu, seperti modul yang beroperasi pada tipe data atau

objek tertentu. Kohesi informasional umumnya digunakan dalam pemrograman

berorientasi objek.

Tidak ada komentar:

Posting Komentar