Preface
PART I OVERVIEW
Chapter 1 A Tour of Catalysis
1.1 Objects and Actions
1.2 Refinement: Objects and Actions at Different Scales
1.3 Development Layers
1.4 Business Modeling
1.5 Model Frameworks as Templates
1.6 Zooming In on the Software: System Context
1.7 Requirements Specification Models
1.8 Components
1.9 Assigning Responsibilities
1.10 Object-Oriented Design
1.11 The Development Process
1.12 Three Constructs Plus Frameworks
1.13 Three Levels of Modeling
1.14 Three Principles
1.15 Summary
PART II MODELING WITH OBJECTS
Chapter 2 Static Models: Object Attributes and Invariants
2.1 What Is a Static Model?
2.2 Object State: Objects and Attributes
2.3 Implementations of Object State
2.4 Modeling Object State: Types, Attributes, and Associations
2.5 Static Invariants
2.6 The Dictionary
2.7 Models of Business; Models of Components
2.8 Static Models: Summary
Chapater 3 Behavior Models: Object Types and Operations
3.1 Object Behavior: Objects and Actions
3.2 More Precise Action Specifications
3.3 Two Java Implementations of a Calendar
3.4 Type Specification of Calendar
3.5 Actions with Invariants
3.6 Interpreting an Action Specification
3.7 Subtypes and Type Extension
3.8 Factoring Action Specifications
3.9 State Charts
3.10 Outputs of Actions
3.11 Subjective Model: The Meaning of Containment
3.12 Type Specifications: Summary
3.13 Programming Language: Classes and Types
Chapter 4 Interaction Models: Use Cases, Actions, and Collaborations
4.1 Designing Object Collaborations
4.2 Actions (Use Cases) Abstract Complex Interactions
4.3 Use Cases Are Joint Actions
4.4 Actions and Effects
4.5 Concurrent Actions
4.6 Collaborations
4.7 Uses of Collaborations
4.8 Collaboration Specification
4.9 Collaborations: Summary
Chapter 5 Effective Documentation
5.1 What's It All For?
5.2 Documentation Is Easy and Fun, and It Speeds Design
5.3 Reaching the Documentation Audience
5.4 The Main Documents: Specification and Implementation
5.5 Documenting Business Models
5.6 Documenting Component Specifications
5.7 Documenting Component Implementations
5.8 Summary
PART III FACTORING MODELS AND DESIGNS
Chapter 6 Abstraction, Refinement, and Testing
6.1 Zooming In and Out: Why Abstract and Refine?
6.2 Documenting Refinement and Conformance
6.3 Spreadsheet: A Refinement Example
6.4 Spreadsheet: Model Refinement
6.5 Spreadsheet: Action Refinement
6.6 Spreadsheet: Object Refinement
6.7 Spreadsheet: Operation Refinement
6.8 Refinement of State Charts
6.9 Summary
6.10 Process Patterns for Refinement
Pattern 6.1 The OO Golden Rule (Seamlessness or Continuity)
Pattern 6.2 The Golden Rule versus Other Optimizations
Pattern 6.3 Orthogonal Abstractions and Refinement
Pattern 6.4 Refinement Is a Relation, Not a Sequence
Pattern 6.5 Recursive Refinement
Chapter 7 Using Packages
7.1 What Is a Package?
7.2 Package Imports
7.3 How to Use Packages and Imports
7.4 Decoupling with Packages
7.5 Nested Packages
7.6 Encapsulation with Packages
7.7 Multiple Imports and Name Conflicts
7.8 Publication, Version Control, and Builds
7.9 Programming Language Packages
7.10 Summary
Chapter 8 Composing Models and Specifications
8.1 Sticking Pieces Together
8.2 Joining and Subtyping
8.3 Combining Packages and Their Definitions
8.4 Action Exceptions and Composing Specs
8.5 Summary
Chapter 9 Model Frameworks and Template Packages
9.1 Model Framework Overview
9.2 Model Frameworks of Types and Attributes
9.3 Collaboration Frameworks
9.4 Refining Frameworks
9.5 Composing Frameworks
9.6 Templates as Packages of Properties
9.7 Templates for Equality and Copying
9.8 Package Semantics
9.9 Down to Basics with Templates
9.10 Summary of Model Framework Concepts
PART IV IMPLEMENTATION BY ASSEMBLY
Chapter 10 Components and Connectors
10.1 Overview of Component-Based Development
10.2 The Evolution of Components
10.3 Building Components with Java
10.4 Components with COM+
10.5 Components with CORBA
10.6 Component Kit: Pluggable Components Library
10.7 Component Architecture
10.8 Defining Cat One-A Component Architecture
10.9 Specifying Cat One Components
10.10 Connecting Cat One Components
10.11 Heterogeneous Components
Pattern 10.1 Extracting Generic Code Components
Pattern 10.2 Componentware Management
Pattern 10.3 Build Models from Frameworks
Pattern 10.4 Plug Conformance
Pattern 10.5 Using Legacy or Third-Party Components
10.12 Summary
Chapter 11 Reuse and Pluggable Design Frameworks in Code
11.1 Reuse and the Development Process
11.2 Generic Components and Plug-Points
11.3 The Framework Approach to Code Reuse
11.4 Frameworks: Specs to Code
11.5 Basic Plug Technology
11.6 Summary
Pattern 11.1 Role Delegation
Pattern 11.2 Pluggable Roles
Chapter 12 Architecture
12.1 What Is Architecture?
12.2 Why Architect?
12.3 Architecture Evaluation with Scenarios
12.4 Architecture Builds on Defined Elements
12.5 Architecture Uses Consistent Patterns
12.6 Application versus Technical Architecture
12.7 Typical Four-Tier Business Architecture
12.8 User Interfaces
12.9 Objects and Databases
12.10Summary
PART V HOW TO APPLY CATALYSIS
Chapter 13 Process Overview
13.1 Model, Design, Implement, and Test-Recursively
13.2 General Notes on the Process
13.3 Typical Project Evolution
13.4 Typical Package Structure
13.5 Main Process Patterns
Pattern 13.1 Object Development from Scratch
Pattern 13.2 Reengineering
Pattern 13.3 Short-Cycle Development
Pattern 13.4 Parallel Work
Chapter 14 How to Build a Business Model
14.1 Business Modeling Process Patterns
Pattern 14.1 Business Process Improvement
Pattern 14.2 Make a Business Model
Pattern 14.3 Represent Business Vocabulary and Rules
Pattern 14.4 Involve Business Experts
Pattern 14.5 Creating a Common Business Model
Pattern 14.6 Choose a Level of Abstraction
14.2 Modeling Patterns
Pattern 14.7 The Type Model Is a Glossary
Pattern 14.8 Separation of Concepts: Normalization
Pattern 14.9 Items and Descriptors
Pattern 14.10 Generalize and Specialize
Pattern 14.11 Recursive Composite
Pattern 14.12 Invariants from Association Loops
14.3 Video Case Study: Abstract Business Model
14.4 Video Business: Use Case Refinement
Pattern 14.13 Action Reification
Chapter 15 How to Specify a Component
15.1 Patterns for Specifying Components
Pattern 15.1 Specify Components
Pattern 15.2 Bridge Requirements and Specifications
Pattern 15.3 Use-Case-Led System Specification
Pattern 15.4 Recursive Decomposition: Divide and Conquer
Pattern 15.5 Make a Context Model with Use Cases
Pattern 15.6 Storyboards
Pattern 15.7 Construct a System Behavior Spec
Pattern 15.8 Specifying a System Action
Pattern 15.9 Using State Charts in System Type Models
Pattern 15.10 Specify Component Views
Pattern 15.11 Compose Component Views
Pattern 15.12 Avoid Miracles, Refine the Spec
Pattern 15.13 Interpreting Models for Clients
15.2 Video Case Study: System Specifications
15.3 System Context Diagram
15.4 System Specification
15.5 Using Model Frameworks
Chapter 16 How to Implement a Component
16.1 Designing to Meet a Specification
Pattern 16.1 Decoupling
Pattern 16.2 High-Level Component Design
Pattern 16.3 Reifying Major Concurrent Use Cases
Pattern 16.4 Separating Facades
Pattern 16.5 Platform Independence
Pattern 16.6 Separate Middleware from Business Components
Pattern 16.7 Implement Technical Architecture
Pattern 16.8 Basic Design
Pattern 16.9 Generalize after Basic Design
Pattern 16.10 Collaborations and Responsibilities
Pattern 16.11 Link and Attribute Ownership
Pattern 16.12 Object Locality and Link Implementation
Pattern 16.13 Optimization
16.2 Detailed Design Patterns
Pattern 16.14 Two-Way Link
Pattern 16.15 Role Decoupling
Pattern 16.16 Factories
Pattern 16.17 Observer
Pattern 16.18 Plug-Points and Plug-Ins
16.3 Video Case Study: Component-Based Design.
Appendix A Object Constraint Language
Appendix B UML Perspective
Appendix C Catalysis Support Tools,Services,and Experiences
Notes
Glossary
Index