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




Tuesday, November 12, 2024

Study Kasus - Safe Home

 




Studi Kasus: Aplikasi Safe Home

Latar Belakang

Safe Home adalah sistem otomatisasi rumah yang mengintegrasikan keamanan, pengelolaan energi, dan sistem kenyamanan dalam satu aplikasi. Sistem ini memungkinkan pengguna mengontrol lampu, sistem keamanan, suhu, serta perangkat elektronik lainnya dari jarak jauh melalui perangkat mobile atau komputer. Tantangan dalam pengembangan Safe Home mencakup kebutuhan akan stabilitas, keamanan, dan kemudahan penggunaan untuk para penghuni.

Persyaratan Sistem

  1. Keamanan Pengguna: Sistem harus menyediakan autentikasi dua faktor untuk keamanan akses pengguna.
  2. Kontrol Jarak Jauh: Aplikasi harus mendukung kontrol dari jarak jauh melalui internet.
  3. Sensor Terintegrasi: Sistem terhubung dengan sensor gerak, suhu, dan asap untuk meningkatkan keamanan.
  4. Penyimpanan Data: Data aktivitas dan log akses disimpan secara terpusat dengan enkripsi.
  5. Notifikasi: Sistem harus mengirimkan notifikasi real-time ke perangkat pengguna jika ada aktivitas yang mencurigakan.

Studi Kasus





Referensi




Latihan :


  1. Buatlah SRS dari Video Aplikasi Smart Home di atas
  2. Buat use case diagram untuk Aplikasi Smart Home

Absensi





Tuesday, November 5, 2024

Requirement Modelling

 


Pendahuluan

  • Definisi: Scenario-Based Requirements Modeling adalah teknik pemodelan yang menggunakan skenario (cerita atau narasi) untuk menggambarkan interaksi antara pengguna dan sistem yang akan dikembangkan.
  • Tujuan: Membantu pengembang untuk memahami kebutuhan pengguna dengan cara yang lebih nyata dan mendalam, serta memberikan konteks yang lebih terarah.

Peran Skenario dalam Pemodelan Kebutuhan

  • Skenario sebagai Komunikasi Kebutuhan: Menggambarkan interaksi pengguna yang konkret dan membantu pemangku kepentingan dalam memahami bagaimana sistem akan bekerja dari sudut pandang pengguna.
  • Penghubung antara Stakeholder dan Pengembang: Skenario memungkinkan diskusi dan validasi antara pengguna dan pengembang.
  • Jenis Skenario: Skenario dapat berkisar dari skenario penggunaan sederhana hingga skenario yang lebih kompleks untuk mengakomodasi kasus-kasus khusus.
MODEL REQUIREMENT

Tipe-tipe model requirements dalam requirements modeling berdasarkan berbagai perspektif untuk memahami dan merancang sistem secara menyeluruh:

1. Scenario-Based Models

  • Deskripsi: Scenario-Based Models menggambarkan persyaratan dari sudut pandang aktor atau pengguna sistem, yaitu entitas yang berinteraksi dengan sistem untuk mencapai tujuan tertentu.
  • Contoh: Use Case Diagrams atau skenario pengguna yang menunjukkan bagaimana pengguna akan menggunakan sistem dalam situasi nyata.
  • Tujuan: Untuk memahami kebutuhan dan ekspektasi pengguna secara praktis serta menggambarkan skenario interaksi yang dapat diikuti oleh sistem.

2. Class-Oriented Models

  • Deskripsi: Class-Oriented Models digunakan dalam pemodelan berbasis objek untuk mengidentifikasi dan mengorganisasi kelas-kelas yang diperlukan dalam sistem.
  • Komponen:
    • Kelas: Objek yang memiliki atribut dan operasi (fungsi atau metode) tertentu.
    • Atribut: Properti atau karakteristik dari kelas.
    • Operasi: Fungsi atau perilaku yang dapat dilakukan oleh kelas.
  • Contoh: Diagram kelas dalam Unified Modeling Language (UML) yang menunjukkan hubungan dan kolaborasi antara kelas-kelas.
  • Tujuan: Untuk merancang struktur objek yang akan membentuk sistem, memfasilitasi penggunaan ulang kode, dan memastikan bahwa semua kebutuhan sistem dapat dipenuhi oleh interaksi antar kelas.

3. Behavioral and Patterns-Based Models

  • Deskripsi: Behavioral Models menggambarkan bagaimana perangkat lunak merespons terhadap peristiwa eksternal, seperti aksi pengguna atau sinyal dari sistem lain. Patterns-Based Models menggunakan pola tertentu untuk mengatasi masalah desain yang umum.
  • Contoh: State Diagrams yang menunjukkan transisi kondisi sistem, atau Sequence Diagrams yang menggambarkan urutan interaksi antar objek sebagai respons terhadap suatu peristiwa.
  • Tujuan: Untuk memodelkan perilaku dinamis dari sistem, terutama dalam situasi yang kompleks di mana berbagai elemen sistem bereaksi terhadap banyak stimulus eksternal.

4. Data Models

  • Deskripsi: Data Models memetakan dan menggambarkan struktur informasi yang dikelola oleh sistem. Ini termasuk representasi data dan relasinya dalam sistem.
  • Contoh: Entity-Relationship Diagrams (ERD) atau Data Flow Diagrams (DFD) yang menunjukkan entitas data utama, atributnya, dan hubungan antar entitas.
  • Tujuan: Untuk memastikan bahwa semua informasi yang dibutuhkan oleh sistem tercakup dan terorganisir dengan baik, membantu dalam integritas data, dan mempermudah manajemen informasi.

5. Flow-Oriented Models

  • Deskripsi: Flow-Oriented Models menggambarkan bagaimana data mengalir dan ditransformasikan oleh sistem. Model ini juga memetakan komponen fungsional sistem dan peran mereka dalam memproses data.
  • Contoh: Data Flow Diagrams (DFD) atau diagram Process Flow yang menunjukkan aliran data melalui berbagai proses dalam sistem.
  • Tujuan: Untuk memodelkan proses dan aliran informasi dalam sistem, sehingga memudahkan dalam pemahaman cara data diproses dan dipindahkan antara komponen atau modul yang berbeda.


https://www.slideshare.net/slideshow/requirement-modelling-for-software-engineering-docx/273056018




Referensi


Pressman, Roger.S. "Software Engineering : A Practioner's Approach." 



Latihan :


  1. Buat skenario untuk sistem aplikasi perpustakaan digital
  2. Buat use case diagram untuk sistem perpustakaan digital sesuai dengan skenario yang dibuat

Absensi