PART I INTRODUCTION
1 Pattern-Oriented Analysis and Design 3
The Role of Patterns in Software Development 3
Purpose of POAD 3
Pattern-Oriented Design Issues 4
POAD Is a Solution 5
What Is Covered in this Book? 6
2 Design Patterns and Software Engineering 7
Design Patterns in the Software Lifecycle 7
POAD and OO Technology 8
Design Patterns 10
What Is a Pattern? 10
History of Patterns 11
The Pattern Lifecycle 12
Design Frameworks 14
What Is a Framework? 14
Developing Robust Designs Using Frameworks 15
The Role of Patterns in Developing O0 Frameworks 16
Design Pattern Composition Approaches 17
Summary 17
3 Composition of Design Patterns 19
Behavioral Composition Techniques 20
Object-Oriented Role Analysis and Software Synthesis 21
Composing Design Patterns Using Roles 25
Architecture Fragments and Superimposition 27
Role/Type/Class Modeling 29
Structural Composition of Design Patterns 32
A Pattern-Oriented Composition Technique 33
Software Composition at the Design Level
using Design Components 34
Component-Based Frameworks Using Patterns 35
The Catalysis Approach 36
Composition Patterns, Subject- Oriented Programming,
and Aspect-Oriented Software Development 38
Further Reading 41
PART II TECHNOLOGICAL ASPECTS OF POAD
4 Constructional Design Patterns as Components
Which Patterns to Use in POAD 47
Software Components 49
A Design Component 50
Constructional Design Patterns 51'
Specifying a Pattern as a Component 52
A Recipe 52
Formal Specification 52
Interface Specification 53
Component Interfaces 53
Module Interconnection Languages 53
Interface Definition Language 54
Interfaces for Object-Oriented Components 55
Application/Platform Interfaces 55
Interface Properties 56
Type 56
Role 56
Nature 57
Dynamism 57
Description 57
Multiplicity 57
Pattern Interfaces 58
Summary 60
5 Visual Design Models 61
Pattern Composition Models 61
Pattern-Level Model 63
Schematic Diagram 63
Relationships 64
Design Decisions 65
UML Syntax Support 65
Example 65
Pattern-Level with Interfaces Model 66
Schematic Diagram 66
Relationships 67
Design Decisions 67
UML Syntax Support 67
Example 68
Detailed Pattern-Level Model 68
Schematic Diagram 69
Relationships 69
Design Decisions 70
UML Syntax Support 70
Example 70
Characteristics of the POAD Design Models 71
Hierarchy 71
Traceability 72
Composability 72
Summary 72
6 UML Support for Design Patterns 73
Patterns as Mechanisms 74
Architectural Patterns 78
Patterns as Packages 79
Patterns and Components 82
Modeling Pattern-Oriented Designs 82
A Comparison 83
Summary 84
PART III PROCESS ASPECTS OF POAD
7 POAD: The Process 87
Stringing Versus Overlapping 87
POAD Process Outline (The Nutshell) 92
Analysis Phase 95
Design Phase 96
Design Refinement Phase 97
POAD and Code Generation 97
POAD Characteristics 99
Pattern-Driven 99
Component-Based Development 99
Architectural Development 100
Library-Driven Development 100
Design Reuse 100
Hierarchical Development 101
Iterative Development 101
Pattern-Oriented Frameworks 102
Pattern-Level Instantiation 102
Class-Level Instantiation 102
Benefits and Limitations 103
Benefits 103
Limitations 104
Summary 104
8 Analysis Phase 105
Overview 105
Requirements Analysis 107
Purpose 107
Process 107
Product 110
Analysis Tips 110
Acquaintance 110
Purpose 110
Process IlO
Product 112
Analysis Tips 113
Retrieval 113
Purpose 113
Process 113
Product 116
Analysis Tips 116
Pattern Selection 117
Purpose 117
Process 117
Product 119
Analysis Tips 119
Summary 120
9 Design Phase 121
Overview 121
Constructing Pattern-Level Models 123
Purpose 123
Process 123
Product 126
Design Tips 126
Constructing Pattern-Level with Interfaces Models 126
Purpose 126
Process 127
Product 129
Design Tips 129
Constructing Detailed Pattern-Level Models 130
Purpose 130
Process 130
Product 132
Design Tips 132
Summary 132
10 Design-Refinement Phase 135
Overview 135
Instantiating Pattern Internals 137
Purpose 137
Process 137
Product 140
Design-RefinementTips 140
Developing the Initial Class Diagram 141
Purpose 141
Process 141
Product I44
Design-RefinementTips 144
Design Optimization 145
Purpose 145
Process 145
Product 150
Design-Refinement Tips 150
Using POAD for Developing Frameworks 150
Summary 151
PART IV CASE STUDIES
11 Feedback Control Systems 155
POAD Analysis for the Feedback Control Framework 156
Requirements Analysis 156
Pattern Selection 158
. POAD Design for the Feedback Control Framework 159
Constructing Pattern-Level Diagrams 159
Constructing the Pattern-Level with Interfaces Diagram 160
Constructing Detailed Pattern-Level Diagrams ' 161
POAD Design Refinement for the Feedback Control Framework 163
Instantiating Pattern Internals 163
Developing an Initial Class Diagram 166
Design Optimization 168
Example: Quality Control in Production Lines 173
System Description 173
Application-Specific Considerations 175
Instantiation of the Framework 175
Sample Implementation 178
Summary 187
12 Simulation of Waiting Queues 189
Background and Requirements 189
Domain Engineering 190
Application Engineering 191
POAD Analysis for the Waiting-Queues Simulation Architecture 192
Requirements Analysis 192
Acquaintance and Retrieval 193
Pattern Selection 194
POAD Design for the Waiting-Queues Simulation Architecture 195
Constructing Pattern-Level Diagrams 195
Constructing Pattern-Level with Interfaces Diagrams 196
Constructing Detailed Pattern-Level Diagrams 197
POAD Design Refinement for the Waiting-Queues Simulation
Architecture 197
Instantiating Pattern Internals 197
Developing an Initial Class Diagram 201
Design Optimization 207
Sample Implementation 209
Summary 235
13 A Digital Content Remastering Application 237
Document Understanding 237
Applications and Systems 237
A DCRM System 239
DCRM Subsystems 241
Pattern-Oriented Analysis and Design for the Distribution Subsystem 242
POAD Analysis for the DCRM Distribution Subsystem 242
POAD Design for the DCRM Distribution Subsystem 244
Constructing the Pattern-Level with Interfaces Diagram 244
Constructing the Detailed Pattern-Level Diagrams 245
POAD Design Refinement for the DCRM Distribution Subsystem 24.'
Pattern-Oriented Analysis and Design for the Filtering
Subsystem 250
POAD Analysis for the DCRM Filtering Subsystem 250
POAD Design for the DCRM Filtering Subsystem 253
POAD Design Refinement for the DCRM Filtering Subsystem 256
Summary 263
14 A Medical Informatics System 265
Medical Informatics Standards 265
Digital Imaging and Communication in Medicine (DICOM) 266
Specification Versus Implementation 266
DICOM Scope 267
A Client/ServerArchitecture 269
Pattern-Oriented Analysis and Design of the DICOM UL 270
POAD Analysis for DICOM Upper-Layer Subsystem 271
POAD Design for DICOM Upper-Layer Subsystem 278
POAD Design Refinement for the DICOM Upper-Layer Subsystem 284
POAD is Simple Process for Designing Reactive Systems 286
Pattern-Oriented Analysis and Design for the Client Application Entity 286
POAD Analysis for the Client Application Entity 286
POAD Design for the Client Application Entity 290
POAD Design Refinerhent for the Client Application Entity 294
Summary 298
PARTV AUTOMATION AND SUMMARIES
15 Relation to UML Metamodel and Specification 303
Syntax is Not Enough 303
The Object Constraint Language 304
What Is OCL? 304
Using OCL 305
Adding POAD Constructs to the UML Metamodel 305
Abstract Syntax 307
Pattern 308
PatternDependency 312
PatternAssociation 312
Patternlnfo 312
Patternlnterface 313
PatternKind 313
PatternPresentation 313
InterfaceBinder 314
Well-Formedness Rules 314
Pattern 314
PatternDependency 315
PatternAssociation 316
Patternlnterface 317
InterfaceBinder 317
Semantics 318
Pattern 318
Relationships 319
Summary 319
16 Tool Support for Designing with Patterns 321
The Need for Tool Support 321
Pattern Tools 322
Framework Adaptive Composition Environment 322
Fragmentation Technique 324
PSiGene 326
Code Generation 327
The Pattern Lint 328
Hooks and Templates 329
TogetherSoft 330
Requirements and Features of a POAD Tool 331
Patterns as First-Class Design Elements 331
POAD Hierarchical Models 332
Traceability. 332
Pattern Repository 334
Models with Memory 334
Pattern Instantiation 335
Summary 335
17 Wrapping Up 337
Systematic Composition of Design Pattern 337
POAD Characteristics 338
POAD and Software Reuse 339
Applying POAD 340
Pattern Literature 341
Future Trends in Pattern Composition 342
Conclusion 344
A Interfaces for Constructional Design Patterns 345
Strategy Pattern 345
Observer Pattern 345
Composite Pattern 346
Reactor Pattern 346
TemplateMethod Pattern 347
Proxy Pattern 347
AbstractFactory Pattern 348
Builder Pattern 348
Mediator Pattern 349
Command Pattern 349
B State of the Art and Practice in Design Patterns 351
Pattern Mining 351
Pattern Description Formats (Templates) 351
Tool Support 352
Pattern Formalism 352
Pattern Languages 353
Pattern-Based Implementation 353
More Challenges 354
Formal Specification of Design Patterns 354
Pattern Instantiation and Implementation 354
Development Methodologies 355
Documentation of Design Patterns 355
Evaluating Existing Design Patterns 355
Glossary 357
Bibliography 361