Applying UML and Patterns: Object-Oriented Analysis and Design (OOA/OOD)

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

Applying UML and Patterns

Object-Oriented Analysis and Design (OOA/OOD)

Is what you learn useful?


A need for core skills in OOA and OOD Essential for creation of software that:
Is well designed Is robust Is maintainable Uses OO technologies and languages

What is really important?


How to think in objects is critical
Knowing an OO language is necessary but insufficient first step

How to create an OO design or evaluate and improve an existing one


Hard and important skill

What is classic about OOD?


Responsibility driven design
How should responsibilities be allocated to classes? How should objects collaborate? What classes should do what?

Patterns
Tried and true solutions to design problems Expressed as best practice principles

What about the UML?


Not OOA/OOD or a method
A standard programming notation A language for OOA/OOD and software blueprints A tool of thought A form of communication with others

Apply the UML in the service of doing OOA/OOD

Where do Use Cases fit in?


Written during Requirements Analysis
A prerequisite activity strongly related to all software design Use Cases are not object oriented

What about Process?


Many possible activities from requirements through implementation
How should a developer or team proceed?

Requirements Analysis and OOA/OOD need to be presented and practiced


Agile approach (light/flexible) Iterative development

Any other important skills?


Object-Oriented Programming (OOP) Database design User Interface design

Where is a good place to start?


A critical/fundamental ability in OOA/OOD is to skillfully assign responsibilities to software components
One activity that must be performed Influences robustness, maintainability, and reusability Challenging to master

What is the difference?


Analysis
Emphasizes an investigation of the problem and requirements, rather than a solution

Design
Emphasizes a conceptual solution that fulfills the requirements, rather than its implementation

Object-Oriented?
Object-Oriented Analysis
Emphasis is on finding and describing the objects (or concepts) in the problem domain

Object-Oriented Design
Emphasis is on defining software objects and how they collaborate to fulfill the requirements

What about Implementation?


During implementation or Object-Oriented Programming
Design objects are implemented

Key Step 1
Define Use Cases
Requirements Analysis may include stories or scenarios of how people use the system
Can be written as Use Cases

Key Step 2
Define a Domain Model
Object-Oriented Analysis is concerned with a description of the domain
Not a description of software objects A visualization of concepts in the real world domain Involves an identification of the concepts, attributes, and associations that are noteworthy

Key Step 3
Define Interaction Diagrams
Object-Oriented Design is concerned with defining software objects - their responsibilities and collaborations
Show a Dynamic View of collaborating software objects Show the flow of messages between software objects Show the invocation of methods

Key Step 4
Define Design Class Diagrams
Object-Oriented Design is concerned with defining software objects - their responsibilities and collaborations
In addition to a Dynamic View shown in Interaction Diagrams Show a Static View of the class definitions Illustrate attributes and methods of software classes (not real world concepts)

What is the secret for learning?


The purpose of modeling is primarily to understand, not to document No Silver Bullet Agile modeling emphasizes UML as sketch
Informal and incomplete diagrams Often hand sketched Explore difficult parts of the problem or solution space

How to apply the UML?


3 perspectives:
Conceptual
Diagrams describe things in the real world or domain of interest

Specification
Diagrams describe software abstractions with no commitment to a particular implementation

Implementation
Diagrams describe software implementation in a particular technology

You might also like