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

Postingan populer dari blog ini

SENIMAN BOCAH

TUGAS MP