Foreword by Peter Freeman xiii
Foreword by Bran Selic xv
Preface xvii
PART I UML NOTATION, DESIGN CONCEPTS,
TECHNOLOGY, LIFE CYCLES, AND METHODS
1 Introduction
1.1 Object-Oriented Methods
and the Unified Modeling Language
1.2 Method and Notation
1.3 Concurrent Applications
1.4 Real-Time Systems and Applications
1.5 Distributed Systems and Applications
1.6 Summary
2 Overview of UML Notation
2.1 UML Diagrams
2.2 Use Case Diagrams
2.3 UML Notation for Classes and Objects
2.4 Class Diagrams
2.5 Interaction Diagrams
2.6 Statechart Diagrams
2.7 Packages
2.8 Concurrent Collaboration Diagrams
2.9 Deployment Diagrams
2.10 UML Extension Mechanisms
2.11 The UMLas a Standard
2.12 Summary
3 Software Design and Architecture Concepts
3.1 Object-Oriented Concepts
3.2 Information Hiding
3.3 Inheritance
3.4 Active and Passive Objects
3.5 Concurrent Processing
3.6 Cooperation between Concurrent Tasks
3.7 Information Hiding Applied to Access Synchronization
3.8 Monitors
3.9 Design Patterns
3.10 Software Architecture and Component-Based Systems
3.11 Summary
4 Concurrent and Distributed System Technology
4.1 Environments for Concurrent Processing
4.2 Runtime Support for Multiprogramming
and Multiprocessing Environments
4.3 Task Scheduling
4.4 Operating System Input/Output Considerations
4.5 Client/Server and Distributed System Technology
4.6 World Wide Web Technology
4.7 Distributed Operating System Services
4.8 Middleware
4.9 Common Object Request Broker Architecture (CORBA)
4.10 Other Component Technologies
4.11 Transaction Processing Systems
4.12 Summary
Software Life Cycles and Methods
5.1 Software Life Cycle Approaches
5.2 Design Verification and Validation
5.3 Software Testing
5.4 Evolution of Software Design Methods
5.5 Evolution of Object-Oriented
Analysis and Design Methods
5.6 Survey of Concurrent and Real-Time Design Methods
5.7 Summary
PART II COMET: CONCURRENT OBJECT MODELING
AND ARCHITECTURAL DESIGN WITH UML
6 Overview of COMET
6.1 COMET Object-Oriented Software Life Cycle
6.2 Comparison of the COMET Life
Cycle with Other Software Processes
6.3 Requirements, Analysis, and Design Models
6.4 The COMET in a Nutshell
6.5 Summary
7 Use Case Modeling
7.1 Use Cases
7.2 Actors
7.3 Actors, Roles, and Users
7.4 Identifying Use Cases
7.5 Documenting Use Cases in the Use Case Model
7.6 Examples of Use Cases
7.7 Use Case Relationships
7.8 Use Case Packages
7.9 Summary
8 Static Modeling
8.1 Associations between Classes
8.2 Composition and Aggregation Hierarchies
8.3 Generalization/Specialization Hierarchy
8.4 Constraints
8.5 Static Modeling and the UML
8.6 Static Modeling of the System Context
8.7 Static Modeling of Entity Classes
8.8 Summary
Object and Class Structuring
9.1 Object Structuring Criteria
9.2 Categorization of Application Classes
9.3 Object Structuring Categories
9.4 External Classes and Interface Classes
9.5 Interface Objects
9.6 Entity Objects
9.7 Control Objects
9.8 Application Logic Objects
9.9 Subsystems
9.10 Summary
10 Finite State Machines and Statecharts
10.1 Finite State Machines
10.2 Events and States
10.3 Finite State Machines and Objects
10.4 Examples of Statecharts
10.5 Events and Conditions
10.6 Actions
10.7 Modeling Different Aspects of the System
10.8 Hierarchical Statecharts
10.9 Concurrent Statecharts
10.10 Guidelines for Developing Statecharts
10.11 Developing Statecharts from Use Cases
10.12 Example of Developing a Statechart from a Use Case
10.13 Summary
11 Dynamic Modeling
11.1 Object Interaction Modeling
11.2 Message Labels on Interaction Diagrams
11.3 Dynamic Analysis
11.4 Non-State-Dependent Dynamic Analysis
11.5 Example of Non-State-Dependent Dynamic Analysis
11.6 State-Dependent Dynamic Analysis
11.7 Example of State-Dependent
Dynamic Analysis: Banking System
11.8 Example of State-Dependent
Dynamic Analysis: Cruise Control System
11.9 Summary
12 Software Architecture Design
12.1 Software Architectural Styles
12.2 System Decomposition Issues
12.3 Guidelines for Determining Subsystems
12.4 Consolidated Collaboration Diagrams
12.5 Subsystem Software Architecture
12.6 Separation of Concerns in Subsystem Design
12.7 Subsystem Structuring Criteria
12.8 Examples of Subsystem Decomposition
12.9 Static Modeling at the Design Level
12.10 Summary
13 Architectural Design of Distributed Applications
13.1 Configurable Architectures
and Software Components
13.2 Steps in Designing Distributed Applications
13.3 System Decomposition
13.4 Designing Subsystem Interfaces
13.5 Transaction Management
13.6 Design of Server Subsystems
13.7 Distribution of Data
13.8 System Configuration
13.9 Summary
14 Task Structuring
14.1 Concurrent Task Structuring Issues
14.2 Task Structuring Categories
14.3 I/O Task Structuring Criteria
14.4 Internal Task Structuring Criteria
14.5 Task Priority Criteria
14.6 Task Clustering Criteria
14.7 Design Restructuring by Using Task Inversion
14.8 Developing the Task Architecture
14.9 Task Communication and Synchronization
14.10 Task Behavior Specifications
14.11 Summary
15 Class Design
15.1 Designing Information Hiding Classes
15.2 Designing Class Operations
15.3 Data Abstraction Classes
15.4 Device Interface Classes
15.5 State-Dependent Classes
15.6 Algorithm Hiding Classes
15.7 User Interface Classes
15.8 Business Logic Classes
15.9 Database Wrapper Classes
15.10 Software Decision Classes
15.11 Inheritance in Design
15.12 Examples of Inheritance
15.13 Class Interface Specifications
15.14 Summary
16 Detailed Software Design
16.1 Design of Composite Tasks
16.2 Synchronization of Access to Classes
16.3 Designing Connectors for Inter-Task Communication
16.4 Task Event Sequencing Logic
16.5 Summary
17 Performance Analysis of Concurrent
Real-Time Software Designs
17.1 Real-Time Scheduling Theory
17.2 Advanced Real-Time Scheduling Theory
17.3 Performance Analysis Using
Event Sequence Analysis
17.4 Performance Analysis Using Real-Time
Scheduling Theory and Event Sequence Analysis
17.5 Example of Performance Analysis
Using Event Sequence Analysis
17.6 Example of Performance Analysis
Using Real-Time Scheduling Theory
17.7 Example of Performance Analysis Using Real-Time
Scheduling Theory and Event Sequence Analysis
17.8 Design Restructuring
17.9 Estimation and Measurement
of Performance Parameters
17.10 Summary
PART III CASE STUDIES IN CONCURRENT, DISTRIBUTED,
AND REAL-TIME APPLICATION DESIGN
18 Elevator Control System Case Study
18.1 Problem Description
18.2 Use Case Model
18.3 Static Model of the Problem Domain
18.4 Object Structuring
18.5 Dynamic Model
18.6 Statechart Model
18.7 Consolidation of Collaboration Diagrams
18.8 Subsystem Structuring
18.9 Structuring System into Tasks
18.10 Design of Distributed Elevator Control System
18.11 Design of Information Hiding Classes
18.12 Developing Detailed Software Design
18.13 Target System Configuration
18.14 Performance Analysis of Non-Distributed
Elevator Control System
18.15 Performance Analysis of Distributed
Elevator Control System
19 Banking System Case Study
19.1 Problem Description
19.2 Use Case Model
19.3 Static Modeling
19.4 Object Structuring
19.5 Dynamic Modeling
19.6 ATM Statechart
19.7 Design of Banking System
19.8 Consolidating the Collaboration Model
19.9 Structuring the System into Subsystems
19.10 Design of ATM Client Subsystem
19.11 Design of Bank Server Subsystem
19.12 Configuration of Banking System
19.13 Alternative Design Considerations
19.14 Task Behavior Specifications
20 Cruise Control and Monitoring System Case Study
20.1 Problem Description
20.2 Use Case Model
20.3 Use Case Descriptions
20.4 Problem Domain Static Modeling
20.5 Dynamic Modeling
20.6 Subsystem Structuring
20.7 Refined Static Modeling
20.8 Structuring the System into Tasks
20.9 Information Hiding Class Design
20.10 Developing Detailed Software Design
20.11 Software Architecture of Distributed
Automobile System
21 Distributed Factory Automation System Case Study
21.1 Problem Description
21.2 Use Case Model
21.3 Conceptual Static Model of the Problem Domain
21.4 Object Structuring
21.5 Dynamic Model
21.6 Subsystem Structuring
21.7 Distributed Software Architecture
21.8 System Configuration
22 Electronic Commerce System Case Study
22.1 Electronic Commerce Problem
22.2 Use Case Model
22.3 Agent Support for Electronic Commerce System
22.4 Object Broker Support for Electronic
Commerce System
22.5 Static Modeling of the Problem Domain
22.6 Collaboration Model
22.7 Distributed Software Architecture
Appendix A Conventions and Alternative Notations
A.1 Conventions Used in This Book
A.2 Alternative Notation for Stereotypes
A.3 Alternative Notation for Active Objects
Glossary
Bibliography
Index