Jurnak Perkuliahan Rekayasa Perangkat Lunak Pertemuan 11


Desain

Merupakan perencanaan, penggambaran sketsa, Perancangan tentang sesuatu yang akan dibangun.

Desain dilakukan agar kualitas dapat diukur dan juga dapat dijamin jauh sebelum dilakukan pengimplementasian fisik sehingga resiko dan dampat dari resiko yang ditimbulkan akan menjadi sangat kecil

Desain Perangkat Lunak?

Teknik desain Perangkat Lunak berbeda dengan teknik desain pada umumnya (desain bangunan, desain mikrokontroller, desain karya seni), karena Perangkat Lunak bersifat intangible. Desain perangkat lunak berada pada posisi teknik inti dari suatu proses rekayasa perangkat lunak yang digunakan. Namun, telah dikembangkan berbagai macam metode yang dapat digunakan spesifik untuk keperluan desain Perangkat Lunak.

Sebuah Perangkat Lunak harus didesain dengan mengejar faktor :

Firmness : Terhindar dari bugs dan error yang dapat mengganggu jalannya PL.

Commodity : Sesuai dengan keperluan dan kebutuhan.

 

Delight : Nyaman digunakan oleh pengguna PL.

 

Ada 4 Layer dalam desain Perangkat Lunak :

 

    • Desain Data
  • Translasi ERD & Data Dictionary ke dalam konteks lingkungan implementasi
    • Desain Arsitektur
  • Rancang bangun dari PL, relasi dan posisi antar bagian utama dari PL dengan memanfaatkan “design patterns”.
    • Desain Antarmuka
  • Merancang metode interaksi antar komponen PL dan terhadap pengguna.
    • Desain Komponen
  • Desain detail masing-masing prosedur di dalam komponen.

 

Mengukur Kualitas Desain Perangkat Lunak

  • Desain PL memiliki arsitektur yang :
    • Dibuat berdasarkan template dan design patterns yang telah teruji.
    • Berisi komponen yang memiliki karakteristik desain yang baik.
    • Dapat diimplementasikan secara bertahap.
  • Desain PL bersifat modular
  • Desain PL berisi representasi yang jelas dari data, arsitektur, antarmuka, komponen
  • Desain PL memiliki struktur data yang pantas untuk setiap kelas
  • Desain PL memiliki komponen yang functionally independent
  • Desain PL memiliki antarmuka yang simpel
  • Desain PL dilakukan dengan metode yang jelas dan telah terbukti
  • Desain PL menggunakan representasi yang dapat dimengerti bersama

Tujuan Akhir Desain Perangkat Lunak

  • Desain PL harus mengimplementasikan semua spesifikasi kebutuhan tertulis, dan juga memenuhi harapan tak tertulis dari pengguna.
  • Desain PL harus terdokumentasi dan mudah dibaca serta dimengerti oleh yang berkepentingan.
  • Desain PL harus dapat menggambarkan keseluruhan dari PL.

 SEPARATION OF CONCERNS

  • Concerns : daftar fitur dan kebutuhan yang telah dianalisis dari PL.
  • Divide-and-Conquer strategy– dengan membagi masalah menjadi bagian-bagian kecil, akan lebih mudah untuk diselesaikan satu-persatu.
  • Desainer PL harus mampu dengan logis menangkap seberapa jauh sebuah concern dapat dibagi ke dalam bagian-bagian yang lebih kecil.
  • Separation of Concerns adalah pola pikir dasar yang harus dimiliki oleh semua Software Engineer dalam membangun PL

“High Cohesion – Low Coupling”

  • Perangkat Lunak dibagi ke dalam komponen-komponen kecil yang efisien (fokus pada ‘tugas’nya) dan memiliki ketergantungan sekecil mungkin antar satu dengan lainnya.

1. Abstraction
Menata kompleksitas solusi ke dalam berbagai lapisan abstraksi.

2. Modularity
Membagi desain arsitektur PL ke dalam komponen-komponen kecil sehingga lebih manageable lokalisasi masalah & resiko

