際際滷

際際滷Share a Scribd company logo
Software Design Strategies and
Methods
Muhammad Ainul Yaqin
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
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
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
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
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.
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.
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.
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.
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.
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.
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.
Strategi Desain Software
Stuctured Design
Function Oriented Design
Object Oriented Design
Structured Design
Desain terstruktur adalah suatu metode
pemecahan masalah dalam pembuatan
software, dengan membagi masalah besar
menjadi bagian-bagian yang lebih kecil dan
terstruktur.
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
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
Metode Structured Design
Hierarki Proses
 Menentukan proses besar
 Membagi proses besar menjadi bagian-
bagian lebih kecil
 Menentukan alur kerja bagian-bagian
kecil
Metode Structured Design
Modularitas
 Menentukan bagian-bagian dari software
 Membuat bagian-bagian software
independen
 Mempermudah debugging dan perbaikan
 Mempermudah modifikasi dan perbaikan
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Objek Desain
Arsitektur
Alur Proses
Alur Data
Arsitektur Data
Desain
Software
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

More Related Content

04 Software Design Strategies and Methods

  • 1. Software Design Strategies and Methods Muhammad Ainul Yaqin
  • 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.
  • 13. Strategi Desain Software Stuctured Design Function Oriented Design Object Oriented Design
  • 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.
  • 30. Objek Desain Arsitektur Alur Proses Alur Data Arsitektur Data Desain Software
  • 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