Lesedauer
5 Minuten
Datum
System- und Softwarearchitektur in Embedded Systems
Insight in Brief
- Die Begriffe «System», «Design», «Architektur» sind bei der Entwicklung von eingebetteten Systemen oft nicht klar definiert und werden manchmal miteinander verwechselt.
- Dieser Artikel erklärt die Definitionen, stellt sie grafisch dar und grenzt die Begriffe klar voneinander ab.
- Auf die Unterschiede zwischen Systemdesign und Softwaredesign wird explizit eingegangen.
Einleitung
Embedded «Systemdesign», «Systemarchitektur», «Softwarearchitektur», was steckt genau hinter diesen Begriffen? Was ist damit gemeint? Was sind die Definitionen? Warum ist es wichtig, diese Begriffe zu unterscheiden?
Mit den Antworten auf diese Fragen beschäftigt sich dieser Artikel.
Das System
Wir beschäftigen uns hier mit technischen Systemen. Noch etwas spezifischer mit Embedded-Systemen. Ein Embedded-System, auf Deutsch ein «eingebettetes System» ist wie folgt definiert:
«Ein eingebettetes System ist ein elektronischer Rechner oder auch Computer, der in einen technischen Kontext eingebunden (eingebettet) ist. Dabei übernimmt der Rechner entweder Überwachungs-, Steuerungs- oder Regelfunktionen oder ist für eine Form der Daten- bzw. Signalverarbeitung zuständig, beispielsweise beim Ver- bzw. Entschlüsseln, Codieren bzw. Decodieren oder Filtern.» Quelle: Wikipedia
Ganz ähnlich diese Definition:
«Ein eingebettetes System ist ein binärwertiges digitales System (auch Computersystem genannt), das in ein umgebendes technisches System eingebettet ist und mit diesem in Wechselwirkung steht. Dabei übernimmt der Rechner meist Überwachungs-, Steuerungs- oder Regelungsfunktionen, ist oft aber auch für eine Form der Daten- bzw. Signalverarbeitung zuständig.» Quelle https://www.embedded-software-engineering.de
Diese Definitionen können mit dem folgenden Diagramm verdeutlicht werden:
Der Einfachheitshalber wird meist einfach von dem «System» gesprochen mit welchem man sich befasst. Auch im Rest dieses Artikels wird häufig nur noch von «System» gesprochen und damit ist das entsprechende technische oder eben das Embedded-System gemein.
Architektur und Design
Um die Begriffe zu erklären, muss aufgezeigt werden, wie ein solches System gebaut wird. Abbildung 1 stellt das Embedded-System als Blackbox dar. Der Aufbau des Systems ist noch nicht definiert. Es muss definiert werden, aus welchen Bestandteilen das System aufgebaut werden soll. Diese Tätigkeit nennt man «Design». Bei einem «Systemdesign» geht es also um die Definition und Festlegung des Systemaufbaus. Das Resultat einer solchen Designtätigkeit könnte dann, basierend auf dem Diagramm (Abbildung 2), wie folgt aussehen:
Meist läuft eine solche Design-Tätigkeit iterativ ab. Das heisst die Bestandteile – man spricht hier von Architekturelementen – werden soweit zerlegt (engl. «decompose»), bis diese genügend definiert sind. Erst dann kann die Erstellung (Entwicklung) des Systems beginnen.
Das Resultat dieser Design-Aktivität nenn man «Architektur». Die Abbildung 2 ist also eine erste «Systemarchitektur» (genau genommen ist die Abbildung 2 eine Referenzarchitektur eines allgemeinen Embedded-Systems), wobei der Begriff Architektur in diesem Zusammenhang noch genauer definiert werden muss. Es gibt nicht eine einzige etablierte Definition des Architekturbegriffes. Eine Sammlung von Definitionen findet man hier: https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=513807. Dies sind zwar Definitionen für Softwarearchitektur, sie gelten jedoch auch für den Begriff der System-Architektur. Die Unterscheidung liegt im Anwendungsbereich (engl. Scope) – dazu aber weiter unten noch mehr.
Wir verwenden die folgende Definition des Architekturbegriffes (aus «Software Architecture in Practice – Third Edition»):
Definition (Software-) Architektur:
«The (software) architecture of a system is the set of structures needed to reason about the system, which comprise (software) elements, relations among them, and properties of both. »
Darin sind die folgenden 3 Sätze enthalten, hier in Übersetzung:
- Die Architektur eines Systems ist aus einer Menge von Strukturen aufgebaut.
- Es sind die Strukturen, welche benötigt werden, um auf das System schliessen zu können.
- Die Strukturen umfassen die Elemente, deren Beziehungen und deren Eigenschaften.
Was bedeutet das nun?
Die Strukturen bestehen aus Elementen, deren Beziehungen und deren Eigenschaften. Architektur besteht aus den Strukturen, welche benötigt werden, um sicherzustellen, dass sich das System wie gefordert verhält. Wobei hier nicht nur die Erfüllung der funktionalen Anforderungen gemeint ist, sondern auch der ganze Bereich der nicht-funktionalen Anforderungen. Beispielsweise haben Forderungen bezüglich Weiterentwickelbarkeit meist Einfluss auf die Struktur des Systems. Es gehören jedoch nicht alle Strukturen eines Systems zur Architektur. Nicht alle Strukturen sind architekturrelevant. Man spricht bei diesen Strukturen dann nicht mehr von Architektur, sondern von Design.
«Design» ist einerseits die Tätigkeit, welche zu einer Architektur führt (siehe weiter oben), als auch der Begriff für sämtliche nicht architekturrelevanten Resultate aus der Designtätigkeit.
Viele Definitionen machen sich das einfacher, indem sie ausführen, dass die Grobstruktur oder die früh im Designprozess definierten Strukturen Architektur sind. Alle späteren oder detaillierteren Strukturen sind Design. Diese Definitionen sind allerdings unzureichend, da durchaus detailliertere Strukturen notwendig sein können, um die geforderten Anforderungen zu erfüllen. Auch wird in einer agilen Entwicklung nicht alles Relevante schon früh im Designprozess definiert.
System versus Software
Zuletzt noch die Unterscheidung zwischen «Systemarchitektur» und «Softwarearchitektur»: Wie bereits weiter oben aufgeführt, unterscheiden sich diese im Anwendungsbereich (Scope). Die Systemarchitektur umfasst die Strukturen von verschiedenen Systemelementen, wie Hardware, Software, Mechanik. Die Softwarearchitektur hingegen umfasst die Strukturen, welche den Aufbau eines Softwareelementes (ein Element aus der Systemarchitektur) definieren. Dies ist in den nachfolgenden Diagrammen ersichtlich:
Bei der weiterführenden Zerlegung eines Softwareelementes landen wir schlussendlich bei der Softwarearchitektur:
Zusammenfassung
In der nachfolgenden Tabelle sind die wichtigsten Begriffe und deren Bedeutung bzw. Definitionen nochmals zusammenfassend aufgeführt:
Begriff | Bedeutung, Definition |
Embedded System | Ein Embedded-System (deutsch: eingebettetes System) ist ein elektronischer Rechner oder Computer, der eine definierte Funktion ausführt und in eine physikalische Umgebung eingebunden ist, optional von anderen Umsystemen umgeben ist sowie optional eine Benutzerschnittstelle aufweist. |
Design (Tätigkeit) | Ist die Tätigkeit, welche definiert, wie ein System aus mehreren Bestandteilen (Architekturelementen) aufgebaut ist. |
System-Design (Tätigkeit) | Siehe «Design» – mit der Präzisierung, dass es sich um das Design eines Systems, d.h. um verschiedene Elemente wie Hardware, Software, Mechanik handelt. |
Software-Design (Tätigkeit) | Siehe «Design» – mit der Präzisierung, dass es sich um das Design einer Software (eines Softwareelementes) handelt. |
Die Architektur | Die Architektur eines Systems ist die Menge von Strukturen, welche benötigt werden, um auf das System schliessen zu können, bzw., um sicherzustellen, dass das System die geforderten Eigenschaften erfüllt. Die Strukturen umfassen die Elemente, deren Beziehungen und deren Eigenschaften. |
Das Design | Die Strukturen, welche neben den architekturrelevanten Strukturen (siehe «Architektur») zwar auch den Aufbau des Systems definieren, welche für die geforderten Systemeigenschaften allerdings nicht relevant sind. |
Die System-Architektur | Siehe «Architektur» – mit der Präzisierung, dass es sich um das Design eines Systems d.h. um verschiedene Elemente wie Hardware, Software, Mechanik handelt. |
Die Software-Architektur | Siehe «Architektur» – mit der Präzisierung, dass es sich um das Design einer Software (eines Softwareelementes) handelt. |
Tabelle 1: Begriffe und deren Bedeutung bzw. Definition
Weitere Expert Blog Beiträge
Lassen Sie sich inspirieren von unseren erfolgreich realisierten Kundenprojekten im Bereich der Medizintechnik.