Object-Oriented Analysis and Design Using UML
You Will Learn How
To:
- Capture user requirements in use cases and transform them into
detailed designs
- Exploit the rich object-oriented modeling provided by Unified
Modeling Language (UML)
- Adapt to changing requirements with iterative techniques and
component-based design
- Design agile solutions optimized for modern object-oriented
languages and platforms
- Re-factor design models by applying proven design patterns
- Verify implemented designs with automated unit and system
tests
Course Benefits
Object-oriented (OO) analysis and design is the principal
industry-proven method for developing reliable, modular, testable
programs and systems. This course provides practical skills in the
latest OO requirements gathering, analysis, design, and testing
methods. Intensive hands-on exercises offer you a working knowledge
that turns concepts into practice.
Who Should Attend
Anyone involved in developing systems on modern object-oriented
platforms. Project teams benefit greatly by sharing the same
methodology with co-developers or with supportive management.
Familiarity with basic OO concepts is helpful, but not assumed.
Course Outline
Lesson1: Introduction and Overview
- Using UML notation
- Use case diagrams
- Object models
- Packages and subsystems
- Interaction diagrams
- Review of object-oriented concepts
- Classes, objects and attributes
- Encapsulation and interfaces
- Associations and multiplicity
- Inheritance and aggregation
- Polymorphism and collections
- The Unified Process
- The object-oriented software life cycle
- Use case-driven and architecture-centric features
- Iterative and incremental development
Lesson 2: Producing Requirements Models
- Capturing system behavior in use cases
- Finding primary and secondary use cases
- Refining use cases with Include and Extend dependencies
- Modeling user interface requirements
- Validating user interfaces against use cases
- Creating the domain object model
- Mapping ontological data structures onto a UML data model
- Building a class description database
- Finding analysis classes
- Managing analysis complexity with packages and subsystems
Lesson 3: Establishing the Object Model
- Refining classes and associations
- Analysis model vs. design model classes
- Categorizing classes: entity, boundary and control
- Modeling associations and collections
- Preserving referential integrity
- Achieving reusability
- Isolating reusable base classes
- Reuse through delegation
- Improving reuse with design patterns
Lesson 4: Generating the Behavioral Model
- Use case realization
- Sequence diagrams, object lifelines and message types
- Refining sequence diagrams
- Sharing models in a version controlled repository
- Implementing memory in objects using state machines
- States, events and actions
- Nested machines and concurrency
- Capturing state machines from sequence diagrams
- Modifying the object model to facilitate states
- Analyzing object behavior
- Modeling methods with activity diagrams
- Swimlanes, concurrency and synchronization
- Restructuring using polymorphism and delegation
- Improving robustness using constraints, dependencies and the
Object Constraint Language (OCL)
Lesson 5: Object-Oriented Design
- Design at the object level
- Designing and evaluating methods
- Synchronizing dependent attributes
- Normalizing classes with dependent data
- System design
- Partitioning systems for deployment
- Persisting objects to databases
- Mapping designs to concurrent systems
- Service-oriented architecture
- Distributing applications with Web services
- Applying component technology
- Deploying applications using components
Lesson 6: Design Patterns
- Purposes of design patterns
- Improving architecture, analysis models
- Achieving reuse, robustness and flexibility
- Applying design patterns
- Achieving user interface independence
- Patterns for persistence
- Improving designs by refactoring
- Creational, behavioral and structural patterns
- Testing Object-Oriented Designs
- Unit testing classes against their specifications
- Instituting automated object-oriented regression testing
- Validating implemented behavioral requirements
- Writing test scenarios from use case descriptions