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.
Nr. |
Titel |
Kurzbeschreibung |
Ausgabetermin |
Fester Termin |
Vorgaben |
1 |
git |
Einführung in den Umgang mit git |
14.10.2024 |
25.10.2024 |
Aufgabe 1
|
2 |
Filter |
Implementieren eines Filters mit Festkommaarithmetik |
21.10.2024 |
08.11.2024 |
Aufgabe 2
|
3 |
TMR |
Schutz durch Einbringung von Redundanz |
28.10.2024 |
22.11.2024 |
Aufgabe 3
|
4 |
EAN |
Schutz durch arithmetische Codierung |
11.11.2024 |
29.11.2024 |
Aufgabe 4
|
5.1 |
Testen |
Manuelles und automatisiertes Testen |
18.11.2024 |
13.12.2024 |
Aufgabe 5.1
|
5.2 |
Testen |
Manuelles und automatisiertes Testen |
25.11.2024 |
20.12.2024 |
Aufgabe 5.2
|
5.3 |
Testen |
Manuelles und automatisiertes Testen |
02.12.2024 |
10.01.2025 |
Aufgabe 5.3
|
6 |
Statische Analyse |
Clang Static Analyzer, Stack Analyse, WCET |
09.12.2024 |
17.01.2025 |
Aufgabe 6
|