EBS 2.2 Flashcards

Kapitel 4-6

1
Q

Warum sind für die Programmierung eingebetteter Systeme im Vergleich zu gängigen Praktiken völlig neuartige Ansätze erforderlich?

A

Eingebettete Systeme, besonders Echtzeitsysteme, haben strikte Anforderungen an das zeitliche Verhalten. Sie müssen nicht nur logisch korrekte Ergebnisse liefern, sondern diese auch rechtzeitig zu bestimmten Deadlines. Dies erfordert spezielle Programmieransätze, die sowohl zeitliche als auch parallele und verteilte Prozesse beherrschen können

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist der Unterschied zwischen harten und weichen Echtzeitsystemen?

A
  • Harte Echtzeitsysteme: Müssen alle Deadlines unter allen Umständen einhalten, da sonst katastrophale Folgen drohen (z.B. Flugzeugsteuerungen, Airbags).
  • Weiche Echtzeitsysteme: Können geringfügige Deadline-Überschreitungen tolerieren, wobei die Qualität der Ergebnisse oder Dienste leidet, aber die Funktionalität weiterhin besteht (z.B. Videodekompression).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche Herausforderung besteht bei der Zeitachse der Umgebung und der Zeitachse des Rechners in eingebetteten Systemen?

A

Die reale Welt hat eine kontinuierliche, reellwertige Zeit, während digitale Rechner mit einer diskreten Zeit arbeiten. Das manuelle Abgleichen dieser Zeitachsen ist mühsam und fehleranfällig, weshalb automatische Ansätze zur Übereinstimmung wünschenswert sind.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist die Hypothese der perfekten Synchronie in der synchronen Programmierung?

A

Die Hypothese der perfekten Synchronie besagt, dass Zustandsübergänge und virtuelle Kommunikation keine Zeit verbrauchen. Zeit vergeht nur in stabilen Zuständen des Systems. Diese Annahme ermöglicht es, Reaktionszeiten unabhängig von der Implementierung zu planen und künstliche Verzögerungen zu vermeiden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind die Vorteile der perfekten Synchronie?

A
  • Reaktionszeiten sind frühzeitig bekannt.
  • Unabhängig von der konkreten Implementierung.
  • Vermeidung künstlicher Verzögerungen.
  • Ermöglicht die Verfeinerung von Systemreaktionen ohne Beeinflussung des zeitlichen Verhaltens.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist Esterel und wofür wurde es entwickelt?

A

Esterel ist eine textuelle, perfekt synchrone Sprache für die Programmierung reaktiver Systeme. Sie wurde entwickelt, um die Steuerung komplexer reaktiver Systeme wie Roboter zu ermöglichen, da herkömmliche Programmiersprachen dafür ungeeignet waren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie arbeitet ein Esterel-Programm?

A

Ein Esterel-Programm verarbeitet Ströme von Ereignissen und reagiert auf jedes Eingabeereignis sofort durch Änderung des internen Zustands. Diese Reaktion erfolgt synchron mit der Eingabe, ohne dass während der Berechnung neue Eingaben auftreten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was sind die Hauptmerkmale von Esterel?

A
  • Perfekte Synchronisation von Ein- und Ausgabe.
  • Nebenläufiges, deterministisches Verhalten.
  • Umfangreiche Konstrukte zur Zeitdarstellung.
  • Möglichkeit zur Modularisierung.
  • Unterstützung durch parallele Programmierung.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie werden Konstanten und Funktionen in Esterel deklariert?

A
  • Konstanten: constant MIN, MAX: integer;
  • Funktionen: function TOP(): integer;

Funktionen können keine, eine oder mehrere Argumente haben und ihre Definition erfolgt in der Hostsprache (C oder Ada).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was sind Signale in Esterel und welche Arten gibt es?

A

Signale dienen der Kommunikation per Broadcasting und können als Input-, Output- oder Input-Output-Signale deklariert werden. Es gibt reine Signale (ohne Daten), einfache Signale (mit Wert) und kombinierte Signale (mit Kombinationsfunktion).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist der Unterschied zwischen Variablen und Signalen in Esterel?

A
  • Signale: Übertragen Werte nur zu bestimmten Zeitpunkten und besitzen den Status “present” oder “absent”.
  • Variablen: Haben einen gespeicherten Wert, der mehrfach während eines Zeitpunkts geändert werden kann und besitzen keinen Status.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was bedeutet das WTO-Prinzip in Esterel?

A

