konsep design perangkat lunak

JURNAL PERKULIAHAN REKAYASA PERANGKAT LUNAK

“KONSEP DESAIN PERANGKAT LUNAK”

 

  1. PENGERTIAN DESAIN PERANGKAT LUNAK

Desain merupakan perencanaan, penggambaran sketsa dan sesuatu yang akan di bangun. Tahapan pengembangan perangkat lunak yang hasilnya akan digunakan oleh pengembang perangkat lunak untuk membuat program. Desain dilakukan agar kualitas dapat diukur dan dijamin sebelum dilakukannya implementasi secara fisik. Sehingga dapat meminimalisir dampak dan resiko yang akan terjadi nantinya.

Teknik desain Perangkat Lunak berbeda dengan teknik desain pada umumnya (desain bangunan, desain mikrokontroller, desain karya seni), karena Perangkat Lunak bersifat intangible. Namun, telah dikembangkan berbagai macam metode yang dapat digunakan spesifik untuk keperluan desain Perangkat Lunak.

A. KONSEP DESAIN PERANGKAT LUNAK

Sebuah Perangkat Lunak harus didesain dengan mengejar faktor :

  1. Firmness : Terhindar dari bugs dan error yang dapat mengganggu jalannya PL.
  2. Commodity : Sesuai dengan keperluan dan kebutuhan.
  3. Delight : Nyaman digunakan oleh pengguna PL.

B. 4 LAYER DESAIN PERANGKAT LUNAK

1. Desain Data

Translasi ERD & Data Dictionary ke dalam konteks lingkungan implementasi.

2. Desain Arsitektur

Rancang bangun dari PL, relasi dan posisi antar bagian utama dari PL dengan memanfaatkan “design patterns”.

3. Desain Antarmuka

Merancang metode interaksi antar komponen PL dan terhadap pengguna.

4. Desain Komponen

Desain detail masing-masing prosedur di dalam komponen.

C. MENGUKUR KUALITAS DESAIN PERANGKAT LUNAK

  1. Desain PL memiliki arsitektur yang :
  • Dibuat berdasarkan template dan design patterns yang telah teruji.
  • Berisi komponen yang memiliki karakteristik desain yang baik.
  • Dapat diimplementasikan secara bertahap.
  1. Desain PL bersifat modular
  2. Desain PL berisi representasi yang jelas dari data, arsitektur, antarmuka, komponen
  3. Desain PL memiliki struktur data yang pantas untuk setiap kelas
  4. Desain PL memiliki komponen yang functionally independent
  5. Desain PL memiliki antarmuka yang simpel
  6. Desain PL dilakukan dengan metode yang jelas dan telah terbukti
  7. Desain PL menggunakan representasi yang dapat dimengerti bersama

 

D. TUJUAN AKHIR DESAIN PERANGKAT LUNAK

  1. Desain PL harus mengimplementasikan semua spesifikasi kebutuhan tertulis, dan juga memenuhi harapan tak tertulis dari pengguna.
  2. Desain PL harus terdokumentasi dan mudah dibaca serta dimengerti oleh yang berkepentingan.
  3. Desain PL harus dapat menggambarkan keseluruhan dari PL.

E. KONSEP UTAMA DESAIN PERANGKAT LUNAK

  1. Separation of Concerns
  2. OO Design Concepts
  • Abstraction
  • Modularity
  • Information Hiding
  • Functional Independence
  1. Design Classes
  2. Architecture
  • Design Patterns
  • Aspects
  1. Refinement
  2. Refactoring

F. SEPARATION OF CONCERNS

  • Concerns : daftar fitur dan kebutuhan yang telah dianalisis dari PL.

“Divide-and-Conquer strategy” – dengan membagi masalah menjadi bagian-bagian kecil, akan lebih mudah untuk diselesaikan satu-persatu.

  • Desainer PL harus mampu dengan logis menangkap seberapa jauh sebuah concern dapat dibagi ke dalam bagian-bagian yang lebih kecil.
  • Separation of Concerns adalah pola pikir dasar yang harus dimiliki oleh semua Software Engineer dalam membangun PL
  • Contoh :

