際際滷

際際滷Share a Scribd company logo
Rancangan Perangkat Lunak
Kurniawan Andy Saputra
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.
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
Area Pengetahuan Perancangan
Perangkat Lunak
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
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
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
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.
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
Coupling and Cohesion
 Coupling didefinisikan sebagai kekuatan hubungan antar
modul
 Cohesion didefinisikan oleh bagaimana elemen-elemen
yang membentuk sebuah modul yang terkait
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
Enkapsulasi
 Enkapsulasi berarti bahwa pengelompokan dan
pengemasan elemen-elemen dan detail internal dari
abstraksi dan membuat rincian-rincian tersebut tidak
dapat diakses
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
Kecukupan, Kelengkapan, dan
Keprimitifan
 Mencapai kecukupan, kelengkapan, dan keprimitifan
berarti memastikan bahwa komponen perangkat lunak
mendapatkan semua karakteristik penting dari sebuah
abstraksi, tidak lebih
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
Concurrency
 Bagaimana men-dekomposisi perangkat lunak ke dalam
proses, task, dan thread dan menangani isu yang terkait
dengan efisiensi, atomicity, sinkronisasi, dan
penjadwalan
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
Distribusi Komponen
 Bagaimana mendistribusikan perangkat lunak pada
perangkat keras
 Bagaimana komponen berkomunikasi
 Bagaimana middleware dapat digunakan untuk
menangani perangkat lunak heterogen
Penanganan Error dan Eksepsi,
dan Toleransi Fault
 Bagaimana mencegah dan mentoleransi faults, dan
menangani kondisi eksepsional
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)
Data Persistence
 Bagaimana menangani data selamanya
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
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)
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
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)
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.
Evaluasi dan Analisis Kualitas
Rancangan Perangkat Lunak
 Bagian ini meliputi sejumlah masalah kualitas dan
evaluasi yang secara khusus berhubungan dengan
perancangan perangkat lunak
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
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
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)
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
Notasi Perancangan Perangkat
Lunak
 Notasi-notasi khusus digunakan terutama dalam
rancangan arsitektural dan rancangan terinci
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
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
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
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.
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
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
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
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
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
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)
Metode Lainnya
 Pendekatan lainnya adalah metode formal and rigorous,
dan metode transformasional.

More Related Content

Rancangan perangkat lunak

  • 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)
  • 21. Data Persistence Bagaimana menangani data selamanya
  • 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
  • 32. Notasi Perancangan Perangkat Lunak Notasi-notasi khusus digunakan terutama dalam rancangan arsitektural dan rancangan terinci
  • 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)
  • 43. Metode Lainnya Pendekatan lainnya adalah metode formal and rigorous, dan metode transformasional.