02_softwareentwicklung_slides_Z Flashcards
Was versteht man unter eingebetteter Software?
Eingebettete Software ist ein integraler Bestandteil eines technischen Systems und erfüllt spezifische Aufgaben innerhalb dieses Systems. Sie ist oft speziell für bestimmte Hardware und Schnittstellen entwickelt und optimiert, was ihre Übertragbarkeit auf andere Systeme erschwert. Die Entwicklung erfordert intensives Wissen über die jeweilige Domäne, wie beispielsweise Fahrassistenzsysteme und Fahrdynamik.
Warum ist Optimierung besonders wichtig bei eingebetteter Software?
Optimierung ist bei eingebetteter Software besonders wichtig, da sie oft speziell für bestimmte Hardware und Schnittstellen entwickelt und optimiert wird. Dies schließt Optimierungen für begrenzte Hardwarekapazitäten, minimalen Energieverbrauch und spezifische Leistungsanforderungen ein. Die Optimierung hilft, die Hardwarekosten in Massenproduktionen zu minimieren und die Effizienz des Systems zu maximieren.
Welche Rolle spielt der Ressourcenverbrauch bei eingebetteten Systemen?
Der Ressourcenverbrauch ist bei eingebetteten Systemen entscheidend. In Massenproduktionen wird versucht, die Hardwarekosten durch höheren Entwicklungsaufwand zu minimieren. Zudem haben viele eingebettete Systeme ein sehr begrenztes Energiebudget, besonders bei batteriebetriebenen Systemen. Daher müssen sie so konzipiert werden, dass sie möglichst wenig Energie verbrauchen.
Welche Anforderungen bestehen an die Zuverlässigkeit von eingebetteten Systemen?
Eingebettete Systeme haben hohe Anforderungen an Zuverlässigkeit und Verfügbarkeit. Sie müssen oft in Echtzeit reagieren und dürfen keine Menschenleben gefährden. Risiken müssen auf ein akzeptables Maß reduziert werden, was eine hohe funktionale Sicherheit erfordert.
Was ist der Unterschied zwischen Plattformsoftware und Applikationssoftware in eingebetteten Systemen?
Plattformsoftware beinhaltet Hardware-Abstraktionsschichten und Treiber, die grundlegende Funktionen und Schnittstellen zur Hardware bereitstellen. Applikationssoftware setzt auf der Plattformsoftware auf und implementiert die eigentliche Funktionalität des Systems.
Was versteht man unter verteilten eingebetteten Systemen?
Verteilte eingebettete Systeme bestehen oft aus mehreren unabhängigen Teilsystemen, die durch Bussysteme verbunden sind. Diese Teilsysteme werden häufig als ECUs (Electronic Control Units) bezeichnet und arbeiten zusammen, um die Gesamtfunktionalität des Systems zu gewährleisten.
Welche Vorgehensmodelle und Werkzeuge werden in der Softwareentwicklung für eingebettete Systeme verwendet?
In der Softwareentwicklung für eingebettete Systeme werden dieselben Vorgehensmodelle wie in der allgemeinen Softwareentwicklung verwendet, zum Beispiel das Wasserfallmodell oder das V-Modell. Zu den eingesetzten Werkzeugen gehören Integrated Development Environments (IDEs) und Versionsverwaltungstools.
Welche Optimierungsrichtlinien sind bei der Entwicklung von eingebetteter Software wichtig?
Bei der Entwicklung von eingebetteter Software sind Optimierungsrichtlinien wie der Platzbedarf und der Energieverbrauch wichtiger als die Geschwindigkeit. Ein Beispiel ist die Verwendung von Compiler Flags wie -Os statt -O2/-O3, um den Speicherverbrauch zu reduzieren.
Was ist der Unterschied zwischen Polling und Interrupts in der ereignisorientierten Programmierung?
Polling ist die zyklische Abfrage von Werten, wohingegen Interrupts ereignisgesteuerte Abfragen darstellen. Interrupts unterbrechen den aktuellen Programmfluss und führen eine Interrupt Service Routine (ISR) aus, bevor das Programm fortgesetzt wird. Dies führt zu effizienterer Ressourcennutzung und einem deterministischen Ablauf.
Welche Tipps gibt es zur Reduzierung des Energieverbrauchs in eingebetteten Systemen?
Tipps zur Reduzierung des Energieverbrauchs in eingebetteten Systemen umfassen die Abschaltung nicht benötigter Mikrocontrollerkomponenten, die Nutzung von Sleep-Modi und die Vermeidung unnötiger Berechnungen. Ein Beispiel ist eine batteriebetriebene Fernbedienung, die sich im Power-Down-Modus befindet und nur bei Ereignissen wie einem Tastendruck aktiviert wird.
Welche Prozesse sind in sicherheitskritischen eingebetteten Systemen wichtig, um Verlässlichkeit zu gewährleisten?
In sicherheitskritischen eingebetteten Systemen sind strikte Coding Standards, zahlreiche Code Reviews, die formale Verifikation des Codes und Mechanismen zur schnellen Wiederherstellung der Verfügbarkeit (z.B. Hardware-Watchdog) wichtig, um die Verlässlichkeit zu gewährleisten.