Preface xv
Acknowledgments xx
Chapter 1 The Main Ideas 1
1.1 The OOram Method 2
1.2 The Technology Dimension 5
1.2.1 Representing the Real World as Objects 6
1.2.2 The Powerful Role Model Abstraction 7
1.2.3 Separation of Concern and Role Model Synthesis 10
1.2.4 OOram Implementation Links Role Models to Computer Programs 13
1.2.5 OOram Reuse Technology 16
1.2.6 Comparison with Other Methods 20
1.3 Process with Deliverables 23
1.3.1 Introduction to the Model Creation Process 24
1.3.2 Introduction to the System Development Process 24
1.3.3 Introduction to the Reusable Assets Building Processes 26
1.4 Organization 28
Chapter 2 Role Modeling 31
2.1 Modeling the Real World: Human Understanding and Human Communication 33
2.2 Modeling Using Objects 36
2.3 Modeling Using Roles 43
2.3.1 A Travel Expense Example 45
2.3.2 An Internet Example 45
2.3.3 A Sample Model Having Four Roles 50
2.4 The Model Creation Process and its Deliverables 52
2.5 Basic OOram Role Modeling Concepts and Notation 57
2.5.1 The Object 57
2.5.2 Extemal Object Properties 57
2.5.3 T he Role Model 59
Chapter 3 Role Model Synthesis 69
3.1 Introduction to Synthesis: DerivedTravelExpense 71
3.1.1 The AirlineBooking(AB) Model 72
3.1.2 Creating the DerivedTravelExpense(DSE) Model 72
3.2 The Synthesis Operation 78
3.2.1 Aggregation: Linking Models on Different Levels of Abstraction 86
3.2.2 Attributes and Message Parameters 88
3.2.3 Safe and Unsafe Synthesis of the Travel Example Models 90
3.3 Basic OOram Concepts and Notation for Role Model Synthesis 92
3.3 1 The Inheritance and Role List Views 92
3.3.2 Synthesis in the Area of Concern View 94
3.3.3 Synthesis in the Environment and Stimulus-Response Views 95
3.3.4 Synthesis in the Collaboration View 95
3.3.5 Synthesis in the Scenario View 97
3.3.6 Synthesis in the Interface View 99
3.3.7 Synthesis in the Method Specification View 99
Chapter 4 Bridge to Implementation 101
4.1 Introduction to Implementation 102
4.1.1 Object Modeling from a Programmer's Point of View 104
4.1.2 A Simple Class Inheritance Example 108
4.1.3 Why we Need High Level Descriptions 112
4.2 The Relationship between a Role Model and its Implementation 116
4.2.1 Implementing the Roles 116
4.2.2 Implementing the Ports and Interfaces 121
4.2 3 Implementing the Methods and Actions 123
4.3 The Implementation Process 124
4.4 Choice of Programming Language 129
Chapter 5 Creating Reusable Components 133
5.1 Introduction to Reuse 135
5.2 Patterns 143
5.2.1 Alexander's Pattern Language 144
5.2.2 How to Create a Pattern 145
5.3 OOram Frameworks 153
Chapter 6 Additional Role Modeling Concepts and Notation 157
6.1 Semantic View 159
6.2 Process View 162
6.3 State Diagram View 168
6.4 Role List View 172
6.5 Modeling in the Large: The OOram Module 173
Chapter 7 Case Study: Development of a Business Information System 177
7.1 Objects Everywhere 178
7.2 Enterprise Model 184
7.2.1 Determine the Area of Concem 185
7.2.2 Understand the Problem and Identify the Nature of the Objects
7.2.3 Determine Environment Roles and Stimulus/Response 189
7.2.4 Identify and Understand the Roles 189
7.2.5 Determine the Work Process 190
7.2.6 Determine the Collaboration Structure 191
7.2.7 Detemmine Interfaces 191
7.3 Information Model 194
7.3.1 Area of Concern 195
7.3.2 Semantic View 195
7.3.3 Role List View 195
7.3.4 A Hybrid Solution with a Relational Database 196
7.3.5 Collaboration View 197
7.3.6 Interface View 198
7.4 Task Tool/Service Model 199
7.4.1 Creating Task Tool/Service Descriptions 200
7.4.2 User Interface Design 201
7.4.3 A Simple Direct Manipulation Interface for Our Task ExaI le 204
7.4.4 A Composite User Interface for the Manager to
7.4.5 Detemmine Travel Permission 205
Chapter 8 Case Study: The Analysis and Design of a Real Time System 211
8.1 Environment Model 213
8.1.1 Detemmine the Area of Concem 213
8.1.2 Identify Environment Roles and Stimulus/Response 213
8.1.3 Determine Typical Message Sequences 214
8.2 Detailed Model 215
8.2.1 Specify and Understand Objects and Roles 215
8.2.2 Determine Typical Message Sequences 216
8.2.3 Describe Roles as State Diagrams 216
8.2.4 Detemmine the Interfaces 218
8.3 Implementation Examples 221
8.3.1 Bridge to C++ 222
8.3 2 Bridge to Smalltalk 223
8.3.3 Bridge to SDL 224
8.3.4 Bridge to Distributed Object Systems 226
8.3.5 OMG/CORBA 227
8.3.6 COM/OLE 228
8.3.7 OOram Executable Specifications 229
Chapter 9 Case Study: Lyle Creation of a Framework 235
9.1 Step 1: Identify Consumers and Consumer Needs 237
9.2 Step 2: Perform a Cost-benefit Analysis 238
9.3 Step 3: Reverse Engineering of Existing Programs 239
9.3.1 Container-Component Hierarchy 242
9.3.2 Model-View-Controller 249
9.3.3 Mouse and Keyboard Input 254
9.3.4 Main Input Role Model 255
9.3.5 TranslatingSensor Initialization Model 255
9.3.6 The Scroller Role Model 257
9.4 Step 4: Specify the New Framework 259
9.5 Step 5: Document the Framework as Patterns
Describing how to Solve Problems 260
9.5.1 Pattern 1: The Tool 260
9.5.2 Pattern 2: Fixed Proportion Tool Layout 261
9.5.3 Pattern 3: Flexible Tool Layout 262
9.5.4 Pattern 4 The Controller 263
9.5.5 Pattern 5: The Model Object 263
9.5.6 Pattern 6: The View 264
9.6 Step 6: Describe the Framework's Design and Implementation 266
9.7 Step 7: Inform the Consumer Community 271
Chapter 10 Organizing for Software Productivity 273
10.1 An Industrial Approach to Software Production 274
10.2 Large-scale Production of Intelligent Network Services 281
10.3 Large-scale Production of Customized Business Information Systems 285
Chapter 11 Advanced Reuse Based on Object Instances 293
11.1 Introduction to Object Reuse 294
11.2 Runtime Configuration and Object Trading 295
11.3 The OOram Composition System 298
11.3.1 The OOCS Schema Creator Layer 302
11.3.2 List of Instructions: OOCS Schema Creation 302
11.3.3 The Nature of OOCS Schemas 303
11.3.4 The OOCS Type Implementor Layer 305
11.4 Object Duplication 309
11.4.1 shallowCopy-Too Simple in Most Cases 311
11.4.2 postCopy-A Default Duplication Algorithm 312
11.4.3 structureCopy for the General Case 314
11.4.4 deepCopy-A Dangerous Operation 316
Chapter 12 Case Study: Intelligent Network Services Organized in a Value Chain 319
12.1 A Simple Case with an Extensible Solution 320
12.2 User Layer 326
12.3 Subscriber Layer 327
12.4 Service Provider Layer 329
12.5 Service Creator Layer 331
12.6 Service Constituent Creator Layer 334
12.7 Network Layer 337
Appendix A The OOram Language 339
Appendix B References 353
Where to Find Definitions of Important Terms 359
Index 361