Metode Perancangan Program Pert 19 – Refining the Requirements Model Component based Development Software components: the problem How object-orientation contributes to reuse Composition in UML Software Component : the problem Beberapa pengembangan sistem percaya bahwa analisis requirement harus dimulai dari awal. Hal ini baik, jika tidak mengetahui sama sekali tentang requirement dari sistem yang baru. Tetapi kadang kala analisis bisa didapatkan dari project lalu yang sukses. Beberapa pengembang, tetap ingin membuat analisis dari awal, walaupun analisis dapat diambil dari project sebelumnya yang sukses. Hal ini dapat dikarenakan: The NIH syndrome (‘Not Invented Here”) : pengembang tidak percaya akan analisis yang lalu karena bukan mereka yang membuatnya Model Organizatin : project yang lama dibuat berdasarkan structured model. Karena structured modul dibagi kedalam fungsi. How Object Orientation contributes to reuse Object oriented software development, dapat menyelesaikan masalah yang ada pada software component dengan cara membuat component yang mudah digunakan dan tidak terlalu spesifik. Hal ini dimungkinkan karena adanya encapsulation. Dengan adanya encapsulation, component lain yg membutuhkan tidak perlu mengetahui bagaimana request akan dikerjakan. Ada tiga hal yang dapat dilakukan object orientation : Requirement reuse Generalization Composition Composition in UML Composite aggregation adalah: Bentuk aggregation yang mensyaratkan bahwa sebuah bagian instance dapat dimasukkan ke dalam paling banyak satu composite pada satu waktu dan bahwa composite object tersebut mempunyai tanggung jawab tunggal untuk melakukan disposisi terhadap bagiannya. Hal ini berarti composite object bertanggung jawab untuk pembuatan dan penghancuran bagian tersebut Contoh: penggunaan composition dalam class diagram untuk menunjukan object composite 1..* 1 Composite 1 1..* Ellipse 1 1..* Line Adding Further Structure Modelling Generalization Mengkombinasikan generalization dengan composition atau aggregiation Modeling Generalization Perhatikan hasil wawancara berikut: 17 March - brief interview with Amarjeet Grewal (Finance Director) Purpose - clarification of points from last Thursday's interview Asked about staff types - only two types seem relevant to system creative staff (C) and admin staff (A) How do they differ? - main difference is bonus payment.. 1. (C) bonus calculated on basis of campaign profit (only those campaigns they worked on) 2. (A) paid rate based on average of all campaign profits Any other differs? Amarjeet says - C qualification need to be recorded - C can be assigned as contact for a client A are not assigned to specific campaigns No other significant differences (NOTE - at next interview, get details of both algorithms) Class diagram dari hasil wawancara StaffMember {abstract} Grade gradeName 1..* dialokasikan staffName 0..* staffNo staffStartDate calculateBonus( ) assignNewStaffGrade( ) getStaffDetails( ) Association superclass diwarisi oleh subclass AdminStaff CreativeStaff qualification calculateBonus() calculateBonus( ) assignStaffContact( ) Penjelasan Dari diagram terdapat generalization antara staffMember, adminStaff dan CreativeStaff. StaffMember merupakan superclass, sedangkan AdminStaff dan CreativeStaff adalah subclass. Simbol generalization menyatakan bahwa semua karakteristik dari superclass akan diwarisi oleh adminstaff dan creativestaff. Sehingga attribute, operation, dan assosiation dapat digunakan oleh beberapa subclass, tapi hanya perlu ditampilkan satu kali yaitu di superclass Redefined Operation Pada diagram sebelumnya, operation calculateBonus( ) muncul disetiap class ? Hal ini dikarenakan calculateBonus( ) disetiap class akan melakukan hal yang berbeda. Mengapa di superclass juga ditaruh calculateBonus( )? Hal ini hanya digunakan sebagai bukti. Sehingga jika ada subclass yang baru, maka operation calculateBonus() akan juga disertakan Abstract dan concrete class Perhatikan tulisan {abstract} dibawah StaffMember. Hal ini dikarenakan StaffMember merupakan class abstract yang artinya class StaffMember tidak mempunyai instance. {abstract} ini hanya dapat digunakan pada superclass dalam hirarki generalization Sedangkan classs lain yang memiliki minimal 1 instance disebut dengan concrete class The usefulness of generalization Menambahkan subclass membutuhkan lebih sedikit perubahan dari model yang sudah ada. Jika ada subclass baru yang ditambahkan, maka subclass baru ini akan mewarisi semua attribute dan operation dari superclass. Identifikasi Generalization (pendekatan Top-Down) Jika assosiation dapat digambarkan dengan ekspresi ‘adalah sejenis’ atau ‘is a kind of’, maka dapat diaktan bahwa dapat dimodel sebagai generalization Menambahkan generalization (pendekatan bottom-up) Pendekatan alternatif untuk menambahkan generalization adalah dengan memperhatikan kesamaan antar class di dalam model, dan mempertimbangkan apakah model dapat disederhanakan dengan menambahkan superclass. Yang penting juga adalah assosiation yang terjadi dapat disebut dengan ‘is a kind of’ Contoh Vehicle Buffalo cart vehicle Aircraft Jumbo-jet Helicopter Kapan generalization tidak digunakan harus benar – benar consistent terhadap superclass. Tetapi jika perbedaan antara dua subclass terlalu jauh, maka hal ini akan membingungkan. Jangan mengantisipasi subclass, jika tidak didapatkan informasi dari requirement. Subclass Multiple Inheritance Dapat dimungkinkan bahwa sebuah subclass mempunya lebih dari satu superclass. Hal ini disebut dengan multiple inheritance Mengkombinasikan generalization dengan composition atau aggregiation Campaign 1 0..* Advert AdvertCopy 1..* 1 AdvertGraphic AdvertPhotograph 1..* 1..* 1 1 NewspaperAdvert TelevisionAdvert Penjelasan Newspaper Advert terdiri dari beberapa bagian yaitu AdvertCopy, AdvertGraphic, dan AdvertPhotograph Sebuah campaign terdiri dari satu atau banyak advert.
© Copyright 2024 Paperzz