5-day training course: Design patterns for reliable embedded systems

Cars, aircraft, medical equipment through to fridges, TVs, MP3 players and even (wet) razors are all good examples of modern systems which contain embedded processors. Overall, it is usually estimated that for every desktop computer chip sold, 100 processors are sold for embedded systems.

Techniques for creating high-reliability embedded systems have focussed historically on safety-critical markets (e.g. the aerospace, medical and automotive industries), where system failures can have fatal consequences. These markets remain important, but embedded processors now also have an enormous impact in much broader areas of product development, including relatively simple consumer applications such as washing machines and set-top boxes. Manufacturers now wish to maximise the reliability of all such systems in order to reduce the cost of warranty repairs, minimise product recalls and ensure repeat orders. This course considers ways in which design patterns can be used to help achieve this goal.

First introduced in the 1990s, design patterns have become an important way for many companies to improve the quality of the products they produce. Put simply, design patterns allow organisations to capture the expertise of their best designers and make this available to other development teams within their organisation.

To obtain maximum benefit from this approach, companies aim to produce a “pattern language”: such a language is produced by a well-proven series of steps involving “mining”, “shepherding” and “workshopping”.

By the end of this 5-day course, participants will be in a position to create their first complete pattern language for reliable embedded systems.


Course brochure

You can download a brochure for this course.


How is this course delivered?

Our popular 5-day training course in “Design patterns for reliable embedded systems” is designed to be delivered to staff from your company, on your site, on dates of your choosing. The course can be delivered anywhere in the world. We recommend a class size of between 20-30 people.

A typical 5-day programme for this course is shown below. However, we are happy to adapt the course length and content to match your precise requirements.

Please contact us for further information.


Price guide

Typical fees for this on-site course are £1000 + VAT per person (pricing in other currencies on request), plus travel expenses.

This fee includes services of two experienced trainers, plus (for each participant) a printed set of course notes, two books, a full software licence for RapidiTTy™ MCU, and loan of all training necessary training equipment. Please note that each participant will need theor own laptop computer.

Please contact us for further details.


Trainer biodata

Anjali Das holds a BSc (Electronics) and an MSc (Electronics Science) from the University of Delhi, India, an MSc (Information and Communications Engineering) from the University of Leicester, UK, and a PhD (Communications) from the University of Kent, UK.

Having worked previously as a Lecturer at the University of Delhi, Anjali is now Technical Training Manager at TTE Systems Ltd.

Michael J. Pont holds a BSc (Electrical and Electronic Engineering) from the University of Glasgow and a PhD (Computer Science) from the University of Southampton.

Michael is currently Professor of Embedded Systems and Head of the Embedded Systems Laboratory at the University of Leicester: he is also CEO of TTE Systems Ltd.

Michael is author / co-author of more than 100 technical publications and author of three books (“Patterns for Time-Triggered Embedded Systems”, “Embedded C” and “Software Engineering with C++ and CASE Tools”).


Example pattern workshop

This training course does not aim to tell you very much about patterns created by other people: instead, our goal is to teach you the skills and techniques needed to create your own pattern language.

Creating such a language will usually involve “pattern mining” (where you identify and document a draft pattern), “shepherding” (where a more experienced pattern writer helps you to refine your draft pattern) and then a “pattern workshop” where a group of people will provide a final set of comments on your pattern.

A pattern workshop in progress

To help you to understand what is involved in a pattern workshop, a short video will be available shortly (showing a workshop in progress, in Leicester, UK, in September 2009).

The workshop considers the pattern “Disable timer interrupts”: you can also download a copy of this pattern.


Course contents

  • Seminar 1. Introduction and motivation This seminar introduces the course. To illustrate how design patterns can be used to support the rapid development of reliable embedded systems, the origins and evolution of the “PTTES” collection is discussed. Key concepts are introduced.
  • Seminar 2. The work of Christopher Alexander This seminar focuses on the landmark work of Christopher Alexander who introduced the concept of patterns. Examples of Alexander’s patterns are presented and discussed.
  • Seminar 3. Patterns everywhere Seminar 3 introduces the concept of software design patterns that has evolved from Alexander’s original ideas. The influential work of the ‘Gang of Four’ (GoF) is discussed. Various pattern ‘forms’ (GoF, POSA, etc.) are presented and the main elements of a pattern (problem, solution, context, forces, etc) are examined. Some examples of patterns that have been successfully applied to various other fields such as teaching and organisational management are also presented.
  • Seminar 4. Patterns for fault-tolerant software Seminar 4 considers patterns which have been developed to support the design and implementation of fault-tolerant systems. The focus is on the Hanmer pattern collection.
  • Seminar 5. Second-generation pattern languages for embedded systems Seminar 5 considers the challenges of creating software patterns for embedded systems which (a) contain useful low-level details, and (b) can be adapted for use with different hardware targets. The seminar discusses how second-generation pattern languages have been developed which address these issues, and discusses practical techniques for creating such languages.
  • Seminar 6. Identifying and documenting good patterns. In Seminar 6, John Vlissides’ seven habits of successful pattern writers are discussed. The seminar also explores the process of “mining” for patterns in an organisation.
  • Seminar 7. Refining your patterns: The “Shepherding” process. Seminar 7 considers how patterns are ‘shepherded’, in preparation for a pattern workshop. The seminar considers the skills required to act as a good shepherd and the shepherding process. A pattern language for shepherding is also presented
  • Seminar 8. Refining your patterns: Running a “Writers’ Workshop”.
    Seminar 8 demonstrates how to run a pattern workshop. Tips for holding a successful pattern workshop will be presented. A pattern language for writers’ workshops is also discussed.
  • Seminar 9. Assessing the effectiveness of your pattern language. There have been many “silver bullets” in the software world, techniques which have “guaranteed” that your future projects will always be completed on time and on budget. Instead of making rash claims, Seminar 9 explores cost-effective and practical ways in which you can obtain real data to determine whether your pattern language will be effective in your organisation.
  • Seminar 10. The future of “pattern-based software engineering” for embedded systems.
    Seminar 10 considers what Kurian has called “pattern-based software engineering” (PBSE). Tool support for PBSE is considered. In addition, possible applications of patterns in support of the maintenance of embedded systems is considered. We wrap up the course by reviewing the strengths and weaknesses of pattern-based design approaches for the developers of reliable embedded systems.

Target architecture

This module is taught using both microcontrollers and FPGAs as the targets (this equipment is provided on loan for the duration of the course: if you wish, you can purchase this equipment at the end of the course).


Related laboratory software

Laboratory exercises employ RapidiTTy MCU.

Course participants will each receive a full permanent licence for the latest version of RapidiTTy MCU as part of the course fee.


What do I need to know before I start this module?

During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).

Some experience with embedded systems is also assumed.

We don’t assume that you have had previous experience with design patterns.


Patterns for time-triggered embedded systems

Cover of Patterns for Time-Triggered Embedded Systems

Patterns for Time-Triggered Embedded Systems” is a 1000-page book which illustrates how you can create a range of reliable embedded systems with minimal resource requirements.

Patterns for Time-Triggered Embedded Systems” also provides an introduction to the concept of design patterns.

You can now download a complete copy of PTTES (free of charge and without the need to register). The source code examples from the book are also available (also free of charge).