RANGKUMAN ARCHITECTURE DESIGN AND SOFTWARE DESIGN RANGKUMAN Bab 8 – DESIGN CONCEPTS Bab 9 – Architecture Design Rekayasa Perangkat Lunak Panji Saputro – 5235131558 1. Konsep desain Mitch Kapor mengatakan : 1. Perangkat lunak yang baik harus menunjukkan: Ketegasan, aplikasi tidak memiliki bug yang menghalangi fungsi yang dimilikinya. Kesesuaian, aplikasi harus sesuai dengan tujuan yang dimaksudkan di awal Kesenangan, pengalaman menggunakan aplikasi haruslah menjadi hal yang menyenangkan Perinsip desain a. Proses desain tidak harus menderita dari ‘ tunnel vision ‘ b. Desain harus dapat dilacak dari model analisis c. Desain tidak harus menemukan kembali roda d. Desain harus ” minimize the intellectual distance ” [ DAV95 ] antara software dan masalah seperti yang ada di dunia nyata e. Desain harus menunjukkan keseragaman dan integrasi f. Desain harus terstruktur untuk mengakomodasi perubahan . g. Desain harus terstruktur untuk mendegradasi lembut , bahkan ketika data yang menyimpang , peristiwa , atau kondisi operasi yang ditemukan. h. Desain bukan coding , coding bukan desain. i. Desain harus dinilai untuk kualitas saat sedang dibuat , bukan setelah fakta . j. Desain harus direview untuk meminimalkan konseptual ( semantik ) kesalahan . * Abstraksi data adalah sekumpulan atribut yang merepresentasikan data itu sendiri. Abstraksi prosedur adalah algoritma untuk melakukan sebuah aksi pada data. Arsitektur software adalah struktur hirarki dari komponen program dan interaksinya. Design Pattern adalah sebuah istilah yang mengacu pada pembuatan fungsi umum yang bisa dipergunakan berkali-kali untuk menyelesaikan masalah pada desain perangkat lunak. Dalam konsep desain, sebaiknya kebutuhan dibagi-bagi menjadi bagian-bagian kecil. Masalah-masalah yang rumit akan lebih mudah diatasi jika dibagi menjadi masalah-masalah yang kecil juga. Dengan konsep ini, masalah akan membutuhkan waktu dan usaha yang lebih sedikit untuk menyelesaikannya. Modularity adalah membagi komponen dengan nama dan alamat yang berbeda (tidak ditumpuk dalam 1 file). Sebagian informasi haruslah disembunyikan. Hal ini berguna untuk mengenkapsulasi atribut dan mengoptimalkan tampilan dengan menyeleksi informasi tertentu saja. Independensi fungsional dicapai dengan mengembangkan modul dengan ” single- minded ” fungsi dan ” keengganan ” untuk interaksi yang berlebihan dengan modul lain Cohesion merupakan indikasi kekuatan fungsional relatif modul Coupling merupakan indikasi saling ketergantungan antara modul relatif 1. Refactoring adalah sebuah proses mengubah perangkat lunak menjadi lebih baik dan efisien. Hal ini bisa dilihat dari source code seperti membuang elemen-elemen yang tidak terpakai, menggunakan algoritma yang lebih sederhana sehingga menghasilkan waktu eksekusi yang lebih cepat, memperbaiki bug yang tersisa dari hasil kompilasi sebelumnya, dan lain-lain 2. Konsep desain berorientasi objek menekankan pada pemahaman setiap entitas/objek yang terlibat dalam sistem. 3. Biasanya terbagi menjadi beberapa class diantaranya: Entity Class -> sebuah class yang merepresentasikan apa yang bisa dilakukan oleh masingmasing entitas. Contoh: Class Mahasiswa, Class Dosen, dll. Boundary Class -> sebuah class yang berkaitan dengan interface dari perangkat lunak. Contoh: Form, Data Table, dan lain-lain. Controller Class -> class yang mengatur hubungan antara entity class dan boundary class. 1. Adapun beberapa sifat dari orientasi objek adalah: Inheritance/pewarisan -> sebuah objek dapat mewariskan sifat atau perilakunya terhadap anak dari objek itu sendiri. Contoh: Class Orang memiliki atribut identitas lalu Class Mahasiswa merupakan anak dari Class Orang, maka Mahasisa memiliki identitas juga. Polymorphism -> sebuah Class bisa memiliki perilaku dengan bentuk yang banyak. Dalam pemrograman, biasanya hal ini terjadi pada perbedaan parameter/argumen pada sebuah method dengan nama yang sama. 1. 2. 3. 4. Elemen-elemen model desain terdiri dari: Data Elemen -> elemen-elemen yang berkaitan dengan struktur data dan struktur basis data. Contoh: elemen-elemen pada ERD. Architectural Element -> arsitektur untuk pengembangan perangkat lunak. Contoh: design pattern, hubungan antar class. Interface Element -> berhubungan dengan antarmuka pengguna. Contoh: Alur registrasi pengguna facebook. Component Element -> elemen-elemen yang dibentuk berdasarkan komponen dari perangkat lunak. Contoh: sensor, kamera. 5. Deployment Element -> elemen-elemen yang berkaitan dengan proses pengembangan perangkat lunak. Contoh: Control Panel, Server, PC. Architectural Elements Model arsitektur [ Sha96 ] berasal dari tiga sumber 1. Informasi tentang domain aplikasi untuk perangkat lunak yang akan dibangun 2. spesifik unsur persyaratan Model seperti diagram aliran data atau kelas analisis , hubungan mereka dan kolaborasi untuk masalah yang dihadapi 3. ketersediaan pola arsitektur dan gaya v Arsitektur bukan software operasional, mereprentasikan sebuah software pencari 1. Analisisefektifitas dari desain dalam pertemuan titik yang diminta 2. Mempertimbangkan alternatif arsitektur pada langkah ketika membuat dan mengubah desain yang masih relatif mudah dan 3. Mengolah bahaya mengasosiasi dengan membangun software v Kenapa arsitektur penting? 1. a) Reprsentasi dari software arsitektur 1. b) Untuk mendesain keputusan awal arsitektur 1. c) Arsitektur merupakan relatif kecil,intelektual mode graspable ADL (Arsitektur Deskription Language) Menyediakan semantik dan sintax untuk mengambarkan sebuah software arsitektur Menyediakan perancang dengan kemampuan 1. a) Komponen arsitektur yang membusuk 2. b) Menyusun komponen individu ke dalam blok arsitektur besar 3. c) Representasi antarmuka(koneksi mekanisme) disamping komponen Struktur Desain 1) Objektif : memperolehprogram arsitektur yang dipartisi 2) – 3) Kesesuaian: sebuah pemetaan DFD kedalam arsitektur PSPEC dan STD digunakan untuk indikasi untuk tiap modul Notasi :struktur char