IoT 5 - Design und Entwicklung Flashcards
Welche zehn Teildisziplinen umfasst Software Engineering ?
Anforderungsermittlung Entwurf Implementierung Test Wartung Konfigurationsmanagement Projektmanagement und Metrik Vorgehensmodelle Werkzeuge und Methode Softwarequalität
Was wird in der Designphase im Software Engineering gemacht ?
Die Komplexität der Software wird auf ein handhabbares Maß reduziert und damit das Risiko von Fehlentwicklungen minimiert.
Wo kommt UML zum Einsatz ?
In der Designphase als Hilfsmittel um Softwareobjekte und die Beziehungen zwischen diesen zu spezifizieren.
Unter welchen Vorraussetzungen sollten Tests durchgeführt werden ?
Entwicklung- und Testumgebung sollten voneinander und auch von produktiven IT-Systemen getrennt sein.
Entwicklung- und Testumgebung sollten mit gleicher Hard- und Softwarekonfigurationen betrieben werden.
Wie kann man die Entwicklungsumgebung und die Testumgebung voneinander trennen ?
physisch (separate Server)
logisch (separate virtuelle Maschinen auf einem Server)
Was passiert wenn Tests unter suboptimalen Bedingungen stattfinden ?
Eine verlässliche Aussage über die Funktionsweise der Software wird erschwert.
Oder eine Abnahme in der Testumgebung wird gänzlich unmöglich.
Woraus besteht die Herausforderung bei der Entwicklung von Software für verteilte Systeme ?
Die Software setzt sich aus vielen autonomen Komponenten zusammen die unterschiedliche Funktionalitäten ausführen und für den Nutzer nach Außen hin als einziges zusammengehörendes System erscheinen.
Wann spricht man von einem verteilten eingebetteten System ?
Wenn autonome Komponenten zentrale Steuerungsfunktionen für umgebende Hardware abbilden.
Welchen Anforderungen muss die in verteilten eigebetteten System zum Einsatz kommende Software erfüllen ?
Echtzeit- und Zuverlässigkeitsanforderungen
z.B. wenn sie in der ABS- oder Airbagsteuerung eingesetzt werden.
Inwiefern unterscheidet sich die Entwicklung eingebetteter Systeme von der Entwicklung anderer Systeme ?
Bei der Programmierung von z.B. Textsoftware werden hardwarebezogene Anforderungen in der Regel nicht berücksichtigt. Bei der Entwicklung eingebetteter Systeme spielt die zugrundeliegende Hardware jedoch eine wichtige Rolle, da diese oftmals speziell für einen definierten Anwendungszweck entwickelt wird.
Wie erfolgt bei der Entwicklung der Zugriff auf die Hardware ?
Maschinennahe Programmierung mit Assembler
Programmiersprachen wie C/C++ oder Java
Was ist Assembler ?
Das ist eine maschinenorientierte Programmiersprache mit enger Bindung an bestimmte Prozessoren oder Prozessortypen.
Was ist Java ?
Das ist eine populäre, objektorientierte Programmiersprache, die durch SUN (heute ORACLE) entwickelt wurde. JAVA-Programme sind plattformunabhängig und ohne Änderungen auf vielen Rechnerarchitekturen und Betriebssystemen ausführbar.
Was ist OSGi ?
“Open Services Gateway initiative”
Eine offene, dynamische und modulare Laufzeitumgebung auf der Basis von Java.
Von wem wurde OSGi entwickelt ?
OSGi Alliance (u.a. Oracle, Sun Microsystems, IBM)
Was ermöglicht OSGi ?
Die steuerung und Vernetzung diverser Gerätearten. Kommt besonders häufig bei der Vernetzung von KFZs zum Einsatz, z.B. bei der Anbindung von Informationssystemen.
Warum ist der modulare und dynamische Ansatz von OSGi besonders vorteilhaft ?
Damit können in der Praxis Softwarekomponente aus der Ferne installiert, gestartet, gestoppt und deinstalliert werden, ohne ein Gerät neu zu starten.
Was ist bei der Implementierung der Echtzeitfähigkeit bei verteilten Systemen zu berücksichtigen ?
Berücksichtigung möglicher Einschränkungen durch die Kommunikation zwischen den verteilten Komponenten über Netzwerke unterschiedlichster Art.
Wodurch können die Echtzeitfähigkeit und die Zuverlässigkeit eines verteilten Systems negativ beeinflusst werden ?
Je nach zugrundeliegendem Übertragungsmedium und Übertragungsprotokoll kann es wegen diverser Fehlerzustände zu Fehlern bei der Datenübertragung kommen.
Woraus bestehen verteilte Systeme ?
Autonome Komponenten die über ein Kommunikationsnetzwerk miteinander verbunden sind.
Welche Eigenschaften sollten verteilte Systeme erfüllen ?
Ausfalltoleranz Fehlertoleranz Transparenz Skalierbarkeit Offenheit
Zwischen welcher Architekturen unterscheidet man bei verteilten Systemen ?
Plattformarchitektur
Systemarchitektur
Softwarearchitektur
Was sind verteilte Betriebssysteme ?
In verteilten Betriebssystemen implementieren lokale Mechanismen Dienste, die für das gesamte System verfügbar sind. Viele Computer die nach Außen hin wie einer erscheinen.
Was sind Netzwerkbetriebssysteme ?
Bei Netzwerkbetriebssystemen verwenden Benutzer explizit Dienste von anderen Rechnern. Er muss aber wissen welcher Rechner welche Dienste anbietet.
Sie sind gut skalierbar und offen.
Was ist Middleware ?
Middleware ist anwendungsneutrale Software, die als zusätzliche Schicht zwischen Betriebssystem und Anwedung vermittelt und die Kommunikation zwischen Prozessen unterstützt.
Was sind die Vorteile von Middleware ?
Die Vorteile von verteilten Betriebssystemen und Netzwerkbetriebssystemen können so kombiniert werden.
Wie kommunizieren intelligente Gegenstände mit ihrer Umwelt ?
Über Sensoren und Aktoren
Wie kommunizieren intelligente Gegenstände mit dem Zentralsystem ?
IoT Gegenstand zu Gateway:
z.B. ZigBee oder Bluetooth
Gateway zu Zentralsystem:
Protokolle wie HTTP oder MQTT über eine Messaging Infrastruktur
Wo kommen die Daten von intelligenten Gegenständen hin ?
Sie werden über APIs an Intelligence Anwendungen angebunden mit deren Hilfe sie dann analysiert und visualisiert werden können.
Welche Systemarchitekturen gibt es ?
Client-Software-Architekturen
Peer-toPeer-Architekturen
Was passiert in einer Client-Server-Architektur ?
In einer Client-Server-Architektur tauschen Client und Server Anforderung (Request) und Antwort (Response) miteinander aus.
Welches sind Sonderfälle in einer Client-Server-Architektur ?
Cache-Server und Proxy-Server
Was ist ein Cache-Server ?
Er kann Daten zwischenspeichern um unnötige Anfragen über das Netzwerk zu vermeiden.
Was ist ein Proxy-Server ?
Er ist quasi ein Stellvertreter zwischen Client und Server.
Was ermöglicht ein Proxy-Server ?
Er kann eine zusätzliche Filterung und Kontrolle des Datenstroms ermöglichen.
Es kann auch eine zusätzliche Authentifizierung der Benutzer erfolgen.
Was passiert in einer Peer-to-Peer-Architektur
In einer Peer-to-Peer-Architektur übernimmt jeder Rechner sowohl Client- als auch Serverfunktionen.
Wie ist ein Peer-to-Peer-Netzwerk aufgebaut ?
Es ist ein dezentrales, verteiltes System bestehend aus autonomen Rechnern ohne zentrale Server.
Was sind die Nachteile eines
Peer-to-Peer-Netzwerks ?
Nicht sehr Ausfallsicher
Schwer administrierbar
Zwischen welchen Softwarearchitekturen unterscheidet man ?
Zwei-Schichten-Architektur
Drei-Schichten-Architektur
Was ist eine Zwei-Schichten-Architektur ?
klassische Client-Server-Architektur.
Braucht Fat Client kommuniziert direkt mit der Datenbank.
Einfach zu realisieren. Hohen
Installations/ Administrationsaufwand.
Wie ist eine Drei-Schichten-Architektur aufgebaut ?
GUI-Schicht (greift über die)
Fachkonzeptschicht (auf die)
Datenhaltungsschicht (zu)
Was ist ein Fat Client ?
Betriebssystem plus umfangreiche lokal installierte Anwendungssoftware
Was ist die GUI-Schicht und wie kommuniziert sie mit der Datenbank ?
Graphische Benutzeroberfläche, über die mittels diverser Schnittstellen der
Fachkonzeptschicht
(z. B. Applikationsserver) auf die in der Datenhaltungsschicht liegenden Datenbestände
(z. B. in einer Datenbank) zugegriffen werden kann.
Was bedeutet es die drei Schichten in der Drei-Schichten Architektur voneinander zu trennen ?
Jede Schicht darf nur auf die Funktionalitäten der direkt darunterliegenden Schicht zugreifen.
Es besteht aber auch die möglichkeit das die GUI-Schicht direkt mit der Datenhaltungschicht kommuniziert.
Was für Vorteile hat es wenn man die drei Schichten in einer Drei-Schichten-Architektur voneinander trennt ?
Sie können auch unabhängig voneinander verändert werden. Das erhöht die Wartbarkeit und die Portabilität und ermöglicht es, Komponenten der Fachkonzeptschicht leichter wiederzuverwenden.
Was tun Sensoren in IoT-Netzen ?
Sensoren erfassen automatisch Parameter eines Gegenstandes sowie dessen Umwelt und transferieren diese Informationen an andere Sensoren oder eine zentrale Steuerungseinheit weiter.
Was tun Aktoren in IoT-Netzen ?
Aktoren reagieren auf sich verändernde Parameter und setzen diese in entsprechende digitale oder physische Aktionen um.
Warum kann durch den Einsatz von Aktoren und Sensoren die Datenqualität erhöht werden ?
Menschliche Fehler werden ausgeschlossen
und die Datenerfassung erfolgt in Echtzeit.
Woraus bestehen Microcontroller ?
Mikroprozessor, Arbeitsspeicher, Schnittstellen für Peripheriegeräte und anderen Komponenten, die auf einer Leiterplatine fest aufgelötet sind.
Was sind Einplatinenrechner ?
Rechner, die alle zum Betrieb erforderlichen Komponenten auf einer einzigen Platine vereinen, wobei typischerweise lediglich das Netzteil anderweitig verbaut wird.
Wie kann man Einplatinenrechner um weitere Komponenten erweitern ?
Modular und flexibel über entsprechende Steckmodule.
Wo werden Einplatinenrechner eingesetzt ?
Industrieanlagenn,als eingebettete Systeme in der Unterhaltungselektronik oder z.B. in WLAN-Routern
Wie unterscheiden sich Ein-Chip-Systeme von Einplatinenrechnern ?
Bei Ein-Chip-Systemen befinden sich alle zum Betrieb benötigten Komponenten auf einem einzigen Chip.
Wo werden Ein-Chip-Systeme verwendet ?
In der Mobilfunk-, Medizin oder auch Automobiltechnologie.
Auch gut für den Einsatz im IoT.
Mit welchem Betriebssystem laufen
Ein-Chip-Systeme und Einplatinenrechner für gewöhnlich und warum ?
Linux weil keine Lizenzkosten anfallen und weil Linux in der Lage ist, die begrenzten Hardwareressourcen der Minirechner optimal auszunutzen.
Wie werden Betriebssysteme von Einplatinenrechnern oder Chip-Systemen auch genannt ?
Firmware.