Verlässliche Echtzeitsysteme - Übung
Ziel der Übung
Analog zur Vorlesung befassen sich die Übungsaufgaben mit der zuverlässigen Entwicklung zuverlässiger Software. In den Übungsaufgaben werden sowohl selbstgeschriebene als auch fremde Codestücke unter die Lupe genommen. Die Programmiersprache ist hierbei ausschließlich C. Als Vorraussetzung für die Übung sollte man deshalb grundlegende C-Kenntnisse mitbringen.
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.:
- Versionsverwaltung von Quellcode mit Hilfe von git
- Softwaretest mittels CMake und CTest
- Codeüberdeckungsanalyse mittels gcov (lcov)
- Fehlerinjektion mittels FAIL*
- Statische Bestimmung des Speicherbedarfs (StackAnalyzer)
- Statische Codeanalyse mit Hilfe abstrakter Interpretation (Astree)
Evaluationsergebnis SS 2018
Übungsfolien und vorläufige Terminplanung
Kapitel | Thema | Datum | Folien |
---|---|---|---|
U1 | Organisation | 09.04.2018 | 1x1, 2x2, animiert |
U2 | Einführung in den Umgang mit git | 1x1, 2x2, animiert | |
U3 | Implementieren eines Filters mit Festkommaarithmetik | 16.04.2018 | 1x1, 2x2, animiert |
U4 | Triple Modular Redundancy | 30.04.2018 | 1x1, 2x2, animiert |
U5 | EAN Codes und Fehlerinjektion | 14.05.2018 | 1x1, 2x2, animiert |
U6 | Testen | 28.05.2018 | 1x1, 2x2, animiert |
U7 | Stackverbrauchs Analyse | 11.06.2018 | 1x1, 2x2, animiert |
U8 | Abstrakte Interpretation | 25.06.2018 | 1x1, 2x2, animiert |
Übungsaufgaben
Nr. | Titel | Kurzbeschreibung | Ausgabetermin | Fester Termin | Vorgaben |
---|---|---|---|---|---|
1 | git | Einführung in den Umgang mit git | 09.04.2018 | 26.04.2018 |
Aufgabe 1 |
2 | Filter | Implementieren eines Filters mit Festkommaarithmetik | 16.04.2018 | 03.05.2018 |
Aufgabe 2 |
3 | TMR | Schutz durch Einbringung von Redundanz | 30.04.2018 | 24.05.2018 |
Aufgabe 3 |
4 | EAN | Schutz durch arithmetische Codierung | 14.05.2018 | 07.06.2018 |
Aufgabe 4 |
5 | Testen | Manuelles und automatisiertes Testen | 28.05.2018 | 14.06.2018 |
Aufgabe 5 |
6 | Statische Analysen | clang static analyzer, stack analyse, WCET | 11.06.2018 | 28.06.2018 |
Aufgabe 6 |
7 | Abstrakte Interpretation | Implementierung und Korrektheitsnachweis eines einfachen Ringpuffers und Filters | 25.06.2018 | 05.07.2018 |
Aufgabe 7 |