Rancangan perangkat lunak

633 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
633
On SlideShare
0
From Embeds
0
Number of Embeds
83
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rancangan perangkat lunak

  1. 1. Rancangan Perangkat LunakKurniawan Andy Saputra
  2. 2. Definisi• Rancangan didefinisikan dalam IEEE Standard Glossaryof Software Engineering Terminology :– Proses mendefinisikan arsitektur, komponen, interface, dankarakteristik lain dari suatu sistem atau komponen.– Hasil dari proses tersebut• Dipandang sebagai suatu proses, rancangan perangkatlunak adalah aktifitas siklus hidup rekayasa perangkatlunak dalam menganalisa kebutuhan perangkat lunakdalam rangka menghasilkan deskripsi struktur internalperangkat lunak yang akan menjadi dasarkonstruksinya.• Lebih tepatnya, rancangan perangkat lunak harusmenjelaskan arsitektur perangkat lunak – yaitubagaimana perangkat lunak didekomposisi dandiorganisasi ke dalam komponen – dan berhubungandengan komponen-komponen tersebut.
  3. 3. Definisi• Rancangan perangkat lunak terdiri dari dua aktifitasyaitu :– Rancangan arsitektural perangkat lunak : menjelaskanstruktur dan organisasi tingkat atas perangkat lunak danmengidentifikasi berbagai komponen– Rancangan detail perangkat lunak : menjelaskan tiapkomponen secara memadai untuk memungkinkanpembangunan
  4. 4. Area Pengetahuan PerancanganPerangkat Lunak
  5. 5. Konsep Perancangan SecaraUmum• Konsep, notasi, dan terminologi diperkenalkan di sinimembentuk suatu dasar pemahaman peran dan lingkupperancangan perangkat lunak.• Perangkat lunak tidak hanya meliputi perancangan saja.Dalam pengertian umum, perancangan dapat dipandangsebagai suatu bentuk pemecahan masalah• Sejumlah notasi dan konsep lain juga berkepentingandalam memahami perancangan dalam pengertianumumnya : tujuan, batasan, alternatif,representasi, dansolusi
  6. 6. Konsep PerancanganPerangkat Lunak• Untuk memahami peranan perancangan perangkatlunak adalah penting untuk memahami konteks yangsesuai, yaitu siklus hidup rekayasa perangkat lunak.• Dengan demikian, penting untuk memahamikarakteristik umum dari analisis kebutuhan perangkatlunak terhadap konstruksi perangkat lunak terhadappengujian perangkat lunak
  7. 7. Proses Perancangan PerangkatLunak• Perancangan perangkat lunak umumnya terdiri dari 2tahap proses :– Perancangan arsitektural : menjelaskan bagaimanaperangkat lunak dijabarkan dan diorganisasikan ke dalamkomponen (arsitektur perangkat lunak)– Perancangan terinci : menjelaskan kelakukan spesifik darikomponen-komponen tersebut
  8. 8. Enabling Techniques• Menurut kamus Inggris Oxford, prinsip adalah “suatukebenaran dasar atau hukum umum yang digunakansebagai dasar pemikiran atau panduan untuk bertindak”• Prinsip perancangan perangkat lunak disebut jugaEnabling Techniques, adalah pengertian kunci yangdianggap mendasar pada beberapa pendekatan dankonsep 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. 9. Abstraksi• Abstraksi adalah proses melipakan informasi sehinggahal-hal yang berbeda dapat diperlakukan seolah-olehmereka adalah sama• Dalam konteks perancangan perangkat lunak ada duamekanisme abstraksi kunci, yaitu parameterisasi danspesifikasi• Abstraksi dengan spesifikasi ke tiga jenis abstraksiutama, yaitu :– Abstraksi prosedural– Abstraksi data– Abstraksi kontrol
  10. 10. Coupling and Cohesion• Coupling didefinisikan sebagai kekuatan hubungan antarmodul• Cohesion didefinisikan oleh bagaimana elemen-elemenyang membentuk sebuah modul yang terkait
  11. 11. Dekomposisi dan Modularisasi• Dekomposisi dan modularisasi perangkat lunak besarmenjadi beberapa bagian independen yang lebih kecil,biasanya dengan tujuan menempatkan fungsionalitasatau tanggung jawab dalam komponen yang berbeda
  12. 12. Enkapsulasi• Enkapsulasi berarti bahwa pengelompokan danpengemasan elemen-elemen dan detail internal dariabstraksi dan membuat rincian-rincian tersebut tidakdapat diakses
  13. 13. Pemisahan Interface danImplementasi• Pemisahan interface dan implementasi meliputimendefinisikan suatu komponen dengan menetapkansebuah interface publik, diketahui oleh klien, terpisahdari rincian tentang bagaimana komponen tersebutdirealisasikan
  14. 14. Kecukupan, Kelengkapan, danKeprimitifan• Mencapai kecukupan, kelengkapan, dan keprimitifanberarti memastikan bahwa komponen perangkat lunakmendapatkan semua karakteristik penting dari sebuahabstraksi, tidak lebih
  15. 15. Isu Kunci dalam PerancanganPerangkat Lunak• Sejumlah isu pokok yang harus ditangani diataranyaadalah kualitas, dekomposisi, organisasi, dan paketkomponen perangkat lunak• Selain itu ada beberapa isu lintas sektor yang jugaharus ditangani dintaranya adalah concurrency,pengendalian dan penanganan kejadian (event),distribusi komponen, penanganan error, eksepsi, dantoleransi fault, interaksi dan presentasi, dan datapersistence
  16. 16. Concurrency• Bagaimana men-dekomposisi perangkat lunak ke dalamproses, task, dan thread dan menangani isu yang terkaitdengan efisiensi, atomicity, sinkronisasi, danpenjadwalan
  17. 17. Pengendalian dan PenangananEvent• Bagaimana mengorganisasi data dan mengendalikanalirannya• Bagaimana menangani event reaktif dan temporalmelalui berbagai mekanisme seperti implicit invocationdan call-backs
  18. 18. Distribusi Komponen• Bagaimana mendistribusikan perangkat lunak padaperangkat keras• Bagaimana komponen berkomunikasi• Bagaimana middleware dapat digunakan untukmenangani perangkat lunak heterogen
  19. 19. Penanganan Error dan Eksepsi,dan Toleransi Fault• Bagaimana mencegah dan mentoleransi faults, danmenangani kondisi eksepsional
  20. 20. Interaksi dan Presentasi• Bagaimana interaksi struktur dan organisasi denganpengguna dan presentasi informasi (misalnya :pemisahan logika presentasi dan bisnis denganmenggunakan pendekatan model-view-controller)
  21. 21. Data Persistence• Bagaimana menangani data selamanya
  22. 22. Struktur dan Arsitektur PerangkatLunak• Arsitektur perangkat lunak adalah deskripsi daribeberapa subsistem dan komponen dari sistemperangkat lunak dan hubungan diantara mereka• Struktur internal adalah cara dimana sesuatu dibangunatau diorganisasi dari perangkat lunak yang dihasilkan• Konsep-konsep yang berguna selama– Desain arsitektur : gaya arsitektur– Desain rinci : pola desain tingkat rendah
  23. 23. Struktur dan Sudut PandangArsitektural• Aspek ini sering disebut sudut pandang : Sudut pandangmerupakan aspek parsial dari sebuah arsitekturperangkat lunak yang menunjukkan sifat spesifik darisistem perangkat lunak• Pandangan ini berbeda pada berbagai masalah yangberkaitan dengan perancangan perangkat lunak –misalnya pandangan logis (pemenuhan kebutuhanfungsional) sehubungan dengan pandangan proses (isuconcurrency) dibandingkan dengan pandangan fisik (isudistribusi) dari pandangan pengembangan (bagaimanarancangan dibagi menjadi unit-unit implementasi)• Gaya arsitektur adalah satu set kendala pada arsitekturyang mendefinisikan satu set atau keluarga yangmemenuhinya• Gaya arsitektur dapat dianggap sebagai metamodelyang dapat memberikan organisasi tingkat tinggiperangkat lunak (arsitektur mikro-nya)
  24. 24. Struktur dan Sudut PandangArsitektural• Berbagai penulis mengidentifikasi sejumlah gayaarsitektur utama :– Struktur umum– Sistem terdistribusi– Sistem interaktif– Sistem yang dapat beradaptasi– Dan lain-lain
  25. 25. Pola Rancangan (PolaMikroarsitektur)• Pola : solusi umum untuk masalah umum dalam kontekstertentu• Gaya arsitektur dapat dipandang sebagai pola yangmendeskripsikan organisasi perangkat lunak tingkattinggi (makroarsitektur-nya), pola desain lainnya dapatdigunakan untuk mendeskripsikan detil di tingkatrendah, tingkat lokal (mikroarsitektur-nya)– Pola kreasional (contoh : builder, pabrik, prototype)– Pola struktural (contoh : adapter, proxy, bridge)– Pola perilaku (contoh : command, interpreter, template)
  26. 26. Keluarga dari Program danKerangka Kerja• Pendekatan yang memungkinkan untuk menggunakankembali rancangan dan komponen perangkat lunakdapat dilakukan dengan mengidentifikasi kemiripanantara anggota keluarga dan dengan menggunakankomponen yang reusable dan customizable.• Dalam pemrograman berorientasi objek notasi kunciyang berhubungan adalah yang dari kerangka kerja :subsistem perangkat lunak yang lengkap secara parsialdapat diperluas dengan plug-in yang sesuai.
  27. 27. Evaluasi dan Analisis KualitasRancangan Perangkat Lunak• Bagian ini meliputi sejumlah masalah kualitas danevaluasi yang secara khusus berhubungan denganperancangan perangkat lunak
  28. 28. Atribut Kualitas• Berbagai atribut biasanya dianggap penting untukmendapatkan rancangan perangkat lunak, diantaranyaadalah :– Maintanability– Portability– Testability– Traceability– Correctenss– Robustness termasuk fitness of purpose• Atribut kualitas discernable pada saat runtime– Performance– Security– Availability– Functionality– Usability
  29. 29. Atribut Kualitas• Atribut kualitas yang tidak discernable pada saatruntime– Modifiability– Portability– Reusability– Integrability– Testability• Atribut kualitas yang berhubungan dengan kualitasintrinsik arsitektur– Conceptual integrity– Correctness– Completeness– Buildability
  30. 30. Teknik Evaluasi dan AnalisisKualitas• Berbagai alat dan teknik yang dapat membantumemastikan kualitas rancangan perangkat lunak– Tinjauan rancangan perangkat lunak : informal atausemiformal, sering berbasis kelompok, teknik-teknik untukmemverifikasi dan memastikan kualitas artefakperancangan (contoh : tinjauan arsitektur, tinjauanrancangan, dan inspeksi, teknik berbasis skenario,pelacakan kebutuhan)– Analisis statik : analisis statik formal atau semiformal yangdapat digunakan untuk mengevaluasi suatu rancangan– Simulasi dan prototyping : teknik dinamis untukmengevaluasi suatu rancangan (contoh : kinerja simulasiatau kelayakan prototipe)
  31. 31. Pengukuran• Pengukuran dapat digunakan untuk menilai ataumemperkirakan secara kuantitatif berbagai aspekukuran, struktur atau kualitas rancangan perangkatlunak• Pengukuran-pengukuran berikut ini diklasifikasikan kedalam dua kategori :– Pengukuran rancangan function-oriented (terstruktur) :struktur rancangan, sebagian besar didapatkan melaluidekomposisi fungsional, biasanya direpresentasikansebagai bagan struktur pada berbagai pengukuran yangdapat dihitung– Pengukuran rancangan berorientasi objek : strukturrancangan keseluruhan yang sering direpresentasikansebagai diagram class pada berbagai pengukuran yangdapat dihitung
  32. 32. Notasi Perancangan PerangkatLunak• Notasi-notasi khusus digunakan terutama dalamrancangan arsitektural dan rancangan terinci
  33. 33. Deskripsi Struktural (PandanganStatik)• Notasi-notasi berikut ini, sebagian besar grafis,menjelaskan dan merepresentasikan aspek strukturaldari rancangan perangkat lunak– Architecture Description Languages (ALDs) : tekstual,terkadang firmal, bahasa yang digunakan untukmenjelaskan arsitektur perangkat lunak dalam halkomponen dan konektor– Diagram Objek dan Class : digunakan untukmerepresentasikan sekumpulan class (dan objek) danhubungannya– Diagram Komponen : digunakan untuk merepresentasikansekumpulan komponen dari sebuah sistem yang cocok danmenyediakan realisasi sekumpulan interface danhubungannya– Class Responsibility Collaborate Cards (CRCs) : digunakanuntuk menunjukkan nama komponen (class), tanggungjawabnya, nama komponen yang berkolaborasi
  34. 34. Deskripsi Struktural (PandanganStatik)– Deployment Diagrams : digunakan untukmerepresentasikan sekumpulan nodes (fisik) danhubungannya, dan demikian juga pada aspek fisik sistem– Entity Relatinship Diagram (ERD) : digunakan untukmerepresentasikan model konseptuan dari data yangtersimpan dalam sistem informasi– Interface Description Languages (IDLs) : bahasaprogramming-like digunakan untuk mendefinisikaninterface dari komponen perangkat lunak– Diagram Struktur Jackson : digunakan untuk menjelaskanstruktur data dalam hal urutan, pemilihan, dan iterasi– Bagan Struktur : digunakan untuk menjelaskan strukturpemanggilan program
  35. 35. Deskripsi Kelakuan (PandanganDinamis)• Notasi dan bahasa, beberapa grafis dan tekstual berikutini digunakan untuk menjelaskan kelakuan dinamis dariperangkat lunak dan komponen– Activity Diagrams : digunakan untuk menunjukkan kendalialiran dari aktifitas yang satu ke aktifitas yang lain– Collaboration Diagrams : digunakan untuk menunjukkaninteraksi yang timbul diantara kelompok objek, dimanapenekanannya pada objek dan link-nya– Data Flow Diagrams (DFDs) : digunakan untukmenunjukkan aliran data diantara sekumpulan proses– Diagram dan tabel keputusan : digunakan untukmerepresentasikan kombinasi komplek dari kondisi dantindakan– Flowcharts dan Structured Flowcharts : digunakan untukmerepresentasikan aliran kendali dan tindakan yangberhubungan yang akan dilakukan
  36. 36. Deskripsi Kelakuan (PandanganDinamis)– Sequence Diagrams : digunakan untuk menunjukkaninteraksi diantara sekelompok objek, dengan penekananpada urutan waktu pesan– State Transition dan statechart diagram : digunakan untukmenunjukkan aliran kendali dari state ke state dalamsebuah state machine– Bahasa spesifikasi formal : bahasa tekstual yangmenggunakan notasi dasar dari matematik (contoh : logic,set, sequence) untuk mendefinisikan kelakuan daninterface komponen perangkat lunak secara abstrak danteliti– Pseudocode dan Program Design Languages (PDLs) :bahasa structured-programming-like digunakan untukmenjelaskan, secara umum pada tahap rancangan terinci,kelakuan prosedur atau metode.
  37. 37. Metode dan Strategi PeracanganPerangkat Lunak• Ada berbagai strategi umum yang digunakan untukmembantu proses perancangan• Metode lebih spesifik menawarkan dan menyediakansatu set notasi yang digunakan dengan metode. Sebuahdeskripsi proses yang digunakan ketika mengikutimetode dan menetapkan pedoman dalam penggunaanmetode
  38. 38. Strategi Umum• Beberapa contoh startegi umum yang berguna dalamproses 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. 39. Rancangan Function-Oriented(Terstruktur)• Merupakan metode kalsik dari perancangan perangkatlunak dimana dekomposisi sebagai pusat identifikasisebagian besar fungsi perangkat lunak dan kemudianmenjelaskan dan menyempurnakan secara top-down• Desain terstruktur umumnya digunakan setelah analisisterstruktur yang menghasilkan DFD dan deskripsi prosesyang terkait
  40. 40. Rancangan Object-Oriented• Bidang rancangan object-oriented adalah kata benda =objek, kata kerja = metode, kata sifat = atribut• Inheritance dan polimorfisme memainkan peranan kuncidimana meta-informasi dapat didefinisikan dan diakses
  41. 41. Rancangan Data-Structured-Centered• Rancangan data-structured-centered mulai dari strukturdata sebuah program yang memanipulasi fungsi yangdikerjakannya• Struktur data input dan output terlebih dahuludijelaskan dan kemudian mengembangkan strukturkendali program yang berdasar pada diagram strukturdata
  42. 42. Rancangan Component-Based• Sebuah komponen perangkat lunak adalah sebuah unitindependen, memiliki interface dan dependensi yangjelas yang dapat disusun dan didistribusikan secaraindependen• Rancangan component-based membahas isu-isu yangterkait dengan penyediaan, pengembangan, danintegrasi komponen untuk meningkatkan penggunaankembali (reuse)
  43. 43. Metode Lainnya• Pendekatan lainnya adalah metode formal and rigorous,dan metode transformasional.

×