Concern : “Dashboard yang dapat digunakan dosen untuk mengelola kuliah virtual”

  • Dashboard yang dapat digunakan dosen untuk mengelola kuliah virtual
    • Bagian yang berisi perintah-perintah navigasi
    • Bagian yang berisi daftar mata kuliah
      • Bagian yang berisi daftar materi kuliah
      • Bagian yang berisi daftar tugas-tugas
      • Bagian yang berisi daftar rekapitulasi nilai

G. OO DESIGN CONCEPTS 

Dalam merancang sebuah perangkat lunak terdapat konsep dasar yang dinamakan cohesion dan coupling dimana konsep ini diterapkan ketika akan membagi sebuah perangkat lunak kedalam bentuk modul-modul dengan kata lain menerapkan konsep modularity. Dalam penerapan konsep modularity harus diperhatikan dengan benar bahwa sudah menganut prinsip Loose Coupling, High Cohesion. Sebelumnya konsep dari modularitas adalah membagi sebuah perangkat lunak kedalam modul-modul yang lebih kecil. Sebagai contoh sebuah perangkat lunak memiliki proses pembelian dan penjualan. Kedua proses ini adalah proses yang berbeda sehingga dapat dipisahkan antara pembelian sendiri sedang penjualan kedalam modul tersendiri.

H. COUPLING

1. Pengertian Coupling

Coupling adalah ketergantungan modul satu dengan modul yang lain Bayangkan jika anda mengubah 1 modul A tapi karena modul lain memiliki ketergantungan terhadap modul A, maka efek perubahan ini mungkin saja punya impact terhadap modul lain. Karena itu loose coupling sangat penting dalam perancangan software.

2. Contoh Coupling

Coupling, dari perangkat lunak yang membagi modul pembelian dengan penjualan terlihat bahwa pada kedua modul tersebut tidak memiliki keterikatan, andaikata dilakukan perubahan terhadap modul pembelian maka modul penjualan tidak akan bermaslaah. Sehingga ini yang disebut menganut prinsip Loose Coupling.

Contoh coupling -> Terdapat 1 modul Transaksi untuk Penjualan dan Pembelian. Karena Pembelian dan Penjualan bisa dipisahkan (Pembelian adalah transaksi ke supplier, sedangkan Penjualan adalah transaksi ke Customer) adalah suatu hal yang terpisah, maka modul Transaksi dapat dibagi menjadi 2 modul terpisah yaitu modul Pembelian dan modul Penjualan. Sehingga perubahan terhadapa Penjualan tidak mempengaruhi Pembelian.

3. Jenis-jenis coupling

  • No direct coupling

Modul 1 dan Modul2 adalah subordinate terhadap modul2 yang berbeda.Sehingga masing – masing tidak berhubungan dan tidak ada penggandengan langsung yang terjadi antara keduanya.

  • Data Coupling

Dua buah modul dari sistem mempunyai data coupling jika komunikasi dari modul2 ini dilakukan lewat suatu data.Data dapat berupa sebuah item data tunggal atau elemen dari suatu larik(array).atau ketika modul berbagi data melalui, misalnya, parameter. Setiap datum adalah bagian dasar, dan ini adalah data hanya bersama (misalnya, melewati sebuah integer ke fungsi yang menghitung akar kuadrat).

  • Stamp coupling

Dua buah modul dikatakan stamp coupling jika kedua modul ini berkomunikasi lewat suatuukelompok item data. Kelompok item data dapattberupa suatu record yang terdiri dari beberapa field atau larik yang terdiri dari beberapa elemen.uah modul dikatakan stamp coupling modul ini berkomunikasi lewat item data. Kelompok item data suatu record yang terdiri dari field atau larik yang terdiri dari beberapa elemen.

  • Control coupling

Control coupling ditandai dengan adanya jalur kendali antara modul. Modul satu mengendalikan  aliran data di modul yang lain, kendali dilakukananmelalui flag yang mengontrol logika intern modullyang lain.

  • External coupling

Tingakt coupling yang terjadi bila modul-modul terikat pada lingjkungan luar (external) dari perangkat lunak.

  • Common coupling

Modul-modul dikatakan common coupling jika modul-modul tersebut menggunakan data yang di simpan di area memori yang sama.

  • Content coupling

