Introduction to Pattern Oriented Analysis and Design (POAD) - - PowerPoint PPT Presentation

introduction to pattern oriented analysis and design poad
SMART_READER_LITE
LIVE PREVIEW

Introduction to Pattern Oriented Analysis and Design (POAD) - - PowerPoint PPT Presentation

Introduction to Pattern Oriented Analysis and Design (POAD) Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU Outline Review of Design Patterns The Lifecycle of a Pattern Examples of Design


slide-1
SLIDE 1

Introduction to Pattern Oriented Analysis and Design (POAD)

Instructor: Dr. Hany H. Ammar

  • Dept. of Computer Science and

Electrical Engineering, WVU

slide-2
SLIDE 2

Outline

 Review of Design Patterns

– The Lifecycle of a Pattern

– Examples of Design Patterns  The Command Pattern  The Observer Pattern  The Strategy Pattern  Pattern Oriented Development – The Analysis phase – The Design phase – The design refinement phase  The Feedback Control Example

slide-3
SLIDE 3

The Lifecycle of Patterns

Real World Projects Pattern Mining Discover Patterns Incident Occurrence of a Pattern Preliminary Documentati

  • n

Document Analyze/Rule of Three Author Version Document Pattern Polishing Reusable Version Pattern Reuse Feedback Modification

Phase I: MINING Author World Phase II: POLISHING Pattern Community World Phase III: REUSE Pattern User World

Legend Activit y Produc t

(From the Reference “Pattern-Oriented Analysis and Design”,

Sherif M Yacoub and Hany H. Ammar Addison-Wesley Inc., 2004)

slide-4
SLIDE 4

Review of Design Patterns

 Examples of Design Patterns (From the Design Patterns CD by Gamma et al, Addison-Wesley Inc., 1998 )

The Command Pattern: Encapsulate a request as

an

  • bject
slide-5
SLIDE 5

Review of Design Patterns

The Command Pattern

From the Design Patterns CD by Gamma et al, Addison-Wesley Inc., 1998

slide-6
SLIDE 6

Review of Design Patterns

Examples of Design Patterns The Observer Pattern: when one object changes state,

all its dependents are notified and updated automatically Model View Controller example

slide-7
SLIDE 7

Review of Design Patterns

Examples of Design Patterns The Observer Pattern class diagram

From the Design Patterns CD by Gamma et al, Addison-Wesley Inc., 1998

slide-8
SLIDE 8

Review of Design Patterns

Examples of Design Patterns The Strategy Pattern: lets the algorithm vary independently from clients that use it

slide-9
SLIDE 9

Pattern Oriented Development

 Design Patterns are used in an ad-hoc

strategy for design refinement

 They are also used to address a set of design

problems without any guidance of how these patterns can be glued or interface together

 Is there a way to use design patterns as

building blocks or as components in the design of systems ?

slide-10
SLIDE 10

Pattern Oriented Development

 Pattern Oriented Analysis and Design

(POAD)

The process aspects of POAD explains

the phases and steps to develop an application design using patterns

the POAD process has three phases:

Analysis

Design

Design Refinement

slide-11
SLIDE 11

Pattern Oriented Development

Analysis Design Design Refinement

a logical model is developed and patterns are selected where patterns are glued together to produce a detailed pattern-level diagram An initial class diagram, and a more dense and profound class diagram, and sequence diagrams are developed

slide-12
SLIDE 12

Acquaintan ce Pattern Library Candidate Patterns Selection Selected Patterns Application Requirements Requirem ent Analysis Required Conceptual Components Retrieval Pattern-Level Diagrams Constructing Pattern-Level models Create Pattern Instances Define Pattern Relationships Construct Pattern-Level Diagrams Constructing models for Pattern-Level with Interfaces Pattern-Level with Interfaces Diagrams Declare Pattern Interfaces Identify Relationships between Pattern Interfaces Constructing models for Detailed Pattern-Level Detailed Pattern- Level Diagrams Selected Patterns

(c) Design

Instantiating Pattern Internals Domain Specific Detailed Pattern-Level Diagrams Specializatio n Concretizatio n Develop Class Diagrams Initial UML class diagram Design Optimization Reductio n Merging & Grouping Optimized class diagram Detailed Pattern- Level Diagrams

(d) Design Refinement Analysis Design Design Refinement (b) Analysis (a) Overall POAD

The POAD process

a) overall phases, b) analysis, c) design, and d) design refinement

slide-13
SLIDE 13

POAD Analysis Phase

Develop use case diagrams to identify the

problems to be solved and the possible breakdown

  • f the application as a set of logical components.

Acquaintance with relevant pattern databases to get the analyst familiar with existing solutions.

 Retrieval of patterns from the domain specific

databases to select a set of candidate patterns in an automated fashion.

 Selection of patterns from a set of candidate

patterns for possible inclusion in the design process.

slide-14
SLIDE 14

Construct Pattern-Level Models

 Create an instance for each selected pattern

by describing the patterns and their constituents in an application specific context

 Define how these instances are related to

each other

 The semantic of a dependency relationship

used between patterns has a "uses" meaning

slide-15
SLIDE 15

The Feedback Control Example

 Block diagram for a feedback control

system

Reference Input Measurement Feedback Data Error (Actuating) Signal Feed forward Elements Feedback Elements Plant. + + Controlled Output

From Pattern-Oriented Analysis and Design, Sherif M Yacoub and Hany H. Ammar Addison-Wesley Inc., 2004

slide-16
SLIDE 16

The Feedback Control Example

 POAD Analysis Phase (Pattern Selection)

– The feedforward component implements some sort of a