Das Write Things Once-Prinzip erlaubt die Wiederverwendung von Programmcode durch Verschachtelung syntaktischer Strukturen. Dies führt zu kompakteren, weniger fehleranfälligen und besser wartbaren Programmen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie funktioniert Parallelität in Esterel?

A

Esterel erlaubt die Parallelkomposition von Programmen, bei der zwei Programme P1 und P2 nebenläufig ausgeführt werden und Eingaben sowie Ausgaben synchronisiert behandelt werden. Die Kommunikation erfolgt durch Instantaneous Broadcasting.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sind die Hauptbestandteile eines Esterel-Programms?

A

Ein Esterel-Programm besteht aus Deklarationen (von Datentypen, Konstanten, Funktionen, Prozeduren und Signalen) und Instruktionen (elementare Anweisungen, Verzweigungen, Schleifen, Eingabe/Ausgabe, zeitliche Anweisungen und Ausnahmebehandlungen).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist Giotto und wofür wird es verwendet?

A

Giotto ist ein zeitgesteuerter Programmieransatz für eingebettete Systeme, der eine zeitgesteuerte Programmiersprache, einen Compiler und ein Laufzeitsystem umfasst. Es wurde entwickelt, um die Softwareentwicklung für Systeme mit harten Echtzeitanforderungen und periodischem Verhalten zu unterstützen, insbesondere in der Automobilindustrie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wie unterscheidet sich der zeitgesteuerte Ansatz von Giotto von anderen Ansätzen wie Esterel?

A

Im Gegensatz zu Esterel, das ereignisgesteuert ist, verwendet Giotto einen zeitgesteuerten Ansatz. Es spezifiziert die genaue Echtzeitinteraktion zwischen Softwarekomponenten und der Systemumgebung und trennt zeitliche Belange von funktionalen Anforderungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Wer hat Giotto entwickelt und welche Hauptmerkmale hat es?

A

Giotto wurde an der University of California, Berkeley, im Team von Professor Thomas Henzinger entwickelt. Hauptmerkmale sind die Trennung von plattformunabhängigen funktionalen und zeitlichen Belangen von plattformspezifischen Scheduling- und Kommunikationsfragen, was zu vorhersagbarem zeitlichen Verhalten führt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Welche Struktur und Elemente beinhaltet ein Giotto-Programm?

A

Ein Giotto-Programm umfasst Sensoren, Aktuatoren, Tasks und Treiber, die in Modes organisiert sind. Jeder Mode hat eine definierte Zeitperiode, Mode Ports, Task Invocations, Actuator Updates und Mode Switches. Diese Struktur ermöglicht eine klare Trennung von Timing und Funktionalität.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Welche Aufgaben hat der Giotto-Compiler?

A

Der Giotto-Compiler übersetzt das Giotto-Programm in ausführbaren Code, bestimmt das Scheduling für nebenläufige Tasks und entscheidet, welche Tasks auf welchen Prozessoren ausgeführt werden. Er benötigt die Worst Case Execution Time (WCET) jedes Tasks und Informationen über die Leistungsfähigkeit der Plattform.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Was sind die E-Maschine und die S-Maschine im Giotto-Laufzeitsystem?

A

Die E-Maschine (Embedded Machine) ist für die reaktive Interaktion mit der Systemumgebung zuständig und interpretiert den E-Code. Die S-Maschine (Scheduling Machine) regelt das proaktive Zusammenspiel mit der Plattform und interpretiert den S-Code, der die zeitliche Reihenfolge der Taskausführung spezifiziert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Welche Vorteile bietet Giotto für die Entwicklung von Echtzeitsystemen?

A

Giotto verbessert die Zuverlässigkeit und Vorhersagbarkeit des Systemverhaltens durch strikte Trennung von Timing und Funktionalität. Es reduziert den Entwicklungsaufwand, indem es den Compiler für das Timing verantwortlich macht, und erlaubt einfache Änderungen am Zeitverhalten und der Funktionalität.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Warum ist Giotto besonders für sicherheitskritische Applikationen geeignet?

A

Giotto gewährleistet ein deterministisches Verhalten der Software, da es das Timing exakt vorgibt und die Ausführung von Tasks überwacht. Dies ermöglicht eine formale Verifikation des Systems und macht Giotto geeignet für sicherheitskritische Applikationen mit harten Echtzeitanforderungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Wie löst Giotto die Herausforderung der Trennung von Timing und Scheduling?

A

Giotto trennt Timing (Echtzeitanforderungen) von Scheduling (Aufgabenverteilung auf der Plattform). Der Entwickler spezifiziert nur das Timing und die Interaktion der Prozesse, während der Compiler das Scheduling übernimmt, was zu einer effizienten und fehlerfreien Ausführung führt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Was zeigt das Beispiel eines Giotto-Programms zur Aufzugssteuerung?

