Design patterns and emergent architecture focuses on the application of design patterns to satisfy non-functional requirements and to obtain a software architecture that can withstand software evolution in an emergent manner.

The basic idea that permeates the course is that non-functional improvements are made by transforming and refactoring a software application using patterns. An important aspect is the shaping of component interfaces in a way that makes integration easier by guaranteeing backwards compatibility with existing client code.

The program offers a healthy mix of theory and exercises. In the exercises the participants must select a pattern to improve an existing design on a particular non-functional aspect. Typically, such aspects are scalability, reuse, extensibility and portability. The last half day of the course addresses various architectural patterns from Buschmann et al. and shows how these architectures can be realized using the design patterns by making stepwise transformations.

The trainers Onno van Roosmalen and Martijn Ceelen have recently updated this training to fit with scrum and other agile processes.

Participant should have insight in object-oriented techniques, have a working knowledge of a common object oriented programming language (C++, Java, C#), have knowledge of syntax and semantics of most-used UML modeling concepts.

The course requires the capability to abstract from details in the source code using UML class diagrams. Regularly example program-fragments will be shown. The course is accompanied with source code in Java as well as the executables related to the case studies.

More information and sign-up