3. Information Hiding
Membatasi akses hanya sampai level abstraksi tertinggi yang dapat digunakan oleh modul lain mencegah efek samping yang tidak diinginkan


Design Classes

Kelas yang ada pada tahap desain dapat dibedakan menjadi :

    • Kelas Analisis : Yaitu kelas hasil turunan dari tahap analisis, dengan melakukan modifikasi dan adaptasi terhadap lingkungan implementasi. Misal : kelas Mahasiswa, pada tahap desain ditambahkan fungsi getSummary() untuk mendapatkan rangkuman keterangan identitas yang akan ditampilkan pada dashboard.
    • Kelas Boundary : Yaitu kelas yang terlibat dalam pembangunan antarmuka PL. Misal : kelas-kelas form, dsb.
    • Kelas Controller : Yaitu kelas yang dibuat untuk mengatur jalannya PL. Misal : kelas Main, kelas SessionController, dsb.

Architecture

Arsitektur PL adalah penggambaran secara konseptual terhadap keseluruhan struktur dari PL.

    • Pada engineering yang tangible, arsitektur dapat dengan mudah dilakukan lewat penggambaran 2 dimensi maupun 3 dimensi. Lain halnya dengan PL yang tidak memiliki wujud fisik.

Model yang dapat digunakan dalam representasi Arsitektur PL :

 

  • Structural Models : Komponen-komponen apa saja yang ada pada PL.
  • Framework Models : Kerangka & patterns apa yang digunakan.
  • Dynamic Models : Bagaimana PL bereaksi pada setiap use case.
  • Process Models : Proses teknis dari berjalannya PL.

 

Functional Models : Hirarki secara fungsional dari komponen PL.

Design Patterns

 

  • Design Patterns adalah pola-pola desain khusus yang dapat diguna-ulang untuk keperluan tertentu.
  • Analogi : jika ingin membangun jembatan layang, gunakan pattern cakar ayam untuk pondasinya.
  • Tujuan utama design patterns : implementasi cara yang sudah teruji, dan memudahkan komunikasi

Aspect

  • Sebuah aspect adalah fitur yang beririsan dengan fitur-fitur lainnya pada saat desain PL.
  • Misal :
    • Fitur A : Mahasiswa dapat membuka halaman kuliah virtual yang dia ikuti.
    • Fitur B : Dosen dapat membuka halaman kuliah virtual yang dia ampu.
    • Fitur C : Pengguna yang membuka halaman kuliah harus tervalidasi terdaftar pada Mata Kuliah tersebut.
  • C beririsan dengan A dan B (karena Mahasiswa dan Dosen harus terlebih dahulu tervalidasi sebelum dapat membuka halaman kuliah virtual), C adalah aspect dari desain PL tersebut.
  • Aspects harus diakomodir pada desain PL, sehingga dapat diimplementasikan pada fitur-fitur lain yang beririsan. Misalnya dengan membuat modul Session yang bertugas khusus melakukan autentikasi dan validasi untuk seluruh sistem.

Refinement

Desain dilakukan secara bertahap, mulai dari abstraksi yang paling tinggi hingga kepada detail terkecil.

Refactoring

  • Desain dilakukan secara iterative, berulang-ulang. Pada setiap iterasi, dilakukan refactoring yaitu optimasi dengan menghilangkan / memperbaiki :

    • Redundansi
    • Elemen desain tak terpakai
    • Algoritma yang tidak efisien / tidak perlu
    • Struktur Data yang badly designed
    • Faktor lain yang dapat diperbaiki.


  • Prinsip terpenting dalam refactoring : perubahan yang dilakukan tidak boleh mempengaruhi berjalannya system secara keseluruhan.

Cohesion dan Coupling

Coupling adalah ketergantungan modul satu dengan modul yang lain. Coupling merupakan derajat ketergantungan suatu modul terhadap modul lainnya.

Cohesion adalah keterikatan fungsi-fungsi didalam di dalam suatu modul. Cohesion merupakan ukuran sejauh mana elemen elemen modul terkait secara fungsional ini merupakan sejauh mana semua elemen diarahkan untuk melakuakn tugas tunggal yang terkandung dalam sebuah komponen.

Leave a comment

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>