You are on page 1of 16

IntellAgile

Craig Larman’s
Applying UML
and Patterns:
Hands-on Mastery of
OOA/D
Patterns
Requirements

www.craiglarman.com
Copyright © 2002 Craig Larman. All rights reserved.
IntellAgile Coach Background
 Coached thousands since 1986 in OOA/D
 www.craiglarman.com

introduction iterative UP iterative requirements use cases 2


IntellAgile Objectives
 “Think in Objects”  Practice

 Analyze requirements with use cases  Apply agile modeling

 Create domain models  Design object solutions


 Assign responsibilities to objects

 Apply an iterative & agile Unified


Process (UP)  Design collaborations

 Relate analysis and design artifacts  Design with patterns

 Design with architectural layers


 Read & write high-frequency UML

 Understand OOP (e.g., Java)


mapping issues

introduction iterative UP iterative requirements use cases 3


IntellAgile Priority

 1. Assign responsibilities to objects

 The GRASP patterns are the key learning aid

 After that. . . ?

introduction iterative UP iterative requirements use cases 4


IntellAgile Learning Aids
 This presentation is terse.

 The details are in…

 Carefully study—valuable.

introduction iterative UP iterative requirements use cases 5


IntellAgile Analysis and Design?
 Analysis  Design
 investigation  solution
 what  how
 best qualified…  best qualified…

 Requirements analysis  Object design

 Domain analysis  Database design

 Architectural analysis  UI design

introduction iterative UP iterative requirements use cases 6


IntellAgile Object-Oriented Analysis and Design?
 Object-Oriented Analysis  Object-Oriented
Design
 Important domain concepts
or objects?  Design of software objects

 Vocabulary?  Responsibilities
 Collaborations
 Visualized in the UP
Domain Model  Design patterns

 Visualized in the UP
Design Model

introduction iterative UP iterative requirements use cases 7


IntellAgile Development Method
 OOA/D needs explanation in a method context.

 Thus, an agile UP
 Common, popular

 Just a sample

 Our focus is method-independent core skills, not UP


– Responsibility assignment, design patterns, …

introduction iterative UP iterative requirements use cases 8


IntellAgile Unified Modeling Language (UML)

Just a diagramming notation standard.

Trivial and relatively unimportant.

Not a method, process, or design guide.

Abstract «interface» ClassX


ClassX InterfaceX
classAttribute
... operation1() + publicAttribute
- privateAttribute
attributeWithVisibilityUnspecified
interface attribute1 : type
generalization
implementation burgers : List of VeggieBurger
AlternateUMLFor attribute2 : type = initial value
AbstractClass FinalClass ClassY finalConstantAttribute : int = 5 { frozen }
{abstract} {leaf} /derivedAttribute
operation1()
... ... ... classMethod()
+ «constructor» ClassX(int)
«signal» CaughtException1()
Whole methodWithVisibilityUnspecified()
AlternateUMLFor methodReturnsSomething() : Foo
ImplOfInterfaceX InterfaceX abstractMethod()
1
Composition abstractMethod2() { abstract } // alternate
operation1()
* + publicMethod()
- privateMethod()
Part # protectedMethod()
Associations: ~ packageVisibleMethod()
1 Association-name  1 finalMethod() { leaf }
ClassA ClassB methodWithoutSideEffects() { query }
role-1 role-2
synchronizedMethod() { guarded }

exceptions
AssociationClass ThrownException1

Multiplicity:
zero or
1..40 1..* 5
* Class more; Class
one to
forty
Class one or
more
Class
exactly
five
"many"

introduction iterative UP iterative requirements use cases 9


IntellAgile UML: What’s Important?

introduction iterative UP iterative requirements use cases 10


IntellAgile UML: What’s Important?

Harmful is knowing
how to read and draw
UML diagrams, but
not being an expert in
design and patterns.

Important is object and


architectural design skills, not
UML diagrams, drawing, or
CASE tools.

introduction iterative UP iterative requirements use cases 11


IntellAgile

 Skills self assessment. Examples:

Swallow a sword?
Relatively skilled master
dead

Relatively skilled master


dead

Relatively skilled master


dead

introduction iterative UP iterative requirements use cases 12


IntellAgile Objectives
Skills self assessment:

“Think in objects”
Relatively skilled master
new-ish

Analyze requirements with use cases


Relatively skilled master
new-ish

Create domain models


Relatively skilled master
new-ish

introduction iterative UP iterative requirements use cases 13


IntellAgile Objectives
Skills self assessment:

Apply an iterative & agile process


Relatively skilled master
new-ish

Relate analysis and design artifacts


Relatively skilled master
new-ish

Read and write UML


Relatively skilled master
new-ish

introduction iterative UP iterative requirements use cases 14


IntellAgile Objectives
Skills self assessment:

Assign responsibilities to objects


Relatively skilled master
new-ish

Design collaborations
Relatively skilled master
new-ish

Design with patterns


Relatively skilled master
new-ish

introduction iterative UP iterative requirements use cases 15


IntellAgile Objectives
Skills self assessment:

Design with architectural layers


Relatively skilled master
new-ish

introduction iterative UP iterative requirements use cases 16

You might also like