object oriented analysis and design using uml. evolution of object-oriented development methods mid...
TRANSCRIPT
![Page 1: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/1.jpg)
Object OrientedAnalysis and Design Using
UML
![Page 2: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/2.jpg)
Evolution of Object-Oriented Development Methods
• Mid to late 1980s– Object-Oriented Languages (esp. C++) were
very much in vogue– However, there was little guidance on how to
divide a problem into OO classes.
![Page 3: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/3.jpg)
UML
• Unified Modeling Language– In early 90s, there were many
competing graphical notations all used for OOA.
– Three of the major players got together in Booch’s company
![Page 4: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/4.jpg)
• Rational Software Corporation– Booch, Rumbaugh, Jacobson
• Merged their ideas to produce– UML (public domain)
– Associated tools (mainly Rational Rose)
– Rational Software Process (public domain)
– Acquired other companies (Purify, Quantify, …)
![Page 5: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/5.jpg)
Uses for UML• OOA
– A visual language for, in the problem domain,• capturing knowledge about a subject• expressing knowledge for the purposes of
communication
![Page 6: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/6.jpg)
• OOD– A visual language for, in the solution space,
• capturing design ideas• communicating design ideas
• Related, but distinct usages• Must supplement both with written
explanations
![Page 7: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/7.jpg)
• UML
– Has its warts
– Good enough when augmented by written explanation
• Cover only the most useful subset of UML
– Mainly class/object/use case/sequence charts.
![Page 8: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/8.jpg)
Books on UML• You must acquire reference materials
on UML– Some of these lecture materials prepared
from• UML In A Nutshell (O’Reilly) by Sinan Si
Alhir– Also
• The Unified Modeling Language User Guide– Booch et. al.
– Also• Reference materials off the Web
![Page 9: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/9.jpg)
• Object Modeling books:– Object Oriented Analysis and Design
• Booch et.al.– Designing Object-Oriented Software
• Wirfs-Brock et. al.– Object-Oriented Modeling and Design
• Rumbaugh et. al.– Object-Oriented Analysis
• Coad and Yourdon
![Page 10: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/10.jpg)
• OMG-endorsed standard (Object Management Group)– UML Semantics Document
• “inside-view”• specifies semantics of constructs
– UML Notation Guide• “outside-view”• specifies notation for expressing constructs
![Page 11: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/11.jpg)
– Object Constraint Language specification document• definition of a (textual) language for
expressing logical constraints
![Page 12: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/12.jpg)
UML is For• For Problems
– Specifying– Visualizing– Promoting
Understanding– Documenting
• For Solutions– Specifying– Visualizing– Evaluating– Constructing– Documenting
![Page 13: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/13.jpg)
• For Problem Solving– Capturing Attempts
– Communicating Attempts
– Leveraging Knowledge
![Page 14: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/14.jpg)
Parts of UML• Class Diagrams
– models• Object Diagrams
– example models• Use Case Diagrams
– document who can do what in a system• Sequence Diagrams
– shows interactions between objects used to implement a use case
• Collaboration Diagrams– same as above, different style
![Page 15: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/15.jpg)
Parts of UML (Cont…)• Statechart Diagrams
– possible states and responses of a class and what transitions them
• Activity Diagrams– describe the behaviour of a class in response to internal
processing• Component Diagrams
– Organization of and dependencies amongst software implementation components
• Deployment Diagrams– Describe the mapping of software implementation
components onto processing nodes
![Page 16: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/16.jpg)
• The real world is impenetrably complex– e.g., a complete model of you would include
DNA, behaviour specifications, total history, parents’ history, influences, …
– for a particular problem, abstracting you as• last name• first name• student number• course• final grade
![Page 17: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/17.jpg)
• An object isA concept, abstraction, or thingwith crisp boundaries and meaning for the problem at hand
• Objects– promote understanding of the real world– provide a practical basis for computer
implementation
![Page 18: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/18.jpg)
• Decomposition of a problem into objects depends on– Judgment– The nature of the problem being solved
• Not only the domain: two analyses of the same domain will turn out differently depending upon the kind of programs we wish to produce.
![Page 19: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/19.jpg)
Classes
• A class describes a group of objects with similar properties.– Class: Instructor
• Object: David Penny• Object: Matthew Zaleski
Instructor Department
![Page 20: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/20.jpg)
– Class: Department• Object: Department of Computer Science• Object: Department of Electrical
Engineering
![Page 21: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/21.jpg)
Attributes
• Data values held by the objects of a class
Instructor
name: stringage: integer
weight: integer
![Page 22: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/22.jpg)
Operations• A function or a transformation that may be
applied to or by objects in a class.– Not often used (not often terribly useful) in an OOA
Instructor
nameage
weight
teachmark
listen_to_complaints
![Page 23: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/23.jpg)
Links and Associations• The means for establishing
relationships among objects and classes.– link: a connection between two object
instances
– association: a collection of links with common structure and semantics.
Instructor Departmentteaches for
![Page 24: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/24.jpg)
Object Diagrams• Models instances of things contained in
class diagrams.
• Shows a set of objects and their links at a point in time
• Useful preparatory to deciding on class structures.
• Useful in order to better explain more complex class diagrams by giving instance examples.
![Page 25: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/25.jpg)
i: Instructorname = “Penny”
j: Instructorname = “Zaleski”
: Departmentname = “DCS”
: Departmentname = “ECE”
![Page 26: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/26.jpg)
Multiplicity
• Used to indicate the number of potential instances involved in the association when the other associated classes are fixed.
Instructor Departmentteaches for
A given instructor can teach for potentially many departments (or none)
A given department employs zero or more instructors
**
![Page 27: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/27.jpg)
N-Ary AssociationsInstructor Department
teaches
1 1
Course
*
A given instructor teaching for a given department may teach zero or more courses for that department.
There is exactly one instructor teaching a given course for a given department
Try to avoid them!
![Page 28: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/28.jpg)
Attributes on Associations
Instructor Department
teaches for
pay
![Page 29: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/29.jpg)
Aggregation Indicators (Part-Of)Department
Student
Implied multiplicity of 1
Window
Frame
Composition(strong ownership,coincident lifetime)
Aggregation(no associated semantics)
![Page 30: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/30.jpg)
Generalization (a.k.a. Inheritance, is-a)
Shape
Rectangle Circle Triangle
Square
![Page 31: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/31.jpg)
Avoiding Morphing Classes• Analysis shown below may not be a good choice, as
objects of class 407 Instructor may teach other things and different things next term.
• Avoid situations where objects will need to morph classes
Instructor
407Instructor
![Page 32: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/32.jpg)
Example• We are asked to build a system for keeping
track of the time our workers spend working on customer projects.
• We divide projects into activities, and the activities into tasks. A task is assigned to a worker, who could be a salaried worker or an hourly worker.
• Each task requires a certain skill, and resources have various skills at various level of expertise.
![Page 33: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/33.jpg)
Steps• Analyze the written requirements
– Extract nouns: make them classes– Extract verbs: make them associations– Draw the OOA UML class diagrams– Determine attributes– Draw object diagrams to clarify class diagrams
![Page 34: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/34.jpg)
Steps (conti..)
• Determine the system’s use cases– Identify Actors– Identify use case– Relate use cases
• Draw sequence diagrams– One per use case– Use to assign responsibilities to classes
• Add methods to OOA classes
![Page 35: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/35.jpg)
Example• We are asked to build a system for
keeping track of the time our workers spend working on customer projects.
Worker
Customer
Project
Time
assigned to
againstspends *
1*
*
*
**
1 contracts
![Page 36: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/36.jpg)
Example• We divide projects into activities, and the
activities into tasks. A task is assigned to a worker, who could be a salaried worker or an hourly worker.
Project
Worker
SalariedWorker HourlyWorker
Activity1..*
Task
1..**
1Assignment
Timespent on ◄
assigned to
![Page 37: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/37.jpg)
Example• Each task requires a certain skill, and
workers have various skills at various level of expertise.
Worker
Skill
Task
requires ◄has
SkillLevel
1..*
**
1..*
![Page 38: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/38.jpg)
Steps• Analyze the written requirements
– Extract nouns: make them classes– Extract verbs: make them associations– Draw the OOA UML class diagrams– Determine attributes– Draw object diagrams to clarify class diagrams
• Determine the system’s use cases– Identify Actors– Identify use case– Relate use cases
![Page 39: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/39.jpg)
ExampleCustomer
companyNameprimeContactaddressphonefax
Projectcontracts
N.B.• Project has no attribute in Customer
• association is enough• no database id for Customer shown
• in an OOA, only include an id if visible to users• may include such things during database design or OOD
![Page 40: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/40.jpg)
ExampleProject
namedescriptionstartDate: date
Customercontracts ◄
Activity
namedescriptionstartDate: dateestHours: intdeliverable: string
Task
![Page 41: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/41.jpg)
Example
Task
descriptionstartDate: dateestHours: int
Activity
Skill
Worker
requires
assigned to
has
Constraint: A task may only be assigned to a worker whohas the required skill.
![Page 42: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/42.jpg)
Example
Worker
name: string
SalariedWorker
salary: realvacationDays: int
HourlyWorker
hourlyWage: real
SkillLevel
level: intrateMultiplier: real
Taskassigned to
Skill
name: string
has
![Page 43: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/43.jpg)
ExampleTime
start: dateTimeend: dateTimehours: real
Assignment
Task Workerassigned to
spent on
![Page 44: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/44.jpg)
Steps• Analyze the written requirements
– Extract nouns: make them classes– Extract verbs: make them associations– Draw the OOA UML class diagrams– Determine attributes– Draw object diagrams to clarify class diagrams
• Determine the system’s use cases– Identify Actors– Identify use case– Relate use cases
• Draw sequence diagrams– One per use case– Use to assign responsibilities to classes
• Add methods to OOA classes
![Page 45: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/45.jpg)
Object Diagrams
:Time
start: Jan.23, 2002, 8:00end: Jan.23, 2002, 18:00hours: 4.2
:Assignment
:Taskdescription: “develop class diagrams”
:Workername: “Matt”
![Page 46: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/46.jpg)
Steps• Analyze the written requirements
– Extract nouns: make them classes– Extract verbs: make them associations– Draw the OOA UML class diagrams– Draw object diagrams to clarify class diagrams– Determine attributes
• Determine the system’s use cases– Identify Actors– Identify use case– Relate use cases
• Draw sequence diagrams– One per use case– Use to assign responsibilities to classes
• Add methods to OOA classes
![Page 47: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/47.jpg)
Use Cases• Actors:
– Represent users of a system
• human users
• other systems
• Use cases
– Represent functionality or services provided by a system to its users
![Page 48: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/48.jpg)
Use Case DiagramsTime & Resource Management System
(TRMS)
projectmanager
resourcemanager
worker
<<actor>>BackupSystem
ManageResources
Log Time
ManageProjects
AdministerSystem
systemadministrator
![Page 49: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/49.jpg)
Resource Manager Use Cases
resourcemanager
AddSkill
RemoveSkill
UpdateSkill
FindSkill
<<uses>>
<<uses>>
![Page 50: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/50.jpg)
More Resource Manager Use Cases
resourcemanager
AddWorker
RemoveWorker
UpdateWorker
FindWorker
FindSkill
<<uses>>
Assign Skillto Worker
Unassign Skillfrom Worker
<<extends>><<extends>>
<<uses>>
<<uses>>
![Page 51: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/51.jpg)
Steps• Analyze the written requirements
– Extract nouns: make them classes– Extract verbs: make them associations– Draw the OOA UML class diagrams– Draw object diagrams to clarify class diagrams– Determine attributes
• Determine the system’s use cases– Identify Actors– Identify use case– Relate use cases
• Draw sequence diagrams– One per use case– Use to assign responsibilities to classes
• Add methods to OOA classes
![Page 52: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/52.jpg)
Sequence Diagram – Assign Skill to Worker Use Case
resourcemanager
Res. Mgr. Win: UI :Worker :Skill :SkillLevel
find worker
find skill
assign skillto worker
find workerby name
find skill by name
[worker does not currently have skill]assign skill to worker
![Page 53: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/53.jpg)
Steps• Analyze the written requirements
– Extract nouns: make them classes– Extract verbs: make them associations– Draw the OOA UML class diagrams– Draw object diagrams to clarify class diagrams– Determine attributes
• Determine the system’s use cases– Identify Actors– Identify use case– Relate use cases
• Draw sequence diagrams– One per use case– Use to assign responsibilities to classes
• Add methods to OOA classes
![Page 54: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/54.jpg)
Add Methods
• Read sequence diagrams to identify necessary methods
Worker
name: string
+ static Worker findWorker(String name);+ static list of Workers getWorkers();
![Page 55: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/55.jpg)
In Design
• Bring methods closer to implementation
Worker
name: string
+ static Worker findWorker(String name);+ static int getNWorkers();+ static Worker getWorker(int);
![Page 56: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/56.jpg)
In Design
• Bring methods closer to implementation
Worker
name: string
+ static Worker findWorker(String name);
WorkListInt getNumListElements();String getListElement(int n);
ListModelint getNumListElements();String getListElement(int n);
![Page 57: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/57.jpg)
• In this paper, I take a look at the UML (Unified Modelling Language) notation for Object Oriented Analysis and Design - the emerging standard designed by Booch, Rumbaugh and Jacobson, each of whom previously had their own notations published independently.
• The starting point is Object Modelling, a technique that enables you to focus on class structure, inheritance, etc., whilst avoiding language specifics such as pointer dereferencing.
![Page 58: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/58.jpg)
![Page 59: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/59.jpg)
• The best way to understand the notation is to look at an example. The following Object Model shows a simple Banking System, containing classes for Head-Office, Branch, Accounts held at that Branch, and the Customers who the Accounts belong to:
![Page 60: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/60.jpg)
• A Head-Office class (containing “bankName” and “address” fields, otherwise known as attributes) “administers” an (unspecified) number of Branch classes; whilst a Branch is “administered-by” exactly one Head-Office (the little black arrows indicates the direction in which the name given to a relationship should be read).
![Page 61: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/61.jpg)
• On the diagram this relationship is represented by the line from the Head-Office class to the Brach class which is labelled “administers”. The “1” at the Head-Office end of the line shows that exactly one Head-Office is associated with each Branch (as you would expect). The “*” at the Branch end of the line shows that a Head-Office “administers” many Branches - again as you would expect.
![Page 62: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/62.jpg)
• Similarly, a Branch class (which contains “manager” and “address” attributes) “holds” many Account classes; whilst each Account class “is-held-by” exactly one Branch. We can also see that we have determined that an Account class has a “CalcCharges” method Object Oriented Analysis And Design Using UML Page 4 of 17 W1 - Object Oriented Analysis And Design Using UML( Rev: 1) - 9/27/01 (also known as operations or member functions) defined. This method, when invoked, will look at the detail stored within the Account object, and apply the appropriate (undoubtedly extortionate) charges to the Account. The second method - “PrintStatement” - will take the details of the Account and print them out.
![Page 63: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/63.jpg)
• The inheritance “triangle” (labelled “account-type”) shows us that our system knows about three types of Account: the basic account (in this case a virtual class called Account), and two specialised accounts - the CurrentAccount and SavingsAccount - which are derived from Account. The fact that the “CalcCharges” is shown in both subclasses indicates that its implementation is re-defined for these classes (in C++ terms it is a virtual function). This is indicative of the fact that charges on a “SavingsAccount” are calculated in a completely different manner to charges on a “CurrentAccount”.
![Page 64: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/64.jpg)
• Each Account “belongs-to” exactly one owner - the Customer class on the diagram. Customers, on the other hand, may have many Accounts.
• Finally, you can see that there are two relationships shown between the Account and the Transaction classes. This is because, in our banking system, each individual transaction
• (credit, debit, etc.) must have two associated accounts - the Account the money is “debit(ed)-from”, and the Account the money is “credit(ed)-to”. This enables the bank to record exactly where each transaction has come from, and gone to, so to speak.
![Page 65: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/65.jpg)
• This can be shown more clearly by the following instance diagram (instance diagrams are used to assist in understanding and clarifying Object Models - they also give quite a hint as to how relationships can be implemented in C++!):
![Page 66: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/66.jpg)
![Page 67: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/67.jpg)
![Page 68: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/68.jpg)
![Page 69: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/69.jpg)
![Page 70: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/70.jpg)
![Page 71: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/71.jpg)
![Page 72: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/72.jpg)
![Page 73: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/73.jpg)
![Page 74: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/74.jpg)
![Page 75: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/75.jpg)
![Page 76: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/76.jpg)
![Page 77: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/77.jpg)
![Page 78: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/78.jpg)
![Page 79: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/79.jpg)
![Page 80: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/80.jpg)
![Page 81: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/81.jpg)
![Page 82: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/82.jpg)
![Page 83: Object Oriented Analysis and Design Using UML. Evolution of Object-Oriented Development Methods Mid to late 1980s –Object-Oriented Languages (esp. C++)](https://reader036.vdocuments.site/reader036/viewer/2022062408/56649e115503460f94afcad4/html5/thumbnails/83.jpg)