Software Design Engineering

Desain : mengumpulkan kebutuhan stakeholder, keperluan bisnis dan pertimbangan teknologi untuk memformulasikan suatu produk / sistem

Memodelkan aktivitas dan persiapan untuk tahap konstruksi ( coding and testing)

Tujuan : Memodelkan SOLUSI yang siap diimplementasikan ( membuat program)

Desain Arsitektur : Struktur Modul

Desain Antarmuka : User Interface (UI) , external interface untuk sistem lain/device/network, internal interface antar berbagai modul

Desain Data : struktur data, arsitektur basis data

Desain Prosedural / component level : algoritma

Proses Desain :

  • Proses Iteratif untuk menerjemahkan kebutuhan menjadi blueprint untuk membangun perangkat lnak
  • Karakteristik untuk mengevaluasi desain yang baik :
  1. Desain harus mengimplementasikan seluruh kebutuhan baik yang eksplisit dan implisit
  2. Desain harus mudah dibaca dan dipahami
  3. Desain harus menyediakan gambaran lengkap suatu perangkat

Desain Quality Guidline

  • Sebuah perancangan menunjukkan arsitektur (1) telah dibuat berdasar gaya atau pola arsitektur, (2) disusun dengan komponen yang mempunyai karakteristik desain yang bagus dan (3) dapa diimplementasikan dengan evolutionary fashion
  • Sebuah perancangan seharusnya modular; P/L harus dibagi menjadi elemen atau subsistem
  • Sebuah perancangan seharusnya berisi representasi yang berbeda dar data, arsitektur, antarmuka, dan komponen.
  • Sebuah perancangan seharusnya mengarah pada struktur data yang sesuai untuk kelas yang akan diimplementasikan.
  • Sebuah perancangan seharusnya mengarah pada komponen yang menunjukan karakteristik fungsional yang independen
  • Sebuah perancangan seharusya mengarah pada antarmuka yang mengurangi kompleksitas hubungan antar komponen dan lingkungan eksternal.
  • Sebuah perancangan seharusnya diturunkan menggunakan metode yang dapat diulangi berdasar informasi yang didapat dari analisis kebutuhan
  • Sebuah perancangan seharusnya direpresentasikan menggunakan notasi yang dapat dipahami artinya

Konsep Desain :

  • Abstraksi : Perancangan fokus pada solusi di level lingkungan masalah tanpa dihubungkan dengan detil di level rendah, abstraksi prosedural (urutan langkah dengan fungsi terbatas dan tertentu), Abstraksi data (Koleksi data objek)
  • Arsitektur : Keseluruhan struktur / organisasi dari komponen atau modul PL, cara komponen berinteraksi dan struktur data yang digunakan komponen, bagian dari perancangan arsitektur antara lain : Struktural properties (menggambarkan komponen sistem), Extra-functional properties ( kebutuhan untuk performance, capacity, security, adaptablity, dll), Families of related system(reuse architectural building blocks)
  • Modularitas : PL dipisah menjadi komponen terpisah, yang biasanya disebut modul dan diintegrasikan untuk memenuhi kebutuhan., Modularitas adalah atribut tunggal dari perangkat lunak yang memungkinkan program menjadi mudah dikelola [Mye’78], PL Monolitik (suatu program besar disusun dari satu modul) lebih sulit dibuat (Jumlah control path, variable dan seluruh kompleksitas sulit dipahami).
  • Modular Design : Esier to build, easier to change, easier to fix
  • Information Hiding : Merancang agar informasi (data dan prosedur) yang terkandung dalam sebuah modul tidak dapat diakses oleh modul yang tidak membutuhkan informasi tersebut, Membatasi akses antara prosedur detail dan struktur data lokal, Information hiding menunjang modularity.
  • Separation of Concern : Berbagai masalah kompleks dapat mudah ditangani jika dibagi menjadi bagian yang dapat dipecahkan atau dioptimasi secara independen, Concern adalah fitur atau perilaku yang dispesifikasikan sebagai bagian dari model kebutuhan untuk perangkat lunak, mengurangi usaha dan waktu untuk menyelesaikan masalah
  • Functional Independence : Sesuai dengan konsep abstraksi, modularitas, information hiding, Functional independence dapat dicapai jika memiliki modul dengan fungsi yang single-minded dan keengganan untuk melakukan interaksi yang berlebihan dengan modul lain. Kriteria Kualitatif : Cohesion dan Coupeling (Good Design is low-coupling & high-cohesion
  • Stepwise Refinement adalah strategi desain top down, proses elaborasi untuk detail prosedur yang berurutan, dimulai dari pernyataan fungsi (deskripsi informasi) yang didefinisikan pada level abstrak, kemudian didekomposisi hingga didapatkan pernyataan dalam bahasa program.
  • Pola desain menjelaskan suatu struktur desain untuk mengatasi suatu masalah desain tertentu dengan solusi yang sudah terbukti, memberikan gambaran yang memungkinkan perancangan untuk menentukan apakah pola perancangan untuk menentukan apakah pola dapat diterapkan, apakah pola dapat digunakan kembali, dan apakah pola dapat berfungsi sebagai panduan untuk mengembangkan pola serupa.
  • Refactoring : teknik reorganisasi yang menyederhanakan desain (atau kode) dari suatu komponen tanpa mengubah fungsi atau perlakunya, Menghilangkan redudansi, elemen desain yang tidak terpakai, algoritma yang tidak efisien dan tidak perlu, konstruksi yang buruk atau data struktur tidak sesuai, atau kegagalan desain lainya

 

 

Skip to toolbar