Konsep Desain merupakan prinsip dan teknik dasar yang mendasari desain perangkat lunak. Tujuannya adalah untuk menciptakan perangkat lunak yang berkualitas tinggi dengan struktur yang baik, mudah dipahami, dipelihara, dan diperluas.
Komponen Utama Konsep Desain
- Abstraction
Abstraksi adalah pendekatan untuk menyederhanakan masalah yang kompleks dengan fokus pada karakteristik utama. - Data
abstraction: Menyembunyikan detail implementasi data. Contoh: Tipe
data abstrak.
- Control
abstraction: Penyederhanaan aliran kontrol, seperti penggunaan fungsi
atau metode.
- Architecture
Arsitektur perangkat lunak adalah kerangka kerja yang mengatur komponen sistem dan hubungan antar komponen. - Menggunakan
pola arsitektur seperti MVC, Layered Architecture.
- Fokus
pada non-functional requirements seperti kinerja, skalabilitas, dan
keamanan.
- Patterns
Pola desain menawarkan solusi reusable untuk masalah umum dalam konteks tertentu. - Contoh:
Singleton, Factory, Observer.
- Membantu
dalam membuat desain yang lebih terstruktur dan konsisten.
- Separation
of Concerns (SoC)
Pembagian sistem menjadi bagian-bagian yang independen berdasarkan fungsi atau tanggung jawabnya. - Contoh:
Memisahkan logika bisnis, antarmuka pengguna, dan penyimpanan data.
- Modularity
Membagi sistem menjadi modul-modul yang independen dan berfungsi penuh. - Modul
memiliki low coupling (hubungan antar modul rendah) dan high cohesion
(kesatuan dalam modul tinggi).
- Information
Hiding
Prinsip menyembunyikan detail implementasi dari modul lain untuk mengurangi ketergantungan. - Contoh:
Hanya metode yang relevan dari sebuah kelas yang diekspos ke luar.
- Functional
Independence
Modul harus berfungsi secara independen tanpa bergantung secara berlebihan pada modul lain. - Dicapai
dengan high cohesion dan low coupling.
- Refinement
Pendekatan iteratif untuk menyempurnakan desain. - Proses
berulang dari generalisasi ke spesifikasi.
- Aspects
Identifikasi aspek yang memengaruhi banyak modul (cross-cutting concerns). - Contoh:
Logging, keamanan, manajemen transaksi.
- Design
Classes
Kelas yang dirancang dengan tanggung jawab yang jelas dan tujuan spesifik. - Boundary
classes: Interaksi dengan antarmuka pengguna.
- Controller
classes: Mengatur logika aplikasi.
Entity classes: Mewakili objek dunia nyata atau abstrak
Analysis
Model ke Design Model
Proses transformasi analysis model ke dalam design model adalah
langkah penting untuk menjembatani analisis dan implementasi perangkat lunak.
Proses ini melibatkan beberapa tahapan utama untuk memastikan bahwa kebutuhan
yang diidentifikasi selama analisis diterjemahkan menjadi representasi desain
yang dapat diimplementasikan.
Langkah-langkah yang dilakukan :
1. Understand the Requirements Model
- Tujuan:
Memastikan bahwa kebutuhan yang telah dirinci dalam requirements model
dipahami dengan baik.
- Aktivitas:
- Meninjau
ulang dokumen kebutuhan (requirement specification).
- Mengidentifikasi
elemen penting seperti fitur, fungsi, dan batasan sistem.
2. Choose a Design Strategy
- Tujuan:
Memilih pendekatan desain yang sesuai berdasarkan kebutuhan sistem.
- Pilihan
Strategi:
- Top-Down
Design: Memulai dari abstraksi tingkat tinggi, lalu memecah menjadi
komponen yang lebih kecil.
- Bottom-Up
Design: Membangun sistem dari komponen tingkat rendah dan menyusunnya
menjadi sistem lengkap.
- Hybrid
Approach: Kombinasi dari kedua pendekatan di atas.
3. Map the Requirements to Design Elements
- Tujuan:
Mentranslasikan elemen dalam requirements model ke komponen desain.
- Aktivitas:
- Functional
Requirements: Diterjemahkan menjadi modul, fungsi, atau layanan dalam
desain.
- Non-Functional
Requirements: Diterjemahkan menjadi atribut sistem seperti kinerja,
keamanan, dan skalabilitas.
- Actors
and Use Cases: Diterjemahkan menjadi antarmuka pengguna (user
interface) atau interaksi antar modul.
4. Define the System Architecture
- Tujuan:
Merancang struktur sistem tingkat tinggi.
- Aktivitas:
- Menentukan
pola arsitektur (seperti MVC, Layered Architecture, atau Microservices).
- Membuat
diagram arsitektur yang menunjukkan komponen utama dan hubungan antar
komponen.
5. Design Data Structures
- Tujuan:
Merancang struktur data yang digunakan oleh sistem.
- Aktivitas:
- Membuat
model data (Entity-Relationship Diagram atau Class Diagram).
- Menentukan
format penyimpanan data, skema database, atau API untuk data akses.
6. Develop the Interface Design
- Tujuan:
Merancang interaksi antara pengguna dan sistem serta antar komponen
sistem.
- Aktivitas:
- Merancang
User Interface (antarmuka pengguna) berdasarkan kebutuhan
pengguna.
- Mendefinisikan
spesifikasi API untuk komunikasi antar modul.
7. Define Component-Level Design
- Tujuan:
Merinci komponen individual yang membentuk sistem.
- Aktivitas:
- Menentukan
kelas, metode, dan atribut jika menggunakan paradigma berorientasi objek.
- Mendesain
algoritma untuk operasi atau fungsi spesifik.
8. Evaluate and Refine the Design
- Tujuan:
Memastikan bahwa model desain memenuhi semua kebutuhan dan batasan.
- Aktivitas:
- Melakukan
tinjauan desain dengan tim pengembang dan pemangku kepentingan.
- Memperbaiki
elemen desain berdasarkan umpan balik.
Dimensi Design Model
Dimensi model desain merujuk pada berbagai aspek atau
perspektif dari sistem yang perlu dipertimbangkan selama fase desain dalam
rekayasa perangkat lunak. Dimensi-dimensi ini membantu perancang perangkat
lunak dalam mengorganisir pendekatan mereka untuk membangun sistem dan
memastikan bahwa semua komponen yang relevan telah diperhatikan. Tujuan
utamanya adalah untuk menciptakan desain yang komprehensif dan efektif, yang
akan memenuhi kebutuhan sistem.
Perbedaan Abstraction Dimension dan Process Dimension
Dimensi |
Fokus |
Tujuan |
Contoh |
Abstraction Dimension |
Menyembunyikan detail dan kompleksitas implementasi dalam
sistem. |
Mengurangi kompleksitas dengan menyederhanakan tampilan
dan interaksi. |
Abstraksi data melalui API, kelas yang menyembunyikan
logika rinci. |
Process Dimension |
Menyusun dan mengelola aktivitas-aktivitas dalam
pengembangan perangkat lunak. |
Menjamin proses pengembangan perangkat lunak terstruktur
dan efisien. |
Proses desain, pengujian, dan integrasi. |
Referensi
Pressman, Roger.S. "Software Engineering : A Practioner's Approach."
Latihan :
- Berdasarkan SRS dan Use Case Smart Home pada minggu lalu buatlah Analysis Modelnya.
- Analysis Model, Use Case Diagram, Activity Diagram, dan Class Diagram
- Lengkapi Analysis Model yang dibuat dengan Behavioral Element.
- Pengerjaan bisa secara kelompok, maksimal 2
No comments:
Post a Comment