Verlässliche Echtzeitsysteme

Sprung zu den Vorlesungsinhalten

Sprung zu den Übungsinhalten

  • 07.04.2026 Alle Studierenden wurden in den StudOn-Kurs aufgenommen. Wir freuen uns auf die erste gemeinsame Vorlesung am 14.04.2026!
  • 05.03.2026 Aufgrund der (durch die benötigte Hardware) limitierten Teilnehmerzahl ist für die Veranstaltung eine Anmeldung via StudOn zwingend erforderlich. Diese ist ab sofort bis zum 06.04.2026, 23:55 geöffnet. Bitte schreibt uns unbedingt ein kurzes Motivationsschreiben (in das StudOn-Anmeldeformular), warum ihr gerne VEZS belegen möchtet.
  • 05.03.2026 Bitte beachten: Der aktuelle Zustand ist lediglich aus dem letzten Semester portiert. Alle angegebenen Daten und Termine sind vorläufig oder veraltet!
Eingebettete Systeme durchdringen praktisch alle Bereiche des täglichen Lebens. Immer häufiger übernehmen diese Echtzeitsysteme Aufgaben, welche hohe Anforderungen an die funktionale Sicherheit stellen. Beispiele hierfür sind Fahrerassistenzsysteme in modernen Automobilen, medizinische Geräte, Prozessanlagen oder Flugzeuge. Fehlfunktionen in diesen Anwendungen ziehen mitunter katastrophale Konsequenzen nach sich: finanzielle und materielle Schäden bis hin zu Personenschäden. Die Entwicklung sicherer und robuster Systeme gewinnt daher in der Forschung und Entwicklung zunehmend an Bedeutung.

Inhalt der Vorlesung

Während sich die Veranstaltung Echtzeitsysteme den zeitlichen Aspekten der Systementwicklung widmet, rücken in Verlässliche Echtzeitsysteme Methoden und Techniken für die Entwicklung zuverlässiger Systeme in den Mittelpunkt - schließlich ist Rechtzeitigkeit keine hinreichende Eigenschaft sicherheitskritischer Systemen. Beide Veranstaltungen sind unabhängig voneinander durchführbar, ergänzen sich jedoch in optimaler Weise. Ziel der Vorlesung ist die zuverlässige Entwicklung von Software (frei von internen Fehlern) ebenso wie die Entwicklung zuverlässiger Software (robust gegenüber äußeren Fehlern). Im Fokus steht hierbei weniger die Vermittlung theoretischer Grundkenntnisse, sondern vielmehr deren praktischer Einsatz in Form von:
  • Fehlersuche und -vermeidung: funktional, räumlich und zeitlich,
  • unter Einsatz existierender Werkzeuge und Methoden wie sich auch in der Industrie zum Einsatz kommen.
  • Robuste Echtzeitsysteme durch Fehlertoleranz und Verteilung
Auf diese Weise wird ein Fundament für die konstruktive Umsetzung verlässlicher Echtzeitsysteme gelegt werden. Dieses Modul vermittelt daher fundierte Anknüpfungspunkte für die Entwicklung verlässlicher Echtzeitsysteme.

Inhalt der Übungen

Im Rahmen der Übungen werden ausgewählte Vorlesungsinhalte mit besonderem Fokus auf deren praktischer Anwendung vertieft. Zum Einsatz kommen hierbei sowohl aktuelle Ansätze und Methoden aus der Forschung, als auch Werkzeuge und Techniken aus dem industriellen Umfeld. Hierzu zählt insbesondere auch die Fehlersuche mittels Debugger und die Codeanalyse mit der aiT-Toolchain (WCET-Analyse, Stack-Analyse, Abstrakte Interpretation mit Astrée). Im Verlauf des Semesters wird die Verwendung der verschiedenen Techniken und Werkzeuge in den verschiedenen Phasen der Produktentwicklung aufgezeigt, indem ein solcher Entwicklungszyklus simuliert wird. Die Übung wird in zwei Ausprägungen angeboten:
  • Grundlegende Übungen [Ü_EZS] (2,5 ETCS)
  • Erweiterte Übungen [EÜ_EZS] (5 ECTS)
Diese unterscheiden sich grundsätzlich nur in "Tiefe" und Umfang der gestellten Übungsaufgaben. Die erweiterte Übung zielt hierbei auf die selbstständige Erarbeitung von Problemlösungen ab, welche über das reine Problemverständnis hinausgehen. Dies umfasst insbesondere auch entsprechende Programmaufgaben und setzt daher einen etwas sichereren Umgang mit der Programmiersprache C/C++ und allgemeine Werkzeug/Linux-Kenntnisse voraus. Die Entwicklung eines Echtzeitsystems schliesst typischerweise Experten aus verschiedenen Bereichen mit ein. Die Veranstaltung nähert sich der Thematik zwar aus der Sicht der Informatik, ist jedoch grundsätzlich interdisziplinär ausgelegt und richtet sich sowohl an Studierende der Informatik als auch an diejenigen anderer Studiengänge mit einem anwendungsorientierten Bezug wie beispielsweise Mechatronik, Elektrotechnik, I&K, CE, Maschinenbau und Medizintechnik (→ Voraussetzungen).

