REKAYASA
PRANGKAT LUNAK
ü Materi Tentang Desain Sofware Dan Proses
Desain RPL
ü Karakteristik RPL
ü Konsep Desain RPL
Ø Materi Tentang Desain Sofware Dan Proses
Desain RPL
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 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 cohesionadalah 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).
Proses Desain Perangkat lunak dan
rekayasa perangkat lunak
Desain perangkat lunak berada pada posisi teknik inti dari suatu proses
rekayasa perangkat lunak yang digunakan. pada dasarnya desain perangkat lunak
memiliki prinsip atau aktivitas sebagai berikut
§ Desain Data (Data
Design)
Desain data merupakan suatu aktivitas
pertama dan juga yang terpentig dari empat aktivitas desain yang dilakukan
selama rekayasa perangkat lunak. Proses dalam pemilihan struktur didalam
menentukan desain yang paling efisien dan juga yang sesuai kebutuhan.
Desain data
mentransformasikan model domain suatu informasi yang dibuat selama analisis ke
dalam struktur data yang akan diperlukan untuk dapat menngimplementasikan
perangkat lunak .
§ Desain Arsitektur
(Architectural Design)
Pada desain arsitektur ini menentukan suatu hubungan diantara elemen-elemen
struktur utama dan program.
§ Desain Antar Muka
(Interface Design)
pada desain interface menggambarkan bagaimana PL berinteraksi dengan sistem
yang berinteroperasi dengan desain interface tersebut serta pengguna yang
menggunakannya.
§ Desain Prosedural
(Procedural Design)
mentransformasikan elemen-elemen struktural dari desai arsitektur progrma
ke dalam sebuah deskripsi prosedural dari komponen-komponen Perangkat lunak.
Ø karakteristik desain
Prinsip
Desain Perangkat lunak
Desain perangkat lunak berupa model dan proses. Proses desain merupakan
serangkaian langkah / tahap / step iteratif yang memungkinkan desainer
menggambarkan semua aspek perangkat luank yang dibangun . Sedangkan Model
Desain merupakan ekivalen rencana arsitek untuk membangun suatu sistem
interface. model desain memeluai dengan menyajikan totalitas dari hal-hal yang
akan dibangun.
Prinsip-prinsip desain
dasar untuk mengendalikan proses desain . Davis [DAV95] mengusulkan serangkaian
prinsip bagi desain perangkat lunak , antara lain sebagai berikut :
§ Proses desain tidak boleh menderita
karena "tunnel vision"
§ Desain harus dapat ditelusuri sampai
pada model analisis.
§ Desain tidak boleh
"berulang"
§ Desain harus " Meminimalkan
kesenjangan intelektual"
§ Dsain harus mengungkapkan keseragaman
dan integritasi.
§ Desain harus terstruktur untuk
mengakomodasi perubahan.
§ Desain harus terstruktu untuk
berdegradasi dengan baik , bahkan pada saat data dan event" menyimpang , /
sedang menghadapi kondisi operasional.
§ Desain bukanlah pengkodean
§ Desain harus dinilai kualitasnya pada
saat desain dibuat , bukan setelah jadi
§ Desain harus dikaji untuk meminimalkan
kesalahan-kesalahan konseptual (semantik).
jika prinsip diatas
sudah diterapkan dengan benar , maka RPL mampu menciptakan suatu desain yang
mredhoagustaputraengungkapkan baik itu faktor kualitas internal dan juga eksternal
[MEY88].
Ø Konsep -konsep Desain
Dalam konsep -konsep
desain perangkat lunak terdapat :
§ Abstraksi
§ Penyaringan
§ Modularitas
§ Arsitektur Perangkat Lunak
§ Hirarki Kontrol
§ Partisi Struktural
§ Struktural Data
§ Prosedur Perangkat Lunak
§ Penyembunyian Informasi

Komentar
Posting Komentar