1. Introduction
A. What is the UML?
B. What the UML Doesn’t Provide
C. "4+1" View of Software Architecture
D. Iterative and Incremental Software Development
E. The Nine UML Diagrams
F. The UML Means Traceability
G. What About Process and Methodology?
H. The Synergy Process
2. Object-Oriented Concepts
A. Object-Oriented Concepts
B. Cottage Industry Mentality
C. Organizations Must Be Adaptive
D. Structured Analysis and Design vs. Object-Oriented
E. Benefits of Object-Oriented
F. Drawbacks of Object-Oriented
G. Objects and Classes
H. Message Passing vs. Subroutines
I. Encapsulation
J. Inheritance
K. Polymorphism
L. Interfaces
M. Software Changes and their Impact an Object-Design
N. Procedural Paradigm
O. Software Objects
3. Project Scoping
A. Scoping the project
B. Creating the project charter
C. Using Use Cases and the Use Case diagram
D. Actors: the driving force
E. Use Case constructs
F. Happy, Alternative, and Exceptions Pathways
G. Identifying "includes" and "extends" relationships
H. Analyzing and capturing business rules
I. Estimating Projects using Use Cases
J. Package diagrams
4. Classes
A. Types of Classes
B. Class Diagram
C. Cohesion and Coupling
D. Object Diagram
E. Where do we find associations?
F. Simple associations
G. Multiplicity
H. Generalization/Specialization
I. Parallel generalization
J. Interfaces
K. Aggregation/composition
L. Qualifiers
M. Association relationships
N. Reflexive relationships
O. The importance of Controller Classes
P. Attributes
Q. Operations
5. Sequence and Collaboration Diagrams
A. Dynamic or Process view
B. Sequence diagram
C. Message types and formats
D. Collaboration diagram
6. State and Activity Diagrams
A. Lifecycle of a class
B. State diagram
C. Activity diagram
D. Synchronization
7. Business Rules, Distribution and User Interface Prototype
A. Addressing the areas the UML does not address
B. Mapping business rules to attributes and operations
C. Distribution matrices
D. User interface prototyping
E. User Interface structure chart
8. Architecture, Design, and Component/Deployment Diagrams
A. Understanding the Importance of a Strong Architecture
B. Importance of a sound data model, translating logical design to physical design
C. Implementing design choices with performance in mind
D. Tuning for performance
E. Converting class diagrams to relational tables
F. A Better Architecture with the UML
G. Separating Components into Logical Units
H. User Interface, Business, Data Translation, and Persistence Layers
I. Component Diagrams
J. Deployment Diagrams and Active Objects
K. Combining Component and Deployment Diagrams
9. Summary
A. The Importance of Having a Process
B. The Importance of Having a Modeling Tool
C. Rules of Thumb
D. Additional Resources