Content coupling terjadi jika suatu modul mengguankan data atau mengendalikan informasi dari modul yang lain tanpa berhubungan lewat suatu parameter. Contet coupling dapat juga terjadi jika percabangan di lakukan ke tengah-tengah suatu modul yang lain. Content coupling (tinggi). Konten kopling (juga dikenal sebagai kopling patologis) adalah ketika satu modul memodifikasi atau bergantung pada kerja internal modul lain (misalnya, mengakses data lokal dari modul lain). Oleh karena itu mengubah cara modul kedua menghasilkan data (lokasi, jenis, waktu) akan menyebabkan perubahan modul tergantung. Kopling umum (juga dikenal sebagai kopling Global) adalah ketika dua modul berbagi data global yang sama (misalnya, variabel global). Mengubah sumber daya bersama berarti mengubah semua modul menggunakannya.

  • Eksternal kopling

Kopling Eksternal terjadi ketika dua modul berbagi format data eksternal dikenakan, protokol komunikasi, atau interface.This perangkat pada dasarnya terkait dengan komunikasi ke alat eksternal dan perangkat.

  • Pengendalian kopling

Kopling Control adalah satu modul mengendalikan aliran lain, dengan melewatkan informasi tentang apa yang harus dilakukan (misalnya, lewat bendera apa-to-do).

I. COHESION

1. Pengertian Cohesion

Cohesion adalah keterikatan fungsi-fungsi di dalam suatu modul. Maksudnya adalah modul yang dibuat memiliki fungsi-fungsi yang serupa untuk 1 tanggung jawab. Karena itu high cohesion sangat penting dalam perancangan software.

2. Contoh Cohesiom

Cohesion, dimana dari modul penjualan terdapat fungsi-fungsi semisal menghitung harga pokok, menghitung diskon, menghitung keuntungan dll yang merupakan fungsi yang saling berkaitan pada modul penjualan. Sehingga ini yang disebut menganut prinsip High Cohesion.

Contoh cohesion -> 1 class Lampu memiliki 1 tanggung jawab untuk Lampu saja. Fungsi-fungsi seperti turningOn, turningOff, changeColour, dll harus identik dengan tanggung jawab terhadap prilaku lampu secara umum.

3. Jenis-jenis Cohesion

  • Coincidental Cohesion – merupakan elemen yang tidak mempunyai hubungan.
  • Logical Cohesion – merupakan elemen-elemen yang melakukan kegiatan dengan kategori yang sama. Parameter  yang dimasukkan menentukan kegiatan yang dilaksanakan. Tidak semua kegiatan akan dikerjakan.
  • Temporal Cohesion – merupakan elemen-elemen yang terlibat dalam berbagai kegiatan yang mempunyai hubungan dalam waktu. Tidak memperhatikan urutan.
  • Procedural Cohesion – merupakan hubungan antara elemen yang satu dfengan yang lainnya dikarenakan urutan statement. Satu kegiatan dengan kegiatan lain tidak berhubungan. Elemennya dapat dipecahkan menjadi Functional.
  • Communicational Cohesion – ciri-cirinya adalah kegiatan yang dilakukan lebih dari satu, menggunakan data yang sama, dan dapat dijadikan Functional.
  • Sequential Cohesion –  mempunyai pekerjaan yang beruntun. Kegiatan yang dilakukan lebih dari satu, hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya, dapat juga di pecah menjadi Functional.
  • Functional Cohesion –  hanya mempunyai satu tugas, menghasilkan satu hasil atau satu parameter output, bisa satu atau lebih parameter input.

J. ABSTRACTION

Menata kompleksitas solusi ke dalam berbagai lapisan abstraksi.

  • Modul Logika
    • Modul Operasi Lanjut
    • Modul Operasi Dasar

 

  • Modul Antarmuka
    • Modul Tombol
    • Modul Layar
  • Abstraksi Struktural

Modul Tombol

Tombol tombol_1

Tombol tombol_2

Tombol tombol_3 …. Dst

  • Abstraksi Prosedural
    • Modul Operasi Lanjut

function hitungKuadrat(x)… dst

  1. result = x;
  2. for (i=0; i < x; i++) {
  3.   result = result + x;
  4. }
  5. return result;

