Safety Critical Software
Design Training
according to IEC 61508

Become an expert software developer for
safety critical microcontroller systems!


With this self study course you can learn how to design software for
safety critical and highly relieable systems which have to comply with
the IEC 61508 standard.


After purchasing you can immediately download the training package which contains over 200 pages of lectures in PDF format. The lectures are supplemented by well selected and refined exercises and examples in the programming language C.
In between the individual lectures you can perform multiple choice tests. The tests are automatically evaluated by scripts on our server and the results will be send to you.
At the end of the course you can apply to us for a certificate which confirms your successful performance of the training. During the time you perform the course you are welcome to contact us for any questions and hints and to participate in our discussion forum. This service is included in the package price.





Use the Advantage of our Self Study Course

1.Set your own pace and study when you have time and when your concentration is best.
2.Keep the lecture material and exercises for later reference and best practice example.
3.The lectures are written like a series of books with good explanations and summaries. The value of compareable books on the subject would exceed 300 US$.
4.Check your learning progress with the intermediate tests.
5.Get our support by mail and forum access for free.
6.NO RISK FOR YOU! 8 weeks of trial period and FULL RETURN OF YOUR MONEY, if you are not completely satisfied.




BUY NOW FOR ONLY US$ 98,00


CLICK HERE TO PURCHASE






Our References


University of Applied Sciences in Ingolstadt

The course is taught now for several years as a regular course in this university. For supplementary studies the students have access to the online course, its exhaustive material and intermediate examinations. In some projects the students only study via the online course, followed by regular exams about the subject.


University of Applied Sciences in Regensburg

The course is taught as regular lectures in this university. For supplementary studies the students have access to the online course, its exhaustive material and intermediate examinations. The use of the online course as entirely virtual lectures, followed by an exam, is planned.


Some of our customers use the course to train their software developers.




Try a Free Sample Lecture       Try a Free Sample Examination


Outline of the Training Content

Motivation for a better Architecture and Design


Problems of a Typical Software Design for Microcontrollers

Starting from a real life bad design, a Design "by Chance", I show how this leads to the typical problems of: Loss of Portability, Bad Maintainability, Unclear Interfaces, Possible Cross Influences, Complex Data Flow

Important non-functional Requirements for Software (which have to be Implemented in Architecture and Module Design)
There is a reason for attempting a better design. A good design should have certain features. I will explain these features and concepts and show their benefits which are: Safety, Stability, Robustness, Portability, Testability, Maintainability, Reusability





Software Architecture for Medium Sized and Large Microcontroller Systems

A Sample-Architecture (the Static Aspects)
To achieve the outlined requirements for a good design the architecture has to be well defined. I will show a sample architecture for medium sized and large microcontroller applications which supports these requirements for a good design. The following concepts and architecture components will be explained: Overview and Aims of the Architecture, HW Abstraction Layer, OS Abstraction Layer, Physical Layer, Frame Work, Benefits and Examples of Libraries

The Dynamic Aspects of Software Architecture (Microcontroller and Operating Systems)
The microcontroller itself has a vital influence on the architecture of the software. There are different types of microcontrollers and one of them predestins the use of a cooperative operating system. I will explain in detail which kind of microcontrollers are available on the market, which basic types of operating systems are used, and I will explain their features, advantages and disadvantages in the following main sections: Non-Optimized Architecture of Microcontrollers based on general purpose CPUs. Optimized True Microcontroller Architecture. Operating Systems (Behavior of Preemptive vs. a Cooperative OS, Features of a Preemptive Operating System, Features of a Cooperative Operating System, Example of an OS Design for a Safety Critical System)





Module Design for Medium Sized and Large Microcontroller Systems

The Module Design is concerned about the break down of the software into modules, the design of the interfaces between the modules and the related concepts of object orientation. Include structure of header files, templates which support a certain way of design etc. are also part of the subject. I will give an overview on the subject and discuss the issue of interfaces, control flow and data flow in detail. Further I will present two possible solutions including the related templates to perform an object oriented design in C. The contained lecture and examples will enable you to set up a good and robust module design for your software. The following details are part of the lectures:

Object Oriented Programming - The Choice for a good Module Design
Object Orientation is a good design choice, which I will pick up in the later part about module design. However OO programming is often confused with the use of certain programming languages such as C++ or Java which have a build in support of OO programming. However OO programming is much older than these languages and also can be done in simple C. The principles of object orientation are explained in a refreshing way, free of any programming language specific details.

The Control Flow and Data Flow
In a software system there is always a control flow and a data flow. Generally speaking the control flow triggers actions in your system by calling C functions. The data flow is a different view on your software. This is the use of certain data (e.g. a variable) throughout the complete system and considering the lifetime of the data. This can be a great source of problems. I will discuss the various possibilities and interactions and finally present a good solution to deal with the problems of an unsynchronized data flow and uni-directional vs. bi-directional data flow.

The Header Include Structure
Also the include structure of the header files has to be designed well. They are part of the two OO design concepts which are addressed in the course. Some rules about a good header design are explained and a sample design may serve as a reference for your own designs.

The Design of Data and Interfaces
Designing your data the right way is also a vital part in the overall software design. Do you use global variables because they are easy to use and believed to save RAM and runtime? There are better alternatives which will be discussed in the course: Scope and validity of data, Principles of data usage, Design pattern for static variable initialization, Access to the data in a module (object) via get-functions, The resource problem with global or static data.

Source Code Templates for Object Oriented Programming in Three Visibility Levels
Encapsulation is one of the basic concepts of an object oriented design. It should be also applied in normal C programming. There is a method to achieve this. I will explain this method and supply the templates for it. This set of templates can be used for C and via a compiler switch be used as a C++ class. This part of the course will teach you how to structure you modules, achieve encapsulation of private data and functions and how to design you interfaces: Public, protected and private data, Component interfaces and how they look like, How to design good modules, Encapsulation of functions and interface functions, Templates for a common use in C and C++

An Alternative - Source Code Templates for Object Oriented Programming in Two Visibility Levels (ADT)
There is a second design option to do OO programming in plain C. This method is called "Abstract Data Types" (ADT) and was first published 1980 in the Microsoft Press. It did not loose its cutting edge since then. The set of templates and design ideas are explained in the course. The same OO principles apply as for the first method so that only the differences are explained in the course.





Exercises

Various small exercises are done throughout the course to illustrate the principles. Further there is:
An exercise to design a Mini Airbag Software using the templates with three visibility levels
An exercise to design a Mini Airbag Software using ADT





BUY NOW FOR ONLY US$ 98,00


CLICK HERE TO PURCHASE




EXIT and visit our main information pages.


For questions about these pages send an e-mail to Copyright © all rights reserved Eberhard De Wille.