A

Das Beispiel zeigt, wie Sensoren, Aktuatoren, Tasks und Treiber definiert und in Modes organisiert werden, um den Aufzug zu dem angeforderten Stockwerk zu fahren und die Tür zu öffnen und zu schließen. Es illustriert die Syntax und grundlegende Struktur eines Giotto-Programms.

25
Q

Was ist der Unterschied zwischen Giotto und Esterel?

A

Giotto basiert auf einem zeitgesteuerten Ansatz, bei Esterel handelt es sich
um eine ereignisgesteuerte Programmiersprache.

26
Q

Was bedeutet „perfect synchrony“ für ein reales Steuergerät?

A

Die Annahme der perfekten Synchronisierung bedeutet auf der Ebene der
Spezifikation, dass eine Reaktion stets in Nullzeit geschieht. Wird auf Basis
dieser Spezifikation Software für ein reales Steuergerät erstellt, bedeutet
dies lediglich, dass die Reaktionszeit der Software bzw. des Steuergeräts
schnell genug sein muss, d. h., die Reaktion und damit die Erzeugung der
Ausgabeereignisse muss noch vor dem Anliegen neuer Eingabeereignisse erfolgen.

27
Q

Sie wollen ein eingebettetes System mit harten Echtzeitanforderungen
entwickeln. Welche der beiden Sprachen wählen Sie aus und warum?

A

Ein eingebettetes System mit harten Echtzeitanforderungen kann gut mit
Giotto entwickelt werden, da hier alle Echtzeitanforderungen explizit codiert
werden können. (Esterel dagegen ist ein ereignisbasierter Ansatz, der
lediglich die Kausalität aller Reaktionen, nicht aber deren tatsächlichen
Echtzeitcharakter generiert.)

28
Q

Warum könnte ein Entwurf eines reaktiven Systems leicht nichtdeterministisch
werden?

A

Der Entwurf eines reaktiven Systems kann deshalb leicht nichtdeterministisch
werden, weil durch die nebenläufige Kopplung von Teilspezifikationen
ungewollter Nichtdeterminismus entstehen kann, den der Entwickler
aufgrund der Komplexität der Nebenläufigkeit bei der Spezifikation übersehen
hat bzw. nicht überblicken kann. Gute Entwurfssysteme bieten dem
Entwickler darum eine semantische Analyse seines Entwurfs an, die diesen
auf eventuelle Nichtdeterminismen überprüft und entsprechende Fehlermeldungen
ausgibt.

29
Q

Warum darf der Entwurf eines reaktiven Systems nicht nichtdeterministisch
sein?

A

Der Entwurf eines reaktiven Systems darf nicht nichtdeterministisch sein,
weil es sonst zu einem nicht vorhersagbaren Verhalten kommen kann:
Funktionaler Nichtdeterminismus ist grundsätzlich nicht implementierbar,
temporaler Nichtdeterminismus kann dazu führen, dass Echtzeitbedingungen
nicht eingehalten werden können.

30
Q

Was umfasst die Entwicklung eingebetteter Systeme neben der Programmierung?

A

Die Entwicklung eingebetteter Systeme erfordert eine systematische Vorgehensweise mit aufeinander folgenden Entwicklungsphasen, inklusive der Spezifikationstechniken im Softwareentwurf, die eine formale oder semiformale Beschreibung des Systems ermöglichen.

31
Q

Warum ist der Softwareentwurf wichtig vor der eigentlichen Programmierung?

A

Der Softwareentwurf ermöglicht eine abstrakte, eindeutige und vollständige Beschreibung des Systems, was die spätere Programmierung erleichtert und die Qualität des Endprodukts verbessert.

32
Q

Was sind Statecharts und wer hat sie entwickelt?

A

Statecharts sind eine grafische Spezifikationssprache für komplexe, zustandsbasierte Systeme, die 1987 von David Harel entwickelt wurden.

33
Q

Welche Hauptvorteile bieten Statecharts im Vergleich zu sequenziellen Automaten?

A

Statecharts erweitern sequenzielle Automaten um Konzepte der Nebenläufigkeit, Kommunikation und hierarchischen Dekomposition, was die Modellierung komplexer Zustandsräume ermöglicht.

34
Q

Wie lautet die Schreibweise für die Beschriftung der Transitionen in Statecharts?

A

Die Schreibweise lautet: „e [b] / a“, wobei e das Ereignis, b die Bedingung und a die Aktion ist.

35
Q

Was ermöglicht die Parallelkomposition in Statecharts?

