Tuesday, November 19, 2024

Design Concepts

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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).
  6. Information Hiding
    Prinsip menyembunyikan detail implementasi dari modul lain untuk mengurangi ketergantungan.
    • Contoh: Hanya metode yang relevan dari sebuah kelas yang diekspos ke luar.
  7. Functional Independence
    Modul harus berfungsi secara independen tanpa bergantung secara berlebihan pada modul lain.
    • Dicapai dengan high cohesion dan low coupling.
  8. Refinement
    Pendekatan iteratif untuk menyempurnakan desain.
    • Proses berulang dari generalisasi ke spesifikasi.
  9. Aspects
    Identifikasi aspek yang memengaruhi banyak modul (cross-cutting concerns).
    • Contoh: Logging, keamanan, manajemen transaksi.
  10. 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




Latihan :


  1. Berdasarkan SRS dan Use Case Smart Home pada minggu lalu buatlah Analysis Modelnya.
  2. Analysis Model, Use Case Diagram, Activity Diagram, dan Class Diagram
  3. Lengkapi Analysis Model yang dibuat dengan Behavioral Element.
  4. Pengerjaan bisa secara kelompok, maksimal 2

Absensi




No comments:

Post a Comment