Rangkuman dokumen tersebut adalah:
1. Dokumen tersebut membahas tentang definisi, proses, area pengetahuan, konsep, teknik, dan isu-isu utama dalam perancangan perangkat lunak.
2. Perancangan perangkat lunak terdiri atas perancangan arsitektural dan perancangan rinci untuk menjelaskan struktur dan kelakuan perangkat lunak.
3. Prinsip-prinsip penting dalam perancangan perangkat lunak adalah abstraksi,
Convert to study guideBETA
Transform any presentation into a summarized study guide, highlighting the most important points and key insights.
2. Definisi
Rancangan didefinisikan dalam IEEE Standard Glossary
of Software Engineering Terminology :
Proses mendefinisikan arsitektur, komponen, interface, dan
karakteristik lain dari suatu sistem atau komponen.
Hasil dari proses tersebut
Dipandang sebagai suatu proses, rancangan perangkat
lunak adalah aktifitas siklus hidup rekayasa perangkat
lunak dalam menganalisa kebutuhan perangkat lunak
dalam rangka menghasilkan deskripsi struktur internal
perangkat lunak yang akan menjadi dasar
konstruksinya.
Lebih tepatnya, rancangan perangkat lunak harus
menjelaskan arsitektur perangkat lunak yaitu
bagaimana perangkat lunak didekomposisi dan
diorganisasi ke dalam komponen dan berhubungan
dengan komponen-komponen tersebut.
3. Definisi
Rancangan perangkat lunak terdiri dari dua aktifitas
yaitu :
Rancangan arsitektural perangkat lunak : menjelaskan
struktur dan organisasi tingkat atas perangkat lunak dan
mengidentifikasi berbagai komponen
Rancangan detail perangkat lunak : menjelaskan tiap
komponen secara memadai untuk memungkinkan
pembangunan
5. Konsep Perancangan Secara
Umum
Konsep, notasi, dan terminologi diperkenalkan di sini
membentuk suatu dasar pemahaman peran dan lingkup
perancangan perangkat lunak.
Perangkat lunak tidak hanya meliputi perancangan saja.
Dalam pengertian umum, perancangan dapat dipandang
sebagai suatu bentuk pemecahan masalah
Sejumlah notasi dan konsep lain juga berkepentingan
dalam memahami perancangan dalam pengertian
umumnya : tujuan, batasan, alternatif,representasi, dan
solusi
6. Konsep Perancangan
Perangkat Lunak
Untuk memahami peranan perancangan perangkat
lunak adalah penting untuk memahami konteks yang
sesuai, yaitu siklus hidup rekayasa perangkat lunak.
Dengan demikian, penting untuk memahami
karakteristik umum dari analisis kebutuhan perangkat
lunak terhadap konstruksi perangkat lunak terhadap
pengujian perangkat lunak
7. Proses Perancangan Perangkat
Lunak
Perancangan perangkat lunak umumnya terdiri dari 2
tahap proses :
Perancangan arsitektural : menjelaskan bagaimana
perangkat lunak dijabarkan dan diorganisasikan ke dalam
komponen (arsitektur perangkat lunak)
Perancangan terinci : menjelaskan kelakukan spesifik dari
komponen-komponen tersebut
8. Enabling Techniques
Menurut kamus Inggris Oxford, prinsip adalah suatu
kebenaran dasar atau hukum umum yang digunakan
sebagai dasar pemikiran atau panduan untuk bertindak
Prinsip perancangan perangkat lunak disebut juga
Enabling Techniques, adalah pengertian kunci yang
dianggap mendasar pada beberapa pendekatan dan
konsep perancangan perangkat lunak yang berbeda
Teknik yang memungkinkan adalah sebagai berikut :
Abstraksi
Coupling and cohesion
Dekomposisi dan modularisasi
Enkapsulasi
Pemisahan interface dan implementasi
Kecukupan, kelengkapan, dan keprimitifan.
9. Abstraksi
Abstraksi adalah proses melipakan informasi sehingga
hal-hal yang berbeda dapat diperlakukan seolah-oleh
mereka adalah sama
Dalam konteks perancangan perangkat lunak ada dua
mekanisme abstraksi kunci, yaitu parameterisasi dan
spesifikasi
Abstraksi dengan spesifikasi ke tiga jenis abstraksi
utama, yaitu :
Abstraksi prosedural
Abstraksi data
Abstraksi kontrol
10. Coupling and Cohesion
Coupling didefinisikan sebagai kekuatan hubungan antar
modul
Cohesion didefinisikan oleh bagaimana elemen-elemen
yang membentuk sebuah modul yang terkait
11. Dekomposisi dan Modularisasi
Dekomposisi dan modularisasi perangkat lunak besar
menjadi beberapa bagian independen yang lebih kecil,
biasanya dengan tujuan menempatkan fungsionalitas
atau tanggung jawab dalam komponen yang berbeda
12. Enkapsulasi
Enkapsulasi berarti bahwa pengelompokan dan
pengemasan elemen-elemen dan detail internal dari
abstraksi dan membuat rincian-rincian tersebut tidak
dapat diakses
13. Pemisahan Interface dan
Implementasi
Pemisahan interface dan implementasi meliputi
mendefinisikan suatu komponen dengan menetapkan
sebuah interface publik, diketahui oleh klien, terpisah
dari rincian tentang bagaimana komponen tersebut
direalisasikan
14. Kecukupan, Kelengkapan, dan
Keprimitifan
Mencapai kecukupan, kelengkapan, dan keprimitifan
berarti memastikan bahwa komponen perangkat lunak
mendapatkan semua karakteristik penting dari sebuah
abstraksi, tidak lebih
15. Isu Kunci dalam Perancangan
Perangkat Lunak
Sejumlah isu pokok yang harus ditangani diataranya
adalah kualitas, dekomposisi, organisasi, dan paket
komponen perangkat lunak
Selain itu ada beberapa isu lintas sektor yang juga
harus ditangani dintaranya adalah concurrency,
pengendalian dan penanganan kejadian (event),
distribusi komponen, penanganan error, eksepsi, dan
toleransi fault, interaksi dan presentasi, dan data
persistence
16. Concurrency
Bagaimana men-dekomposisi perangkat lunak ke dalam
proses, task, dan thread dan menangani isu yang terkait
dengan efisiensi, atomicity, sinkronisasi, dan
penjadwalan
17. Pengendalian dan Penanganan
Event
Bagaimana mengorganisasi data dan mengendalikan
alirannya
Bagaimana menangani event reaktif dan temporal
melalui berbagai mekanisme seperti implicit invocation
dan call-backs
18. Distribusi Komponen
Bagaimana mendistribusikan perangkat lunak pada
perangkat keras
Bagaimana komponen berkomunikasi
Bagaimana middleware dapat digunakan untuk
menangani perangkat lunak heterogen
19. Penanganan Error dan Eksepsi,
dan Toleransi Fault
Bagaimana mencegah dan mentoleransi faults, dan
menangani kondisi eksepsional
20. Interaksi dan Presentasi
Bagaimana interaksi struktur dan organisasi dengan
pengguna dan presentasi informasi (misalnya :
pemisahan logika presentasi dan bisnis dengan
menggunakan pendekatan model-view-controller)
22. Struktur dan Arsitektur Perangkat
Lunak
Arsitektur perangkat lunak adalah deskripsi dari
beberapa subsistem dan komponen dari sistem
perangkat lunak dan hubungan diantara mereka
Struktur internal adalah cara dimana sesuatu dibangun
atau diorganisasi dari perangkat lunak yang dihasilkan
Konsep-konsep yang berguna selama
Desain arsitektur : gaya arsitektur
Desain rinci : pola desain tingkat rendah
23. Struktur dan Sudut Pandang
Arsitektural
Aspek ini sering disebut sudut pandang : Sudut pandang
merupakan aspek parsial dari sebuah arsitektur
perangkat lunak yang menunjukkan sifat spesifik dari
sistem perangkat lunak
Pandangan ini berbeda pada berbagai masalah yang
berkaitan dengan perancangan perangkat lunak
misalnya pandangan logis (pemenuhan kebutuhan
fungsional) sehubungan dengan pandangan proses (isu
concurrency) dibandingkan dengan pandangan fisik (isu
distribusi) dari pandangan pengembangan (bagaimana
rancangan dibagi menjadi unit-unit implementasi)
Gaya arsitektur adalah satu set kendala pada arsitektur
yang mendefinisikan satu set atau keluarga yang
memenuhinya
Gaya arsitektur dapat dianggap sebagai metamodel
yang dapat memberikan organisasi tingkat tinggi
perangkat lunak (arsitektur mikro-nya)
24. Struktur dan Sudut Pandang
Arsitektural
Berbagai penulis mengidentifikasi sejumlah gaya
arsitektur utama :
Struktur umum
Sistem terdistribusi
Sistem interaktif
Sistem yang dapat beradaptasi
Dan lain-lain
25. Pola Rancangan (Pola
Mikroarsitektur)
Pola : solusi umum untuk masalah umum dalam konteks
tertentu
Gaya arsitektur dapat dipandang sebagai pola yang
mendeskripsikan organisasi perangkat lunak tingkat
tinggi (makroarsitektur-nya), pola desain lainnya dapat
digunakan untuk mendeskripsikan detil di tingkat
rendah, tingkat lokal (mikroarsitektur-nya)
Pola kreasional (contoh : builder, pabrik, prototype)
Pola struktural (contoh : adapter, proxy, bridge)
Pola perilaku (contoh : command, interpreter, template)
26. Keluarga dari Program dan
Kerangka Kerja
Pendekatan yang memungkinkan untuk menggunakan
kembali rancangan dan komponen perangkat lunak
dapat dilakukan dengan mengidentifikasi kemiripan
antara anggota keluarga dan dengan menggunakan
komponen yang reusable dan customizable.
Dalam pemrograman berorientasi objek notasi kunci
yang berhubungan adalah yang dari kerangka kerja :
subsistem perangkat lunak yang lengkap secara parsial
dapat diperluas dengan plug-in yang sesuai.
27. Evaluasi dan Analisis Kualitas
Rancangan Perangkat Lunak
Bagian ini meliputi sejumlah masalah kualitas dan
evaluasi yang secara khusus berhubungan dengan
perancangan perangkat lunak
28. Atribut Kualitas
Berbagai atribut biasanya dianggap penting untuk
mendapatkan rancangan perangkat lunak, diantaranya
adalah :
Maintanability
Portability
Testability
Traceability
Correctenss
Robustness termasuk fitness of purpose
Atribut kualitas discernable pada saat runtime
Performance
Security
Availability
Functionality
Usability
29. Atribut Kualitas
Atribut kualitas yang tidak discernable pada saat
runtime
Modifiability
Portability
Reusability
Integrability
Testability
Atribut kualitas yang berhubungan dengan kualitas
intrinsik arsitektur
Conceptual integrity
Correctness
Completeness
Buildability
30. Teknik Evaluasi dan Analisis
Kualitas
Berbagai alat dan teknik yang dapat membantu
memastikan kualitas rancangan perangkat lunak
Tinjauan rancangan perangkat lunak : informal atau
semiformal, sering berbasis kelompok, teknik-teknik untuk
memverifikasi dan memastikan kualitas artefak
perancangan (contoh : tinjauan arsitektur, tinjauan
rancangan, dan inspeksi, teknik berbasis skenario,
pelacakan kebutuhan)
Analisis statik : analisis statik formal atau semiformal yang
dapat digunakan untuk mengevaluasi suatu rancangan
Simulasi dan prototyping : teknik dinamis untuk
mengevaluasi suatu rancangan (contoh : kinerja simulasi
atau kelayakan prototipe)
31. Pengukuran
Pengukuran dapat digunakan untuk menilai atau
memperkirakan secara kuantitatif berbagai aspek
ukuran, struktur atau kualitas rancangan perangkat
lunak
Pengukuran-pengukuran berikut ini diklasifikasikan ke
dalam dua kategori :
Pengukuran rancangan function-oriented (terstruktur) :
struktur rancangan, sebagian besar didapatkan melalui
dekomposisi fungsional, biasanya direpresentasikan
sebagai bagan struktur pada berbagai pengukuran yang
dapat dihitung
Pengukuran rancangan berorientasi objek : struktur
rancangan keseluruhan yang sering direpresentasikan
sebagai diagram class pada berbagai pengukuran yang
dapat dihitung
33. Deskripsi Struktural (Pandangan
Statik)
Notasi-notasi berikut ini, sebagian besar grafis,
menjelaskan dan merepresentasikan aspek struktural
dari rancangan perangkat lunak
Architecture Description Languages (ALDs) : tekstual,
terkadang firmal, bahasa yang digunakan untuk
menjelaskan arsitektur perangkat lunak dalam hal
komponen dan konektor
Diagram Objek dan Class : digunakan untuk
merepresentasikan sekumpulan class (dan objek) dan
hubungannya
Diagram Komponen : digunakan untuk merepresentasikan
sekumpulan komponen dari sebuah sistem yang cocok dan
menyediakan realisasi sekumpulan interface dan
hubungannya
Class Responsibility Collaborate Cards (CRCs) : digunakan
untuk menunjukkan nama komponen (class), tanggung
jawabnya, nama komponen yang berkolaborasi
34. Deskripsi Struktural (Pandangan
Statik)
Deployment Diagrams : digunakan untuk
merepresentasikan sekumpulan nodes (fisik) dan
hubungannya, dan demikian juga pada aspek fisik sistem
Entity Relatinship Diagram (ERD) : digunakan untuk
merepresentasikan model konseptuan dari data yang
tersimpan dalam sistem informasi
Interface Description Languages (IDLs) : bahasa
programming-like digunakan untuk mendefinisikan
interface dari komponen perangkat lunak
Diagram Struktur Jackson : digunakan untuk menjelaskan
struktur data dalam hal urutan, pemilihan, dan iterasi
Bagan Struktur : digunakan untuk menjelaskan struktur
pemanggilan program
35. Deskripsi Kelakuan (Pandangan
Dinamis)
Notasi dan bahasa, beberapa grafis dan tekstual berikut
ini digunakan untuk menjelaskan kelakuan dinamis dari
perangkat lunak dan komponen
Activity Diagrams : digunakan untuk menunjukkan kendali
aliran dari aktifitas yang satu ke aktifitas yang lain
Collaboration Diagrams : digunakan untuk menunjukkan
interaksi yang timbul diantara kelompok objek, dimana
penekanannya pada objek dan link-nya
Data Flow Diagrams (DFDs) : digunakan untuk
menunjukkan aliran data diantara sekumpulan proses
Diagram dan tabel keputusan : digunakan untuk
merepresentasikan kombinasi komplek dari kondisi dan
tindakan
Flowcharts dan Structured Flowcharts : digunakan untuk
merepresentasikan aliran kendali dan tindakan yang
berhubungan yang akan dilakukan
36. Deskripsi Kelakuan (Pandangan
Dinamis)
Sequence Diagrams : digunakan untuk menunjukkan
interaksi diantara sekelompok objek, dengan penekanan
pada urutan waktu pesan
State Transition dan statechart diagram : digunakan untuk
menunjukkan aliran kendali dari state ke state dalam
sebuah state machine
Bahasa spesifikasi formal : bahasa tekstual yang
menggunakan notasi dasar dari matematik (contoh : logic,
set, sequence) untuk mendefinisikan kelakuan dan
interface komponen perangkat lunak secara abstrak dan
teliti
Pseudocode dan Program Design Languages (PDLs) :
bahasa structured-programming-like digunakan untuk
menjelaskan, secara umum pada tahap rancangan terinci,
kelakuan prosedur atau metode.
37. Metode dan Strategi Peracangan
Perangkat Lunak
Ada berbagai strategi umum yang digunakan untuk
membantu proses perancangan
Metode lebih spesifik menawarkan dan menyediakan
satu set notasi yang digunakan dengan metode. Sebuah
deskripsi proses yang digunakan ketika mengikuti
metode dan menetapkan pedoman dalam penggunaan
metode
38. Strategi Umum
Beberapa contoh startegi umum yang berguna dalam
proses perancangan adalah
Divide-and-conquer dan stepwise refinement
Top-down dan bottom-up
Abstraksi data dan penyembunyian informasi
Penggunaan heuristik
Penggunaan pola dan bahasa pola
Penggunaan pendekatan iteratif dan incremental
39. Rancangan Function-Oriented
(Terstruktur)
Merupakan metode kalsik dari perancangan perangkat
lunak dimana dekomposisi sebagai pusat identifikasi
sebagian besar fungsi perangkat lunak dan kemudian
menjelaskan dan menyempurnakan secara top-down
Desain terstruktur umumnya digunakan setelah analisis
terstruktur yang menghasilkan DFD dan deskripsi proses
yang terkait
40. Rancangan Object-Oriented
Bidang rancangan object-oriented adalah kata benda =
objek, kata kerja = metode, kata sifat = atribut
Inheritance dan polimorfisme memainkan peranan kunci
dimana meta-informasi dapat didefinisikan dan diakses
41. Rancangan Data-Structured-
Centered
Rancangan data-structured-centered mulai dari struktur
data sebuah program yang memanipulasi fungsi yang
dikerjakannya
Struktur data input dan output terlebih dahulu
dijelaskan dan kemudian mengembangkan struktur
kendali program yang berdasar pada diagram struktur
data
42. Rancangan Component-Based
Sebuah komponen perangkat lunak adalah sebuah unit
independen, memiliki interface dan dependensi yang
jelas yang dapat disusun dan didistribusikan secara
independen
Rancangan component-based membahas isu-isu yang
terkait dengan penyediaan, pengembangan, dan
integrasi komponen untuk meningkatkan penggunaan
kembali (reuse)