Prinsip Perancangan Perangkat Lunak
Prinsip Perancangan Perangkat Lunak
1) Prinsip Modularitas & Reusability: Fokus pada pembuatan sistem yang terdiri dari modul-modul independen dan dapat digunakan kembali.
- DRY (Don’t Repeat Yourself): Prinsip untuk menghindari pengulangan kode. Setiap bagian logika atau data harus memiliki representasi tunggal dan otoritatif dalam kode. Ini meningkatkan pemeliharaan dan mengurangi risiko inkonsistensi.
- KISS (Keep It Simple, Stupid): Prinsip yang menekankan pentingnya kesederhanaan dalam desain. Sistem yang sederhana lebih mudah dipahami, diimplementasikan, dan dipelihara. Hindari kompleksitas yang tidak perlu.
2) Prinsip SOLID dalam OOP: Lima prinsip dasar desain berorientasi objek yang bertujuan untuk membuat perangkat lunak lebih mudah dipahami, fleksibel, dan dikelola.
- Single Responsibility Principle (SRP): Sebuah kelas atau modul seharusnya hanya memiliki satu alasan untuk berubah. Ini berarti setiap entitas harus memiliki satu tanggung jawab tunggal.
- Open/Closed Principle (OCP): Entitas perangkat lunak (kelas, modul, fungsi, dll.) harus terbuka untuk perluasan (extension) tetapi tertutup untuk modifikasi (modification). Ini memungkinkan penambahan fungsionalitas baru tanpa mengubah kode yang sudah ada.
- Liskov Substitution Principle (LSP): Objek dari kelas turunan (subtipe) harus dapat menggantikan objek dari kelas dasar (supertipe) tanpa mempengaruhi kebenaran program.
- Interface Segregation Principle (ISP): Klien tidak boleh dipaksa untuk bergantung pada antarmuka (interface) yang tidak mereka gunakan. Lebih baik memiliki banyak antarmuka yang spesifik untuk klien daripada satu antarmuka yang umum.
- Dependency Inversion Principle (DIP):
- Modul tingkat tinggi tidak boleh bergantung pada modul tingkat rendah. Keduanya harus bergantung pada abstraksi.
- Abstraksi tidak boleh bergantung pada detail. Detail harus bergantung pada abstraksi. Prinsip ini mendorong penggunaan antarmuka atau kelas abstrak untuk mengurangi ketergantungan antar komponen. Dependency Injection adalah salah satu teknik implementasi DIP, di mana dependensi suatu objek diberikan dari luar, bukan dibuat di dalam objek itu sendiri.
3) Kohesi dan Coupling: Konsep yang berkaitan dengan bagaimana elemen-elemen di dalam modul saling berhubungan dan bagaimana modul-modul saling berinteraksi.
- High Cohesion & Low Coupling: Idealnya, sebuah modul harus memiliki kohesi yang tinggi, yang berarti semua elemen di dalamnya saling terkait secara fungsional dan berkontribusi pada satu tujuan yang jelas. Di sisi lain, antar modul sebaiknya memiliki coupling yang rendah, yang berarti ketergantungan antar modul minimal. Perubahan pada satu modul seharusnya tidak berdampak besar pada modul lain.
- Dependency Injection: Teknik desain di mana dependensi (objek yang dibutuhkan oleh objek lain) "disuntikkan" ke dalam objek yang membutuhkan, bukan dibuat langsung di dalamnya. Ini meningkatkan low coupling dan mempermudah pengujian.
4. Memvisualisasikan Diagram untuk Perancangan Perangkat Lunak
Tujuan dari visualisasi diagram adalah agar mahasiswa mampu menerjemahkan kebutuhan sistem ke dalam representasi visual menggunakan UML (Unified Modeling Language).
1) Diagram Use Case: Menggambarkan interaksi antara aktor (pengguna atau sistem eksternal) dengan sistem untuk mencapai tujuan tertentu (use case).
- Notasi:
- Aktor: Direpresentasikan sebagai stick figure, melambangkan entitas eksternal yang berinteraksi dengan sistem.
- Use Case: Direpresentasikan sebagai elips, menggambarkan fungsi atau layanan yang disediakan oleh sistem.
- Relasi:
- Include: Menunjukkan bahwa sebuah use case memasukkan perilaku dari use case lain tanpa syarat. Digambarkan dengan panah berlabel
<<include>>dari use case dasar ke use case yang disertakan. - Extend: Menunjukkan bahwa sebuah use case dapat memperluas perilaku dari use case lain di titik tertentu. Digambarkan dengan panah berlabel
<<extend>>dari use case perluasan ke use case dasar.
- Include: Menunjukkan bahwa sebuah use case memasukkan perilaku dari use case lain tanpa syarat. Digambarkan dengan panah berlabel
- Studi kasus: Sistem e-Commerce: Contoh penggunaan diagram use case untuk memodelkan fungsi-fungsi seperti "Browse Produk", "Tambah ke Keranjang", "Checkout", dan interaksi dengan aktor seperti "Pelanggan" dan "Admin".
2) Entity-Relationship Diagram (ERD): Memodelkan struktur data dan hubungan antar entitas dalam sebuah sistem. Umumnya digunakan dalam perancangan basis data.
- Relasi: Menunjukkan bagaimana entitas saling berhubungan:
- 1:1 (One-to-One): Satu instance dari entitas A berasosiasi dengan paling banyak satu instance dari entitas B, dan sebaliknya.
- 1:M (One-to-Many): Satu instance dari entitas A berasosiasi dengan nol atau lebih instance dari entitas B, tetapi satu instance dari entitas B hanya berasosiasi dengan satu instance dari entitas A.
- M:N (Many-to-Many): Satu instance dari entitas A berasosiasi dengan nol atau lebih instance dari entitas B, dan sebaliknya.
- Normalisasi database: Proses pengorganisasian atribut data dalam tabel basis data untuk meminimalkan redundansi dan ketergantungan data, sehingga meningkatkan integritas data.
3) Class Diagram: Memodelkan struktur statis sistem dengan menunjukkan kelas-kelas, atribut, operasi (metode), dan hubungan antar kelas.
- Relasi antar kelas:
- Association: Hubungan umum antar kelas.
- Aggregation: Hubungan "has-a" yang lemah (whole-part relationship), di mana bagian dapat eksis secara independen dari keseluruhan.
- Composition: Hubungan "has-a" yang kuat (whole-part relationship), di mana bagian tidak dapat eksis tanpa keseluruhan.
- Inheritance: Hubungan "is-a" yang memungkinkan sebuah kelas (subkelas) mewarisi atribut dan operasi dari kelas lain (superkelas).
- Studi kasus: Sistem Manajemen Mahasiswa: Contoh penggunaan class diagram untuk memodelkan entitas seperti "Mahasiswa", "Mata Kuliah", "Dosen", dan hubungan di antara mereka.
4) Diagram Lainnya: Diagram-diagram UML lain yang berguna untuk memvisualisasikan aspek dinamis sistem.
- Activity Diagram: Memodelkan alur kerja (workflow) dari suatu proses atau use case, menunjukkan urutan aktivitas dan keputusan.
- Sequence Diagram: Memodelkan interaksi antar objek dalam urutan waktu. Diagram ini menunjukkan objek yang berpartisipasi dan pesan yang mereka kirimkan satu sama lain.
Komentar
Posting Komentar