Die Veranstaltung ist inhaltlich weitgehend in sich abgeschlossen und für alle Studierenden der genannten Studienfächern mit einer Begeisterungsfähigkeit für praktische, systemnahe Informatik geeignet. Unabhängig davon sind grundlegenden Betriebssystemkenntnissen, systemnaher Programmierung von eingebetteten Systemen und ein gewisses Durchhaltevermögen äußerst hilfreich.

Für die Bearbeitung der Übungsaufgaben sind entsprechend grundlegenden Programmierkenntnissen in C und/oder C++ notwendig. Hierfür ausreichend ist eine der folgenden Grundlagenveranstaltungen: Systemprogrammierung I/II, Softwaresysteme I, Systemnahe Programmierung in C beziehungsweise äquivalenter Veranstaltungen. Eine erfolgreiche Teilnahme ist für Nebenfächler auch auf der Basis der Grundlagen der Informatik (Programmiersprache: Java) möglich. Hierfür ist die Bereitschaft der eigenständigen (veranstaltungsbegleitenden) Aneignung grundlegender C/C++ Kenntnisse jedoch zwingend erforderlich. Entsprechende Unterlagen und Literaturempfehlungen werden von uns gerne bereitgestellt. Kenntnisse aus der Schwesterveranstaltung Echtzeitsysteme sind durchaus hilfreich, jedoch nicht für einen erfolgreichen Abschluss des Moduls erforderlich.

Weiterhin sind grundlegende Erfahrungen im Umgang mit der Linux-Umgebung in den CIP-Pools beziehungsweise deren Aneignung erforderlich.

Fragebogen: Programmierkenntnisse

Zur Einordnung der eigenen C-Kenntnisse haben wir einen Aufgabenkatalog aus Systemnahe Programmierung in C zusammengestellt. Teilnehmer, die sowohl die meisten Fragen sicher beantworten als auch die Programmieraufgabe lösen können, sollten keine handwerklichen Probleme mit den Übungsaufgaben haben und können sich voll auf die zu vermittelnden Konzepte konzentrieren. Fällt die Beantwortung der Fragen schwer, sollten die fraglichen Programmierkonzepte und die Bedeutung der unbekannten Schlüsselwörter vor Belegung des Moduls nachrecherchiert werden, da diese nicht im Rahmen der Übung vermittelt werden können.

Wochenplan

  Mo Di Mi Do Fr
08:00          
10:00   Vorlesung

0.031-113
Übung

00.152-113
   
12:00   Rechnerübung

WinCIP
Rechnerübung

WinCIP
   
14:00          
16:00          

Terminübersicht (Semesterplan)

KW Mo Di Mi Do Fr Themen
16 13.04 14.04 15.04 16.04 17.04 Vorlesung 1: EZS Zusammenfassung
Vorlesung 1: Organisation (Vorlesung)
Vorlesung 1: Einleitung
Übung 1: Organisation
Übung 1: Einführung in den Umgang mit git
Vorlesung 1 Übung 1
Ausgabe A1
17 20.04 21.04 22.04 23.04 24.04 Vorlesung 2: Grundlagen
Übung 2: Implementieren eines Filters mit Festkommaarithmetik
Vorlesung 2 Übung 2
Ausgabe A2
18 27.04 28.04 29.04 30.04 01.05 Vorlesung 3: Fehlertoleranz durch Redundanz
Übung 3: Triple Modular Redundancy
Vorlesung 3 Übung 3
Fester Termin A1 Ausgabe A3
19 04.05 05.05 06.05 07.05 08.05 Vorlesung 4: Codierung
Vorlesung 4
Fester Termin A2
20 11.05 12.05 13.05 14.05 15.05
Ausfall Ausfall Ausfall Ausfall Ausfall
21 18.05 19.05 20.05 21.05 22.05 Vorlesung 5: Fehlerinjektion
Übung 4: EAN Codes und Fehlerinjektion
Vorlesung 5 Übung 4
Fester Termin A3 Ausgabe A4
22 25.05 26.05 27.05 28.05 29.05
Pfingsten Pfingsten
23 01.06 02.06 03.06 04.06 05.06 Vorlesung 6: Dynamisches Testen
Übung 5: Testen
Vorlesung 6 Übung 5
Fester Termin A4 Ausgabe A5.1
24 08.06 09.06 10.06 11.06 12.06 Vorlesung 7: Grundlagen der statischen Programmanalyse
Vorlesung 7 Ausgabe A5.2
25 15.06 16.06 17.06 18.06 19.06 Vorlesung 8: Verifikation nicht-funktionaler Eigenschaften, Stack- und WCET-Analyse
Übung 6: Stackverbrauchs Analyse
Vorlesung 8 Ausgabe A5.3
Fester Termin A5.1 Übung 6
Ausgabe A6
26 22.06 23.06 24.06 25.06 26.06 Vorlesung 9: Verifikation funktionaler Eigenschaften: Design-by-Contract
Vorlesung 9
Fester Termin A5.2
27 29.06 30.06 01.07 02.07 03.07 Vorlesung 10: Fallstudie Reaktorschutzsystem
Übung 7: Abstrakte Interpretation
Vorlesung 10 Übung 7
Fester Termin A5.3 Ausgabe A7
28 06.07 07.07 08.07 09.07 10.07 Vorlesung 11: Zusammenfassung & Fragestunde
Übung 8: Zusammenfassung
Vorlesung 11 Übung 8
Fester Termin A6
29 13.07 14.07 15.07 16.07 17.07
Vorlesung 12 Übung 9
Fester Termin A7

