Anda di halaman 1dari 7

Prinsip dan Konsep Desain Perangkat Lunak

Desain adalah salah satu langkah dalam fase pengembangan bagi setiap produk atau
sistem yang direkayasa. Desain dapat didefinisikan berbagai “proses aplikasi berbagai teknik dan
prinsip bagi tujuan pendefinisian suatu perangkat, suatu proses atau sistem dalam detail yang
memadai untuk memungkinkan realisasi fisiknya”[TAY59]

Proses terdiri dari 2 tahap :

1. Preliminary Design
pada tahap ini difokuskan dengan transformasi dari keperluan / kebutuhan ke dalam data
dan arsitektur software.

2. Detail Design
difokuskan pada penghalusan representasi arsitektur yang berisi struktur data detail dan
algoritma untuk software.

Tujuan desainer adalah untuk menghasilkan suatu model atau representasi dari entitas
yang kemudian akan dibangun.Desain perangkat lunak berada pada inti teknik dari proses
rekayasa perangkat lunak dan diaplikasikan tanpa memperhatikan model proses perangkat lunak
yang digunakan.

Begitu persyaratan perangkat lunak telah mulai dianalisis dan ditentukan, maka desain
perangkat lunak menjadi yang pertama dari tiga aktivitas teknik – desain, pembuatan kode dan
pengujian – yang diperlukan untuk membangun dan menguji perangkat lunak.

Persyaratan perangkat lunak, yang dimanifestasi oleh data, fungsional, dan model-model
perilaku, mengisi langkah desain. Dengan menggunakan satu dari sejumlah metode desain,
langkah desain menghasilkan :

 desain data
 desain arsitektur
 desain interface
 desain prosedural

Selama desain, kita dapat membuat keputusan yang akan mempengaruhi kesuksesan
konstruksi perangkat lunak dan kemudahan maintenancenya.
Desain sangat penting karena dapat menentukan kualitas dari suatu perangkat
lunak.Desain perangkat lunak adalah suatu proses interaktif yang melaluinya persyaratan
diterjemahkan ke dalam suatu “cetak biru” untuk membangun perangkat lunak. Cetak biru
menggambarkan suatu pandangan menyeluruh perangkat lunak, yaitu bahwa desain dihadirkan
pada tingkat abstraksi yang tinggi (dapat secara langsung ditelusuri sampai data spesifik,
fungsional, dan persyaratan behavioral)

Data design mengubah informasi menjadi struktur data untuk mengimplementasikan


software Data design dibuat berdasarkan data dictionary dan ERD.

Architectural design mendefinisikan relasi antara elemen - elemen structural utama, pola
desain yang digunakan untuk mencapai kebutuhan yang ditentukan untuk sistem dan batasan-
batasan yang mempengaruhi bagaimana desain arsitektural ini diterapkan. Desain ini
berdasarkan spesifikasi sistem, model analisis (bagian DFD) dan interaksi antara subsistem.

Interface design menjelaskan bagaimana software berkomunikasi dalam dirinya, dengan


sistem yang bertukar informasi dengannya, dan dengan manusia yang menggunakannya. DFD
diperlukan untuk desain ini. Component - level design menghasilkan deskripsi prosedur
software.

Kualitas desain dan software

Agar dihasilkan desain yang baik suatu desain haruslah :

 Memperlihatkan organisasi hirarki yang mengontrol elemen-elemen software.


 Software secara logika terbagi dalam elemen-elemen yang membentuk fungsi dan sub
fungsi.
 Berisi representasi yang berbeda dan terpisah dari data dan prosedur.
 Membentuk modul ( contoh subroutine dan procedure ) yang memperlihatkan
karakteristik fungsi yang tidak saling bergantung.
 Diturunkan dengan menggunakan metode perulangan yang didukung oleh informasi yang
