OO Design and Modeling in an Agile World

The OO Design and Modeling in an Agile World training course is a highly interactive, lab-intensive exploration into object-oriented design and modeling, using Agile.

You will begin a rough set of high-level stories. During the course, you will learn to deconstruct the stories, and continually groom the product backlog according to the direction of the Product Owner (aka, the course instructor). The full five days will be spent on a single problem domain – you will be not be given complete requirements up front; rather, your design should evolve as new requirements are uncovered with each new lab.

The design portion of the course is taught in a Socratic fashion.

  • You will be given requirements before the lecture, working in teams to create your best design.
  • Teams will present their design on a rotating basis; when your team is not presenting, you are encouraged to ask questions and add to the discussion.
  • The instructor will teach to the problem. Often, this will include explaining a pattern and/or reinforcing good OO principles.
  • The instructor will present a solution – and you are encouraged to challenge it.
  • Teams will be given time to refactor their solutions, and present again to share design changes and reasons for the changes.

All design labs are done in an Agile fashion and require teams to provide estimates, continually reprioritize to keep their Product Owner happy, think realistically about what they can do each iteration, and time box everything.

Prior training and/or experience with Agile practices is required; some knowledge of Scrum, OO, and UML is helpful.

Course Summary

Learn to use Agile for object-oriented design and modeling.
Skill Level: 
Learning Style: 

Hands-on training is customized, instructor-led training with an in-depth presentation of a technology and its concepts, featuring such topics as Java, OOAD, and Open Source.

Hands On help
5 Days
Productivity Objectives: 
  • Review/provide a solid foundational understanding of key Object Oriented concepts
  • Learn to use the Unified Modeling Language (UML) in a minimalistic and efficient manner
  • Understand how to blend OO, Agile, and UML to write the best software as quickly as possible
  • Gain hands on practice by doing design, not just theorizing about it

What You'll Learn

In the OO Design and Modeling in an Agile World training course, you’ll learn:

  • Applied OO
    • Definition and Motivation for OOP
    • Ensure Understanding of OOP Fundamentals
    • OOP “First Principles”
    • LAB
  • UML Essentials
    • Use Cases
    • Class Diagrams
    • Sequence Diagrams
    • “Turning Straw Into Gold” – Using UML
    • LAB
  • Agile Development
    • Overview of agile software development
    • Agile Manifesto Values & Principles
    • Introduction to iterative coding practices
  • Release Planning
    • First Time Estimates
    • Sizing Your Stories
    • Velocity-Driven Release Planning
    • Applying Themes
    • Leveraging Use Cases For “Check and Balance”
    • LAB: Release Planning Exercise
  • Product Owner Roles & Responsibilities
    • Will the Real Product Owner Please Stand Up
    • Product Backlog & Requirements
    • Roles and Personas
    • Story Workshops
    • Spikes and Special Stories
    • LAB Identify and Define User Roles &: User Story Writing
  • Grooming The Backlog
    • Prioritization
    • Looking Ahead
    • Groom Continually
    • Value Assessment
    • Risk-Based Prioritization
    • LAB: Running a Successful Sprint Planning Meeting
  • Commonality and Variance
    • Techniques for Translating From Stories and/or Use Cases to a Class Diagram
    • Fundamentals of Commonality/Variability Analysis (CVA)
    • CRC Cards
    • How to Handle Variations as We Get New Requirements
    • Understanding and Using Factories
    • LAB
  • Delegation
    • Delegation and Why it is so Powerful
    • How Various Design Patterns Leverage Delegation
    • Adapter Pattern
    • Strategy Pattern
    • LAB
  • Refactoring
    • What is Refactoring
    • Why Refactor
    • Identifying Code Smells
    • How the IDE can assist in refactoring
    • LAB
  • Using Abstraction
    • Understanding the Template Method Pattern
    • Importance of Depending on Abstraction
    • LAB
  • Model-View-Controller
    • MCV Principles and the Motivation for Using MVC
    • Differentiating between Model 1 & Model 2 Architectures
    • Benefits of the Front Controller Pattern
    • Using the Observer Pattern to reduce coupling
    • LAB
  • Managing Access
    • The Proxy Pattern and the Motivation for it
    • How a Dynamic Proxy Works
    • Why the Dynamic Proxy Offers a More Flexible Proxy Solution
    • LAB
  • Dynamic Responsibilities
    • Using the Decorator Pattern to Bring Flexibility to Designs
    • Adding Functionality and Flexibility
    • Decorator Pattern – Class Diagram
    • Decorators in the Java/IO Pattern
    • Designing a Custom I/O Decorator
    • LAB

Get Custom Training Quote

We'll work with you to design a custom OO Design and Modeling in an Agile World training program that meets your specific needs. A 100% guaranteed plan that works for you, your team, and your budget.

Learn More

Chat with one of our Program Managers from our Boulder, Colorado office to discuss various training options.

DevelopIntelligence has been in the technical/software development learning and training industry for nearly 20 years. We’ve provided learning solutions to more than 48,000 engineers, across 220 organizations worldwide.

About Develop Intelligence
Di Clients
Need help finding the right learning solution?   Call us: 877-629-5631