Software design merupakan salah satu proses dalam sebuah Software Development Life Cycle. Adapun definisi dari software design
sangat beragam, bergantung pada kacamata dan sudut pandang orang
dan/atau institusi yang mendeskripsikan definisi tersebut. Berikut ini
beberapa definisi software design yang penulis kutip dari beberapa referensi, yaitu: Swebok 2004 [IEEE610.12-90] mendefinsikan bahwa software design adalah semua proses dalam mendefinisikan arsitektur, komponen, interface dan karateristik sebuah sistem dan/atau komponen lainnya serta hasil dari proses tersebut.
Pendapat lain mengatakan bahwa software design
adalah merupakan rekayasa representasi yang berarti terhadap sesuatu
yang hendak dibangun. Hasil rancangan harus dapat ditelusuri hingga ke
spesifikasi kebutuhan yang dapat diukur kualitasnya berdasarkan
kriteria-kriteria rancangan yang bagus. Perancangan menekankan pada
solusi logik mengenai cara sistem memenuhi kebutuhan(Bambang Hariyanto,
2004).
Selanjutnya pengertian software design berdasarkan Ensiklopedi Wikipedia dalam websitenya (http://en.wikipedia/wiki/software_design) yaitu: sebuah proses pemecahan masalah (problem-solving) ditambah dengan perencanaan untuk solusi sebuah software termasuk didalamnya desain komponen yang akan digunakan (low-level component) serta algoritma yang akan diimplementasikan.
Secara global, terdapat 2 (proses) dalam software design (Swebok 2004), yaitu:
- Desain Arsitektur (Architecture Design), yaitu: proses mendeskripsikan dan mendefinisikan bagaimana software dibentuk dan di organisasikan kedalam komponen-komponen yang akan menbentuk software tersebut.
- Detailed Design, yaitu: proses mendeskripsikan bagaimana prilaku (behavior) dari komponen-komponen yang sudah dibentuk pada architecture design.
Hasil dari kedua proses ini adalah sekumpulan model dan artifak yang mendeskripsikan tujuan serta gambaran dari software yang akan dibangun, adapun model-model ini bisa dibangun dengan menggunakan modeling language yaitu: bahasa yang digunakan untuk membuat dan menyajikan informasi atau knowledge atau sistem dalam sebuah struktur yang dibuat secara konsisten menggunakan sekumpulan aturan-aturan tertentu. Contohnya yaitu:
- Unified Modeling Language (UML), yaitu sebuah standar dalam membangun sebuah model yang merepresentasikan object oriented software dan business system (Pender A Thomas, 2002).
- Flowchart, yaitu: bagan yang biasa digunakan untuk merepresentasikan algoritma secara sistematik (Wikipedia).
- Extended Enterprise Modeling Language (EEML), yaitu: model yang digunakan untuk merepresentasikan business model yang terdiri dari sejumlah layer (Wikipedia).
Prinsip-prinsip dalam melakukan desain software (Swebok 2004).
- 1. Abstraction (Proses Abstraksi)
Abstraksi merupakan salah satu teknik
yang paling ampuh untuk menyelesaikan sebuah permasalahan yang kompleks.
Abstraksi merupakan kemampuan manusia untuk mengenali
keserupaan-keserupaan diantara objek-objek, situasi-situasi, dan
proses-proses di dunia nyata serta keputusan untuk berkonsentrasi pada
keserupaan-keserupaan tersebut dan mengabaikan apa yang disebut
perbedaan-perbedaan kecil yang ada (Bambang Hariyanto, 2004). Sedangkan
pendapat lain mengatakan bahwa abstraksi adalah proses menghilangkan
informasi dari sebuah objek dan menjadikan perbedaan-perbedaan kecil
sebagai suatu kesamaan untuk maksud tertentu (Swebok, 2004).
Contoh proses abstraksi adalah sebagai berikut: ketika
melakukan penentuan kecepatan benda jatuh dari suatu ketinggian, kita
tidak memperdulikan apakah benda itu adalah sebuah batu, kucing, pesawat
terbang, kapas, bulu ayam, jarum, benang dan lain sebagainya. Kita
hanya menganggap bahwa benda tersebut sebagai suatu titik masa, sehingga
dengan menggunakan persamaan kecepatan dipercepat beraturan, kita bisa
menentukan letak titik jatuh benda tersebut dan dengan kecepatan berapa
benda tersebut menabrak bumi secara memadai.
- 2. Coupling and Cohesion.
Coupling adalah proses menentukan relasi antar modul sedangkan cohesion adalah proses menentukan bagaimana setiap element agar bisa merelasikan modul-modul tersebut.
- 3. Decomposition and Modularization.
Proses dekompisisi dan mudulasi merupakan pemecahan software yang kompleks kedalam sejumlah modul-modul kecil yang saling berelasi (Swebok, 2004). Bambang Hariyanto (2004)
berpendapat ada 2 (dua) jenis dekomposisi yaitu: dekomposisi algoritmik dan dekomposisi berorientasi objek.
- Dekomposisi algoritmik adalah proses pendekatan yang sering dilakukan dalam pemograman terstruktur dimana pada pendekatan ini difokuskan pada proses/algoritma/fungsi yang memanipulasi struktur data.
- Dekomposisi berorientasi objek adalah proses pendekatan pemecahan permasalahan menjadi objek-objek yang saling berinteraksi, jadi pada pendekatan ini, kita tidak melakukan bagaimana sebuah permasalahan diselesaikan, akan tetapi mengidentifikasi objek-objek yang berkolaborasi dalam permasalahan yang dihadapi, sedangkan proses penyelesaian permasalahan ditangani dalam bentuk peran dan tanggung jawab objek-objek yang sudah didefinisikan.
- 1. Encapsulation/Information Hiding (Penyembunyian Informasi)
Encapsulation/information hiding
merupakan proses pengelompokan dan pemaketan element-element dan detail
informasi abstraksi sehingga tidak bisa diakses oleh sembarang
proses/objek ataupun prosedur tertentu (Swebok, 2004) sedangkan pendapat
lain mengatakan bahwa encapsulation/information hiding adalah
proses memisahkan aspek-aspek eksternal objek yang dapat diakses
objek-objek lain dari rincian-rincian implementasi internal objek yang
tersembunyi dari objek-objek lain (Bambah Hariyanto, 2004).
Agar lebih jelas perhatikan contoh ilustrasi encaplusation/information hiding berikut:
Dalam sebuah objek motor, kita bisa mendefiniskan sebuah attribut yaitu: kecepatan
dimana attribut ini hanya bisa diubah oleh method tambahGas, objek lain
yang berkolaborasi dengan objek motor tidak bisa mengubah attribut
kecepatan secara langsung, misalnya: objek pengemudi, objek ini tidak
bisa secara langsung mengubah kecepatan motor, jika objek ini ingin
mengubah kecepatan motor, maka objek ini harus menggunakan method
tambahGas pada objek motor.
Salah satu tujuan dari proses encapsulation/information hiding
adalah memperkecil ketergantungan antar objek/modul, dimana jika
terjadi perubahan kecil pada suatu atribut objek bisa berdampak besar
pada sistem.
- 2. Separation of Interface and Implementation.
Separating interface and implementation
adalah proses mendefinisikan sebuah komponen dengan spesifikasi sebuah
public interface, diketahui oleh client, memisahkan detail informasi dan
bagaimana komponen direalisasikan (Swebok, 2004).
- 1. Sufficiency, Completeness and Primitiveness.
Sufficiency, completeness and primitiveness adalah proses meyakinkan bahwa semua komponen yang membentuk software mampu menangani dan menampung semua karateristik dari sebuah abstraksi (Swebok, 2004).
Referensi:
[1]. Swebok 20004
[2]. Bambang Hariyanto, Rekayasa Sistem Berorientasi Objek.2004.Bandung: Informatika
[3]. Pender, T. A. 2002. UML Weekend Crash Course. Indianapolis: Wiley Publishing, Inc.
[4]. Software Design Melalui http://en.wikipedia.org/ wiki/software_design [26/02/2010].
0 komentar:
Posting Komentar