Perangkat Lunak : Konsep dan Tantangan
Desain perangkat lunak merupakan tahapan pengembangan perangkat
lunak yang hasilnya akan digunakan oleh pengembang perangkat lunak untuk
membuat program. Dalam tulisan ini, disajikan berbagai konsep penting
mengenai desain perangkat lunak, termasuk proses desain itu sendiri. Tulisan ini
diakhiri dengan mengkaji berbagai tantangan dalam desain perangkat lunak,
dalam hal bagaimana merancang perangkat lunak secara efektif dan perancangan
perangkat lunak untuk embedded system. Dari kajian tersebut diharapkan
memicu riset-riset dalam desain perangkat lunak.
1.PENDAHULUAN
Perangkat lunak umumnya merupakan usaha untuk menyelesaikan permasalahan pada
dunia nyata menggunakan komputer. Pengembangan perangkat lunak (software
development) melalui serangkaian tahapan dimana masing-masing tahapan
menghasilkan artifak atau luaran tertentu. Dimulai dari pemahaman masalah
(requirement elicitation), analisis, desain, implementasi, dan diakhiri dengan pengujian.
Selanjutnya, perangkat lunak ditempatkan (deploy) pada pelanggan dan dilakukan
pemiliharaan terhadapnya.
Luaran dari tahap requirement elicitation menjadi masukan pada tahapan analisis.
Bagian ini menjadi penting karena merupakan tahapan pemahaman terhadap domain
masalah yang akan diselesaikan oleh perangkat lunak. Selanjutnya, luaran dari tahapan
analisis digunakan pada tahap desain. Proses inipun tidak kalah pentingnya karena
hasilnya digunakan sebagai acuan untuk membuat implementasi perangkat lunak.
Tahapan desain menerjemahkan kebutuhan perangkat lunak ke dalam model [1]
yang dapat dipahami oleh pengembang perangkat lunak. Beberapa hal harus
diperhatikan oleh desainer perangkat lunak supaya perangkat lunak yang
dikembangkan dapat fleksibel dan komponen-komponen di dalamnya dapat digunakan
ulang (reuseable). Pada tulisan ini, dipaparkan beberapa hal terkait dengan desain
perangkat lunak yaitu prinsip-prinsip penting, proses desain, dan artifak-artifak yang
dihasilkan dalam tahapan desain. Tulisan ini ditutup dengan beberapa tantangantantangan dalam desain perangkat lunak
2.PRINSIP PRINSIP DESAIN
Desain perangkat lunak, baik desain konvensional maupun berorientasi objek,
dilakukan dengan mengacu pada prinsip-prinsip atau pedoman-pedoman tertentu untuk
mempermudah proses desain itu sendiri dan untuk menghasilkan desain berkualitas
tinggi. Prinsip-prinsip tersebut merupakan prinsip-prinsip yang umum yang dapat
diterapkan pada proyek apapun[1]. Pada bagian ini akan dipaparkan beberapa prinsip
umum desain perangkat lunak. Khusus desain berorientasi objek terdapat tambahan
beberapa prinsip lain yang akan dipaparkan setelahny
3.PRINSIP PRINSIP UMUM DESAIN
Prinsip-prinsip desain yang umum dapat menjadi pedoman bagi para perancang
perangkat lunak dalam membentuk model desain. Pada Software Engineering Body of
Knowledge (SWEBOK) prinsip perancangan perangkat lunak adalah abstraction,
coupling & cohesion, decomposition & modularisation, encapsulation, separation of
interface and implementation, sufficiency, completeness, & primitiveness serta
separation of concern [2].
1. Abstraction
Abstraction (abstraksi) terkait dengan bagaimana berfokus dalam memandang
objek dan mengambil hal yang penting dari objek tersebut. Tiga macam
abstraksi yang dikenal adalah : abstraksi prosedur, data, dan kontrol (iterasi).
2. Coupling & Cohesion
Coupling merupakan ketergantungan antar modul sedangkan cohesion
merupakan keterikatan antara elemen penyusun modul.
3. Decompositon & modularization
Prinsip ini menekankan pada penguraian (decompose) perangkat lunak yang
‘besar’ menjadi modul-modul atau elemen-elemen dimana masing-masing
elemen memiliki fungsi dan tanggung jawab masing-masing.
4. Encapsulation
Prinsip encapsulation berarti detail dari sebuah abstraksi tidak diketahui atau
tidak dapat diakses oleh entitas yang lain di luarnya.
5. Separation of interface and implementation
Dari sisi komponen perangkat lunak, prinsip ini berarti akses kepada sebuah
komponen dari komponen yang lain melalui public interface yang telah
didefinisikan pada komponen yang akan diakses tersebut.
6. Sufficiency, completeness & primitiveness
Sufficiency dan completeness berarti abstraksi yang dilakukan telah
menangkap semua karakteristik yang diperlukan sedangkan primitiveness
artinya desain dapat diimplementasikan.
7. Separation of concern
Prinsip ini terkait dengan arsitektur, dimana terdapat beberapa architectural
view yang memudahkan stakeholder dalam mengelola kompleksitas perangkat
lunak.
4.PROSES DESAIN
Desain bertujuan untuk membentuk sebuah model yang siap untuk diimplementasikan
ke dalam program. Dalam membentuk model desain, terdapat serangkaian proses yang
perlu dilakukan dengan tetap berpegang pada prinsip-prinsip desain. Proses desain
menurut SWEBOK terdiri atas dua aktivitas yaitu software architectural design dan
software detailed design [2]. Semua kegiatan desain perlu untuk didokumentasikan dan
proses dokumentasi perlu manajemen yang baik[1].
Dalam desain berorientasi objek diuraikan beberapa kegiatan yang lain pada
tahapan desain [4]. Kegiatan tersebut adalah :
Mendefinisikan tujuan desain.
Mendefinisikan subsistem.
Pemetaan subsistem ke dalam platform yang digunakan
Pengelolaan persistent data.
Mendefinisikan kendali akses.
Mendefinisikan kendali aliran (control flow).
Mendefinisikan boundary condition.
Kegiatan-kegiatan tersebut merupakan uraian dari dua kegiatan utama pada tahap
desain. Berikutnya, akan diurakan dua kegiatan utama dari tahapan desain tersebut.
5.Desain Arsitektur
Desain arsitektur merupakan desain makro / struktur yang mencerminkan kualitas serta
fungsi dari perangkat lunak. Aktivitas pembentukan arsitektur merupakan aktivitas
dekomposisi, yaitu membagi perangkat lunak menjadi elemen-elemen[2]. Terdapat
panduan dalam aktivitas pembentukan desain arsitektur [5] :
Memikirkan apa (what) yang akan dilakukan oleh sistem menjadi pertimbangan
utama daripada memikirkan bagaimana (how) sistem melakukan sesuatu.
Desain abstrak (interface, kelas abstrak atau abstrak data type) dipertimbangkan
lebih dahulu daripada desain yang konkrit (concrete class)
Kebutuhan non fungsional digunakan sebagai acuan dalam awal proses desain.
Pemakaian ulang sebanyak mungkin elemen/komponen menjadi pertimbangan
dalam menyusun desain.
Desain elemen arsitektur dilakukan dengan mengutamakan high cohesion dan
loose coupling.
Desain disusun tidak dalam satu proses namun dalam beberapa proses yang
berulang.
Desain arsitektur yang telah disusun tidak ambigu dan terlalu detail (over
detailed)
Arsitektur menggambarkan elemen-elemen penyusun perangkat lunak berikut
hubungan antar elemen tersebut atau bagaimana antar elemen saling berkomunikasi.
Hasil dari kegiatan arsitektur dapat digunakan sebagai alat evaluasi oleh para pemangku
kepentingan (stakeholders) terutama yang terkait dengan kebutuhan nonfungsional.
Setidaknya terdapat “4+1” sudut pandang (view model) dalam arsitektur perangkat
lunak yaitu logical, process, physical, development serta secenario / use case [6].
Masing-masing view tersebut dapat dimanfaatkan oleh perancang perangkat lunak
untuk membuat deskripsi mengenai arsitektur yang dipilih, dari masing-masing sudut
pandang.
Use case / scenario : merupakan bentuk dari keseluruhan fungsi perangkat lunak
dan digunakan dasar acuan dari pembentukan logical, process, physical maupun
development view. Selain sebagai dasar acuan, scenario, menjadi alat untuk
validasi setelah keseluruhan view selesai didokumentasikan.
Logical view : menggambarkan kebutuhan fungsional, yaitu kebutuhan yang
semestinya diberikan oleh sistem kepada end user. Penggambaran berupa objek
dan kelas yang menggunakan enkapsulasi maupun pewarisan.
Process view : memungkinkan desainer untuk menggambarkan beberapa
kebutuhan non fungsional seperti performance dan availability. Dalam view ini
juga terdapat definisi thread of control yang mengendalikan objek maupun kelas
dalam logical view.
Physical view : mengilustrasikan kebutuhan non fungsional seperti scalability
dan reliability. Pada physical view, hal-hal yang telah didefinisikan dalam
logical, process dan development view dipetakan dalam node-node (mesinmesin fisik ataupun platform).
Development view : berfokus pada organisasi perangkat lunak dalam modulmodul atau sub-sistem, yang akan diterapkan pada perangkat lunak yang
dikembangkan.
Penyusunan perangkat lunak dalam modul-modul beserta konektornya akan
membentuk struktur perangkat lunak. Dalam proyek perangkat lunak, akan dapat
ditemukan struktur-struktur yang mirip atau hampir sama dan dapat digunakan ulang
untuk proyek lain. Strukur-struktur tersebut dikenal dengan architectural style [5].
Terdapat banyak kelompok architectural style yang telah didefinisikan.
Materi: Kebutuhan non fungsional digunakan sebagai acuan dalam awal proses desain.
Pemakaian ulang sebanyak mungkin elemen/komponen menjadi pertimbangan
dalam menyusun desain.
Desain elemen arsitektur dilakukan dengan mengutamakan high cohesion dan
loose coupling.
Desain disusun tidak dalam satu proses namun dalam beberapa proses yang
berulang.
Desain arsitektur yang telah disusun tidak ambigu dan terlalu detail (over
detailed)
Arsitektur menggambarkan elemen-elemen penyusun perangkat lunak berikut
hubungan antar elemen tersebut atau bagaimana antar elemen saling berkomunikasi.
Hasil dari kegiatan arsitektur dapat digunakan sebagai alat evaluasi oleh para pemangku
kepentingan (stakeholders) terutama yang terkait dengan kebutuhan nonfungsional.
Setidaknya terdapat “4+1” sudut pandang (view model) dalam arsitektur perangkat
lunak yaitu logical, process, physical, development serta secenario / use case [6].
Masing-masing view tersebut dapat dimanfaatkan oleh perancang perangkat lunak
untuk membuat deskripsi mengenai arsitektur yang dipilih, dari masing-masing sudut
pandang.
Use case / scenario : merupakan bentuk dari keseluruhan fungsi perangkat lunak
dan digunakan dasar acuan dari pembentukan logical, process, physical maupun
development view. Selain sebagai dasar acuan, scenario, menjadi alat untuk
validasi setelah keseluruhan view selesai didokumentasikan.
Logical view : menggambarkan kebutuhan fungsional, yaitu kebutuhan yang
semestinya diberikan oleh sistem kepada end user. Penggambaran berupa objek
dan kelas yang menggunakan enkapsulasi maupun pewarisan.
Process view : memungkinkan desainer untuk menggambarkan beberapa
kebutuhan non fungsional seperti performance dan availability. Dalam view ini
juga terdapat definisi thread of control yang mengendalikan objek maupun kelas
dalam logical view.
Physical view : mengilustrasikan kebutuhan non fungsional seperti scalability
dan reliability. Pada physical view, hal-hal yang telah didefinisikan dalam
logical, process dan development view dipetakan dalam node-node (mesinmesin fisik ataupun platform).
Development view : berfokus pada organisasi perangkat lunak dalam modulmodul atau sub-sistem, yang akan diterapkan pada perangkat lunak yang
dikembangkan.
Penyusunan perangkat lunak dalam modul-modul beserta konektornya akan
membentuk struktur perangkat lunak. Dalam proyek perangkat lunak, akan dapat
ditemukan struktur-struktur yang mirip atau hampir sama dan dapat digunakan ulang
untuk proyek lain. Strukur-struktur tersebut dikenal dengan architectural style [5].
Terdapat banyak kelompok architectural style yang telah didefinisikan.
Materi: Kebutuhan non fungsional digunakan sebagai acuan dalam awal proses desain.
Pemakaian ulang sebanyak mungkin elemen/komponen menjadi pertimbangan
dalam menyusun desain.
Desain elemen arsitektur dilakukan dengan mengutamakan high cohesion dan
loose coupling.
Desain disusun tidak dalam satu proses namun dalam beberapa proses yang
berulang.
Desain arsitektur yang telah disusun tidak ambigu dan terlalu detail (over
detailed)
Arsitektur menggambarkan elemen-elemen penyusun perangkat lunak berikut
hubungan antar elemen tersebut atau bagaimana antar elemen saling berkomunikasi.
Hasil dari kegiatan arsitektur dapat digunakan sebagai alat evaluasi oleh para pemangku
kepentingan (stakeholders) terutama yang terkait dengan kebutuhan nonfungsional.
Setidaknya terdapat “4+1” sudut pandang (view model) dalam arsitektur perangkat
lunak yaitu logical, process, physical, development serta secenario / use case [6].
Masing-masing view tersebut dapat dimanfaatkan oleh perancang perangkat lunak
untuk membuat deskripsi mengenai arsitektur yang dipilih, dari masing-masing sudut
pandang.
Use case / scenario : merupakan bentuk dari keseluruhan fungsi perangkat lunak
dan digunakan dasar acuan dari pembentukan logical, process, physical maupun
development view. Selain sebagai dasar acuan, scenario, menjadi alat untuk
validasi setelah keseluruhan view selesai didokumentasikan.
Logical view : menggambarkan kebutuhan fungsional, yaitu kebutuhan yang
semestinya diberikan oleh sistem kepada end user. Penggambaran berupa objek
dan kelas yang menggunakan enkapsulasi maupun pewarisan.
Process view : memungkinkan desainer untuk menggambarkan beberapa
kebutuhan non fungsional seperti performance dan availability. Dalam view ini
juga terdapat definisi thread of control yang mengendalikan objek maupun kelas
dalam logical view.
Physical view : mengilustrasikan kebutuhan non fungsional seperti scalability
dan reliability. Pada physical view, hal-hal yang telah didefinisikan dalam
logical, process dan development view dipetakan dalam node-node (mesinmesin fisik ataupun platform).
Development view : berfokus pada organisasi perangkat lunak dalam modulmodul atau sub-sistem, yang akan diterapkan pada perangkat lunak yang
dikembangkan.
Penyusunan perangkat lunak dalam modul-modul beserta konektornya akan
membentuk struktur perangkat lunak. Dalam proyek perangkat lunak, akan dapat
ditemukan struktur-struktur yang mirip atau hampir sama dan dapat digunakan ulang
untuk proyek lain. Strukur-struktur tersebut dikenal dengan architectural style [5].
Terdapat banyak kelompok architectural style yang telah didefinisikan.
Materi: Kebutuhan non fungsional digunakan sebagai acuan dalam awal proses desain.
Pemakaian ulang sebanyak mungkin elemen/komponen menjadi pertimbangan
dalam menyusun desain.
Desain elemen arsitektur dilakukan dengan mengutamakan high cohesion dan
loose coupling.
Desain disusun tidak dalam satu proses namun dalam beberapa proses yang
berulang.
Desain arsitektur yang telah disusun tidak ambigu dan terlalu detail (over
detailed)
Arsitektur menggambarkan elemen-elemen penyusun perangkat lunak berikut
hubungan antar elemen tersebut atau bagaimana antar elemen saling berkomunikasi.
Hasil dari kegiatan arsitektur dapat digunakan sebagai alat evaluasi oleh para pemangku
kepentingan (stakeholders) terutama yang terkait dengan kebutuhan nonfungsional.
Setidaknya terdapat “4+1” sudut pandang (view model) dalam arsitektur perangkat
lunak yaitu logical, process, physical, development serta secenario / use case [6].
Masing-masing view tersebut dapat dimanfaatkan oleh perancang perangkat lunak
untuk membuat deskripsi mengenai arsitektur yang dipilih, dari masing-masing sudut
pandang.
Use case / scenario : merupakan bentuk dari keseluruhan fungsi perangkat lunak
dan digunakan dasar acuan dari pembentukan logical, process, physical maupun
development view. Selain sebagai dasar acuan, scenario, menjadi alat untuk
validasi setelah keseluruhan view selesai didokumentasikan.
Logical view : menggambarkan kebutuhan fungsional, yaitu kebutuhan yang
semestinya diberikan oleh sistem kepada end user. Penggambaran berupa objek
dan kelas yang menggunakan enkapsulasi maupun pewarisan.
Process view : memungkinkan desainer untuk menggambarkan beberapa
kebutuhan non fungsional seperti performance dan availability. Dalam view ini
juga terdapat definisi thread of control yang mengendalikan objek maupun kelas
dalam logical view.
Physical view : mengilustrasikan kebutuhan non fungsional seperti scalability
dan reliability. Pada physical view, hal-hal yang telah didefinisikan dalam
logical, process dan development view dipetakan dalam node-node (mesinmesin fisik ataupun platform).
Development view : berfokus pada organisasi perangkat lunak dalam modulmodul atau sub-sistem, yang akan diterapkan pada perangkat lunak yang
dikembangkan.
Penyusunan perangkat lunak dalam modul-modul beserta konektornya akan
membentuk struktur perangkat lunak. Dalam proyek perangkat lunak, akan dapat
ditemukan struktur-struktur yang mirip atau hampir sama dan dapat digunakan ulang
untuk proyek lain. Strukur-struktur tersebut dikenal dengan architectural style [5].
Terdapat banyak kelompok architectural style yang telah didefinisikan.
MATERI:Panji Wisnu Wirawan, Satriyo Adhy
Departemen Ilmu Komputer/Informatika Universitas Diponegoro
maspanji@undip.ac.id,satriyo@live.undip.ac.id
Penulisan materi yg di pindahkan kesini:Raffy Maulana Putra
Kelas:XIDKV3
Noabsen:23
Komentar
Posting Komentar