Design Concept : Software Engineering

Terkadang developer membuat kesalahan ini dalam mendesain suatu software:

  • Reducing Design Time (Don’t switch)
  • Feature Creep (Ensure all changes are vital)
  • Silver Bullet Syndrome (Just say no to such tool)
    • When you think some design tool is going to solve all problems and magically reduce time and cost
  • Switching tools in mid-project (Don’t switch unless there is a compelling need for specific features)

Functional Model Verification and Validation (V & V)

  1. Even dalam UCS harus memetakan aktivitas di Activity Diagram
  2. Object node dalam activity diagram harus disebutkan dalam UCS
  3. Sequential ordering dalam UCS harus menyamai activity diagram
  4. Harus ada korespondensi satu-banding-satu dalam Use case pada UCS dan Use Case Diagram
  5. Semua aktor pada UCS harus ada pada Use Case Diagram
  6. Stakeholder pada UCS harus ada sebagai aktor pada Use Case Diagram
  7. Semua relasi pada UCS harus digambarkan pada Use Case Diagram

Evolving analysis models Into Design Models

1.png

Review use case dan class, apakah semuanya dibutuhkan, apa ada yang hilang, apakah sudah terdefinisi semua, apakah ada atribut atau metode yang hilang? Modif analysis model agar efisiensi dan efektivitas meningkat.

Cara untuk mengevolve:

  1. Factoring
    • Membuat modul yang account dalam persamaan dan perbedaan antara units of interest
    • Membuat kelas baru dengan cara:
      • Abstraksi
        • Nurse, Administrative staff dan dokter –> Generalisasi -> Employee
      • Refinement (kebalikan dari abstraksi)
        • Administrative Task –> –>Receptionist, Secretary, Bookkeeper
  2. Partition dan collaboration
  3. Layers
    1. 3.png

Package Diagram

  1. 4.png
  2. Derivasi Package Diagram dari Layers5.png
  3. Cara bikin:
    • 1. Set the context
      2. Cluster classes together based on shared
      relationships
      3. Model clustered classes as a package
      4. Identify dependency relationships among
      packages
      5. Place dependency relationships between
      packages

Design Strategies

  1. Custom Development
    1. Highly specified requirements bisa dicapai
    2. Masalah bisa diselesaikan secara kreatif dan fleksibel
    3. Komponen bisa diubah dengan mudah
    4. Membangun skill pekerja
    5. Risk
      1. Mahal ngehire pekerja yang jago
      2. Ga ada jaminan proyek bakal selesai
      3. Developer bisa disuruh kerjain hal lain
      4. Technical obstacle
  2. Packaged Software
    1. Lebih efisien beli jadi (asumsi program lain udah dites dan dapat diinstal dengan cepat)
    2. Bisa untuk komponen kecil maupun satu system
    3. Masalah
      1. Harus terima apa adanya
      2. Jarang perfect fit
      3. Mungkin harus ganti cara melakukan bisnis
      4. Mungkin butuh kustomisasi atau workaround
  3. Integrasi Sistem
    1. Gabungin paket, sistem lawas, software baru
    2. Integrasi data sebagai key challenge soalnya harus nulis data di format yang sama
    3. Solusinya bikin “object wrapper” yang bikin object oriented software bisa berkomunikasi sama legacy sistem (contoh: Application Programming Interface API)
  4. Outsourcing
    1. Nyuruh perusahaan lain bikin sistemlu
    2. Mungkin lebih jago vs lu
    3. Mungkin mengextend resource yang lu udh punya
    4. Jangan outsource yang lu ga ngerti
    5. hati hati sama vendor (jgn sampe dikerjain), dan siapin dgn hati hati kontrak dan skema pembayaran

Cara milih Design Strategi: Mikirin faktor dibawah

  • Business Need
  • Inhouse experience
  • Project Skill
  • Project Management
  • Time Frame

Cheatsheet to help you choose:

6.png

The Design Model

  • Architecture Design
    • Illustrasi subsystem yang terhubung dan setiap subsystem boleh punya arsitektur sendiri (subsystem dalam subsystem yg terhubung)
  • Class  & Method Design
    • Class dalam Class diagram yang tadinya cuma berisi metode dan attribute doang, ditambahkan spesifikasi tipe variable untuk attribute dan return type untuk metode
  • Design pattern
    • Solusi Reusable untuk masalah yang serupa biar ga perlu develop solusi lagi (biar lebih murah)
  • Component Level Design
    • Illustrasi mendetail dari setiap komponen software
      • Data Structure dan Algorithmic Detail
      • Interface yang memberi akses ke component operations
  • Deployment level design
    • Gimana caranya nanti software lu bakal dideploy dan bagaimana tempat lu deploy dapat men-support software lu7.png

 

 

 

Leave a comment