Object Oriented Analysis and Design using UML

Explore OOAD, Use Cases, Best Practices, UML, Patterns, GRASP and More

TT1130

Introductory

5 Days

Course Overview

Object Oriented Analysis & Design using UML course is a five-day, comprehensive hands-on workshop that will lay a solid groundwork for any developer to easily move into an object oriented programming environment (such as Java, C#, C++, etc).. 

This course focuses on the advantages of the OO paradigm and domain modeling in reducing the representational gap between a target domain and the software application itself.  Minimizing this gap leads to more effective solutions that are both flexible and robust. The modeling notation taught and used in conjunction with the course is the industry standard UML (Unified Modeling Language). UML provides a programming language independent framework for the analysis, design, programming and testing of software applications. Using a combination of UML and various techniques for analysis and design, the course relates Object Oriented concepts to modeling complex problems. Models built using these techniques have a high success rate when turned into working code.

The course includes coverage of the most effective techniques in use today, such as Use Case analysis, static and dynamic system modeling, responsibility driven design, Design Patterns, using UML to document designs, and much more. The focus of the course is to give a practical approach to producing high quality object-oriented software designs and to provide the knowledge and experience necessary to avoid the most common risks associated with building production systems. Properly assigning responsibilities to classes is one aspect of detailed design that is particularly important.  This course pays special attention to that particular design activity, looking at GRASP (General Responsibility Assignment Software Patterns) patterns and how they can be applied to real design problems.

Hands-on Case Study: Throughout this course students will explore a "real world", practical project illustration (case study) of a typical application showing all the steps required for requirements capture, analysis, architectural and detailed design. The course week begins with a thorough introduction to the fundamental concepts of the object-oriented model and object-oriented programming and moves into in depth coverage of analysis and design techniques, with special emphasis on design patterns. Students will explore the full system lifecycle from initial conception to final delivery. Students are provided with a clear set of guidelines and rules that they apply to the modeling, from start to finish, of a typical application. These exercises emphasize all aspects of the modeling process with special attention being paid to reusability, extensibility and complexity management plus other techniques that will increase the likelihood that their projects will succeed.

Course Objectives

Working in an engaging group exercise and hands-on “thinking and drawing” environment, students will:

  • 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

Please see the Related Courses tab for specific Pre-Requisite courses, Related Courses that offer similar skills or topics, and next-step Learning Path recommendations.

Course Prerequisites

This is a beginner level 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. 

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. 

Course Agenda

Please note that this list of topics is based on our standard course offering, evolved from typical industry uses and trends. We’ll work with you to tune this course and level of coverage to target the skills you need most.

ession: Introduction to OO Analysis & Design

 Lesson: Introduction to Modeling and UML

  • Building Models
  • The Process of OO Analysis and Design
  • Understanding our Understanding
  • Levels of Detail

 Lesson: Classes and Objects

  • Objects and Abstractions
  • Responsibilities and Operations
  • Messages and Public Interfaces
  • UML Class and Instance Icons
  • Encapsulation

Lesson: Relationships

  • Statis Relationships
  • Dependencies and Associations
  • Composition
  • Generalization/Specialization
  • Abstract Classes
  • Dynamic Relationships
  • Modeling Relationships

Lesson: States and Activities

  • State Diagrams: Object Lifecycles
  • Activity Diagrams
  • Sequence of Steps
  • Branching and Merging

Lesson: UML Diagrams

  • Class Diagram
  • Use Case Diagrams
  • Interaction Diagrams
  • Sequence Diagrams
  • Implementation Diagrams

Session: Object-Oriented Analysis

Lesson: Use Cases

  • The Use Case View
  • Extending Use Cases
  • Generalizations
  • Discovering Use Cases

Lesson: Use Case Scenarios

  • Primary and Secondary Scenarios
  • Use Case Benefits
  • Discovering Use Case Scenarios

 Lesson: Conceptual Modeling

  • Conceptual Modeling
  • Identifying Concepts
  • Associations

Lesson: Domain Behavior Modeling

  • Domain Behavior Modeling
  • System Sequence Diagrams
  • Contracts
  • Creating Contracts

Session: Object Oriented Design

Lesson: Discovering Potential Objects

  • Discovering Objects
  • Brainstorming for Classes
  • Completing the Analysis
  • Creating a Project Dictionary

Lesson: Static Design Concepts

  • Visibility
  • Interfaces and Components
  • Identifying "Good" Classes
  • Common Extensibility Mechanisms
  • Abstract Classes
  • Polymorphism
  • Using Packages

Lesson: Dynamic Design Concepts

  • State Machine Diagrams and Business Rules
  • Verifying Completeness
  • Advanced States and Transitions
  • Concurrent States
  • Activity Diagrams: Swimlanes

Lesson: Domain Design

  • Iterative Development
  • Domain Design
  • Detailed Design
  • General Responsibility Assignment Patterns
  • Open Close Principle
  • Dependency Inversion Principle
  • Interface Segregation Principle
  • Single Responsibility Principle
  • Liskov’s Substitution Principle
  • Golden Rules
  • Low Coupling Examined

 Lesson: Detailed Design

  • Detailed Design Activities
  • Ensuring Low Coupling
  • Patterns In Design
  • Mapping to Databases

Session: Summary & Conclusion

  • Methodologies and Notation
  • Management Issues
  • Using Risk to Order the Process
  • Reuse

Course Materials

Each student will receive a Student Guide with course notes, code samples, software tutorials, diagrams and related reference materials and links (as applicable). Our courses also include step by step hands-on lab instructions and and solutions, clearly illustrated for users to complete hands-on work in class, and to revisit to review or refresh skills at any time. Students will also receive the project files (or code, if applicable) and solutions required for the hands-on work.

Throughout this course students will explore a "real world", practical project illustration (case study) of a typical application showing all the steps required for requirements capture, analysis, architectural and detailed design. The course week begins with a thorough introduction to the fundamental concepts of the object-oriented model and object-oriented programming and moves into in depth coverage of analysis and design techniques, with special emphasis on design patterns. Students will explore the full system lifecycle from initial conception to final delivery.

Students are provided with a clear set of guidelines and rules that they apply to the modeling, from start to finish, of a typical application. These exercises emphasize all aspects of the modeling process with special attention being paid to reusability, extensibility and complexity management plus other techniques that will increase the likelihood that their projects will succeed.

By exploring the lab Case Study students will learn to:

  • Understand the Object Oriented Paradigm
  • Know how use UML diagrams for modeling systems
  • Use the Unified process to guide the analysis and design of a system
  • Use Actors and Use-Cases to drive requirements capture
  • Build analysis models
  • Evolve the analysis model into a complex component-based architectural model
  • Use iterative round trip analysis and design techniques
  • Know how to verify "goodness" by applying a set of rules and guidelines

 

Raise the bar for advancing technology skills

Attend a Class!

Live scheduled classes are listed below or browse our full course catalog anytime

Special Offers

We regulary offer discounts for individuals, groups and corporate teams. Contact us

Custom Team Training

Check out custom training solutions planned around your unique needs and skills.

EveryCourse Extras

Exclusive materials, ongoing support and a free live course refresh with every class.

Mix, Match & Master!
2FOR1: Two Courses, One Price!

Enroll in *any* two public courses (for 2023 *OR* 2024 dates!) by December 31, for one price!  Learn something new, or share the promo!

Click for Details & Additional Offers

Learn. Explore. Advance!

Extend your training investment! Recorded sessions, free re-sits and after course support included with Every Course
Trivera MiniCamps
Gain the skills you need with less time in the classroom with our short course, live-online hands-on events
Trivera QuickSkills: Free Courses and Webinars
Training on us! Keep your skills current with free live events, courses & webinars
Trivera AfterCourse: Coaching and Support
Expert level after-training support to help organizations put new training skills into practice on the job

The voices of our customers speak volumes

Special Offers
Limited Offer for most courses.

SAVE 50%

Learn More