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