This is the governing body for certification in Disciplined Agile.

Design Patterns Thinking

Design patterns enable the emergent design that is needed in agile projects. Although patterns at one time were thought of as a “design up-front" technique, they are actually more powerful in agile projects to encapsulate variations that are discovered over time.  For development organizations to thrive in an agile environment, where change is to be embraced, it is critical that the systems they create are not vulnerable to variable requirements, new business priorities and opportunities, innovations in technology, or competitive market pressures.  Design patterns, properly understood and applied, address these concerns fundamentally. 

This course addresses key questions in modern development such as how to design systems that have changeability as a fundamental quality without over-designing them.  Also, it investigates how teams can communicate effectively when a design is in a constant state of change.  It also examines a very powerful way to analyze a problem domain such that the appropriate patterns can be clearly revealed. 

On this page you will find details regarding:

      1. Audience
      2. How the course is organized
      3. Learning Objectives
      4. Prerequisites
      5. Benefits
      6. Course Outline
      7. About Disciplined Agile
      8. Logistics


This course is intended for developers of every level, from junior to senior to technical leads. Testers who have experience in test automation will also benefit from attendance.

How the course is organized 

Patterns are examples of following the principles, practices, and wisdom that guides good design. They emphasize the importance of creating encapsulation and using delegation to separate concerns to protect from cascading change.    

The course uses practical examples (case studies) to show what happens when this guidance is ignored or misunderstood vs. what happens when it is followed.  The patterns are taught in this context, and each is delineated using real-world examples. 

Participants learn to use patterns as part of a thought process that guides analysis and design, using “Pattern Orientated Development” as a way to understand an ever-changing problem domain.  They also learn to consider patterns in the context of testability (specifically unit testingand refactoring (or “just in time” design). By combining these techniques into an overall paradigm of development, developers and teams learn to respond confidently when business priorities shift. 

Learning Objectives  

In this course, we will show you: 

    • How to use patterns thinking to enable your designs to emerge 
    • How to add functionality to designs while minimizing complexity 
    • What design patterns really are (and are not)
    • Twelve specific design patterns 
    • What code qualities you need to maintain to keep code flexible 
    • How to use design patterns to keep code quality high 
    • Several easy, low-cost practices that will improve the quality of your designs and code 
    • How to use design patterns in an agile environment 


    Participants should be familiar with a modern programming language (C#, Java, etc…) and the basics of object-oriented development.  No prior knowledge of design patterns is necessary.  Those who do have such knowledge will find that their view of what patterns are and how to gain from them will be fundamentally changed by this experience. 



      Day 1: Theory 

        • Examination of typical causes of project failure 
        • Example of a failed design 
        • Qualities of changeable code 
        • Testability as leverage in good design 
        • The principles and practices of professional development: The Strategy Pattern 
        • Wisdom from our field 

      Day 2: Application 

        • Perspectives in design 
        • Commonality-Variability Analysis (CVA) 
        • The Template Method as an example of CVA 
        • Using CVA to derive the Bridge Pattern 
        • Patterns in context: Adapter and Façade Patterns 
        • Design by synthesis vs. design by differentiation 
        • Re-solving the problem from Day 1 in a new, better way 
        • Emergence through encapsulation and patterns: Refactoring to the Open-Closed 
        • Group design exercise 

      Day 3: Expansion 

        • Group design exercise, debrief 
        • Aspects of flexibility 
        • The Analysis Matrix and the Abstract Factory 
        • Separation of use and creation 
        • Encapsulating construction 
        • The Singleton Pattern 
        • The Proxy Pattern 
        • The Decorator Pattern 
        • The Chain of Responsibility Pattern

      About Disciplined Agile (DA)

      Disciplined Agile (DA) is a process-decision tool kit that provides straightforward guidance to help people, teams, and organizations to streamline their processes in a context-sensitive manner.

      DA provides a solid foundation for business agility by showing how the various activities such as Solution Delivery (software development), IT Operations, Enterprise Architecture, Portfolio Management, Security, Finance, Vendor Management and many others work together. DA also describes what these activities should address, provides a range of options for doing so, and describes the trade-offs associated with each option.

      DA is architected into four views:

        1. Mindset. Builds on the foundations of agile and lean to address enterprise realities.
        2. People. Roles, responsibilities, and team structures.
        3. Flow. This captures the dynamic aspects of processes via lifecycle diagrams and workflow diagrams.
        4. Practices. This captures detailed strategies/techniques that are put into context via process goal diagrams.

      Course Logistics

      • Primary:Design and Analysis
      • Secondary: Agile
      Level: Intermediate
      Length: Three days – 21 hours of classroom time plus breaks
      Private On-site

      © 2013-2020 Project Management Institute, Inc.

      14 Campus Boulevard

      Newtown Square, PA 19073-3299 USA

      Powered by Wild Apricot Membership Software