0% found this document useful (0 votes)
114 views22 pages

MartinFowlerAnalysisPatterns PDF

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
114 views22 pages

MartinFowlerAnalysisPatterns PDF

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Analysis Patterns

Martin Fowler

fowler@
[email protected]
acm.org
http://ourworld
http://ourworld..compuserve.com/homepages/Martin_Fowler
compuserve.com/homepages/Martin_Fowler

Page 1 © Martin Fowler 9/11/99

What we will cover

Introduction

Observation
Patterns

Accounting
Patterns

How to use
Patterns

Page 2 © Martin Fowler 9/11/99

1
Patterns
…projects fail despite the latest technology
for lack of ordinary solutions.

Ralph Johnson and Ward Cunningham

q “Gang of Four”: Design Patterns book


q Pattern Languages of Programming (PLoP)
conferences

A pattern is an idea that has been useful in one practical context


and will probably be useful in others.
[Fowler]

http://www.hillside.net/patterns

Page 3 © Martin Fowler 9/11/99

Design Pattern: Mediator


Mediator Colleague

Concrete Colleague

Concrete Mediator

Concrete Colleague

q Define an object
that encapsulates
how a set of objects
interact.
Gamma, E., Helm, R., Johnson, R. and Vlissides, J. Design
Patterns: elements of reusable object-oriented software,
Addison-Wesley, Reading, MA, 1995.
www.industriallogic.com/papers/learning.html
Page 4 © Martin Fowler 9/11/99

2
Analysis Patterns
q David Hay
â Relational data models
â Not connected with
patterns community, but
still patterns
â Hay, D. Data Model
Patterns: conventions of
thought, Dorset House,
New York, NY, 1996.
q Martin Fowler
â OO conceptual models
â Healthcare, Accounting,
Financial Trading, Planning
â Fowler, M. Analysis
Patterns: reusable object
models, Addison-Wesley,
Reading MA, 1997.
Page 5 © Martin Fowler 9/11/99

