YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Rancangan perangkat lunak

Rancangan Perangkat LunakBy M. Ainul Yaqin, S.Si, M.Kom

Page 2: Rancangan perangkat lunak

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.

Page 3: Rancangan perangkat lunak

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

Page 4: Rancangan perangkat lunak

Area Pengetahuan Perancangan Perangkat Lunak

Page 5: Rancangan 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

Page 6: Rancangan perangkat lunak

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

Page 7: Rancangan 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

Page 8: Rancangan perangkat lunak

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.

Page 9: Rancangan perangkat lunak

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

Page 10: Rancangan perangkat lunak

Coupling and Cohesion

• Coupling didefinisikan sebagai kekuatan hubungan antar modul

• Cohesion didefinisikan oleh bagaimana elemen-elemen yang membentuk sebuah modul yang terkait

Page 11: Rancangan perangkat lunak

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

Page 12: Rancangan perangkat lunak

Enkapsulasi

• Enkapsulasi berarti bahwa pengelompokan dan pengemasan elemen-elemen dan detail internal dari abstraksi dan membuat rincian-rincian tersebut tidak dapat diakses

Page 13: Rancangan perangkat lunak

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

Page 14: Rancangan perangkat lunak

Kecukupan, Kelengkapan, dan Keprimitifan

• Mencapai kecukupan, kelengkapan, dan keprimitifan berarti memastikan bahwa komponen perangkat lunak mendapatkan semua karakteristik penting dari sebuah abstraksi, tidak lebih

Page 15: Rancangan perangkat lunak

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

Page 16: Rancangan perangkat lunak

Concurrency

• Bagaimana men-dekomposisi perangkat lunak ke dalam proses, task, dan thread dan menangani isu yang terkait dengan efisiensi, atomicity, sinkronisasi, dan penjadwalan

Page 17: Rancangan perangkat lunak

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

Page 18: Rancangan perangkat lunak

Distribusi Komponen

• Bagaimana mendistribusikan perangkat lunak pada perangkat keras

• Bagaimana komponen berkomunikasi• Bagaimana middleware dapat digunakan untuk

menangani perangkat lunak heterogen

Page 19: Rancangan perangkat lunak

Penanganan Error dan Eksepsi, dan Toleransi Fault

• Bagaimana mencegah dan mentoleransi faults, dan menangani kondisi eksepsional

Page 20: Rancangan perangkat lunak

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)

Page 21: Rancangan perangkat lunak

Data Persistence

• Bagaimana menangani data selamanya

Page 22: Rancangan perangkat lunak

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

Page 23: Rancangan perangkat lunak

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)

Page 24: Rancangan perangkat lunak

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

Page 25: Rancangan perangkat lunak

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)

Page 26: Rancangan perangkat lunak

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.

Page 27: Rancangan perangkat lunak

Evaluasi dan Analisis Kualitas Rancangan Perangkat Lunak

• Bagian ini meliputi sejumlah masalah kualitas dan evaluasi yang secara khusus berhubungan dengan perancangan perangkat lunak

Page 28: Rancangan 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

Page 29: Rancangan perangkat lunak

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

Page 30: Rancangan perangkat lunak

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)

Page 31: Rancangan perangkat lunak

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

Page 32: Rancangan perangkat lunak

Notasi Perancangan Perangkat Lunak

• Notasi-notasi khusus digunakan terutama dalam rancangan arsitektural dan rancangan terinci

Page 33: Rancangan perangkat lunak

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

Page 34: Rancangan perangkat lunak

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

Page 35: Rancangan perangkat lunak

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

Page 36: Rancangan perangkat lunak

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.

Page 37: Rancangan perangkat lunak

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

Page 38: Rancangan perangkat lunak

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

Page 39: Rancangan perangkat lunak

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

Page 40: Rancangan perangkat lunak

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

Page 41: Rancangan perangkat lunak

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

Page 42: Rancangan perangkat lunak

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)

Page 43: Rancangan perangkat lunak

Metode Lainnya

• Pendekatan lainnya adalah metode formal and rigorous, dan metode transformasional.


Related Documents