Description: This OOA&D training course presents the key concepts and methodologies required to perform quality object-oriented software engineering, with particular attention to practical techniques such as use-case and CRC analysis, UML diagramming, and patterns. Students practice applying object oriented analysis during the course to improve software designs and to see how software objects can be altered to build software systems that are more robust and less expensive. Students use several methods for analyzing software systems, finding and refining useful classes and relationships between objects. Care is taken not to focus on any one language so that all students can participate in the design exercises without relying on specific programming skills. The course emphasizes the most practical analysis and design methods, including the application of use case analysis, CRC analysis, problem domain analysis, activity diagramming, interaction diagramming, and class diagramming. The Unified Modeling Language (UML) is presented in detail and is used in the exercises and case studies. Practical aspects of project management and implementation are presented from the perspective of experienced object system designers. Special emphasis is given to the use of object patterns in developing software systems. The students apply their skills in labs that are mini design sessions, during which the instructor helps the students identify and overcome common obstacles that occur during group sessions.
Prerequisites: Knowledge of structured programming concepts.
Overview of Topics Covered:
The Object Paradigm
Objects and Classes
Abstraction and Encapsulation
Methods and Messages
Interfaces, Inheritance, and Polymorphism
Access Control
The Business Case for OO Development
Managing and Participating
in the OOA&D Approach
Information Gathering Techniques
Group Orientated Problem Solving
Brainstorming, Role-Playing
Managing Complexity via the "Iterative and Incremental" Approach
Managing Design Sessions
Design vs. Implementation
Quick Prototyping
Validation and Quality
Diagramming & Notational
Techniques Using the UML
Overview of Analysis and Design Phases
UML Notation
Analysis Diagramming Techniques
Design Diagramming Techniques
Generalization/Specialization
Aggregation and Composition
Association, Cardinality, Navigability
Package and Deployment Diagrams
Icons, Relationships, and Adornments
Requirements and Analysis
Phase
System Functions, Features and Constraints
Behavioral Analysis
Domain Analysis
Identifying Use Cases
Use Case Descriptions
Using CRC Cards
Containment and Composition
Referential Aggregation
Inheritance, SubTypes and Is-A Hierarchies
Association and Link Relationships
Diagramming System Events
State Transition Diagramming
Design Phase
Translating Analysis Concepts into Software Classes
Optimizing Classes and Objects: The Multi-Tiered Architecture View
Mapping System Functions to Objects
Object to Object Visibility
Collaboration Diagrams
Sequence Diagrams
Specifying Object Interfaces
Specification Class Diagrams
Patterns
Benefits of Patterns
Using Patterns During Analysis
Using Patterns During Design
Design Patterns (Gang-of-Four Format)
GRASP Patterns
Model-View-Controller Pattern
Persistence Patterns
Patterns as Internal Documentation
Design Refinement
Designing for Extensibility
Designing for Reusability
Partitioning the Class Space
Checking Completeness and Correctness
Testing Business Processes
Design Metrics
Discovering Reusable Patterns
Project Management and Implementation
Issues
Planning for Reusability
Transition Strategies and Planning Legacy System Integration
Managing the Development Cycle
Partitioning Work
Source Code Organization
Choosing Tools and Languages
Software Quality Metrics
OO Languages and Tools
Survey of OO Languages
The Role of Class Libraries
The Role of OOA&D Tools
Advanced Design Concepts
Expanding Inheritance Hierarchies
Abstract Classes and Virtual Methods
Overriding and Overloading
Multiple Inheritance
Interface versus Implementation Inheritance
Persistent Object and Database
Issues
The Coad Data Management Domain
Object Persistence
Object-Orientated Database Management Systems (ODBMS)