ada selama analisa kebutuhan software
Program structure
Program structure menampilkan / menyajikan organisasi ( seringkali organisasi hirarki )
dari komponen-komponen program ( modul-modul ) dan mengandung arti hirarki dari kontrol
program. Notasi yang digunakan adalah diagram tree. Biasanya dinamakan structure chart.

Prinsip Desain
David [DAV95] memaparkan sekumpulan prinsip untuk desain software :

 Proses desain seharusnya tidak bertahan dari “tunnel vision”.


 Desain harus dapat di trace ke model analisa.
 Desain seharusnya tidak menemukan/invent wheel.
 Desain harus “memperkecil jarak intellectual” antara software dan masalah-masalah pada
dunia nyata.
 Desain harus mengeluarkan uniformity dan integrasi.
 Desain harus terstruktur untuk mengakomodasi perubahan.
 Desain harus terstruktur untuk mendegradasi secara halus(degrade gently).
 Desain bukan coding.
 Desain harus di-assessed untuk kualitas.
 Desain harus diulang untuk meminimalis kesalahan konsep.

Konsep Desain

 Abstraction

Abstraction adalah gambaran dari fungsi suatu program. Gambaran ini bisa bertingkat-
tingkat. Tingkat yang paling atas adalah gambaran suatu fungsi program dengan menggunakan
bahasa alami. Pada tingkat terendah, menghasilkan abstraksi yang bersifat prosedural/ langkah
perlangkah dengan menggunakan istilah yang teknis dan bisa diimplementasikan menjadi fungsi
program.

 Refinement

Penjelasan detil dari abstraction refinement membantu designer untuk memperlihatkan


detil dari lowest level dari abstraction. Abstraction dan refinement merupakan konsep yang
saling melengkapi.
 Konsep Desain – Modularity

Software dibagi komponen dengan nama dan alamat yang berbeda, disebut modul. Meyer
[MEY88] mendefenisikan beberapa kriteria yang memungkinkan kita mengevaluasi sebuah
metode desain

 Modular composability: sebuah metode desain memungkinkan komponen desain


yang telah ada dirakit ke sebuah sistem baru.
 Modular understandability: sebuah modul dapat dimengerti sebagai sebuah unit
yang berdiri sendiri dan akan lebih mudah membangun dan mengubahnya.
 Modular continuity: perubahan kecil terhadap kebutuhan sistem menghasilkan
perubahan pada tiap modul, dibanding perubahan system-wide.
 Modular protection: sebuah kondisi aberrant terjadi dalam sebuah modul dan
efeknya di-constrain dalam modul.

Desain Arsitektur Software

Suatu sistem, entah itu besar atau tidak, dibangun dari sub-sub sistem yang lebih kecil.
Sub-sub sistem ini memiliki fungsi sendiri-sendiri. Proses merancang untuk menentukan sub-sub
sistem dan membangun kerangka kerja untuk kendali dan komunikasi antar sub sistem disebut
design arsitektural. Proses merancang ini menghasilkan arsitektur software atau arsitektur sistem.

Desain arsitektur adalah aktifitas desain yang pertama dalam pembangunan software
Desain arsitektur memberikan 3 keuntungan yaitu:

 arsitektur software menjadi media komunikasi dan diskusi karena mudah dipahami
 memberi kemudahan dalam melakukan analisis terhadap software yang akan dibangun
 arsitekturnya bisa digunakan lagi untuk sistem selanjutnya (reusable)

Tiap perancang sistem memiliki kemampuan dan pengetahuan yang berbeda dalam
merancang arsitektural. Aktifitas - aktifitas berikut adalah aktifitas dalam merancang dan
aktifitas ini tidak dikerjakan satu persatu berurutan, tapi bisa dilakukan bersamaan, yang
meliputi :

 Menyusun sistem (system structuring)


sistem disusun menjadi beberapa subsistem utama, dimana subsistem adalah unit bagian
software yang berdiri sendiri.
 Membuat model kendali (Control modelling)
