(Embedded-) Software muss verschiedene zentrale Aufgaben softwareweit koordinieren. Das klassische Beispiel dafür ist die Initialisierung, die auf allen Ebenen der Software stattfinden muss. Bei genauerer Betrachtung lassen sich produktabhängig viele weitere dieser softwareweiten Aktionen identifizieren. Im Teil 1 dieses Beitrags stellen wir das Manager Pattern für die Koordination dieser Aufgaben in der Software vor.
Das Manager Pattern ist hochgradig skalierbar und somit anwendbar für sehr einfache Software, aber auch für komplexeste Architekturen. Das Pattern ist unabhängig von der Programmiersprache und unterstützt sowohl die prozedurale als auch objektorientierte Softwareentwicklung. Um diese Beitragsreihe vollständig zu verstehen, sind Kenntnisse der UML sowie der prozeduralen und objektorientierten Programmierung in C und C++ von Vorteil.
Zentrale Aufgabe in der Software
Zur Instanziierung und Initialisierung von Objekten in der Software sind bereits Design Patterns wie „Abstract Factory“ und „Builder“ als „Creational Patterns“ von Erich Gama et.al. publiziert. Des Weiteren ist im Internet das „Manager Design Pattern“, auch bekannt als „Manager-Managed Design Pattern“ oder „Managed Object Design Pattern“ veröffentlicht.
Das hier vorgestellte Embedded Software Manager Pattern verantwortet alle in der Software verteilten und zentral zu koordinierenden Aufgaben. Die Anzahl und Vielfalt der Aufgaben ist abhängig von den System-/ Softwareanforderungen, die das Produkt erfüllen muss. Betrachtet werden die folgenden Aufgaben:
Tabelle 1: Aufgaben und Funktionsaufrufe
Prinzip des Embedded Software Manager Patterns
In einer sehr einfachen Software besteht das Manager Pattern lediglich aus einer SoftwareManager Klasse oder einem SoftwareManager Modul, welches die zuvor genannten Aufgaben übernimmt. Mit wachsender Softwarearchitektur erhalten die Architekturelemente (AE) auf jeder Architekturebene (architectureLevel = x) ihre eigenen AEnManager, die die Aufgaben dezentral für ihr Architekturelement übernehmen.
Bild 1: Prinzip des Manager Patterns
Die verschiedenen Architekturelemente sind durch Namen <<type>> typisierbar (z.B. Software-Layer, Software-Subsystem). Bei tieferen Architekturhierarchien sind häufig keine individuellen Typennamen mehr identifizierbar. Aus diesem Grund sind die Architekturhierarchien hier nicht mit Typennamen versehen, sondern der architectureLevel ist angegeben.
Somit ist das Manager Pattern für beliebig hierarchisch und beliebig flach wachsende Architekturen anwendbar. Die Manager sind fähig, untereinander zu kommunizieren.
Skalierbarkeit des Embedded Software Manager Patterns
Ein Architekturelement AE1.1 kann theoretisch eine unbegrenzte Anzahl 0…z weiterer Architekturelemente auf der geleichen Ebene enthalten, die wiederum mit Managern ausgestattet sind.
Bild 2: Manager Pattern mit mehreren Architekturelementen auf gleicher Ebene
Die Hierarchiestufen-Anzahl der Architekturelement ist theoretisch ebenfalls unbegrenzt von 1…x oder 1…y. Je nach Architekturzweig sind unterschiedliche Hierarchiestufen-Anzahlen möglich.
Bild 3: Manager Pattern mit unterschiedlichen Architekturelement-Hierarchiestufen
Unabhängig von der UML-Notation lassen sich die Architekturebenen und Anzahlen der Architekturelemente in den einzelnen Eben sehr gut in einem Baumdiagramm darstellen. Die Astknoten bilden die Managerklassen/ -module ab.
Bild 4: Baumdiagramm der Architekturebenen
Die unterste Architektureben 0 ist main() zugeordnet, während die Ebene 1 für den übergeordneten SoftwareManager reserviert ist. Danach beginnen die eigentlichen Architekturebenen 2…x mit ihren AEnManagern.
Im 2. Teil dieses Beitrags stellen wir die Manager mit ihren Funktionalitäten im Detail vor.
Holen Sie sich das richtige Wissen darüber, wie das Embedded Software Manager Pattern in Ihren Software-Architekturen und Ihrem Software-Design anzuwenden ist. MicroConsult bietet Ihnen dazu professionelle Trainings und Coachings rund um die Themen Analyse, Design und Architektur uvm. an.
Weiterführende Informationen
MicroConsult Fachwissen zum Thema Embedded SW-Entwicklung
MicroConsult-Trainings zum Thema:
- Requirements Engineering und Management für Embedded-Systeme
- Software-Architekturen für Embedded- und Echtzeitsysteme
- Embedded C++: OO-Programmierung für Mikrocontroller mit C++/EC++
- Embedded C++ für Fortgeschrittene
- Embedded-Software-Design und Patterns mit C
- Interfacedesign – Analyse, Design und Architektur