Object Oriented Analysis & Design With Visio (Day 1)
description
Transcript of Object Oriented Analysis & Design With Visio (Day 1)
Object Oriented Analysis & Design
Lars Mathiassen, Andreas Munk-Madsen
Metode Tradisional Metode Terstruktur Metode berorientasi
objek (Object Oriented)
Berkembang dari pemrograman tradisional
Kontrol Alur (urutan, keputusan, loop) Sistem Flow Chart Hampir selalu dimulai dengan
pemikiran tentang file secara fisik Tidak berorientasi pada kebutuhan
informasi
Dimulai pada tahun 1977 Dimulai dengan mencoba melihat
sistem dari sudut pandang logical Melihat data sebagai sumber proses
MetodeE-R DiagramNormalisasiDFD (control flow, State Transistion diagram)
InvoiceInvoice_noCust_nameDate_Purchase
Item_noDescriptionUnit_PriceQuantityTotal
Total_amount
InvoiceInvoice_noCust_nameDate_PurchaseTotal_amount
CustomerCust_noCust_nameCust_addressBalance
Inv_detailInvoice_noItem_noUnit_PriceQuantityTotal
InventoryItem_noUnit_priceQty_on_handQty_purchasedAmnt_purchasedQty_soldAmnt_sold
First Normal Form (1 NF)Second Normal Form (2 NF)Third Normal Form (3NF)Boyce-Codd Normal Form (BCNF)Fourth Normal Form (4NF)Fifth Normal Form (5 NF)Domain Key Normal Form (DKNF)
Normalisasi
Normalisasi
Keterangan
1 NF Any Relation
2 NF All non key attributes are dependent on all of the keys
3 NF There are no transitive dependencies
BCNF Every determinant is a candidate Key
4 NF There are no multivalue dependencies
5 NF There are no Joint dependencies
DK/NF All constraints on relation are logical consequences of domain and Keys
Architecture/Design 10% 30%Detailed design 20% 20%Code/debuging 25% 10%Unit Test 20% 5%Integration 15% 20%System Test 10% 15%
ActivitySmall Project
(2.500 lines of Codes)Large Project
(500.000 lines of Codes)
Mengapa perlu membuat rencana gambar yang jelas dalam pembuatan software ?
Mulanya dari OOP (Object Oriented Programming) yang berkembang menjadi OOD (Object Oriented Design) dan akhirnya menjadi OOA (Object Oriented Analysis)
Berhubungan erat dengan E-R Model Keuntungannya dari analisa, design
sampai ke implementasi menggunakan notasi yang sama
Makin banyak organisasi yang mengimplementasikan metoda OO
Booch Coad/Yourdon Schaler-Mellor Object Modeling
Technic
Nassi-Schneiderman
Gane-Sarson Jackson Jacobson Use
case
Encapsulation Polymorphism Inheritance
Merupakan konsep yang umum yang dapat digunakan untuk memodel hampir semua phenomena dan dapat dinyatakan dalam bahasa umum (natural language)› Noun menjadi object atau class› Verb menjadi behaviour› Adjective menjadi attributes
Memberikan informasi yang jelas tentang context dari system
Mengurangi biaya maintenance› Memudahkan untuk mencari hal yang akan diubah› Membuat perubahan menjadi local, tidak bepengaruh
pada modul yang lainnya
user
System
Application DomainProblemDomain
Problem Domain Application Domain
Payroll System
• Employee• Contracts• Work Schedule
Personal Office
Air Traffic • Plane• Flight Departure• Flight Corridors• Runaway• Flight Position
Part of the air traffic controller’s job
Telephone Signal
• Signal• Line• Transmitter• Receiver
Part of the technical job
Kumpulan dari komponen yang mengimplementasikan model dari requirement, function dan interface
user
Other system
Interface
Function
Model
system
• Mudah dimengerti• Tidak ada keraguan
Model Component
Function Component
Interface Component
Planes, flight departures, flight corridors, position, and the relation among them
Plane change position, system update function, and change the model componen’s state
• Monitors, Printouts, other facilites to interact w/ users
• Connect to other system
ArchitecturalDesign
ApplicationDomain
Analysis
Problem Domain
Analysis
Specifications ofcomponents
Model
Requirementsfor use
Specifications ofarchitecture
Siklus Pengembangan Dengan OOAD
ComponentDesign
Problem Domainanalysis
Application Domainanalysis
Architecture Design
Component design
•Classes•Structure•Behavior
•Model Component•Function Component•Connected Components
UsageFunctionsInterface
•Criteria•Components•Processes
Ada 3 kegiatan•Mencari elemen dari Problem Domain yaitu Objects, classes, dan events
•Buat model berdasarkan hubungan strutural antara class dan objects yang dipilih
•Interaksi antar object dan class serta behaviour dari object dan class
System Definition
ClassesBehaviour
Structure
Model
Iterate
Activity Content Concepts Classes
Which objects and events are part of the object system?
Class Object Event
Structure
How are classes and objects conceptually tied together?
Generalisation Aggregation Association Cluster
Behaviour
Which dynamic properties do the objects have?
Event sequence Behavioural pattern Attribute
Memodel dunia nyata seperti yang akan dilihat oleh pemakai
Buat dahulu secara umum baru ke detil
System Definition
ClassesBehaviour
Structure
Model
?
?
Principle: Klasifikasikan object didalam problem domain› Object: suatu entitas yang mempunyai indentitas, state
dan behaviour Need to be able to identify and delimit as independent
entity
› Class: adalah deskripsi dari kumpulan object yang mempunyai struktur, behaviour pattern dan attribute yang sama
Principle : Object diberi karakter sesuai dengan eventnya› Event: Insident yang terjadi seketika yang melibatkan
satu atau lebih object
CustomerBank employeeContract description…
Enter into contractContract is terminated…
Agreement
Problem domain
Classes
Events
Object adalah suatu entitas yang memiliki identitas, state, dan behaviour
Class adalah kumpulan dari object yang mempunyai structure, behavioural pattern, dan attributes yang bersamaan
Cari candidate Untuk Class
Cari candidateUntuk event
Evaluasi dan pilihSecara sistematis
Event table
Cari Calon› Jangan membuang terlalu cepat, lebih baik
dievaluasi dengan teliti Model baru atau perbaiki situasi tidak hanya
seperti apa adanya Bagaimana menemukan candidate untuk
Class› Kata benda didalam keterangan atau pembicaraan› Daftar dari tipical object› Cari persamaan dengan sistem komputer› Literatur teknis didalam problem domain
Beri nama Class secara hati hati› Sederhana, mudah dibaca, tepat, tidak
membingungkan, seperti yg digunakan di problem domain
Phenomena Class
Thing Car, goods, packaging, materials
People & Role Employee, parent, customer, member
Organisations Company, Department, Group, Project
Places Shelf, parking spot, construction site, city
Concepts Square, currency, quality, parameters, fee
Resources Money, time, energy, labour force, info
Apparatusses Radar, sensor, valve, motor
System Street register, cash register, alarm system
Cari event didalam problem domain, bukan didalam sistem komputer
Jika event tidak instanttaneous harus dipecah menjadi event yang lebih kecil
Dimana menemukan candidate events :› Kt kerja didalam penjelasan atau wawancara› Daftar event yang umum atau tipikal type dari
event› Sistem komputer yang sejenis› Literatur teknis didalam problem domain
Process EventsWork & Production Engine installed, customer served, order
finished
Transport Shipment received, article sent, car delivered
Consumption Item purchased, budget updated, item rejected
Life Cycle Person created, rejected, conference finished
Career & Education Graduate, job offered, resigned, enrolled
Contract & Exchange Reservation made, schedule agreed
Monitoring & Control Vehicle dispatched, temperature exceeded pump started
Planning & Management Employee allocated, schedule agreed
Decision making Article reviewed, article chosen
Evaluate systematically What should be part of the problem domain
and what should not? More difficult with abstract concepts, e.g.
account, but may be helpful to ...› think of as physical object, e.g. box of receipts› think of as what it actually represents, e.g. contract
to allow withdrawal of money deposited Principle: Have an open mind, but select
critically
Kebutuhan akan informasi› Masukan classes dan events hanya jika
system function akan menggunakan informasi tersebut
Fokus pada problem domain bukan application domain› Interested in those things that future users will
administrate, monitor, or control Harus relevan pada definisi sistem
› Jika tidak, perlu didiskusikan dengan user› Mungkin perlu mengubah definisi sistem
Dapatkah mengidentifikasikan object dari class› Perlu dapat mengidentifikasikan object secara jelas
Apakah class mempunyai informasi yang unik› Dapatkah informasi diturunkun dari class lain
Apakah class dapat menurunkan banyak object ?› Jika hanya satu instance, biasanya hampir tidak
diperlukan Apakah class mempunyai jumlah event yang
cocok dan dapat di manage ?› Terlalu banyak event bisa menunjukkan butuh class lagi
Apakah event itu instant ?› Jika tidak, maka kita perhatikan dengan mulai
dan berhentinya suatu event, dan mungkin event diantaranya
Apakah event atomic?› Jika mempunyai sub-event, gantikan event
utama dengan sub-event Apakah event dapat diidentifikasi pada
saat terjadi ?› Bagaimana kita tahu bahwa events tersebut
sudah terjadi ?
System Definition
ClassesBehaviour
Structure
Model
Dimulai dengan class dan event yang ada pada event table
Tentukan struktur object dan struktur class
Hubungkan antar class Hasilnya adalah class diagram
Customer
Employee Day Schedule
Time Slot
OtherFreeWork
Apprentice Assistant
1
1..*
0..*
1
1
1..*
1
0..*
Appointment
1
1
Car Person0..*
1..*Ownership
Name is optional,but recommended
Anywhere from zero to many
Anywhere from one to many
4..*
1..*1
11 11
1
Body Motor Wheel
Cam Shaft Cylinder
Car
12..*
Assembly sideComponent side (min and max)
One and only one
Anywhere fromfour to many
Passenger Car
Private CarTaxi
Account
LoanCheckingBank book
ServicePerson
EmployeeCustomer
Group under onegeneralisation
Multiple inheritance
Classwithoutobjects
Taxi “is a”passenger car orTaxis are a subset ofpassenger cars
«cluster»Cars
OwnerCar
Passenger CarMotor
TaxiCylinder
Clerk
«cluster»People
Find candidatesfor structure
Event table
Class diagram
Evaluate systematically
Explore patterns
Coba temukan secara sistematis› Clusters:
Cluster biasanya dilakukan yang terakhir Kelompokan Class untuk memberikan kejelasan lebih
baik
› Generalisation: Periksa setiap pasangan class untuk struktur
generalisasi antar class, atau cari common class Periksa masing masing class untuk spesialisasi
(inheritance) yang relevan
› Aggregation: Periksa setiap pasangan class untuk (1) whole-part,
container-content, atau association-member relationships antar class, dan untuk (2) a common whole yang menghubungkan mereka
Periksa setiap class untuk (3) components yang relevan
› Association: Periksa setiap pasangan class untuk needed
association(s) Tetapi, jangan hanya membuat structure
karena anda dapat› Apakah mereka relevan atau berguna› Apakah mereka dapat di representasikan
dengan lebih sederhana ? Mungkin perlu melacak ulang ke class
Pola memberikan sumber inspirasi dan patokan untuk bagaimana memodel situasi
Pola yang umum termasuk …› Role pattern: object dengan multiple
roles› Relation pattern: relationship dengan
attributes › Hierarchy pattern: › Item-descriptor pattern:
Person
CustomerEmployee
Customer-Employee
Person
CustomerRole
EmployeeRole
Shouldn’t dynamically change object from customer class or employee class to customer-employee class or vice versa
Person
Role
Employee Customer
11..*
Person
Role
Role1 Rolen
10..*
Role2 ...
Generic Pattern
Person
Ownership
1
0..*
Car1..* 1
Person CarOwns1..* 1 But … What if need attributes
for the owns relationship?E.g., date_purchased
Party1
Relation
10..*
Party20..* 1
Generic Pattern
University
Division
11..*
School
11..*
Leveln
Leveln-1
11..*
Level1
11..*
...
GenericPattern
Book
Chapter
11..*
Section
11..*
...
Book
Copy
10..*
Descriptor
Item
10..*
Generic Pattern
Logical
Physical
Tetapi, bagaimana dengan student dari semester yang lama ?
Bagaimana mendapatkan daftar student dari unit ?
Tetapi masih dapat diketahui unit yang mana yang mempunyai syarat apa ?
Student UnitEnrolls in
0..* 0..*
Gunakan item-descriptor untuk mengembangkan unit class
StudentUnit
OfferingEnrolls in
0..* 0..*
• Tetapi bagaimana kita dapat menyimpan nilai atau tanggal pendaftaran unit ?
Unit
1
0..*
Unit title, numberPrerequisites,etc.
Semester, Year, Instructor, etc.
Unit Enrolment Example
• Gunakan relation pattern untuk mengembangkan enroll dengan association dan student class
UnitEnrolment Enrolls in
0..* 0..*
Unit
1
0..*
UnitOffering
1
0..*
Student
1
Name,Student #,
Address,etc.
Enrol Date,Unit Mark,
etc.
Evaluate systematically› Structure types must be used correctly
aggregation vs association
› Structures must be conceptually true› Structures must be simple
Another golden rule› Structures must increase clarity
Study abstract, static relationships between classes
Study concrete, dynamic relationships between objects
Model only the necessary structural relationships› focus on important aspects› include only a minimal number
Individually, identify a list of candidate structures from the case description. › Remember to check each pair of classes,
etc.› Remember to check for all kinds of
structures.› Be sure that the “is a kind of” and “a part
of” semantics are applied correctly
System Definition
ClassesBehaviour
Structure
Model
Event Trace› Urutan dari event yang terjadi pada suatu
object Behavioural Pattern
› Daftar kemungkinan event traces yang terjadi pada semua object didalam class
Attribute› Keterangan property dari class atau event
Describeattributes
Event table and class diagram
Behavioural patterns with attributes
Consider structuresand classes
Describe behavioural patterns
Explore patterns
Perlu dibuat untuk setiap class Coba buat typical behaviour (event trace)
terlebih dahulu, baru kemudian ditambahkan behaviour yang ada
Hasilnya adalah behavioural pattern› Kumpulan pola event dari kemungkinan urutan
event untuk object didalam class Ditampilkan dengan menggunakan statechart Dapat ditampilkan dalam bentuk lain
› regular expression› state table
a
Urutan
a
T1
b
T2
z
Pilihan
T
b
Iterasi
T
az
zT1 T2
b
a
a
Event
State
Perpindahan ke State berikutnya
Waiting
Article
Letter of intent submitted(date of submission, title)
Article submitted(date)
Received
Decision announced(date of decision)
Deadline passed
authortitlestatus
StatesEvent
Attributes associated with event
End point
Start point
A choice of events
Open
Account
owneraccount #balance
amount withdrawn(date, amount)
account closed(date)
account opened(date)
amount deposited
(date, amount)
Closedaccount opened
(date)
A multi-stateiteration
Single-stateiterations
S1 S2 Sn
a b z
terminateterminate
terminate
a
terminate
S1 S2 Sn
b zaS
The Stepwise Relation Pattern› Digunakan untuk associations dengan
agregation multiple level The Stepwise Role Pattern
› Digunakan untuk lifecycle yang menambah peran baru
The Composite Pattern› Digunakan ketika part dapat
ditambahkan secara rucursive
Stepwiserelationpattern
(example)
Semester
Class
10..*
Group
10..*
Student
1
10..*
0..*
0..*
Class
assignedto
semester
assignedto class
assignedto group
Student pattern(partial)
1
Assigning
student assignedto class
Class pattern(partial)
StepwiseRole
Pattern(example)
Sale
Offer DeliveryOrder
10..1
10..1
10..1
Negotiating
Arranging
Awaiting
offerrequested
offeraccepted
orderreceived
delivery made
salecancelled
Sale pattern(partial)
offerrequested
offeraccepted
offerrejectedOffer pattern
(partial)Offer
Assembly
CompositePattern
(all three parts needed)
1
Part
Simple Composite
1..* Part patternassembly ofpart started
part mountedin composite
Ready
part at hand
Simple part pattern
Ready
Assembly
part mountedin compositepart at hand
assembly ofpart started
this part mountedinto another composite
Composite part pattern
part mountedinto this composite
Subclass harus mempunyai semua events dari superclass
Subclass harus mengikuti behavioural patterns dari superclassnya, tetapi dapat menambahkan constrain dari behaviournya subclass
Dengan multiple inheritance, menurunkan event dan behaviour dari kedua superclassnya
Jika event dan behaviour dari superclass tidak consisten perlu mencari struktur generalisasinya
Jika dua atau lebih object mempunyai event yang sama, kemungkinan mempunyai hubungan aggregation atau association
Sebaliknya juga sama, pada saat membuat atau menghapus hubungan ?
Jika event yang sama terjadi pada dua class, kemungkinan satu class adalah generalisasi dari yang lainnya.› Events dari subclass harus menjadi bagian dari
yang lainnya Jika event yang sama terjadi pada dua
class, class yang ketiga diperlukan untuk menjadi superclassnya.
Memerlukan beberpa peran dari class bila urutan event saling bekerja bersamaan atau paralel
Contoh seperti pendidikan dan karir seseorang› Keduanya terjadi bersamaan disetiap saat› Masing masing mempunyai progress masing
masing› Mungkin saling berinteraksi antar sesama› Dapat memodel seperti dua peran untuk satu
orang, jadi dua peran class membentuk aggregation kedalam class person
1
1..*
Customernameaddress
Accountbalance
Open
Amount withdrawn
Account closed(date)
Account opened(date)
Amount deposited
Active
Amount withdrawn
Account closed(date)
Account opened(date)
Amount deposited
Account opened(date)
Account closed(date)
Adalah nama dari keterangan properti dari class atau event
Diturunkan dari class’s behavioural pattern
Hampir semua data dihubungkan pada event
Beberapa data tidak dihubungkan pada single events yang menunjukkan state atau object seperti account balance
Apakah karakteristik umum dari Class Bagaimana data diterangkan di dalam
problem domain Data dasar apa yang harus diambil
tentang object dari class ? Hasil dari event trace yang mana
yang harus diambil
Kapan event ini terjadi?› Tanggal, Jam› Perbedaan antara bila terjadi dan bila
ditemukan tentang event? Angka atau nilai mana yang
diperhatikan oleh event?› Seperti Jumlah uang, jumlah barang terjual
Buat behavioural pattern dari event traces
Create behavioural patterns from event traces.
Study common events. Derive class attributes from
behavioural patterns.