berkaitan dengan hubungan antara bagian dalam sistem.
 Membuat pembagian sistem menjadi modul-modul (modular decomposition)
membagi sub-sub sistem menjadi modul-modul.

Software procedure
Fokus pada detil proses pada tiap modul. Prosedur menjelaskan proses, urutan kejadian,
proses perulangan, penentuan keputusan/arah. Ini bisa digambarkan dengan menggunakan Flow
Chart yang bertingkat.

Information Hiding
Ide dari information hiding (menyembunyikan informasi) adalah modul dirancang
sedemikian rupa sehinga inforamsi (prosedur dan data) yang di dalamnya tidak dapat di akses
oleh modul lain yang tidak memerlukannya.
Desain Modular Efektif
Modular design mereduksi komplesitas masalah, menyediakan fasilitas untuk
melakukan perubahan ( dalam hal pemeliharaan ), dan memudahkan implementasi dengan
pengembangan paralel dari bagian-bagian yang berbeda dalam suatu sistem.

1. Module types : abstraksi dan penyembunyian informasi dipakai untuk mendefinisikan


modul-modul di dalam lingkungan software architecture. Suatu modul mungkin
dikategorikan sebagai berikut: Sequential module dieksekusi tanpa interupsi yang
dilakukan software aplikasi, Incremental module dapat diinterupsi oleh program aplikasi
dan kemudian kembali ke titik semula setelah interupsi selesai,Parallel module
dieksekusi secara simultan dengan modul lain dalam lingkungan Concurrent
multiprocessor
2. Independensi Fungsional : konsep functional independence berkembang dari modularitas
dan konsep abstraksi serta information hiding. Independence diukur dengan
menggunakan 2 kriteria kualitatif, yaitu : cohesion, coupling.
3. Cohesion ( keterpautan ) : suatu modul kohesif membentuk sebuah tugas tunggal di
dalam suatu software prosedur dan memerlukan sedikit interaksi dengan prosedur yang
dibuat dalam bagian lain dari suatu program.

 Coincidental cohesion : sebuah modul yang membentuk sejumlah tugas yang


berhubungan satu sama lain dengan longgar
 Logically cohesion : sebuah modul yang membentuk tugas-tugas yang
dihubungkan secara logical
 Temporal cohesion : jika sebuah modul berisi sejumlah tugas yang dihubungkan
dengan segala yang harus dieksekusi di dalam waktu yang bersamaan.
 Procedural cohesion : jika pemrosesan elemen-elemen dari suatu modul
dihubungkan dan harus dieksekusi dalam urutan spesifik
 Communication cohesion : jika pemrosesan elemen-elemen dikonsentrasikan
pada satu area dari suatu struktur data.

4. Coupling ( bergandengan ) : merupakan suatu pengukuran dari keterkaitan /


keterhubungan antara sejumlah modul dalam struktur program.

Heuristik desain bagi modularitas yang efektif


1. Evaluasi “iterasi pertama” dari struktur program untuk mengurangi perangkaian dan
meningkatkan kohesi.
2. Usahakan meminimalkan struktur dengan fan-out yang tinggi; usahakan untuk
melakukan fan-in pada saat kedalaman (depth) bertambah.
3. Jagalah supaya lingkup efek dari suatu model ada dalam lingkup control.
4. Evaluasi interface modul untuk mengurangi kompleksitas dan redundansi.
5. Tetapkan modul-modul yang fungsinya dapat diprediksi, tetapi hindari modul yang
terlalu restriktif.
6. Usahakan modul-modul “entri kontrol" dengan menghindari “hubungan patalogis”
7. Kemaslah software berdasarkan batasan desain dan persyaratan probabilitas.
Model Desain
Prinsip dan konsep desain yang dibicarakan pada bab ini membangun sebuah fondasi
untuk pembuatan model desain yang mencakup representasi data, arsitektur, interface dan
prosedur.

Anda mungkin juga menyukai