Vorlesung

Gliederung und Vorlesungsfolien

Die Vorlesungsfolien werden im PDF-Format als animierte Folien und als Handout im Format DIN A4 angeboten.


All slides are copyrighted © 2012-13 by Fabian Scheler, © 2014-20 by Peter Ulbrich, and © 2020-26 by Peter Wägemann University of Erlangen-Nürnberg, Germany. Use without prior written permission of the authors is not permitted!

Kapitel Thema Datum Folien
0 EZS Zusammenfassung 14.04.​2026

handout, animiert

1 Organisation (Vorlesung) 14.04.​2026

handout, animiert

2 Einleitung 14.04.​2026

handout, animiert

3 Grundlagen 21.04.​2026

handout, animiert

4 Fehlertoleranz durch Redundanz 28.04.​2026

handout, animiert

5 Codierung 05.05.​2026

handout, animiert

6 Fehlerinjektion 19.05.​2026

handout, animiert

7 Dynamisches Testen 02.06.​2026

handout, animiert

8 Grundlagen der statischen Programmanalyse 09.06.​2026

handout, animiert

9 Verifikation nicht-funktionaler Eigenschaften, Stack- und WCET-Analyse 16.06.​2026

handout, animiert

10 Verifikation funktionaler Eigenschaften: Design-by-Contract 23.06.​2026

handout, animiert

11 Fallstudie Reaktorschutzsystem 30.06.​2026

handout, animiert

12 Zusammenfassung & Fragestunde 07.07.​2026 handout, animiert

All slides are copyrighted ©2005-14 by Wolfgang Schröder-Preikschat, ©2007-14 by Fabian Scheler, ©2014-19 by Peter Ulbrich, FAU Erlangen-Nürnberg, Germany, ©2020-2026 by Peter Wägemann, FAU Erlangen-Nürnberg, Germany. Use without prior written permission of the authors is not permitted!


Literatur

Zur Begleitung und Vertiefung des Vorlesungsinhalts kann auf folgende Fachbücher zurückgegriffen werden:

  • Michael Lyu, editor. Software Fault Tolerance, volume 3 of Trends in Software. John Wiley & Sons, Inc., 1995. http://www.cse.cuhk.edu.hk/~lyu/book/sft/.
  • Shubu Mukherjee. Architecture Design for Soft Errors. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2008.
  • Olga Goloubeva, Maurizia Rebaudengo, Matteo Sonza Reorda, and Massimo Violante. Software-Implemented Hardware Fault Tolerance. Springer-Verlag, 233 Spring Street, New York, NY 10013, USA, 2006.

Hierbei ist aber zu beachten, dass sich der Inhalt der Vorlesung nicht streng an einem dieser Bücher orientiert und sich keineswegs auf diese Bücher beschränkt. Die gezielte Aufarbeitung der einzelnen Vorlesungskapitel kann anhand der Literaturhinweise am Ende der jeweiligen Foliensätze erfolgen. Grundlegende Erläuterungen zu den Fachbegriffen und Grundtechniken fehlertoleranter Systeme sollten darüber hinaus in jedem Fachbuch vermittelt werden, das sich mit diesem Themengebiet befasst.

Übung

Gruppenanmeldung

Ziel der Übung

Analog zur Vorlesung befassen sich die Übungsaufgaben mit der zuverlässigen Entwicklung zuverlässiger Software. Im Rahmen eines Produktentwicklungszyklus werden in den Übungsaufgaben sowohl selbstgeschriebene als auch fremde Codestücke unter die Lupe genommen. Die Programmiersprache ist hierbei vorwiegend C. Als Vorraussetzung für die Übung sollte man deshalb grundlegende C-Kenntnisse mitbringen.

