Go to the Datasim Education BV homepage Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV
Information request

Follow datasim on Twitter

Share this page

Design Patterns Training

Course Category: 

Advanced Design and System Patterns  - (code ADP)

The main goal of this course is to learn the popular system patterns (also known as POSA and Buschmann patterns) and to apply them to structuring complex software systems. These patterns are distillations of best practices in software design and development and we apply them to systems using object-oriented and component-based models. We discuss each pattern in detail and we give guidelines on how to design and implement them. Furthermore, we integrate them into Domain Architectures and the design blueprints from the COA and COD courses. We also discuss how the class-level GOF patterns can be included into the POSA framework.

This unique course discusses how to design robust and flexible software systems using modern object oriented patterns.

What do you learn?

  • The complete POSA patterns (and more)
  • Integrating GOF patterns into system patterns
  • Multi-threaded and parallel patterns
  • Robust, efficient and maintainable software designs

What previous Delegates have said about the Course

  • "Very many practical tips, good combination theory and practice"
  • "Good/very good"
  • "Useful and motivating"

The percentage theory:practice is approximately 65:35.


Course contents updated May 2008

Course contents

A quick Review of the GOF Patterns

  • Pattern categories
  • Most important patterns in real-life applications
  • Precise documentation of patterns using UML 2.0
  • Extensions and adaptations of GOF patterns
  • What are the most important patterns?

Pattern Languages using GOF patterns

  • Combining inheritance and composition
  • Discovering and inventing new pattern combinations
  • Combining Creational, Structural and Behavioural patterns
  • Reusing pattern languages

Generic Patterns: Fundamentals

  • What is genericity, exactly?
  • Generic programming versus object-oriented programming
  • Subtype and parametric polymorphism
  • Creating generic versions of GOF patterns

Generic Patterns: Design and Applications

  • Services and interfaces (provides and requires)
  • Traits and traits classes
  • Policies and their relationship with contracts
  • Policy-based design
  • Enriched policies

The POSA Patterns: Overview

  • What is POSA?
  • Architectural patterns in POSA
  • Design patterns in POSA
  • Relationship with GOF patterns

Structural Decomposition

  • Whole-Part pattern
  • Examples from application areas
  • Comparing Whole-Part with Composite
  • Combinations


  • Command
  • Command Processor
  • Generic Command
  • Combining Command and Visitor
  • View Handler pattern


  • Mediator and its role in large systems
  • The 6 Proxy types
  • The Propagator pattern
  • Forward-Receiver pattern
  • Client-Dispatcher-Server pattern
  • Why Observer is not always the best solution

Organisation of Work

  • The Builder pattern
  • Applying Builder to create arbitrary object networks
  • Master-Slave pattern
  • Master-Slave: threads and parallel versions
  • Facet (Role) pattern

Interactive Systems

  • Model-View-Controller (MVC)
  • Presentation-Abstraction-Control (PAC)
  • PAC versus MVC; which one (or both)?
  • Creating large applications with PAC
Parallel Decomposition Techniques
  • Task and data decomposition
  • Grouping and ordering tasks
  • Data sharing among tasks
Algorithm Structure
  • Task and data parallelism
  • Divide and conquer
  • Geometric decomposition
  • Other decomposition techniques


  • An introduction to multithreading
  • Threads and thread lifecycle
  • Mutexes, lock and condition variables

Designing Threaded Applications

  • Thread models
  • Boss-Worker
  • Crew model
  • Assembly line

High-level Structures

  • Pipes and Filters
  • Broker
  • Blackboard
  • The steps in designing a Blackboard application

An Introduction to Domain Architectures

  • What is a domain architecture?
  • The five DA categories
  • Using domain architectures to structure POS and GOF patterns
  • Embedding POSA and GOF patterns in a DA setting
  • Examples and test cases

This course is for those software designers who have real hands-on experience of Gamma patterns and who wish to gain experience of those patterns that are needed and used for large, distributed and concurrent systems. It is not enough just to have read the Gamma book; you should have applied patterns such as Bridge, Factory, Visitor and State in applications. This is NOT a beginner's course!

Who should attend?
Software architects, senior designers and others who wish to gain insight into creating reusable software architectures for large systems.

Duration, price, date, locations
Course duration 3 days
Price Euro 1455.-- ex. VAT
Euro 1760.55 inc. 21% VAT
Date and location Dates available on request

It is also possible to organize this course at your company premises (the in-company option). If you have any question, please contact our Datasim office.

Share this page

Contact and Profile
Registration form
Course Dates