1 Introduction
1.1 Development of UML
1.2 Using UML to Develop Applications
1.3 How This Book is Organized
2 The Vocabulary of Object Technology
2.1 What Are Objects?
2.2 Objects, Classes, and Instances
2.3 Message Passing and Associations
2.4 Class Hierarchies and Class Inheritance
2.5 Public, Private, and Protected
2.6 Interface Inheritance
2.7 Polymorphism
2.8 Beyond the Basics
3 A Simple Object-Oriented Methodology
3.1 An Iterative Approach to Object-Oriented Development
3.2 The Phases of a Development Cycle
3.2.1 Requirements Analysis
3.2.2 The Analysis Phase
3.2.3 The Design Phase
3.2.4 The Coding Phase
3.2.5 The Testing Phase
4 The Unified Modeling Language
4.1 UML Diagrams
4.1.1 Use Case Diagrams
4.1.2 Static Structure Diagrams
4.1.3 Interaction Diagrams
4.1.4 State Diagrams
4.1.5 Implementation Diagrams
4.1.6 The Diagramming Process
4.2 Additional Diagrams and Notations
4.3 A Generic Approach to Object-Oriented Development
4.4 A UML Notation Job Aid
5 Coding Applications in Java
5.1 Java As an Object-Oriented Language
5.1.1 Java Language Basics
5.2 The Java Development Kit
5.3 The Java Platform
5.4 Compiling and Interpreting Java
5.4.1 Applets versus Applications
5.4.2 JavaBeans
6 Java Development with an Object-Oriented Modeling Tool
6.1 Object-Oriented Modeling Tools
6.2 Popkin Software's SA/Object Architect
6.2.2 Putting It All Together
7 Business Process Reengineering
7.1 What is Business Process Reengineering
7.1.2 The Redesign Process
7.2 IBM's Line of Vision Enterprise Methodology Diagrams and Notation
7.3 Watson's Existing Sales Process
7.4 Watson's Reengineered Sales Process
7.5 Automating the BPR Process
8 Use Case Diagrams and Ideal Object Models
8.1 Use Case Diagrams
8.2 Use Cases and Business Process Reengineering
8.3 A Use Case Diagram of the Watson's SalesWeb System
8.3.1 Clarifying Our Vocabulary Regarding the Watson's Application
8.4 Use Case Descriptions
8.5 Instances of Use Cases As Test Cases
8.6 From Use Cases to Ideal Object Models
8.7 The OOSE Ideal Object Model
8.7.1 Interface Classes
8.7.2 Entity Classes
8.7.3 Control Classes
8.7.4 Identifying Classes in Use Cases
8.8 An Ideal Object Model for the Report Sales Use Case
8.9 Creating Use Case Models with an Object-Oriented Modeling Tool
9 CRC Cards
9.1 The Layout of a CRC Card
9.2 The Steps in a CRC Session
9.2.1 Step 1: Assemble a Group
9.2.2 Step 2: Review Requirements
9.2.3 Step 3: Brainstorm a List of Classes
9.2.4 Step 4: Review the List of Classes
9.2.5 Step 5: Prepare CRC Cards
9.2.6 Step 6: Develop a Description of Each Class
9.2.7 Step 7: Brainstorm Responsibilities and Collaborators
9.2.8 Step 8: Generate Specific Scenarios
9.2.9 Step 9: Talk Through Several Scenarios
9.3 CRC Cards and Object-Oriented Thinking
9.4 Terms versus UML Terms
9.5 Automating the CRC Process
10 UML Class and Object Diagrams
10.1 Class Diagramming Basics
10.1.1 Attributes (Variables)
10.1.2 Operations (Methods)
10.1.3 More on Attributes and Operations
10.1.4 Associations
10.1.5 Class Inheritance
10.1.6 Interfaces
10.1.7 Identifying Aggregations
10.1.8 Constraints and Notes
10.2 Diagramming Objects
10.3 Creating a Class Diagram
10.3.1 An Object Diagram
10.3.2 A More Elaborate Class Diagram
10.4 Creating UML Class Diagrams with and Object-Oriented Modeling Tool
11 UML Sequence and Collaboration Diagrams
11.2 Sequence Diagrams
11.2.1 Sequence Notation
11.2.2 Creating a Sequence Diagram
11.3 Collaboration Diagrams
11.3.1 Collaboration Notation
11.3.2 Creating a Collaboration Diagram
11.3.3 Collaboration Diagrams and Patterns
11.4 Creating Sequence and Collaboration Diagrams with an Object-Oriented Modeling Tool
12 UML State and Activity Diagrams
12.1 State Diagrams
12.1.1 State Diagram Notation
12.1.2 Creating a State Diagram
12.2 Activity Diagrams
12.3 Creating State and Activity Diagrams with an Object-Oriented Modeling CASE Tool
13 Designing an Object-Oriented System
13.1 Moving from Analysis to Design
14 Choosing an Object-Oriented Architecture
14.1 Dividing an Application into Tiers
14.1.1 A Two-Tiered Design
14.1.2 A Three-Tiered Design
14.2 Assigning Packages to Tiers and Platforms
14.2.1 Two- and Three-Tiered Class Diagrams
14.3 UML Implementation Diagrams
14.4 Linking the Tiers
14.4.1 Object Request Brokers
14.5 Summing Up
14.6 The Architecture of the SalesWeb System
14.7 Capturing a Design in an Object-Oriented Modeling Tool
15 Expanding Your Design
15.1 Expanding Your Object Model
15.1.1 Extending Your Analysis Diagrams
15.1.2 Getting Concrete About Operations
15.1.3 Patterns
15.1.4 Using Classes, Interfaces, and Components
15.2 Developing User Screens or Web Pages
15.3 Arranging to Access Data
15.3.1 The Java DataBase Connectivity Package
15.3.2 Object-Oriented and Object-Relational Databases
15.4 The SalesWeb Design
15.5 Coding and Testing
15.5.1 Bottom-Up Testing Starts with Classes
15.5.2 Top-Down Testing Starts with Use Cases
15.6 Expanding Your Design in an Object-Oriented Modeling Tool
Appendix A Code for the SalesWeb Example
Appendix B A Comparison of UML, Booch, and MOT Notations
Appendix C Products Mentioned in the Book
Bibliography, Notes, and Web Sites
Index