control strategy (instance of Strategy pattern)

– The feedback component receives measurements and applies

a feedback control strategy

– In the error calculation component, the feedback controller

notifies the error calculation unit with the feedback data (instances of the Observer pattern)

– Data of different types need to be exchanged between the

framework components (Measurement, Feedback Data, input data , and error data )

slide-17
SLIDE 17

The Feedback Control Example

FeedforwardStrategy <<Strategy>> FeedbackObserver <<Observ er>> FeedbackStrategy <<Strategy>> ErrorObserver <<Observ er>> Blackboard <<Blackboard>> Apply forward control strategy Manipluate Data Plant Apply feedback control strategy Manipulate Data Calculate Error Manipluate Data

Pattern-Level diagram for feedback control system

This is an architectural pattern based on the data flow architectural style

slide-18
SLIDE 18

The Feedback Control Example

FeedforwardStrategy (from POAD1-Feedback) <<Strategy>> FeedbackObserver <<Observer>> (from POAD1-Feedback) FeedbackStrategy <<Strategy>> (from POAD1-Feedback) ErrorObserver <<Observer>> (from POAD1-Feedback) Blackboard <<Blackboard>> (from POAD1-Feedback) Context Update Notify Context Update Notify setData getData

Pattern-Level with Interfaces

slide-19
SLIDE 19

The Feedback Control Example

FeedforwardStrategy (from POAD1-Feedback) <<Strategy>> Feedback Observ er (from POAD1-Feedback) <<Observer>> Feedback Strategy (from POAD1-Feedback) <<Strategy>> ErrorObserver (from POAD1-Feedback) <<Observer>> Black board (from POAD1-Feedback) <<Black board>> Context Update Notify Context Update Notify setData getData

ConcreteOb server
  • bserverState
Update() ConcreteS ubject subjectState getState() Subject Attach() Detach() Notify() Observer Update()

n

Subject Attach() Detach() Notify() Observer Update() ConcreteObserver
  • bserverState
Update() ConcreteSubject subjectState getState()

n

ConcreteStrate gyA AlgorithmInterface() ConcreteStrate gyB AlgorithmInterface() Context ContextInterface() Strategy AlgorithmInterface() Context ContextInterface() Strategy AlgorithmInterface() ConcreteStrategyB AlgorithmInterface() ConcreteStrategyA AlgorithmInterface() ConcreteDataHolderA ConcreteDataHolderB Blackboard setData() getData() DataHolder

n

Detailed Pattern-Level diagram

slide-20
SLIDE 20

The Feedback Control Example

ErrorObserver (from POAD1-Feedback) <<Observer>>

ErrorObserver

  • bserverState

Update() FeedbackSu bject subjectState GetState() AbstractSubject Attach() Detach() Notify() AbstractObserver Update()

n Update Notify

Instantiating the ErrorObserver pattern

slide-21
SLIDE 21

The Feedback Control Example

FeedforwardStrategy (from POAD1-Feedback) <<Strategy>>

ConcreteStrategyA AlgorithmInterface() ConcreteStrategyB AlgorithmInterface() AbstractController AlgorithmInterface() Controller ContextInterface()

Controller

Instantiating the FeedforwardStrategy pattern

slide-22
SLIDE 22

The Feedback Control Example

Blackboard (from POAD1-Feedback) <<Blackboard>>

Blackboard setData() getData() DataHolder

getData setData n

ErrorData MeasuredData FeedbackData

Instantiating the Blackboard pattern

slide-23
SLIDE 23

The Feedback Control Example

DataHolder ErrorData MeasuredData FeedbackData AbstractObserver Update() AbstractSubject Attach() Detach() Notify()

n

AbstractController AlgorithmInterface() ConcreteStrategyB AlgorithmInterface() ConcreteStrategyA AlgorithmInterface() FBAbstractController AlgorithmInterface() FBConcreteStrategyB AlgorithmInterface() FBConcreteStrategyA AlgorithmInterface() Feedback ContextInterface() FeedbackSubject subjectState GetState() ErrorObserver

  • bserverState

Update() Controller ContextInterface() Blackboard setData() getData()

n

AbstractObserver Update() AbstractSubject Attach() Detach() Notify() MeasurementSubject subjectState GetState()

n

FeedbackObserver

  • bserverState

Update()

The initial class diagram

slide-24
SLIDE 24

The Feedback Control Example

DataHolder ErrorData MeasuredData FeedbackData AbstractObserver Update() AbstractSubject Attach() Detach() Notify() ConcreteStrategyB AlgorithmInterface() ConcreteStrategyA AlgorithmInterface() FBConcreteStrategyB AlgorithmInterface() FBConcreteStrategyA AlgorithmInterface() ErrorObserver

  • bserverState

Update() Controller ContextInterface() Blackboard setData() getData()

n n n

MeasurementSubject subjectState GetState()

FeedbackSubjectObserver

AbstractController AlgorithmInterface()

The refined class diagram ready for code generation

slide-25
SLIDE 25

The Feedback Control Example

 Object Collaboration Diagram

Measurement : MeasurementSubject Error : ErrorObserver F_controller : AbstractController Strategy1 : ControlStrategyA FB_Strategy : FBControlStrategyA 5: MeasurePlant ( ) Feedback : FeedbackSubjectObserver TheBlackboard: Blackboard 9: Notify() 12: GetInput() 13: Analyze() 7: FBApply () 8: Update () 10: Update() 11: Getstate() 3: Update ( ) 4: GetState ( ) 6: Update () 15: Control (DataHolder*) 14: Update () 1: Apply (DataHolder*) 2: Notify ( )