A

Die Parallelkomposition ermöglicht eine kompakte Darstellung komplexer Zustandsräume und die Beschreibung des Verhaltens verteilter eingebetteter Systeme durch die Kombination mehrerer Automaten im Gleichtakt

36
Q

Was ist die hierarchische Dekomposition in Statecharts und wozu dient sie?

A

Die hierarchische Dekomposition erlaubt die Aufteilung einzelner Zustände in Subzustände, was eine detailliertere Beschreibung des Systemverhaltens ermöglicht, ähnlich wie Prozeduraufrufe in Programmiersprachen.

37
Q

Was ist die Unified Modeling Language (UML)?

A

Die UML ist eine Modellierungssprache zur Spezifikation, Konstruktion, Visualisierung und Dokumentation von Modellen für Softwaresysteme und stellt einen Standard in der Softwareentwicklung dar.

38
Q

Wie entstand die UML und wer waren die Hauptakteure?

A

Die UML entstand aus der Vereinigung der OO-Ansätze von Grady Booch, Ivar Jacobsen und Jim Rumbaugh. Die erste Version wurde 1997 veröffentlicht und von der Object Management Group (OMG) als Standard anerkannt.

39
Q

Welche neuen Diagrammtypen wurden in UML 2.0 eingeführt?

A

In UML 2.0 wurden Kompositionsstrukturdiagramm, Interaktionsübersichtsdiagramm, Timing-Diagramm und Kommunikationsdiagramm neu eingeführt.

40
Q

Was charakterisiert hybride Systeme und welche Beispiele gibt es?

A

Hybride Systeme sind durch die Verkopplung diskreter und kontinuierlicher Aspekte charakterisiert. Beispiele sind Antiblockiersysteme, Automatisierungstechnik und Fahrassistenzsysteme.

41
Q

In welchen Bereichen finden hybride Systeme Anwendung?

A

Hybride Systeme werden in der Automatisierungstechnik, Fahrassistenzsystemen, Flugleitsystemen und Robotik eingesetzt.

42
Q

Warum haben sich grafische Beschreibungstechniken beim Entwurf von Softwaresystemen durchgesetzt?

A

Grafische Beschreibungstechniken sind für den Menschen leichter verständlich und umsetzbar, da sie visuell geprägt sind. Dies führt zu einer besseren Spezifikation und Umsetzung der Systeme.

43
Q

Welche Vorteile besitzen Statecharts gegenüber einfachen Mealy- oder
Moore-Maschinen?

A

Statecharts erweitern einfache Automaten um die Konzepte der Parallelkomposition,
der Broadcast-Kommunikation sowie der hierarchischen
Dekomposition. Dadurch wird die Spezifikation nebenläufiger, modulorientiert
aufgebauter Systeme möglich.

44
Q

Welches Problem kann sich beim Entwurf eines reaktiven Systems mit
Statecharts ergeben?

A

Durch die Parallelkomposition kann (ein vom Entwickler) ungewollter
funktionaler Nichtdeterminismus erzeugt werden, der nicht implementierungsfähig
ist. Diese Art von Nichtdeterminismus muss vom Entwurfssystem
möglichst automatisch erkannt werden.

45
Q

Nennen Sie einige Diagrammarten, die in der UML 2.0 enthalten sind.

A

In der UML 2.0 haben sich gegenüber der Vorgängerversion folgende
Änderungen ergeben:
– Nur marginale Änderungen:
* Klassendiagramm
* Use-Case-Diagramm
* Objektdiagramm
– Kleine Änderungen:
* Paketdiagramm
* Verteilungsdiagramm
– Massiv und tiefgreifend verändert:
* Aktivitätsdiagramm
* Sequenzdiagramm
* Zustandsautomat
– Vollständig neu:
* Kompositionsstrukturdiagramm
* Interaktionsübersichtsdiagramm
* Timing-Diagramm
* Kommunikationsdiagramm

46
Q

Warum ist die Qualität von eingebetteter Software besonders wichtig?

A

Die Qualität von eingebetteter Software ist besonders wichtig, weil fehlerhafte Software zu erheblichen Schäden an Maschinen oder gar zur Gefährdung von Menschen führen kann. Prominente Beispiele sind die Bruchlandung eines Airbus A-320 in Warschau (1993), die riskante Landung einer ISS-Mannschaft in einer Sojus-Kapsel (2003), und der Absturz der Ariane 5 Rakete (1996).

47
Q

Wie definiert ISO/IEC 9126 den Begriff der Softwarequalität?

A

Nach ISO/IEC 9126 ist Softwarequalität “die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen.”

