Dokumen tersebut membahas strategi dan metode desain perangkat lunak, termasuk definisi desain perangkat lunak, pentingnya desain yang baik, tantangan desain, keuntungan desain yang baik, prinsip desain yang baik, dan perbandingan antara desain terstruktur, berorientasi fungsi, dan berorientasi objek.
2. Definisi Desain Software
Desain didefinisikan sebagai proses
mendefinisikan arsitektur, komponen,
antarmuka, dan karakteristik lain dari sistem
atau komponen" dan "hasil dari proses [itu]
Desain software didefinisikan sebagai aktivitas
siklus hidup rekayasa dan deskripsi struktur
internal yang akan menjadi dasar untuk
konstruksinya.
Hasil mendesain menggambarkan komponen
pada tingkat detail dan antarmuka di antara
komponen-komponen tersebut
3. Pentingnya Desain Software
Desain software membantu menentukan
bagaimana sebuah sistem akan bekerja dan
bagaimana ia akan terlihat
Desain software membantu memahami
kebutuhan dan anggaran waktu dan biaya yang
diperlukan
Desain software membantu memastikan kualitas
dan kehandalan produk yang dihasilkan
Desain software membantu memastikan bahwa
produk yang dihasilkan sesuai dengan kebutuhan
dan harapan pelanggan
4. Tantangan Desain Software
Keterbatasan waktu dan anggaran
Keterbatasan sumber daya
Kebutuhan yang berubah-ubah
Kebutuhan untuk memastikan
kompatibilitas dengan sistem lain
Kebutuhan untuk memastikan keamanan
dan privasi informasi
5. Keuntungan Desain Software
yang Baik
Produk yang lebih baik, yang memenuhi
kebutuhan dan harapan pelanggan
Waktu pengembangan yang lebih singkat
Biaya yang lebih efisien
Kemudahan dalam perawatan dan
pemeliharaan
Kemudahan dalam integrasi dengan sistem
lain
6. Desain Software yang Baik
Jelas
Desain software yang baik harus jelas dan mudah
dipahami.
Arsitektur dan spesifikasi harus didefinisikan
dengan jelas dan mencakup informasi yang
diperlukan untuk mengembangkan software.
Tujuan dan fungsi software harus jelas dan sesuai
dengan kebutuhan pengguna.
7. Desain Software yang Baik
Konsisten
Desain software harus konsisten dan memenuhi
standar industri yang diterima.
Penggunaan bahasa pemrograman, struktur data,
dan teknik desain harus konsisten dan sesuai
dengan standar.
Struktur software harus mudah dikelola dan
memiliki konsistensi dalam membuat perubahan.
8. Desain Software yang Baik
Efisien
Desain software harus efisien dalam
menggunakan sumber daya dan memiliki waktu
respon yang cepat.
Proses desain harus mengoptimalkan performa
software dan memiliki kapasitas untuk mengatasi
beban kerja.
Algoritma dan logika program harus efisien dan
memiliki tingkat kompleksitas yang rendah.
9. Desain Software yang Baik
Dapat dimodifikasi
Desain software harus mudah dimodifikasi dan
diperbarui seiring dengan perubahan kebutuhan
pengguna.
Struktur software harus memiliki fleksibilitas
untuk memperbarui kode dan menambah fitur
baru.
Desain software harus memiliki kapasitas untuk
mengatasi bug dan masalah teknis dengan
mudah.
10. Desain yang Scalable dan Future-
proof
Desain software yang baik harus
memperhitungkan skalabilitas dan
kemampuan untuk memperbarui produk.
Ini memastikan bahwa software tetap
relevan dan bisa menyesuaikan diri dengan
perubahan lingkungan dan teknologi.
11. Skalabilitas
Skalabilitas adalah kemampuan software
untuk menyesuaikan diri dengan
pertumbuhan jumlah pengguna dan data.
Desain software yang baik harus
memperhitungkan skalabilitas dengan
memastikan bahwa software bisa bekerja
dengan baik pada skala yang berbeda dan
memiliki infrastruktur yang bisa
menyesuaikan diri dengan pertumbuhan.
12. Future-proof
Desain software yang baik harus
memperhitungkan bahwa produk akan
perlu diperbarui seiring dengan perubahan
teknologi dan lingkungan. Ini memastikan
bahwa software bisa menyesuaikan diri
dengan perubahan dan memperbaiki diri
sendiri untuk tetap relevan.
14. Structured Design
Desain terstruktur adalah suatu metode
pemecahan masalah dalam pembuatan
software, dengan membagi masalah besar
menjadi bagian-bagian yang lebih kecil dan
terstruktur.
15. Tujuan Structured Design
Mempermudah proses pemecahan masalah
dan pembuatan software
Membuat software lebih mudah dipahami
dan dikelola
Mempermudah proses debugging dan
perbaikan
Mempermudah proses modifikasi dan
perbaikan
16. Fungsi Structured Design
Menentukan alur kerja software
Menentukan bagian-bagian dari software
Membuat software lebih mudah dipahami
dan dikelola
Mempermudah debugging dan perbaikan
Mempermudah modifikasi dan perbaikan
17. Metode Structured Design
Hierarki Proses
Menentukan proses besar
Membagi proses besar menjadi bagian-
bagian lebih kecil
Menentukan alur kerja bagian-bagian
kecil
18. Metode Structured Design
Modularitas
Menentukan bagian-bagian dari software
Membuat bagian-bagian software
independen
Mempermudah debugging dan perbaikan
Mempermudah modifikasi dan perbaikan
19. Metode Structured Design
Abstraction
Menentukan bagian-bagian yang harus
didefinisikan secara abstract
Membuat software lebih mudah dipahami
dan dikelola
Mempermudah debugging dan perbaikan
Mempermudah modifikasi dan perbaikan
20. Function Oriented Design
Function Oriented Design adalah salah satu
pendekatan desain software yang
memfokuskan pada pembagian tugas
berdasarkan fungsi-fungsi tertentu.
Fungsi-fungsi tersebut mewakili komponen
yang berbeda dalam sistem dan memiliki
tugas yang spesifik.
21. Fokus Function Oriented Design
Fokus utama Function Oriented Design
adalah memastikan bahwa setiap fungsi
dalam sistem memiliki tugas yang jelas dan
terdefinisi dengan baik.
Hal ini membantu memastikan bahwa
sistem memiliki alur kerja yang jelas dan
mudah diterapkan.
22. Modularitas
Modularitas adalah prinsip utama dalam
Function Oriented Design yang berfokus
pada pembagian tugas atau kode dalam
sebuah software menjadi bagian-bagian
yang lebih kecil dan terpisah yang disebut
modul.
Setiap modul memiliki fungsi spesifik dan
dapat digunakan dan dipelajari secara
terpisah, membuat software lebih mudah
dikelola dan dipahami.
23. Object Oriented Design
Object Oriented Design (OOD) adalah salah
satu pendekatan dalam desain software
yang menggunakan objek sebagai dasar
pemodelan sistem.
OOD memfokuskan pada pembuatan objek-
objek yang memiliki atribut dan perilaku
seperti objek yang ada dalam dunia nyata.
Setiap objek memiliki identitas, keterkaitan
dengan objek lain, dan ketergantungan
pada objek lain.
24. Prinsip Dasar Object Oriented
Design
Abstraction: Memfokuskan pada pembuatan model
yang mewakili aspek-aspek penting dari sistem yang
dibangun, sambil mengabaikan detail-detail yang tidak
penting.
Encapsulation: Menyembunyikan detail-detail
implementasi dari objek agar dapat digunakan oleh
objek lain tanpa harus memahami bagaimana objek
tersebut bekerja.
Inheritance: Memungkinkan objek untuk memperoleh
karakteristik dari objek lain, sehingga membuat objek
baru dapat dibuat dengan cepat dan mudah.
Polymorphism: Memungkinkan objek untuk memiliki
lebih dari satu bentuk dan perilaku yang berbeda.
25. Perbedaan Ketiga Strategi
Desain
Struktur: Structured Design menekankan
pada pembagian tugas dan pemecahan
masalah dalam blok-blok yang terpisah dan
terstruktur. Function Oriented Design
memfokuskan pada pembagian tugas
berdasarkan fungsi-fungsi tertentu,
sedangkan Object Oriented Design
memfokuskan pada pembagian tugas
berdasarkan objek dan hubungan antar
objek.
26. Perbedaan Ketiga Strategi
Desain
Abstraksi: Structured Design lebih bersifat
prosedural, Function Oriented Design
memfokuskan pada pembagian tugas
berdasarkan fungsi-fungsi tertentu,
sedangkan Object Oriented Design
memfokuskan pada abstraksi objek dan
hubungan antar objek.
27. Perbedaan Ketiga Strategi
Desain
Modularitas: Structured Design
memfokuskan pada modularitas sebagai
salah satu prinsip dasar, Function Oriented
Design juga memiliki prinsip modularitas,
sedangkan Object Oriented Design
memfokuskan pada kelas-kelas sebagai unit
modular.
28. Perbedaan Ketiga Strategi
Desain
Reusabilitas: Structured Design lebih
memfokuskan pada pemecahan masalah
dalam blok-blok terpisah, Function Oriented
Design memfokuskan pada fungsi-fungsi
sebagai unit modular, sedangkan Object
Oriented Design memfokuskan pada objek
dan kelas sebagai unit modular yang dapat
digunakan kembali dalam proyek lain.
29. Perbedaan Ketiga Strategi
Desain
Kejelasan: Structured Design cenderung
memiliki keterbacaan yang lebih baik,
Function Oriented Design memfokuskan
pada kejelasan fungsi-fungsi yang spesifik,
sedangkan Object Oriented Design
memfokuskan pada abstraksi objek dan
hubungan antar objek.
31. Objek Desain
Laporan-laporan
Informasi hasil proses
Desain Output
Dokumen-dokumen
Data-data dari lapangan
Desain Input
Berbasis alur proses
Berbasis alur data
Desain Proses
Desain Database
Desain User Interface