Das Ziel der Übungsaufgaben ist die Entwicklung eines konkreten Echtzeitsystems auf Anwendungsebene. Zu diesem Zweck kommt das Echtzeitbetriebssystem eCos als Entwicklungsplattform zum Einsatz. eCos wird in den verschiedensten Anwendungen (Kommunikation, Steuerung, ...) und Produkten (z.B. NETGEAR-Routern) eingesetzt und ist auch als Open-Source-Variante verfügbar. In den Übungen wird ein konkretes Echtzeitsystem auf Basis von eCos aufgebaut, anhand dessen sich die verschiedenen Problemstellungen bei der Entwicklung solcher Systeme zeigen lassen.

Zuverlässige Software entwickeln

Während der erste Teil sich auf das Finden von Entwicklungsfehlern konzentriert, betrachten wir in der zweiten Hälfte auch Fehler, die zur Laufzeit auftreten können. Hierzu zählen vor allem unerwartete Hardwarefehler, die den Programmfluss bzw. Rechenergebnisse beeinflussen können. In der Übung werden wir hierzu verschiedene konstruktive Maßnahmen kennenlernen und umsetzen, die die Software gegen derartige Fehlerszenarien härten können.

Zuverlässig entwickeln

Ein wesentlicher Bestandteil dieser Veranstaltung ist das Kennenlernen und der Umgang mit Werkzeugen, die die Entwicklung verlässlicher Systeme unterstützen. Hierzu zählen u.a.:

Umfang der Übungen

Der Umfang der Übungen richtet sich nach den angestrebten Prüfung und den dafür notwendigen ECTS-Punkten (zusätzlich zu den 2,5 ECTS der Vorlesung):

  • 2,5 ECTS: Die Bearbeitung aller Basis-Übungsaufgaben ist verpflichtend.
  • 5,0 ECTS: Die Bearbeitung aller Basis- und Erweiterungs-Übungsaufgaben ist verpflichtend.

Sowohl Tafelübungen als auch Rechnerübungen werden zusammen stattfinden, da sich die beiden Übungsrichtungen hauptsächlich im Umfang der zu bearbeitenden Aufgaben unterscheiden.

Folien und Dokumentation

Kapitel Thema Datum Folien
U1 Organisation 15.04.​2026

handout, animiert

U2 Einführung in den Umgang mit git 15.04.​2026

handout, animiert

U3 Implementieren eines Filters mit Festkommaarithmetik 22.04.​2026

handout, animiert

U4 Triple Modular Redundancy 29.04.​2026

handout, animiert

U5 EAN Codes und Fehlerinjektion 20.05.​2026

handout, animiert

U6 Testen 03.06.​2026

handout, animiert

U7 Stackverbrauchs Analyse 17.06.​2026

handout, animiert

U8 Abstrakte Interpretation 01.07.​2026

handout, animiert

U9 Zusammenfassung 08.07.​2026

handout, animiert

Übungsaufgaben

Nr. Titel Kurzbeschreibung Ausgabetermin Fester Termin Vorgaben
1 git Einführung in den Umgang mit git 15.04.​2026 28.04.​2026 Aufgabe 1
2 Filter Implementieren eines Filters mit Festkommaarithmetik 22.04.​2026 05.05.​2026 Aufgabe 2
3 TMR Schutz durch Einbringung von Redundanz 29.04.​2026 19.05.​2026 Aufgabe 3
4 EAN Schutz durch arithmetische Codierung 20.05.​2026 02.06.​2026 Aufgabe 4
5.1 Testen Manuelles und automatisiertes Testen 03.06.​2026 16.06.​2026 Aufgabe 5.1
5.2 Testen Manuelles und automatisiertes Testen 10.06.​2026 23.06.​2026 Aufgabe 5.2
5.3 Testen Manuelles und automatisiertes Testen 17.06.​2026 30.06.​2026 Aufgabe 5.3
6 Statische Analyse Clang Static Analyzer, Stack Analyse, WCET 17.06.​2026 07.07.​2026 Aufgabe 6
7 Abstrakte Interpretation Implementierung und Korrektheitsnachweis eines einfachen Ringpuffers und Filters 01.07.​2026 14.07.​2026 Aufgabe 7

Kontakt

Dozenten und Betreuer

Inhaltliche Fragen (alle Teilnehmer & Betreuende):

Organisatorische Fragen (Betreuende)

Anmeldung

Da die Mailingliste auch für Bekanntmachungen unsererseits genutzt wird, empfehlen wir allen Teilnehmern ausdrücklich die Anmeldung.