48
Q

Welche Softwarequalitätsmerkmale werden in ISO/IEC 9126 unterschieden?

A

Die ISO/IEC 9126 unterscheidet die folgenden Softwarequalitätsmerkmale:

  • Funktionalität
  • Zuverlässigkeit
  • Benutzbarkeit
  • Effizienz
  • Änderbarkeit
  • Übertragbarkeit
49
Q

Welche drei Fehlerbegriffe unterscheidet die DIN 66271 im Bereich der Software?

A

Die DIN 66271 unterscheidet folgende drei Fehlerbegriffe:

  • Failure: Fehlverhalten eines Programms während der Ausführung (Fehlerwirkung, äußerer Fehler)
  • Fault: Fehlerhafte Stelle im Programm, die ein Fehlverhalten auslösen kann (innerer Fehler)
  • Error: Fehlerhafte Aktion, die zu einer fehlerhaften Programmstelle führt (Irrtum)
50
Q

Wie definiert die IEEE Korrektheit von Software?

A

Die IEEE definiert Korrektheit als den Grad der Konsistenz zwischen Spezifikation und Programm bzw. als den Grad der Erfüllung der Benutzererwartung durch ein Programm.

51
Q

Was ist der Unterschied zwischen Verifikation und Validierung?

A
  • Verifikation: Überprüfung, ob das Programm mit seiner formalen Spezifikation übereinstimmt.
  • Validierung: Überprüfung, ob die Spezifikation mit den tatsächlichen Benutzeranforderungen übereinstimmt.
52
Q

Welche zwei Hauptklassen von Software-Prüftechniken unterscheidet Liggesmeyer?

A

Liggesmeyer unterscheidet zwischen:

  • Statischen Techniken: Prüfen ohne Ausführung des Programms.
  • Dynamischen Techniken: Prüfen mit Ausführung des Programms.
53
Q

Was sind die Hauptziele des Testens von Software?

A

Die Hauptziele des Testens von Software sind das gezielte und systematische Aufdecken von Fehlerwirkungen (failures) und das Finden von Programmfehlern (faults).

54
Q

Welche drei manuellen Prüftechniken werden häufig verwendet?

A

Häufig verwendete manuelle Prüftechniken sind:

Formale Inspektion
Konventionelles Review
Strukturierter Walkthrough
55
Q

Warum ist die Fehlerkorrektur in den frühen Entwicklungsphasen besonders wichtig?

A

Die Fehlerkorrektur in den frühen Entwicklungsphasen ist besonders wichtig, weil Fehler, die in diesen Phasen entstehen, vergleichsweise hohe Korrekturkosten verursachen. Der Aufwand für die Fehlerkorrektur steigt mit der Distanz zwischen Fehlerentstehung und Fehlerentdeckung.

56
Q

In welche Kategorien kann man die Qualitätssicherung grundsätzlich
einteilen?

A

Grundsätzlich können Verfahren der Qualitätssicherung in konstruktive
und analytische Verfahren (nach Liggesmeyer) aufgeteilt werden.

57
Q

Jemand verlangt von Ihnen, eine fehlerfreie Software zu entwickeln.
Welche Qualitätssicherungsmaßnahme(n) verwenden Sie, um seinem
Wunsch entsprechen zu können?

A

Eine vollständig fehlerfreie Software zu entwickeln ist derzeit unabhängig
von dem verwendeten Verfahren zur Qualitätssicherung nicht möglich.

58
Q

Was ist der Unterschied zwischen Model Checking und Theorembeweisen?

A

Model Checking ist ein vollautomatisches, analytisches Qualitätssicherungsverfahren
zur Verifikation zustandsendlicher Systeme. Es ist allerdings
für Systeme mit nicht endlichem Zustandsraum nicht geeignet. Solche
Systeme können mithilfe des interaktiven Theorembeweisens noch verifiziert
werden. Letzteres geschieht durch Interaktion des Beweissystems mit
einem Expertenbenutzer.

59
Q

Was ist der Unterschied zwischen Verifikation und Validierung?

A

Verifikation prüft die Frage „Wird das System richtig (also entsprechend
der Anforderungsspezifikation) entwickelt?“, wohingegen die Validierung
die Frage stellt „Wird das richtige (also vom Auftraggeber bzw. Benutzer
gewünschte) System entwickelt?“. Hier handelt es sich um einen fundamentalen
Unterschied, da sich eine Spezifikation von den Anforderungen
des Auftraggebers deutlich unterscheiden kann, vor allem dann, wenn Fehler
in der Anforderungsanalyse aufgetreten sind.