| 1 | Course Outline | 1. Introduction to Analysis and Design Why is Programming Hard? The Tasks of Software Development Modules Models Modeling Perspective Objects Change New Paradigms
2. Objects Encapsulation Abstraction Objects Classes Responsibilities Attributes Composite Classes Operations and Methods Visibility Inheritance Protected and Package Visibility Scope Class Scope
3. Advanced Objects Constructors & Destructors Instance Creation Abstract Classes Polymorphism Multiple Inheritance Solving Multiple Inheritance Problems Interfaces Interfaces with Ball and Socket Notation Templates
4. Classes and Their Relationships Class Models Associations Multiplicity Qualified Associations Roles Association Classes Composition and Aggregation Dependencies Using Class Models
5. Sequence Diagrams Sequence Diagrams Interaction Frames Decisions Loops Creating and Destroying Objects Activation Synchronous & Asynchronous The Objects Drive the Interactions Evaluating Sequence Diagrams Using Sequence Diagrams
6. Communication Diagrams Communication Diagrams Communication and Class Diagrams Evaluating Communication Diagrams Using Communication Diagrams Object-Oriented Analysis & Design Using the Unified Modeling Language Rev 6.3.2 7. State Machine Diagrams What is State? State Notation Transitions and Guards Registers and Actions More Actions Internal Transitions Superstates and Substates Concurrent States Using State Machines Implementation
8. Activity Diagrams Activity Notation Decisions and Merges Forks and Joins Drilling Down Iteration Partitions Signals Parameters and Pins Expansion Regions Using Activity Diagrams
9. Package, Component, and Deployment Diagrams Modeling Groups of Elements – Package Diagrams Visibility and Importing Structural Diagrams Components and Interfaces Deployment Diagram Composite Structure Diagrams Timing Diagrams Interaction Overview Diagrams
10. Use Cases Use Cases Use Case Diagram Components Actor Generalization Include Extend Specialize Other Systems Narrative Template for Use Case Narrative Using Use Cases
11. Process Process Risk Management Test Reviews Refactoring History The Unified Process Agile Processes
12. The Project Inception Elaboration Elaboration II Construction Iterations Construction Iterations - The Other Stuff
13. Domain Analysis Top View – The Domain Perspective Data Dictionary Finding the Objects Responsibilities, Collaborators, and Attributes CRC Cards Class Models Use Case Models Other Models Judging the Domain Model
14. Requirements and Specification The Goals Understand the Problem Specify a Solution Prototyping The Complex User Other Models Judging the Requirements Model
15. Design of Objects Design Factoring Design of Software Objects Features Methods Cohesion of Objects Coupling between Objects Coupling and Visibility Inheritance
16. System Design Design A Few Rules Object Creation Class Models Interaction Diagrams Object-Oriented Analysis & Design Using the Unified Modeling Language Rev 6.3.2 Printing the Catalog Printing the Catalog II Printing the Catalog III Object Links Associations
17. Refactoring Refactoring Clues and Cues How to Refactor A Few Refactoring Patterns
18. Appendix A – UML Syntax
19. Appendix B – Design by Contract Contracts Enforcing Contracts Inheritance and Contracts
20. Appendix C – University Summary
21. Appendix D – Implementations C++ Java C#
|