Rekayasa Perangkat Lunak

 Tugas Kuliyah :


- Materi Tentang Desain Softwere Dan proses desain RPL
-  Karakteristik RPL
- Konsep Desain RPL


 Jawaban :
 * Materi Tentang Desain Softwere Dan Prose Desain RPL  ?

 DESAIN SOFWERE
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.
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).



 PROSES DESAIN RPL 

  Proses 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
  1. 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 .
  2. Desain Arsitektur (Architectural Design)
    Pada desain arsitektur ini menentukan suatu hubungan diantara elemen-elemen struktur utama dan program.
  3. Desain Antar Muka (Interface Design)
    pada desain interface menggambarkan bagaimana PL berinteraksi dengan sistem yang berinteroperasi dengan desain interface tersebut serta pengguna yang menggunakannya.
  4. 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 Proses 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 :
  1. Proses desain tidak boleh menderita karena "tunnel vision" 
  2. Desain harus dapat ditelusuri sampai pada model analisis.
  3. Desain tidak boleh "berulang" 
  4. Desain harus " Meminimalkan kesenjangan intelektual"
  5. Dsain harus mengungkapkan keseragaman dan integritasi.
  6. Desain harus terstruktur untuk mengakomodasi perubahan.
  7. Desain harus terstruktu untuk berdegradasi dengan baik , bahkan pada saat data dan event" menyimpang , / sedang menghadapi kondisi operasional.
  8. Desain bukanlah pengkodean 
  9. Desain harus dinilai kualitasnya pada saat desain dibuat , bukan setelah jadi 
  10. Desain harus dikaji untuk meminimalkan kesalahan-kesalahan konseptual (semantik).
jika prinsip diatas sudah diterapkan dengan benar  , maka RPL mampu menciptakan suatu desain yang mengungkapkan baik itu faktor kualitas internal dan juga eksternal [MEY88]. 

Konsep -konsep Desain Rekayasa Perangkat Lunak

Dalam konsep -konsep desain Rekayasa Perangkat Lunak terdapat :
  1. Abstraksi
  2. Penyaringan
  3. Modularitas
  4. Arsitektur Perangkat Lunak
  5. Hirarki Kontrol
  6. Partisi Struktural
  7. Struktural Data
  8. Prosedur Perangkat Lunak
  9. Penyembunyian Informasi
  10. Mempunyai daya guna yang tinggi (usability)
Perangkat lunak harus berguna bagi pengguna, mempunyai interface dan dokumentasi yang sesuai dengan penggguna.
  • Mempunyai kinerja sesuai fungsi yang dibutuhkan pemakai
Perangkat lunak harus dapat dipakai, tanpa usaha yang tidak perlu, oleh user yang dituju. Hal ini berarti bahwa perangkat lunak harus memiliki interface user yang bagus dan dokumentasi yang mencukupi.
  • Mampu diandalkan (be reliable)
Perangkat lunak yang mampu diandalkan mempunyai serangaian karakteristi, termasuk keandalan, keamanan dan keselamatan. Perangkat lunak yang dapat dipercaya seharusnya tidak menyebabkan kerusakan fisik atau ekonomi jika terjadi kegagalan sistem.
  • Mudah dirawat/diperbaiki (maintenability)
Perangkat lunak dimungkinkan untuk berevolusi sesuai kebutuhan perubahan klien.
  • Lebih efisien
Perangkat lunak tidak boros dalam menggunakan sumber daya sistem seperti memory dan prosesor.
  • Mempunyai antarmuka yg menarik (eye cathcing user interface)


Komentar

Posting Komentar