| Preface |
|
xv | |
| PART I OVERVIEW |
|
1 | (42) |
|
Chapter 1 A Tour of Catalysis |
|
|
3 | (40) |
|
|
|
3 | (3) |
|
1.2 Refinement: Objects and Actions at Different Scales |
|
|
6 | (4) |
|
|
|
10 | (1) |
|
|
|
11 | (2) |
|
1.5 Model Frameworks as Templates |
|
|
13 | (2) |
|
1.6 Zooming In on the Software: System Context |
|
|
15 | (1) |
|
1.7 Requirements Specification Models |
|
|
16 | (2) |
|
|
|
18 | (7) |
|
1.9 Assigning Responsibilities |
|
|
25 | (5) |
|
1.10 Object-Oriented Design |
|
|
30 | (1) |
|
1.11 The Development Process |
|
|
31 | (1) |
|
1.12 Three Constructs Plus Frameworks |
|
|
32 | (3) |
|
1.13 Three Levels of Modeling |
|
|
35 | (2) |
|
|
|
37 | (2) |
|
|
|
39 | (4) |
| PART II MODELING WITH OBJECTS |
|
43 | (168) |
|
Chapter 2 Static Models: Object Attributes and Invariants |
|
|
45 | (34) |
|
2.1 What Is a Static Model? |
|
|
46 | (3) |
|
2.2 Object State: Objects and Attributes |
|
|
49 | (5) |
|
2.3 Implementations of Object State |
|
|
54 | (2) |
|
2.4 Modeling Object State: Types, Attributes, and Associations |
|
|
56 | (10) |
|
|
|
66 | (8) |
|
|
|
74 | (1) |
|
2.7 Models of Business; Models of Components |
|
|
75 | (1) |
|
|
|
76 | (3) |
|
Chapter 3 Behavior Models: Object Types and Operations |
|
|
79 | (74) |
|
3.1 Object Behavior: Objects and Actions |
|
|
80 | (6) |
|
3.2 More Precise Action Specifications |
|
|
86 | (6) |
|
3.3 Two Java Implementations of a Calendar |
|
|
92 | (5) |
|
3.4 Type Specification of Calendar |
|
|
97 | (5) |
|
3.5 Actions with Invariants |
|
|
102 | (6) |
|
3.6 Interpreting an Action Specification |
|
|
108 | (5) |
|
3.7 Subtypes and Type Extension |
|
|
113 | (4) |
|
3.8 Factoring Action Specifications |
|
|
117 | (9) |
|
|
|
126 | (8) |
|
|
|
134 | (3) |
|
3.11 Subjective Model: The Meaning of Containment |
|
|
137 | (2) |
|
3.12 Type Specifications: Summary |
|
|
139 | (4) |
|
3.13 Programming Language: Classes and Types |
|
|
143 | (10) |
|
Chapter 4 Interaction Models: Use Cases, Actions, and Collaborations |
|
|
153 | (32) |
|
4.1 Designing Object Collaborations |
|
|
153 | (1) |
|
4.2 Actions (Use Cases) Abstract Complex Interactions |
|
|
154 | (10) |
|
4.3 Use Cases Are Joint Actions |
|
|
164 | (3) |
|
|
|
167 | (1) |
|
|
|
168 | (4) |
|
|
|
172 | (1) |
|
4.7 Uses of Collaborations |
|
|
173 | (6) |
|
4.8 Collaboration Specification |
|
|
179 | (3) |
|
4.9 Collaborations: Summary |
|
|
182 | (3) |
|
Chapter 5 Effective Documentation |
|
|
185 | (26) |
|
|
|
185 | (1) |
|
5.2 Documentation Is Easy and Fun, and It Speeds Design |
|
|
186 | (6) |
|
5.3 Reaching the Documentation Audience |
|
|
192 | (3) |
|
5.4 The Main Documents: Specification and Implementation |
|
|
195 | (3) |
|
5.5 Documenting Business Models |
|
|
198 | (4) |
|
5.6 Documenting Component Specifications |
|
|
202 | (4) |
|
5.7 Documenting Component Implementations |
|
|
206 | (2) |
|
|
|
208 | (3) |
| PART III FACTORING MODELS AND DESIGNS |
|
211 | (170) |
|
Chapter 6 Abstraction, Refinement, and Testing |
|
|
213 | (72) |
|
6.1 Zooming In and Out: Why Abstract and Refine? |
|
|
214 | (16) |
|
6.2 Documenting Refinement and Conformance |
|
|
230 | (3) |
|
6.3 Spreadsheet: A Refinement Example |
|
|
233 | (5) |
|
6.4 Spreadsheet: Model Refinement |
|
|
238 | (9) |
|
6.5 Spreadsheet: Action Refinement |
|
|
247 | (7) |
|
6.6 Spreadsheet: Object Refinement |
|
|
254 | (10) |
|
6.7 Spreadsheet: Operation Refinement |
|
|
264 | (5) |
|
6.8 Refinement of State Charts |
|
|
269 | (3) |
|
|
|
272 | (1) |
|
6.10 Process Patterns for Refinement |
|
|
273 | (12) |
|
Pattern 6.1 The OO Golden Rule (Seamlessness or Continuity) |
|
|
274 | (2) |
|
Pattern 6.2 The Golden Rule versus Other Optimizations |
|
|
276 | (2) |
|
Pattern 6.3 Orthogonal Abstractions and Refinement |
|
|
278 | (2) |
|
Pattern 6.4 Refinement Is a Relation, Not a Sequence |
|
|
280 | (3) |
|
Pattern 6.5 Recursive Refinement |
|
|
283 | (2) |
|
|
|
285 | (36) |
|
|
|
285 | (7) |
|
|
|
292 | (6) |
|
7.3 How to Use Packages and Imports |
|
|
298 | (5) |
|
7.4 Decoupling with Packages |
|
|
303 | (5) |
|
|
|
308 | (2) |
|
7.6 Encapsulation with Packages |
|
|
310 | (2) |
|
7.7 Multiple Imports and Name Conflicts |
|
|
312 | (3) |
|
7.8 Publication, Version Control, and Builds |
|
|
315 | (3) |
|
7.9 Programming Language Packages |
|
|
318 | (1) |
|
|
|
318 | (3) |
|
Chapter 8 Composing Models and Specifications |
|
|
321 | (18) |
|
8.1 Sticking Pieces Together |
|
|
321 | (1) |
|
8.2 Joining and Subtyping |
|
|
322 | (2) |
|
8.3 Combining Packages and Their Definitions |
|
|
324 | (7) |
|
8.4 Action Exceptions and Composing Specs |
|
|
331 | (6) |
|
|
|
337 | (2) |
|
Chapter 9 Model Frameworks and Template Packages |
|
|
339 | (42) |
|
9.1 Model Framework Overview |
|
|
339 | (3) |
|
9.2 Model Frameworks of Types and Attributes |
|
|
342 | (4) |
|
9.3 Collaboration Frameworks |
|
|
346 | (6) |
|
|
|
352 | (5) |
|
|
|
357 | (2) |
|
9.6 Templates as Packages of Properties |
|
|
359 | (7) |
|
9.7 Templates for Equality and Copying |
|
|
366 | (3) |
|
|
|
369 | (4) |
|
9.9 Down to Basics with Templates |
|
|
373 | (5) |
|
9.10 Summary of Model Framework Concepts |
|
|
378 | (3) |
| PART IV IMPLEMENTATION BY ASSEMBLY |
|
381 | (124) |
|
Chapter 10 Components and Connectors |
|
|
383 | (70) |
|
10.1 Overview of Component-Based Development |
|
|
384 | (8) |
|
10.2 The Evolution of Components |
|
|
392 | (6) |
|
10.3 Building Components with Java |
|
|
398 | (3) |
|
10.4 Components with COM+ |
|
|
401 | (2) |
|
10.5 Components with CORBA |
|
|
403 | (1) |
|
10.6 Component Kit: Pluggable Components Library |
|
|
404 | (5) |
|
10.7 Component Architecture |
|
|
409 | (5) |
|
10.8 Defining Cat One-A Component Architecture |
|
|
414 | (7) |
|
10.9 Specifying Cat One Components |
|
|
421 | (5) |
|
10.10 Connecting Cat One Components |
|
|
426 | (2) |
|
10.11 Heterogeneous Components |
|
|
428 | (24) |
|
Pattern 10.1 Extracting Generic Code Components |
|
|
444 | (2) |
|
Pattern 10.2 Componentware Management |
|
|
446 | (2) |
|
Pattern 10.3 Build Models from Frameworks |
|
|
448 | (1) |
|
Pattern 10.4 Plug Conformance |
|
|
449 | (1) |
|
Pattern 10.5 Using Legacy or Third-Party Components |
|
|
450 | (2) |
|
|
|
452 | (1) |
|
Chapter 11 Reuse and Pluggable Design Frameworks in Code |
|
|
453 | (28) |
|
11.1 Reuse and the Development Process |
|
|
453 | (4) |
|
11.2 Generic Components and Plug-Points |
|
|
457 | (4) |
|
11.3 The Framework Approach to Code Reuse |
|
|
461 | (4) |
|
11.4 Frameworks: Specs to Code |
|
|
465 | (6) |
|
11.5 Basic Plug Technology |
|
|
471 | (6) |
|
|
|
477 | (4) |
|
Pattern 11.1 Role Delegation |
|
|
478 | (2) |
|
Pattern 11.2 Pluggable Roles |
|
|
480 | (1) |
|
|
|
481 | (24) |
|
12.1 What Is Architecture? |
|
|
481 | (5) |
|
|
|
486 | (4) |
|
12.3 Architecture Evaluation with Scenarios |
|
|
490 | (1) |
|
12.4 Architecture Builds on Defined Elements |
|
|
491 | (2) |
|
12.5 Architecture Uses Consistent Patterns |
|
|
493 | (3) |
|
12.6 Application versus Technical Architecture |
|
|
496 | (1) |
|
12.7 Typical Four-Tier Business Architecture |
|
|
497 | (1) |
|
|
|
498 | (3) |
|
12.9 Objects and Databases |
|
|
501 | (1) |
|
|
|
502 | (3) |
| PART V HOW TO APPLY CATALYSIS |
|
505 | (184) |
|
Chapter 13 Process Overview |
|
|
507 | (36) |
|
13.1 Model, Design, Implement, and Test-Recursively |
|
|
507 | (3) |
|
13.2 General Notes on the Process |
|
|
510 | (12) |
|
13.3 Typical Project Evolution |
|
|
522 | (4) |
|
13.4 Typical Package Structure |
|
|
526 | (4) |
|
13.5 Main Process Patterns |
|
|
530 | (13) |
|
Pattern 13.1 Object Development from Scratch |
|
|
533 | (2) |
|
Pattern 13.2 Reengineering |
|
|
535 | (4) |
|
Pattern 13.3 Short-Cycle Development |
|
|
539 | (2) |
|
Pattern 13.4 Parallel Work |
|
|
541 | (2) |
|
Chapter 14 How to Build a Business Model |
|
|
543 | (38) |
|
14.1 Business Modeling Process Patterns |
|
|
543 | (14) |
|
Pattern 14.1 Business Process Improvement |
|
|
545 | (3) |
|
Pattern 14.2 Make a Business Model |
|
|
548 | (3) |
|
Pattern 14.3 Represent Business Vocabulary and Rules |
|
|
551 | (1) |
|
Pattern 14.4 Involve Business Experts |
|
|
552 | (2) |
|
Pattern 14.5 Creating a Common Business Model |
|
|
554 | (2) |
|
Pattern 14.6 Choose a Level of Abstraction |
|
|
556 | (1) |
|
|
|
557 | (12) |
|
Pattern 14.7 The Type Model Is a Glossary |
|
|
558 | (2) |
|
Pattern 14.8 Separation of Concepts: Normalization |
|
|
560 | (2) |
|
Pattern 14.9 Items and Descriptors |
|
|
562 | (2) |
|
Pattern 14.10 Generalize and Specialize |
|
|
564 | (1) |
|
Pattern 14.11 Recursive Composite |
|
|
565 | (2) |
|
Pattern 14.12 Invariants from Association Loops |
|
|
567 | (2) |
|
14.3 Video Case Study: Abstract Business Model |
|
|
569 | (6) |
|
14.4 Video Business: Use Case Refinement |
|
|
575 | (6) |
|
Pattern 14.13 Action Reification |
|
|
580 | (1) |
|
Chapter 15 How to Specify a Component |
|
|
581 | (58) |
|
15.1 Patterns for Specifying Components |
|
|
581 | (35) |
|
Pattern 15.1 Specify Components |
|
|
583 | (2) |
|
Pattern 15.2 Bridge Requirements and Specifications |
|
|
585 | (2) |
|
Pattern 15.3 Use-Case-Led System Specification |
|
|
587 | (2) |
|
Pattern 15.4 Recursive Decomposition: Divide and Conquer |
|
|
589 | (2) |
|
Pattern 15.5 Make a Context Model with Use Cases |
|
|
591 | (4) |
|
|
|
595 | (1) |
|
Pattern 15.7 Construct a System Behavior Spec |
|
|
596 | (4) |
|
Pattern 15.8 Specifying a System Action |
|
|
600 | (3) |
|
Pattern 15.9 Using State Charts in System Type Models |
|
|
603 | (4) |
|
Pattern 15.10 Specify Component Views |
|
|
607 | (2) |
|
Pattern 15.11 Compose Component Views |
|
|
609 | (2) |
|
Pattern 15.12 Avoid Miracles, Refine the Spec |
|
|
611 | (2) |
|
Pattern 15.13 Interpreting Models for Clients |
|
|
613 | (3) |
|
15.2 Video Case Study: System Specifications |
|
|
616 | (5) |
|
15.3 System Context Diagram |
|
|
621 | (5) |
|
15.4 System Specification |
|
|
626 | (8) |
|
15.5 Using Model Frameworks |
|
|
634 | (5) |
|
Chapter 16 How to Implement a Component |
|
|
639 | (50) |
|
16.1 Designing to Meet a Specification |
|
|
639 | (30) |
|
|
|
641 | (2) |
|
Pattern 16.2 High-Level Component Design |
|
|
643 | (1) |
|
Pattern 16.3 Reifying Major Concurrent Use Cases |
|
|
644 | (2) |
|
Pattern 16.4 Separating Facades |
|
|
646 | (3) |
|
Pattern 16.5 Platform Independence |
|
|
649 | (1) |
|
Pattern 16.6 Separate Middleware from Business Components |
|
|
650 | (2) |
|
Pattern 16.7 Implement Technical Architecture |
|
|
652 | (2) |
|
Pattern 16.8 Basic Design |
|
|
654 | (6) |
|
Pattern 16.9 Generalize after Basic Design |
|
|
660 | (1) |
|
Pattern 16.10 Collaborations and Responsibilities |
|
|
661 | (3) |
|
Pattern 16.11 Link and Attribute Ownership |
|
|
664 | (1) |
|
Pattern 16.12 Object Locality and Link Implementation |
|
|
665 | (2) |
|
Pattern 16.13 Optimization |
|
|
667 | (2) |
|
16.2 Detailed Design Patterns |
|
|
669 | (11) |
|
Pattern 16.14 Two-Way Link |
|
|
670 | (2) |
|
Pattern 16.15 Role Decoupling |
|
|
672 | (2) |
|
|
|
674 | (2) |
|
|
|
676 | (2) |
|
Pattern 16.18 Plug-Points and Plug-Ins |
|
|
678 | (2) |
|
16.3 Video Case Study: Component-Based Design |
|
|
680 | (9) |
| Appendix A Object Constraint Language |
|
689 | (8) |
| Appendix B UML Perspective |
|
697 | (6) |
| Appendix C Catalysis Support Tools, Services, and Experiences |
|
703 | (2) |
| Notes |
|
705 | (10) |
| Glossary |
|
715 | (14) |
| Index |
|
729 | |