You are previewing Pattern-Oriented Analysis and Design: Composing Patterns to Design Software Systems.
O'Reilly logo
Pattern-Oriented Analysis and Design: Composing Patterns to Design Software Systems

Book Description

Design patterns are immensely powerful, but to build large-scale robust systems, you need more. Pattern-Oriented Analysis and Design introduces a methodology for "composing" proven design patterns into reliable, robust large-scale software systems. Using POAD, you can quickly build systems that are far more robust, scalable, and maintainable-using UML class diagrams as your building blocks.

  • POAD: What it is, how it works, and what problems it solves

  • Structural and behavioral approaches to design pattern composition

  • Design models and UML techniques for pattern composition

  • POAD processes: in depth coverage of analysis, design, and design refinement

  • A systematic process to compose design patterns

  • 4 chapter-length case studies: feedback control, customer behavior simulation, digital content processing, and distributed medical informatics

  • Building on POAD: advanced trends and research

  • Pattern-Oriented Analysis and Design takes design patterns to the next level. Whether you're an architect, designer, developer, or manager, it will help you build better software systems faster.

    Table of Contents

    1. Copyright
      1. Dedication
    2. Preface
      1. What Do We Reuse?
      2. Composing Design Patterns
      3. POAD
      4. Audience
        1. Prior Knowledge
        2. Scope
        3. How to Read the Book
    3. Foreword
    4. I. Introduction
      1. 1. Pattern-Oriented Analysis and Design
        1. The Role of Patterns in Software Development
        2. Purpose of POAD
        3. Pattern-Oriented Design Issues
        4. POAD Is a Solution
        5. What Is Covered in this Book?
      2. 2. Design Patterns and Software Engineering
        1. Design Patterns in the Software Lifecycle
        2. POAD and OO Technology
        3. Design Patterns
          1. What Is a Pattern?
          2. History of Patterns
          3. The Pattern Lifecycle
        4. Design Frameworks
          1. What Is a Framework?
          2. Developing Robust Designs using Frameworks
          3. The Role of Patterns in Developing OO Frameworks
        5. Design Pattern Composition Approaches
        6. Summary
      3. 3. Composition of Design Patterns
        1. Behavioral Composition Techniques
          1. Object-Oriented Role Analysis and Software Synthesis
          2. Composing Design Patterns Using Roles
          3. Architecture Fragments and Superimposition
          4. Role/Type/Class Modeling
        2. Structural Composition of Design Patterns
          1. A Pattern-Oriented Composition Technique
          2. Software Composition at the Design Level Using Design Components
          3. Component-Based Frameworks Using Patterns
          4. The Catalysis Approach
          5. Composition Patterns, Subject-Oriented Programming, and Aspect-Oriented Software Development
        3. Further Reading
    5. II. Technological Aspects of POAD
      1. 4. Constructional Design Patterns as Components
        1. Which Patterns to Use in POAD
        2. Software Components
          1. A Design Component
          2. Constructional Design Patterns
        3. Specifying a Pattern as a Component
          1. A Recipe
          2. Formal Specification
          3. Interface Specification
        4. Component Interfaces
          1. Module Interconnection Languages
          2. Interface Definition Language
          3. Interfaces for Object-Oriented Components
          4. Application/Platform Interfaces
        5. Interface Properties
          1. Type
          2. Role
          3. Nature
          4. Dynamism
          5. Description
          6. Multiplicity
        6. Pattern Interfaces
        7. Summary
      2. 5. Visual Design Models
        1. Pattern Composition Models
        2. Pattern-Level Model
          1. Schematic Diagram
          2. Relationships
          3. Design Decisions
          4. UML Syntax Support
          5. Example
        3. Pattern-Level with Interfaces Model
          1. Schematic Diagram
          2. Relationships
          3. Design Decisions
          4. UML Syntax Support
          5. Example
        4. Detailed Pattern-Level Model
          1. Schematic Diagram
          2. Relationships
          3. Design Decisions
          4. UML Syntax Support
          5. Example
        5. Characteristics of the POAD Design Models
          1. Hierarchy
          2. Traceability
          3. Composability
        6. Summary
      3. 6. UML Support for Design Patterns
        1. Patterns as Mechanisms
        2. Architectural Patterns
        3. Patterns as Packages
        4. Patterns and Components
        5. Modeling Pattern-Oriented Designs
        6. A Comparison
        7. Summary
    6. III. Process Aspects of POAD
      1. 7. POAD: The Process
        1. Stringing Versus Overlapping
        2. POAD Process Outline (The Nutshell)
          1. Analysis Phase
            1. Purpose
            2. Process
            3. Product
          2. Design Phase
            1. Purpose
            2. Process
            3. Product
          3. Design Refinement Phase
            1. Purpose
            2. Process
            3. Product
        3. POAD and Code Generation
        4. POAD Characteristics
          1. Pattern-Driven
          2. Component-Based Development
          3. Architectural Development
          4. Library-Driven Development
          5. Design Reuse
          6. Hierarchical Development
          7. Iterative Development
        5. Pattern-Oriented Frameworks
          1. Pattern-Level Instantiation
          2. Class-Level Instantiation
        6. Benefits and Limitations
          1. Benefits
          2. Limitations
        7. Summary
      2. 8. Analysis Phase
        1. Overview
        2. Requirements Analysis
          1. Purpose
          2. Process
            1. Finding Components
            2. Assigning Responsibilities to Components
            3. Relationship to Software Architecture
            4. Analyzing Large Applications
            5. Iterating with Other Analysis Activities
          3. Product
          4. Analysis Tips
        3. Acquaintance
          1. Purpose
          2. Process
            1. Pattern Database Activities
            2. What Is Acquaintance?
            3. What versus How!
            4. Rationale and Example
            5. Iteration
          3. Product
          4. Analysis Tips
        4. Retrieval
          1. Purpose
          2. Process
            1. Software Asset Libraries
            2. The Database Query
            3. Retrieval Goals
            4. A True Pattern Library
            5. Practical Guidelines for Matching Criteria
          3. Product
          4. Analysis Tips
        5. Pattern Selection
          1. Purpose
          2. Process
            1. Problem-Solution Matching
            2. Selection Is Difficult
            3. Iteration
            4. Using Domain-Specific Libraries
            5. Study Relationships Between Patterns
          3. Product
          4. Analysis Tips
        6. Summary
      3. 9. Design Phase
        1. Overview
        2. Constructing Pattern-Level Models
          1. Purpose
          2. Process
            1. Creating Pattern Instances
            2. Multiple Instances of the Same Type
            3. Defining Pattern Instance Relationships
            4. Develop the Pattern-Level Diagrams
            5. Subsystems and Frameworks
          3. Product
          4. Design Tips
        3. Constructing Pattern-Level with Interfaces Models
          1. Purpose
          2. Process
            1. Exposing the Pattern Instance Interfaces
            2. Identifying Relationships Between Pattern Instance Interfaces
            3. Interface Relationships
          3. Product
          4. Design Tips
        4. Constructing Detailed Pattern-Level Models
          1. Purpose
          2. Process
            1. Explore the Pattern Structure
            2. Dynamic Aspects Are Also Important
            3. Realization of the Interface
          3. Product
          4. Design Tips
        5. Summary
      4. 10. Design-Refinement Phase
        1. Overview
        2. Instantiating Pattern Internals
          1. Purpose
          2. Process
            1. Specialization (Generic to Application-Specific)
            2. Instantiation Through Subclassing and Realization
            3. Keeping the History of the Participants' Names
            4. Concretization
            5. The Scope
          3. Product
          4. Design-Refinement Tips
        3. Developing the Initial Class Diagram
          1. Purpose
          2. Process
            1. Revealing the Instantiated Pattern Internals
            2. Tracing the Pattern Interfaces to Internal Realization
            3. Tracing the Relationships Between Pattern Instances
          3. Product
          4. Design-Refinement Tips
        4. Design Optimization
          1. Purpose
          2. Process
            1. Reduction
            2. Merging and Grouping
          3. Product
          4. Design-Refinement Tips
        5. Using POAD for Developing Frameworks
        6. Summary
    7. IV. Case Studies
      1. 11. Feedback Control Systems
        1. POAD Analysis for the Feedback Control Framework
          1. Requirements Analysis
          2. Pattern Selection
        2. POAD Design for the Feedback Control Framework
          1. Constructing Pattern-Level Diagrams
          2. Constructing the Pattern-Level with Interfaces Diagram
          3. Constructing Detailed Pattern-Level Diagrams
        3. POAD Design Refinement for the Feedback Control Framework
          1. Instantiating Pattern Internals
          2. Developing an Initial Class Diagram
            1. How About Code Generation?
          3. Design Optimization
            1. Reduction
            2. Grouping
        4. Example: Quality Control in Production Lines
          1. System Description
          2. Application-Specific Considerations
          3. Instantiation of the framework
        5. Sample Implementation
        6. Summary
      2. 12. Simulation of Waiting Queues
        1. Background and Requirements
          1. Domain Engineering
          2. Application Engineering
        2. POAD Analysis for the Waiting-Queues Simulation Architecture
          1. Requirements Analysis
          2. Acquaintance and Retrieval
          3. Pattern Selection
        3. POAD Design for the Waiting-Queues Simulation Architecture
          1. Constructing Pattern-Level Diagrams
          2. Constructing Pattern-Level with Interfaces Diagrams
          3. Constructing Detailed Pattern-Level Diagrams
        4. POAD Design Refinement for the Waiting-Queues Simulation Architecture
          1. Instantiating Pattern Internals
          2. Developing an Initial Class Diagram
            1. How About Code Generation?
          3. Design Optimization
        5. Sample Implementation
        6. Summary
      3. 13. A Digital Content Remastering Application
        1. Document Understanding
          1. Applications and Systems
          2. A DCRM System
          3. DCRM Subsystems
        2. Pattern-Oriented Analysis and Design for the Distribution Subsystem
          1. POAD Analysis for the DCRM Distribution Subsystem
            1. Requirements Analysis
            2. Acquaintance and Retrieval
            3. Pattern Selection
          2. POAD Design for the DCRM Distribution Subsystem
            1. Constructing the Pattern-Level Diagram
          3. Constructing the Pattern-Level with Interfaces Diagram
          4. Constructing the Detailed Pattern-Level diagrams
          5. POAD Design Refinement for the DCRM Distribution Subsystem
            1. Instantiating Pattern Internals
            2. Developing an Initial Class Diagram
            3. Design Optimization
        3. Pattern-Oriented Analysis and Design for the Filtering Subsystem
          1. POAD Analysis for the DCRM Filtering Subsystem
            1. Requirements Analysis
            2. Acquaintance and Retrieval
            3. Pattern Selection
          2. POAD Design for the DCRM Filtering Subsystem
            1. Constructing the Pattern-Level diagram
            2. Constructing Pattern-Level with Interfaces Diagram
            3. Constructing Detailed Pattern-Level View
          3. POAD Design Refinement for the DCRM Filtering Subsystem
            1. Instantiating Pattern Internals
            2. Developing an Initial Class Diagram
            3. Design Optimization
        4. Summary
      4. 14. A Medical Informatics System
        1. Medical Informatics Standards
        2. Digital Imaging and Communication in Medicine (DICOM)
          1. Specification Versus Implementation
          2. DICOM Scope
          3. A Client/Server Architecture
        3. Pattern-Oriented Analysis and Design of the DICOM UL
          1. POAD Analysis for DICOM Upper-Layer Subsystem
            1. Requirements Analysis
            2. Acquaintance and Retrieval
            3. Pattern Selection
          2. POAD Design for DICOM Upper-Layer Subsystem
            1. Constructing Pattern-Level Diagrams
            2. Constructing Pattern-Level with Interfaces Diagrams
            3. Constructing Detailed Pattern-Level Diagrams
          3. POAD Design Refinement for the DICOM Upper-Layer Subsystem
            1. Instantiating Pattern Internals
            2. Developing an Initial Class Diagram
            3. Design Optimization
          4. POAD is Simple Process for Designing Reactive Systems
        4. Pattern-Oriented Analysis and Design for the Client Application Entity
          1. POAD Analysis for the Client Application Entity
            1. Requirements Analysis
            2. Acquaintance and Retrieval
            3. Pattern Selection
              1. The Client User Interface
              2. Command Interpreter
              3. Service Object Pairs
              4. Protocol Machine
              5. Message Coordinator
              6. DICOM UL Client
          2. POAD Design for the Client Application Entity
            1. Constructing Pattern-Level Diagrams
            2. Constructing Pattern-Level with Interfaces Diagrams
            3. Constructing Detailed Pattern-Level Diagram
          3. POAD Design Refinement for the Client Application Entity
            1. Instantiating Pattern Internals
            2. Developing an Initial Class Diagram
            3. Design Optimization
        5. Summary
    8. V. Automation and Summary
      1. 15. Relation to UML Metamodel and Specification
        1. Syntax Is Not Enough
        2. The Object Constraint Language
          1. What Is OCL?
          2. Using OCL
        3. Adding POAD Constructs to the UML Metamodel
        4. Abstract Syntax
          1. Pattern
            1. Attributes
          2. PatternDependency
            1. Associations
          3. PatternAssociation
            1. Associations
          4. PatternInfo
          5. PatternInterface
            1. Associations
          6. PatternKind
          7. PatternPresentation
          8. InterfaceBinder
        5. Well-Formedness Rules
          1. Pattern
          2. PatternDependency
          3. PatternAssociation
          4. PatternInterface
          5. InterfaceBinder
        6. Semantics
          1. Pattern
          2. Relationships
        7. Summary
      2. 16. Tool Support for Designing with Patterns
        1. The Need for Tool Support
        2. Pattern Tools
          1. Framework Adaptive Composition Environment
          2. Fragmentation Technique
          3. PSiGene
          4. Code Generation
          5. The Pattern Lint
          6. Hooks and Templates
          7. TogetherSoft
        3. Requirements and Features of a POAD Tool
          1. Patterns as First-Class Design Elements
          2. POAD Hierarchical Models
          3. Traceability
          4. Pattern Repository
          5. Models with Memory
          6. Pattern instantiation
        4. Summary
      3. 17. Wrapping Up
        1. Systematic Composition of Design Pattern
        2. POAD Characteristics
        3. POAD and Software Reuse
        4. Applying POAD
        5. Pattern Literature
        6. Future Trends in Pattern Composition
        7. Conclusion
      4. A. Interfaces for Constructional Design Patterns
        1. Strategy Pattern
        2. Observer Pattern
        3. Composite Pattern
        4. Reactor Pattern
        5. Templatemethod Pattern
        6. Proxy Pattern
        7. Abstractfactory Pattern
        8. Builder Pattern
        9. Mediator Pattern
        10. Command Pattern
      5. B. State of the Art and Practice in Design Patterns
        1. Pattern Mining
        2. Pattern Description Formats (Templates)
        3. Tool Support
        4. Pattern Formalism
        5. Pattern Languages
        6. Pattern-Based Implementation
        7. More Challenges
          1. Formal Specification of Design Patterns
          2. Pattern Instantiation and Implementation
          3. Development Methodologies
          4. Documentation of Design Patterns
          5. Evaluating Existing Design Patterns
    9. Glossary
    10. Bibliography