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 UserController hanya menangani logika pengguna, sedangkan proses validasi data dilakukan oleh kelas lain.

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 Admin dapat digunakan sebagai pengganti User tanpa menyebabkan error.

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

Postingan populer dari blog ini

Bab 1 : Software Requirements

Bab 4 : Software Construction

Bab 9 : Software Engineering Management