Bab 3 : Software Design
Nama : Mutia Ardelia Rokhima
NIM : 240605110075
Bab 3 : Software Design
Bagian 1 : Dasar Dasar Software Design
A.
Konsep dan Prinsip Desain Perangkat
Lunak
1.
Definisi Software Design dan
Peranannya dalam Siklus Pengembangan Perangkat Lunak
Software design
adalah proses perancangan struktur dan solusi teknis perangkat lunak yang
mencakup arsitektur, komponen, antarmuka, serta hubungan antarbagian sistem.
Tahap ini dilakukan setelah kebutuhan sistem dianalisis dan sebelum proses
pengkodean dimulai.
Dalam siklus
pengembangan perangkat lunak, software design memiliki peran penting sebagai
penghubung antara kebutuhan pengguna dan implementasi teknis. Desain yang baik
membantu pengembang memahami sistem secara menyeluruh, mengurangi kompleksitas,
serta memastikan perangkat lunak dapat dikembangkan, diuji, dan dipelihara
dengan lebih mudah.
2.
Prinsip-Prinsip Utama dalam Desain
Perangkat Lunak
1.
Single Responsibility Principle
(SRP)
Prinsip ini
menyatakan bahwa setiap kelas atau modul hanya boleh memiliki satu tanggung
jawab utama. Artinya, sebuah komponen perangkat lunak sebaiknya hanya memiliki
satu alasan untuk berubah. Dengan membatasi tanggung jawab, kode menjadi lebih
mudah dipahami, diuji, dan dipelihara.
2.
Open–Closed Principle (OCP)
Prinsip ini
menyatakan bahwa perangkat lunak harus terbuka untuk pengembangan, tetapi
tertutup untuk perubahan. Maksudnya, fitur baru dapat ditambahkan tanpa harus
mengubah kode yang sudah ada. Prinsip ini membantu menjaga stabilitas sistem
dan mengurangi risiko munculnya kesalahan saat pengembangan.
3.
Liskov Substitution Principle (LSP)
Prinsip ini
menegaskan bahwa objek dari kelas turunan harus dapat menggantikan objek dari
kelas induknya tanpa mengubah perilaku sistem. Jika prinsip ini dilanggar,
sistem dapat menghasilkan perilaku yang tidak konsisten dan sulit diprediksi.
4.
Interface Segregation Principle
(ISP)
Prinsip ini
menyarankan agar interface dibuat spesifik dan tidak terlalu besar, sehingga
kelas tidak dipaksa mengimplementasikan metode yang tidak dibutuhkan. Dengan
interface yang terfokus, sistem menjadi lebih fleksibel dan mudah dikembangkan.
5.
Dependency Inversion Principle (DIP)
Prinsip ini
menyatakan bahwa modul tingkat tinggi tidak boleh bergantung pada modul tingkat
rendah, melainkan pada abstraksi. Dengan menerapkan prinsip ini, ketergantungan
antar komponen dapat dikurangi sehingga sistem lebih mudah diuji, diubah, dan
dikembangkan.
3.
Contoh Penerapan Prinsip Desain
dalam Aplikasi Web atau Mobile
|
Prinsip Desain |
Deskripsi |
Contoh Penerapan |
|
Single Responsibility Principle |
Setiap kelas atau modul hanya memiliki satu tanggung jawab utama. |
Dalam aplikasi web, kelas |
|
Open-Closed Principle |
Sistem dapat dikembangkan tanpa harus mengubah kode yang sudah
ada. |
Penambahan fitur baru dilakukan dengan membuat modul baru, bukan
mengubah modul lama. |
|
Liskov Substitution Principle |
Objek turunan harus dapat menggantikan objek induk tanpa mengubah
perilaku sistem. |
Kelas |
|
Interface Segregation Principle |
Interface dibuat spesifik sesuai kebutuhan, tidak terlalu umum. |
Interface login dipisahkan dari interface manajemen pengguna. |
|
Dependency Inversion Principle |
Modul tingkat tinggi tidak bergantung langsung pada modul tingkat
rendah. |
Controller menggunakan interface layanan, bukan implementasi
langsung dari layanan tersebut. |
4.
Dampak Pelanggaran Prinsip Desain
dalam Pengembangan Perangkat Lunak
Pelanggaran terhadap prinsip desain
dapat menimbulkan berbagai permasalahan, seperti kode yang sulit dipahami,
sulit diperbaiki, dan sulit dikembangkan. Perubahan kecil dapat menyebabkan
dampak besar pada sistem, meningkatkan risiko kesalahan, serta memperbesar
biaya pemeliharaan. Selain itu, sistem menjadi kurang fleksibel terhadap
perubahan kebutuhan di masa depan. Oleh karena itu, penerapan prinsip desain
yang baik sangat penting untuk menjaga kualitas perangkat lunak dalam jangka
panjang.
Bagian 2 : Proses dan Metode Desain Perangkat
Lunak
A.
Proses Desain Perangkat Lunak
1.
Tahapan Utama dalam Proses Desain
Perangkat Lunak
1)
Perencanaan (Planning)
Tahap awal untuk menentukan tujuan sistem, ruang lingkup, kebutuhan
pengguna, serta batasan teknis yang ada.
2)
Analisis Kebutuhan (Requirement
Analysis)
Mengidentifikasi kebutuhan fungsional dan non-fungsional yang harus
dipenuhi oleh perangkat lunak.
3)
Desain Arsitektur (Architectural
Design)
Menentukan struktur sistem secara keseluruhan, pembagian modul,
serta hubungan antar komponen.
4)
Desain Detail (Detailed Design)
Merancang detail tiap modul, termasuk struktur data, algoritma, dan
antarmuka.
5)
Implementasi (Implementation)
Tahap penerjemahan desain ke dalam kode program sesuai dengan
rancangan yang telah dibuat.
2. Diagram Alur Proses Desain Perangkat Lunak
3.
Penerapan Proses Desain pada Studi
Kasus
Aplikasi Manajemen Keuangan Pribadi
·
Perencanaan
Menentukan tujuan aplikasi, yaitu membantu pengguna mencatat pemasukan,
pengeluaran, dan mengelola anggaran.
·
Analisis Kebutuhan
Kebutuhan utama meliputi pencatatan transaksi, laporan keuangan, kategori
pengeluaran, dan keamanan data pengguna.
·
Desain Arsitektur
Sistem dibagi menjadi modul pengguna, modul transaksi, modul laporan, dan modul
penyimpanan data.
·
Desain Detail
Merancang struktur database transaksi, logika perhitungan saldo, dan tampilan
antarmuka pengguna.
·
Implementasi
Mengembangkan aplikasi sesuai desain menggunakan bahasa pemrograman dan
framework yang dipilih.
B.
Metode Desain Perangkat Lunak
1.
Penjelasan dan Perbandingan Metode
Desain
1.
Function-Oriented Design
Metode ini berfokus pada fungsi atau proses yang dilakukan oleh
sistem. Sistem dipecah menjadi fungsi-fungsi kecil yang saling berhubungan.
2.
Object-Oriented Design (OOD)
Metode ini berfokus pada objek yang merepresentasikan entitas dunia
nyata. Setiap objek memiliki data dan perilaku.
3.
Component-Based Design (CBD)
Metode ini menyusun sistem dari komponen-komponen mandiri yang
dapat digunakan kembali dan dikembangkan secara terpisah.
2.
Tabel Perbandingan Metode Desain
|
Metode Desain |
Kelebihan |
Kekurangan |
Contoh Penerapan |
|
Function-Oriented |
Sederhana dan mudah dipahami |
Sulit dikembangkan untuk sistem besar |
Program perhitungan sederhana |
|
Object-Oriented |
Mudah dikembangkan dan dipelihara |
Membutuhkan perancangan awal yang baik |
Aplikasi web dan mobile |
|
Component-Based |
Mudah dikembangkan dan scalable |
Kompleks dalam integrasi |
Sistem berbasis layanan |
3.
Metode Desain yang Paling Sesuai
untuk Sistem Cloud Computing
Metode desain yang paling sesuai untuk sistem berbasis Cloud
Computing adalah Component-Based Design.
Alasan:
· Sistem
cloud membutuhkan skalabilitas tinggi.
· Komponen
dapat dikembangkan dan diperbarui secara terpisah.
· Mendukung
arsitektur terdistribusi dan penggunaan ulang komponen.
· Memudahkan
integrasi layanan dan pemeliharaan sistem.
Bagian 3: Kualitas dan Dokumentasi Desain Perangkat Lunak
A.
Kualitas Desain Perangkat Lunak
1.
Pentingnya Kualitas Desain Perangkat
Lunak
Kualitas desain
perangkat lunak sangat penting karena desain menjadi fondasi utama dalam
pengembangan sistem. Desain yang berkualitas membantu mengurangi kompleksitas
sistem, mempermudah pengembangan lanjutan, meningkatkan keandalan, serta
menurunkan biaya pemeliharaan. Selain itu, desain yang baik memastikan
perangkat lunak mampu beradaptasi terhadap perubahan kebutuhan pengguna dan
perkembangan teknologi.
2.
Atribut Kualitas Desain Perangkat
Lunak
Berikut adalah lima atribut kualitas utama dalam desain perangkat
lunak:
· Modularity: kemampuan
sistem untuk dibagi menjadi modul-modul kecil yang independen.
· Reusability: kemampuan
komponen atau modul untuk digunakan kembali pada sistem lain.
· Scalability: kemampuan
sistem untuk menangani peningkatan beban kerja.
· Maintainability: kemudahan
dalam memperbaiki dan mengembangkan sistem.
· Performance: kemampuan
sistem dalam memberikan respon cepat dan efisien.
3.
Contoh Penerapan Atribut Kualitas
pada Sistem E-Commerce
|
Atribut Kualitas |
Deskripsi |
Contoh Penerapan |
|
Modularity |
Sistem dibagi menjadi modul terpisah |
Modul produk, pembayaran, dan pengiriman dipisahkan |
|
Reusability |
Komponen dapat digunakan kembali |
Modul login digunakan di web dan aplikasi mobile |
|
Scalability |
Sistem mampu menangani peningkatan pengguna |
Server dapat menambah kapasitas saat promo besar |
|
Maintainability |
Mudah diperbaiki dan dikembangkan |
Perubahan metode pembayaran tanpa mengganggu modul lain |
4.
Evaluasi Desain Perangkat Lunak
Evaluasi desain perangkat lunak dapat dilakukan melalui Design
Reviews dan Code Quality Metrics.
· Design
Reviews
Proses peninjauan desain oleh tim untuk memastikan kesesuaian dengan kebutuhan
dan standar desain.
Contoh: Tim melakukan review desain arsitektur sebelum proses pengkodean
dimulai.
· Code
Quality Metrics
Pengukuran kualitas kode berdasarkan indikator tertentu seperti kompleksitas
dan keterbacaan kode.
Contoh: Mengukur kompleksitas fungsi agar kode tetap mudah dipahami dan
dirawat.
B.
Dokumentasi Desain Perangkat Lunak
1.
Pentingnya Dokumentasi Desain
Perangkat Lunak
Dokumentasi
desain berfungsi sebagai panduan bagi pengembang dalam memahami struktur dan
logika sistem. Dokumentasi yang baik membantu proses pengembangan,
pemeliharaan, serta memudahkan anggota tim baru untuk memahami sistem dengan
cepat.
2.
Jenis Dokumentasi Desain Perangkat
Lunak
1.
UML Diagrams
Diagram visual untuk menggambarkan struktur dan perilaku sistem.
2.
Architectural Blueprints
Dokumen yang menjelaskan arsitektur sistem secara keseluruhan.
3.
Design Rationale
Penjelasan alasan pemilihan desain tertentu dan keputusan teknis
yang diambil.
3.
Diagram UML Sederhana – Sistem
Reservasi Tiket Online
Bagian 4 : Dokumentasi Dan Alat Bantu Arsitektur
Perangkat Lunak
A.
Strategi Desain Perangkat Lunak
1.
Penjelasan Strategi Desain
1)
Top-Down Design
Top-Down Design
adalah strategi perancangan perangkat lunak yang dimulai dari gambaran sistem
secara keseluruhan (level tinggi) kemudian diuraikan secara bertahap menjadi modul-modul
yang lebih kecil dan detail sampai mencapai level implementasi. Pendekatan ini
menekankan pada pemahaman struktur sistem secara global terlebih dahulu sebelum
mendesain bagian-bagian kecilnya.
2)
Bottom-Up Design
Bottom-Up
Design adalah strategi desain yang dimulai dari komponen-komponen kecil atau
modul dasar, kemudian modul-modul tersebut digabungkan secara bertahap hingga
membentuk sistem yang lebih besar dan lengkap. Pendekatan ini biasanya
digunakan ketika sudah tersedia komponen atau library yang dapat digunakan
kembali.
3)
Layered Design
Layered Design
adalah strategi desain yang membagi sistem perangkat lunak menjadi beberapa
lapisan (layer) di mana setiap layer memiliki tanggung jawab tertentu dan hanya
berinteraksi dengan layer yang berdekatan. Pendekatan ini membantu meningkatkan
modularitas, pemeliharaan sistem, dan pemisahan fungsi dalam perangkat lunak.
2.
Tabel Kelebihan dan Kekurangan
Strategi Desain
|
Strategi Desain |
Kelebihan |
Kekurangan |
Contoh Penerapan |
|
Top-Down Design |
Memudahkan pemahaman struktur sistem secara keseluruhan;
mempermudah perencanaan dan pengendalian desain |
Detail implementasi kadang terlambat dipertimbangkan; dapat sulit
jika kebutuhan sering berubah |
Sistem informasi akademik yang dirancang dari fungsi utama lalu
dipecah menjadi modul seperti pendaftaran, jadwal, dan nilai |
|
Bottom-Up Design |
Memungkinkan penggunaan kembali komponen yang sudah ada; cocok
untuk sistem berbasis modul |
Sulit melihat gambaran besar sistem pada awal pengembangan |
Pengembangan aplikasi menggunakan library atau framework seperti
modul login, database, dan API |
|
Layered Design |
Struktur sistem lebih terorganisir; memudahkan pemeliharaan dan
pengembangan; meningkatkan keamanan dan modularitas |
Dapat menambah kompleksitas komunikasi antar layer; performa bisa
menurun jika terlalu banyak layer |
Aplikasi web dengan arsitektur presentation layer, business logic
layer, dan data layer |
3.
Skenario di mana Layered Design
lebih unggul
Layered Design lebih unggul pada pengembangan Sistem Manajemen
Rumah Sakit.
Dalam sistem ini terdapat banyak fungsi seperti:
· pengelolaan
data pasien
· manajemen
jadwal dokter
· sistem
pembayaran
· rekam
medis
· laporan
administrasi
Jika menggunakan Layered Design, sistem dapat dibagi menjadi
beberapa lapisan, misalnya:
1.
Presentation Layer
Menangani tampilan antarmuka pengguna seperti halaman pendaftaran pasien dan
dashboard dokter.
2.
Business Logic Layer
Mengelola proses bisnis seperti penjadwalan dokter, perhitungan biaya layanan,
dan pengelolaan rekam medis.
3.
Data Access Layer
Mengelola interaksi dengan database seperti penyimpanan data pasien dan
transaksi pembayaran.
Layered Design lebih unggul dalam skenario ini karena:
· memisahkan
tanggung jawab setiap bagian sistem
· memudahkan
pemeliharaan dan pengembangan fitur baru
· meningkatkan
keamanan data
· memungkinkan
pengembangan oleh beberapa tim secara paralel.
B.
Evaluasi Desain Perangkat Lunak
1.
Tujuan Evaluasi Desain Perangkat
Lunak
Evaluasi desain
perangkat lunak bertujuan untuk menilai kualitas desain sebelum sistem
diimplementasikan. Melalui evaluasi ini, pengembang dapat memastikan bahwa
desain yang dibuat telah memenuhi kebutuhan pengguna serta standar kualitas
perangkat lunak.
Tujuan utama evaluasi desain antara lain:
· memastikan
desain memenuhi kebutuhan sistem
· mengidentifikasi
kesalahan atau kekurangan desain lebih awal
· meningkatkan
kualitas dan keandalan perangkat lunak
· mengurangi
risiko dan biaya perbaikan pada tahap implementasi
· memastikan
desain mudah dipelihara dan dikembangkan.
2.
Teknik Evaluasi Desain
1.
Design Review
Design Review
adalah proses evaluasi desain yang dilakukan oleh tim pengembang atau ahli lain
untuk menilai apakah desain telah memenuhi kebutuhan sistem dan standar
kualitas.
Tujuannya:
· menemukan
kesalahan desain sejak awal
· memastikan
konsistensi dan kelengkapan desain
· meningkatkan
kualitas desain melalui diskusi dan masukan.
2.
Metrics-Based Evaluation
Metrics-Based
Evaluation adalah teknik evaluasi yang menggunakan metrik atau ukuran
kuantitatif untuk menilai kualitas desain perangkat lunak.
Contoh metrik yang digunakan:
· kompleksitas
modul
· tingkat
keterkaitan antar modul (coupling)
· tingkat
kemandirian modul (cohesion)
Penggunaan metrik membantu tim pengembang membuat keputusan yang
lebih objektif terhadap kualitas desain.
3.
Prototyping
Prototyping
adalah teknik evaluasi dengan cara membuat model awal atau versi sederhana dari
sistem untuk diuji oleh pengguna.
Tujuannya:
· memvalidasi
kebutuhan pengguna
· memperoleh
umpan balik lebih awal
· mengidentifikasi
masalah desain sebelum pengembangan penuh dilakukan.
3.
Contoh Evaluasi pada Sistem
Manajemen Rumah Sakit
Pada proyek Sistem Manajemen Rumah Sakit, evaluasi desain
dapat dilakukan sebagai berikut:
1.
Design Review
Tim pengembang dan analis sistem melakukan peninjauan terhadap desain
arsitektur sistem untuk memastikan modul seperti pendaftaran pasien, rekam
medis, dan sistem pembayaran telah dirancang dengan benar.
2.
Metrics-Based Evaluation
Tim mengevaluasi kompleksitas modul, hubungan antar modul, serta tingkat
modularitas untuk memastikan sistem mudah dipelihara dan dikembangkan.
3.
Prototyping
Tim membuat prototipe antarmuka seperti halaman pendaftaran pasien dan
dashboard dokter, kemudian diuji oleh staf rumah sakit untuk mendapatkan umpan
balik sebelum sistem dikembangkan secara penuh.
Kesimpulan dan
Refleksi
1.
Kesimpulan
Software
Design merupakan tahap penting dalam pengembangan perangkat lunak yang
bertujuan untuk merancang struktur dan komponen sistem secara sistematis.
Strategi desain seperti Top-Down Design, Bottom-Up Design, dan Layered Design membantu
pengembang dalam menyusun struktur sistem yang terorganisir dan modular.
Selain
itu, evaluasi desain melalui teknik seperti Design Review, Metrics-Based Evaluation, dan Prototyping
sangat penting untuk memastikan bahwa desain perangkat lunak telah memenuhi
kebutuhan sistem serta memiliki kualitas yang baik sebelum tahap implementasi.
Dengan
pemahaman yang baik tentang konsep Software Design, pengembang dapat
menghasilkan perangkat lunak yang lebih efisien, mudah dipelihara, dan berkualitas tinggi.
2.
Refleksi
Pribadi
Tantangan
terbesar :
Tantangan
terbesar dalam memahami dan menerapkan desain perangkat lunak adalah menentukan
struktur desain yang tepat untuk sistem yang kompleks, terutama ketika
kebutuhan sistem sering berubah. Selain itu, memilih strategi desain yang
sesuai juga membutuhkan pemahaman mendalam terhadap kebutuhan pengguna dan
karakteristik sistem.
Penerapan di
dunia nyata :
Konsep
desain perangkat lunak dapat diterapkan dalam berbagai proyek pengembangan
sistem seperti aplikasi web, sistem informasi perusahaan, dan aplikasi mobile.
Dengan menggunakan strategi desain yang tepat serta melakukan evaluasi desain
secara sistematis, pengembang dapat membangun perangkat lunak yang lebih
stabil, terstruktur, dan mudah dikembangkan di masa depan.

Komentar
Posting Komentar