Notation
Each customer Each order
may have has a single
many orders customer
Order
Customer placedOn : Date
1 [
dispatch()

Priority
Order

Individual Corporate
Customer Customer An order
may be a
priority order
A customer may be a
corporate customer or an
individual customer

q Interface not implementation


Martin Fowler with Kendall Scott, UML Distilled: Applying the
Standard Object Modeling Language, Addison-Wesley 1997

Page 6 © Martin Fowler 9/11/99

3
Patterns in 3 tier architecture
application
1

application
domain database
2

application
3

q Visibility is from application to domain


q Domain carries shared services
q Applications do not see database
q Patterns used in domain tier

Page 7 © Martin Fowler 9/11/99

Observation Patterns

Introduction

Observation
Patterns

Accounting
Patterns

How to use
Patterns

Page 8 © Martin Fowler 9/11/99

4
Attributes of Person

Person
height : Number
weight : Number
blood glucose level : Number

What are the problems with this model?

Page 9 © Martin Fowler 9/11/99

Quantity
Quantity

amount: Number
Person
units: Unit
height : Quantity
weight : Quantity +, -, *, /
blood glucose level : Quantity <, >, =, <=, >=
as(Unit) : Quantity
toString() : String
valueOf(String) : Quantity

q Define arithmetic operations for quantity


q Money is a kind of quantity
q Use Conversion Ratio to convert to other
units

What if there are tens or hundreds of attributes?

Page 10 © Martin Fowler 9/11/99

5
Measurement
Phenomenon Type

- Martin Fowler is six feet tall


1

[
Person
[ Measurement

amountOf(PhenomenonType) : Quantity amount: Quantity


1

q For each attribute of person, define an


instance of phenomenon type
q To record a value for a person create a
measurement
When should we use this model?
Page 11 © Martin Fowler 9/11/99

Observation
1
Phenomenon Phenomenon Type
[
1 1

[
Category
Observation
[
Observation
Measurement
{overlapping}
[ amount: Quantity

1
Person

amountOf(PhenomenonType) : Quantity
valueOf(PhenomenonType) : Phenomenon

- Martin Fowler is blood group O


- Martin Fowler is Male

Page 12 © Martin Fowler 9/11/99

6
Knowledge and Operational Levels
arguments
[ [
Associative
Phenomenon
Function
[ 1
result
1
Knowledge

Operational

[
Category
Person Observation
Observation
1 [

q Operational
â regular day to day objects
q Knowledge
â Meta-Data
â Objects that capture domain rules
Page 13 © Martin Fowler 9/11/99

Range
Range Magnitude
upper: Magnitude
lower: Magnitude =
isUpperInclusive: Boolean <
isLowerInclusive: Boolean =<
>
includes (Magnitude) : Boolean >=
overlaps (Range) : Boolean
abuts (Range) : Boolean

- Between 10 miles and 50 miles


- 6m < x ≤ 15m

Page 14 © Martin Fowler 9/11/99

7
Phenomenon with Range
1
Range Phenomenon

1
Phenomenon
{phenomena's ranges
Type
should not overlap}

- Normal Heart Rate is 60–80 beats per minute

Page 15 © Martin Fowler 9/11/99

Assigning a phenomenon
new heart rate: normal heart rate: fast heart rate:
a Measurement
Phenomenon Type Phenomenon Phenomenon

phenomenon = phenomenonIncluding(aMeasurement)

includes (aMeasurement)

false

includes (aMeasurement)

true

fastHeartRate

setPhenomenon(fastHeartRate)

Page 16 © Martin Fowler 9/11/99

8
Corporate Finance Problem

q Each month we get a large number of


indicators (revenue, income, units sold…)
q Each indicator is given values for good,
reasonable, poor, or bad
â If revenue is over 105 million that is good,
over 95 is reasonable, over 90 is poor and
under 90 is bad.
q Indicators can be calculated based on
other indicators
â Revenue = income - costs
â Income = units sold * average price

Page 17 © Martin Fowler 9/11/99

Measurement Protocol
[ 1 Measurement [ 1 Phenomenon
Measurement
Protocol {list} Type

Source
Calculated
Measurement
Measurement
Protocol
Protocol

q Source Protocols read from external


systems
q Calculated Protocols are calculations

Page 18 © Martin Fowler 9/11/99

9
Calculated Measurement
result type
Measurement 1 Phenomenon
Protocol [ Type

1 Calculated argument types {list}


Formula Measurement
[ Protocol [

q Calculated measurement protocol has


formula and arguments
- Revenue = Income - Costs
- Income = Number sold X Average Price
- Body Mass Index = weight / height2

Page 19 © Martin Fowler 9/11/99

Creating a Measurement
a Measurement
a Formula
Protocol
create Measurement

find arguments

execute
return quantity

new
a Measurement

q Factory method for measurements

Page 20 © Martin Fowler 9/11/99

10
Observation Patterns

q Quantity
q Measurement
q Observation
q Range
q Phenomenon with Range
q Measurement Protocol

Page 21 © Martin Fowler 9/11/99

Accounting Patterns

Introduction

Observation
Patterns

Accounting
Patterns

How to use
Patterns

Page 22 © Martin Fowler 9/11/99

11
Account
Entry
Account
amount: Money
balance: Money 1 [ whenCharged: Timepoint
whenBooked: Timepoint

{balance = sum(entries)}

q Entries record history of changes to an


account

Where might we use this model?

Page 23 © Martin Fowler 9/11/99

Transaction
Entry
1 [ amount: Money 2..[ 1
Account Transaction

{sum(entries.amount) = 0}

- I withdraw $100 from my checking account


- The Willenhall Coal Company delivers 30 tons of coal to Bilston
Gasworks

Why are transactions useful?

Page 24 © Martin Fowler 9/11/99

12
Posting Rule (simple)

Posting Rule
1
Account multiplier: Number
output
execute()
1
trigger

- 5% of state tax is deducted from gross income

Page 25 © Martin Fowler 9/11/99

Individual Instance Method

Posting Rule
1 Method
calculation

- Income tax is deducted at


15% for first $31,500
output trigger 28% to $80,750
1 1 31% to $130,800

Account …

q Each instance of posting rule has its own


method
q Conceptual statement

Page 26 © Martin Fowler 9/11/99

13
Account Types
output 1
Account Type Posting Rule Method
[
1 1
trigger
Knowledge

Operational

[
Employee
1
Employee
Account [

- Apply the graduated tax algorithm to the gross pay of Doug and
Dinsdale Piranha to yield their net pay.

Page 27 © Martin Fowler 9/11/99

Network of Posting Rules


raw Overtime:
3 hours (Tuesday)
Account Type

straight += input
OT hours PR if (Sunday) excess += input
else excess += input * 0.5

straight OT hours : Excess Hours:


3 hours 1.5 hours
Account Type Account Type

excess = input *
employee.otRate * 2/3
premium = input *
employee.otRate * 1/3
Straight OT Payment out = input * Excess Payment:
: Posting Rule employee.rate Posting Rule

Straight Dollars : Excess Hours: Premium Hours:


$150 $50 $25
Account Type Account Type Account Type

Total Overtime :
$225 Summary Account
Type

Page 28 © Martin Fowler 9/11/99

14
Executing the network
a list of Posting Rules a Posting Rule an Employee input Account output Account

pay (employee) *[for all elements]


run (employee) get account (input account type)

get unprocessed entries

* [for each entry]

execute posting rule


post entry

Page 29 © Martin Fowler 9/11/99

Procedural Approach
H
H

Get straight hours


account
Process Hours

get unprocessed
Dollarize Straight entries
Hours

[for all entries]


[

multiply by rate
Dollarize Excess
Hours

H post to straight
dollars

Page 30 © Martin Fowler 9/11/99

15
Changing the Rules
H
H

Get straight hours


Process Hours account

get unprocessed
Dollarize Straight entries
Hours

[ [for all entries]

[on or after April 15]


Dollarize Excess
[before April 15]
Hours

multiply by rate multiply by rate * 0.9

post to straight
dollars

Page 31 © Martin Fowler 9/11/99

Adding an effectivity time

Posting Rule
output 1
Account Type effectivity: Date Range Method
[
1 1
trigger

[
Employee
1
Employee
Account [

q Add a date range for each posting rule


instance

Page 32 © Martin Fowler 9/11/99

16
New Behavior
a list of Posting Rules a Posting Rule an Employee input Account output Account

pay (employee) *[for all elements]


run (employee) get account (input account type)

get unprocessed entries in (date range)

* [for each entry]

execute posting rule


post entry

Page 33 © Martin Fowler 9/11/99

Implementing with singleton


State Tax PR
state: State
calculate()

{Singleton} {Singleton} {Singleton}


CA Tax PR MA Tax PR NY Tax PR
state: State state: State state: State
calculate() calculate() calculate()

What are the strengths and weaknesses?

Page 34 © Martin Fowler 9/11/99

17
Strategy Pattern
{abstract}
State Tax PR Calculation Strategy
1
state: State
calculate() calculate()

«Method»
return strategy.calculate()

{Singleton} {Singleton} {Singleton}


CA Tax MA Tax NY Tax

calculate() calculate() calculate()

What are the strengths and weaknesses?

Page 35 © Martin Fowler 9/11/99

Parameterized Method
State Tax PR
state: State
rate: Number
calculate() «Method»
multiply by rate

What are the strengths and weaknesses?

Page 36 © Martin Fowler 9/11/99

18
Combining Implementations
State Tax PR
state: State
calculate()

{Singleton} {Singleton}
CA Tax PR Multiplier PR NYTax PR
rate: Number

calculate() calculate() calculate()

q Combination of singleton and


parameterized approaches

Page 37 © Martin Fowler 9/11/99

Posting Rule Execution


q Eager firing
â Fire when entry added to account
â Find all posting rules looking at that account
and fire them (etc, etc)
q Posting rule based
â Have a coordinator which tells posting rules
when to fire
q Account based based
â Have a coordinator tell which accounts when
to fire their outbound posting rules
q Backward Chained
â When you ask an account for its balance
â All input accounts must be asked for value
(etc, etc)

Which would you choose?


Page 38 © Martin Fowler 9/11/99

19
Accounting Patterns

q Account
q Transaction
q Posting Rule
q Individual Instance Method
q Posting Rule Execution
q Posting Rules for Many Accounts
q Accounting Practice

Page 39 © Martin Fowler 9/11/99

How to use Patterns

Introduction

Observation
Patterns

Accounting
Patterns

How to use
Patterns

Page 40 © Martin Fowler 9/11/99

20
Using Patterns
q Starting point for development
â Inspiration to get things going
q Comparison for review
â Why are we different to this pattern?
q Documentation of complex frameworks
â Highlight the key patterns
q Informal standardization
q Mining from legacy systems
q Training
â The next step after basic training

The why is at least as important as the what


Page 41 © Martin Fowler 9/11/99

Learning about Patterns


q Read the books
â Use a book group
â Discuss two chapters a week over lunch
q Take a training course
â Training must emphasize using patterns
â Instructors expertise is central
q Try using the patterns
â You cannot understand a pattern till you
have tried it
â Trying a pattern and finding it does not fit is
valuable
q Write some patterns

http://www.hillside.net/patterns

Page 42 © Martin Fowler 9/11/99

21
Books
q Beck, K. Smalltalk Best Practice Patterns. Volume 1: Coding,
Prentice Hall, Englewood Cliffs, NJ, 1997.
q Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P. and
Stal., M. Pattern-Oriented Software Architecture - A System of
Patterns, John Wiley, 1996.
q Coad, P., North, D. and Mayfield, M. Object Models: strategies,
patterns and applications, Prentice Hall, Englewood Cliffs,
1995.
q Coplien, J.O. and Schmidt, D.C. Pattern Languages of Program
Design, Addison-Wesley, Reading, MA, 1995.
q Gamma, E., Helm, R., Johnson, R. and Vlissides, J. Design
Patterns: elements of reusable object-oriented software,
Addison-Wesley, Reading, MA, 1995.
q Fowler, M. Analysis Patterns, Addison-Wesley, Reading MA,
1997
q Hay, D. Data Model Patterns: conventions of thought, Dorset
House, New York, NY, 1996.
q Vlissides, J.M., Coplien, J.O. and Kerth, N.L. ed.Pattern
Languages of Program Design 2, Addison-Wesley, 1996.

http://www.hillside.net/patterns

Page 43 © Martin Fowler 9/11/99

Final Thoughts
q Patterns are relevant for all aspects of
software engineering
â and for Business Process Reengineering
q Analysis patterns can be used across
traditional vertical business domains
q A model is not right or wrong, only more
or less useful
q Patterns are a starting point, not a final
destination
q Still learning about teaching, using, and
discovering patterns

Page 44 © Martin Fowler 9/11/99

22

You might also like