Another Source

Rabu, 07 Maret 2012

Pengenalan dan Prinsip-prinsip pada Software Design

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:
  1. Desain Arsitektur (Architecture Design), yaitu: proses mendeskripsikan dan mendefinisikan bagaimana software dibentuk dan di organisasikan kedalam komponen-komponen yang akan menbentuk software tersebut.
  2. 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:
  1. Unified Modeling Language (UML), yaitu sebuah standar dalam membangun sebuah model yang merepresentasikan object oriented software dan business system (Pender A Thomas, 2002).
  2. Flowchart, yaitu: bagan yang biasa digunakan untuk merepresentasikan algoritma secara sistematik (Wikipedia).
  3. 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. 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.
  1. 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.
  1. 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.
  1. Dekomposisi algoritmik adalah proses pendekatan yang sering dilakukan dalam pemograman terstruktur dimana pada pendekatan ini difokuskan pada proses/algoritma/fungsi yang memanipulasi struktur data.
  2. 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. 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.
  1. 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. 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