K. MODULARITY

  • Membagi desain arsitektur PL ke dalam komponen-komponen kecil sehingga lebih manageable lokalisasi masalah & resiko
  • Modularity merupakan salah satu cara dalam menggunakan ulang perangkat lunak, karena dengan memecah perangkat lunak menjadi modul-modul kecil akan dengan mudah memakai kepada perangkat lunak yang lain. Untuk mendapat hasil yang maksimal maka kaidah Loose Coupling, High Cohesion harus benar-benar diterapkan karena pada prinsip tersebut akan dihasilkan sebuah perangkat lunak yang dapat dengan mudah dilakukan penggunaan ulang jika terdapat projek dengan kebutuhan modul-modul yang hampir sama dengan projek yang sudah ada dan menggunakan konsep modularitas.

L. INFORMATION HIDING

 

Membatasi akses hanya sampai level abstraksi tertinggi yang dapat digunakan oleh modul lain mencegah efek samping yang tidak diinginkan.

M. DESIGN CLASSES

Kelas yang ada pada tahap desain dapat dibedakan menjadi :

  • Kelas Analisis : Yaitu kelas hasil turunan dari tahap analisis, dengan melakukan modifikasi dan adaptasi terhadap lingkungan implementasi. Misal : kelas Mahasiswa, pada tahap desain ditambahkan fungsi getSummary() untuk mendapatkan rangkuman keterangan identitas yang akan ditampilkan pada dashboard.
  • Kelas Boundary : Yaitu kelas yang terlibat dalam pembangunan antarmuka PL. Misal : kelas-kelas form, dsb.
  • Kelas Controller : Yaitu kelas yang dibuat untuk mengatur jalannya PL. Misal : kelas Main, kelas SessionController, dsb.

N. ARCHITECTURE

 

 

  • Arsitektur PL adalah penggambaran secara konseptual terhadap keseluruhan struktur dari PL. Pada engineering yang tangible, arsitektur dapat dengan mudah dilakukan lewat penggambaran 2 dimensi maupun 3 dimensi. Lain halnya dengan PL yang tidak memiliki wujud fisik.

 

  • Model yang dapat digunakan dalam representasi Arsitektur PL :
  • Structural Models : Komponen-komponen apa saja yang ada pada PL.
  • Framework Models : Kerangka & patterns apa yang digunakan.
  • Dynamic Models : Bagaimana PL bereaksi pada setiap use case.
  • Process Models : Proses teknis dari berjalannya PL.
  • Functional Models : Hirarki secara fungsional dari komponen PL.

O. DESIGN PATTERNS

 

  • Design Patterns adalah pola-pola desain khusus yang dapat diguna-ulang untuk keperluan tertentu.

Analogi : jika ingin membangun jembatan layang, gunakan pattern cakar ayam untuk pondasinya.

  • Tujuan utama design patterns : implementasi cara yang sudah teruji, dan memudahkan komunikasi.

 

P. ASPECTS

  • Sebuah aspect adalah fitur yang beririsan dengan fitur-fitur lainnya pada saat desain PL.
  • Misal :

Fitur A : Mahasiswa dapat membuka halaman kuliah virtual yang dia ikuti.

Fitur B : Dosen dapat membuka halaman kuliah virtual yang dia ampu.

Fitur C : Pengguna yang membuka halaman kuliah harus tervalidasi terdaftar pada Mata Kuliah tersebut.

  • C beririsan dengan A dan B (karena Mahasiswa dan Dosen harus terlebih dahulu tervalidasi sebelum dapat membuka halaman kuliah virtual), C adalah aspect dari desain PL tersebut.
  • Aspects harus diakomodir pada desain PL, sehingga dapat diimplementasikan pada fitur-fitur lain yang beririsan. Misalnya dengan membuat modul Session yang bertugas khusus melakukan autentikasi dan validasi untuk seluruh sistem.

Q. REFINEMENT

Desain dilakukan secara bertahap, mulai dari abstraksi yang paling tinggi hingga kepada detail terkecil.

R. REFACTORING

  • Desain dilakukan secara iterative, berulang-ulang. Pada setiap iterasi, dilakukan refactoring yaitu optimasi dengan menghilangkan / memperbaiki :
  • Redundansi
  • Elemen desain tak terpakai
  • Algoritma yang tidak efisien / tidak perlu
  • Struktur Data yang badly designed
  • Faktor lain yang dapat diperbaiki.

 

  • Prinsip terpenting dalam refactoring :

Perubahan yang dilakukan tidak boleh mempengaruhi berjalannya system secara keseluruhan.

 

By : Cela Febriyani

2115061118

 

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>