How To Take This Class

Course Overview

The Object Oriented Analysis & Design using UML 2.0 course is a five-day, comprehensive hands-on workshop that will lay a solid groundwork for any developer to easily move into a Java programming environment. This course takes advantage of several of the new features in UML 2.0 and incorporates several of the newest techniques and approaches for improving OOAD.

Course Prerequisites

Attendees can include systems and software analysts and designers, programmers who read and implement program designs, personnel involved in inspections and design/code walk-through, software project managers managing large (re-use) projects, and maintenance personnel involved in maintaining and re-engineering software products. This course is also highly beneficial for those who specify requirements and business rules for systems.Attendees should have a working knowledge of developing software applications. Designing and analysis experience is also extremely beneficial. This is not a coding class.

Course Audience

This is a beginner level programming course, designed for developers or technical managers who specify, design and develop software and applications using traditional/formal/structured methods and want to learn to use an object-oriented approach. Ideally students should have some working knowledge of a procedural programming language and syntax, such as C.

What You'll Learn

Upon successful completion of this course, students will be able to:
  • Learn the three pillars of building a system; The Model, The Process, The Best Practices
  • Have a good, working definition of object-oriented programming
  • Understand the object oriented model, including types, objects, encapsulation, abstraction, messaging, protocols, inheritance, polymorphism, relationships, and coupling, strengths and weaknesses
  • Understand the concept of representational gap between an application and its targeted domain
  • Relate how Domain Modeling minimizes the representational gap between domain and application
  • Learn how to read and create the most important UML diagrams
  • Recognize the difference between analysis and design
  • Be able to produce a requirements analysis
  • Know how to create Use Cases, recognizing and avoiding bad use cases
  • Effectively perform object discovery using such tools as category lists and use cases to harvest candidate objects
  • Learn how to create a static conceptual model of your system
  • Learn how to create a dynamic behavioral model of your system
  • Understand how to move from analysis to design
  • Effectively identify relationships amongst objects, understanding when to show those relationships and when not to
  • Effectively assign responsibilities using the patterns and principles of GRASP (General Responsibility Assignment Software Patterns)
  • Understand Design Patterns and their importance
  • Learn how to apply Design Patterns to refine your model
  • Understand the uses of inheritance, where it is appropriate, and where it is not
  • Recognize the abuse of inheritance
  • Understand the importance and use of interfaces
  • Recognize rich versus anemic domain models
  • Understand how to move from design to implementation

Course Duration

5 Days

Course Outline

  1. Introduction to Modeling and OOAD
    • Building Models
    • Notation
    • Domains
    • The Process of OO Analysis and Design
    • Overview of UML 2.0
  2. Classes and Objects
    • Objects Provide a Service
    • Abstractions
    • Responsibilities and Operations
    • Messages and Public Interfaces
    • Instances
    • Classes
    • Instantiation
    • Encapsulation
    • UML Class and Instance Diagramming
  3. Relationships
    • Static Relationships
    • Dependencies
    • Associations
    • Navigability
    • Whole/Part Associations
    • Composition
    • Generalization/Specialization Relationships
    • Inheritance of Methods and Method Overriding
    • Abstract Classes
    • Dynamic Relationships
    • Sequence Diagrams
    • Communication Diagrams
  4. Use Cases
    • Discovering the Use Cases
    • Actors
    • Use Case
    • Caveats!
    • Extending Use Cases
    • Generalizations
  5. Use Case Scenarios
    • Scenarios
    • Primary and Secondary Scenarios
    • Essential and Real Scenarios
    • Documenting Use Cases and Scenarios
    • Use Case Benefits
  6. Conceptual Modeling
    • Conceptual Modeling
    • Concepts
    • Identifying Concepts
    • Mapmaking Principles
    • Attributes versus Concepts
    • Specification or Description
    • Associations
    • Common Association List
  7. Domain Behavior Modeling
    • Domain Behavior Modeling
    • Importance of Understanding Dynamic Behavior
    • System Sequence Diagrams
    • Contracts
  8. Discovering Potential Objects using CRC Cards
    • Discovering/Harvesting Objects
    • Brainstorming for Classes
    • CRC cards & CRC Steps
  9. Static Design Concepts
    • Visibility of Attributes and Operations
    • Multiplicity of Objects
    • Interfaces and Components
    • Design Complex Systems from Components
    • Identifying "Good" Classes
    • Multiplicity of Associations
    • Ternary Relationships
    • Role and Role Names
    • Association Qualification
    • Association Class
    • Whole/Part Associations
    • Extensibility Mechanisms:
    • Abstract Classes
    • Types and Substitutability
    • Polymorphism
    • Packages
    • Using Packages
    • Component Diagrams
  10. Dynamic Design Concepts
    • Sequence Diagrams
    • Business Rules
    • Verifying Completeness
    • Advanced Sequencing
    • Concurrent Sequences
    • Activity Diagrams: Swimlanes
  11. Domain Design
    • Iterative Development
    • Domain Design
    • Detailed Design
    • Forming the Architectural vision
    • Low Coupling Examined
  12. Detailed Design
    • Detailed Design Steps
    • Detailed Design Activities
    • GRASP patterns/principles revisited
    • Good/Bad packaging principles
    • Patterns In Design
    • Mapping to Databases
    • Mapping to User Interfaces
    • About Frameworks
    • Designing Components and Interfaces
  13. Summary & Conclusion
    • Usage of OO Technology
    • Methodologies and Notation
    • Management Issues
    • Reuse
  14. Remaining UML 2.0 Diagrams
    • Use Case Diagrams
    • Interaction Diagrams
    • Communication Diagrams
    • Sequence vs. Communication Diagrams
    • State Machine Diagrams
    • Statechart Diagram
    • Activity Diagram
    • Implementation Diagrams
  15. States and Activities
    • State Diagrams: Object Lifecycles
    • Definitions
    • States
    • Entry and Exit Actions
    • Activity
    • Statecharts Model a Single Object
    • Analysis State Diagrams
    • Activity Diagrams: Swimlanes