download

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.