Embedded SW Analyse Design Architektur

Entwicklungsprozesse als Basis moderner Softwareentwicklung

Im professionellen Software Engineering sind die Entwicklungs- und Prozess-Schritte vor der Software-Implementierung essentiell. Begriffe wie Softwareanalyse und Softwaredesign bzw. Software-Grobdesign und Software-Feindesign aus den Entwicklungsprozessen (beispielsweise dem V-Modell XT oder dem branchenspezifischen V-Modell Automotive) stehen genau dafür.

Mittlerweile hat es sich herumgesprochen, dass die VHIT-Methode (vom Hirn ins Terminal) mit der heutigen und künftig noch weiter steigenden Komplexität von Embedded- und Echtzeit-Software bzw. Echtzeit-Systemen nicht mehr vereinbar ist. Im Folgenden sind wichtige Aktivitäten in der Embedded-Software-Analyse bzw. im Embedded-Softwaredesign und -Engineering kurz beschrieben, die Sie in der Softwareentwicklung durchführen.

Requirements Engineering steht am Projektbeginn

Als Grundlage für die Software-Entwicklung erfassen Sie in der Rolle des Software-Anforderungsanalysten zu Beginn die Anforderungen. Im Rahmen des Requirements Engineering (Anforderungsentwicklung, Anforderungsanalyse) sammeln Sie die Anforderungen der Stakeholder.

Sie unterscheiden zwischen funktionalen und nicht-funktionalen Anforderungen (u.a. Software-Qualitätsmerkmale) und formulieren qualitativ hochwertige Anforderungen. Im Rahmen des Anforderungsmanagements verwalten und pflegen Sie die Anforderungen mit geeigneten Requirements Management Tools.

Der Software-Architekt definiert die Software-Architektur

In der Rolle des Software-Architekten verfügen Sie über viel Erfahrung in der Software-Entwicklung und beherrschen das Thema Software-Architektur in der Praxis. Unter den Aspekten der Wiederverwendbarkeit, Austauschbarkeit, Erweiterbarkeit und Portierbarkeit entwickeln Sie idealerweise eine nicht monolithische Software-Architektur, die die identifizierten Softwarearchitektur-Anforderungen und Einflussfaktoren bestmöglich erfüllt.

Die SW-Architektur beschreibt die grobe Struktur und auch das darauf basierende interaktive Verhalten (Kommunikation). Software-Komponenten, Software-Schichten, Software-Subsysteme, Schnittstellen und deren Funktionen (Operationen/Methoden) und optional die wichtigsten Module/Klassen repräsentieren typische Architekturbausteine.

Sie nutzen zur Architekturentwicklung Architekturrichtlinien, Architekturprinzipien, Architekturmuster (Patterns) und Softwarearchitektur-Beispiele. Sie als Software-Architekt treffen wichtige Entscheidungen. Beispielsweise legen Sie fest, ob Sie eine synchrone Architektur, eine asynchrone Architektur oder eine Mischform aus beidem entwickeln.

Sie entscheiden, ob es sich um ein Echtzeit- oder „nur“ um ein eingebettetes System handelt. Sie bestimmen über die verwendeten Middleware-Komponenten, wie Feldbus- und Kommunikationsstacks, Flash-Filesysteme und Grafikbibliotheken). Diese Software-Komponenten sind als Free Software, Open Source Software und kommerzielle Software erhältlich.

Für die Laufzeitarchitektur wählen Sie basierend auf Auswahlkriterien ein geeignetes Echtzeit-/Embedded-Betriebssystem (Real-Time Operating System) aus. Bei Multicore- und Multiprozessor-Systemen verteilen Sie die Software auf verschiedenen Rechenknoten und führen bei Bedarf Virtualisierung und Hypervisor ein. Der Software-Architekt erzeugt die Embedded-Softwarearchitektur-Dokumentation.

Embedded-Software-Architektur Beispiel – Software-Schichtendarstellung

Bild: Embedded-SW-Architektur Beispiel – SW-Schichtendarstellung

Der Software-Designer verfeinert die Software-Architektur

Als Software-Designer verfeinern Sie die SW-Architektur so, dass der Software-Entwickler sie später in der festgelegten Programmiersprache C oder C++ implementieren kann. Dabei entwickeln Sie konkrete Module/Klassen mit allen Daten und Funktionen sowie deren Verbindungen/Relationen. Sie meistern Ihre Aufgaben und Herausforderungen mit praxisbewährten Designmustern (Design Patterns) für Embedded-Software. Im Algorithmen-Design beschreiben Sie das genaue Verhalten z.B. mittels Zustandsautomaten. Sie adaptieren die Software-Architektur über Treiber an Ihre konkrete Hardware und deren Peripherien.

Der Software-Designer erzeugt die Embedded-Software-Design-Dokumentation.

Bei der folgenden Embedded-Programmierung sind die unbedingte Einhaltung der Architekturvorgaben und Designvorgaben kontinuierlich zu überprüfen.

Software-Entwicklung mit der UML (Unified Modeling Language)

Unabhängig davon, ob Sie prozedural, strukturiert, objektbasiert oder objektorientiert Software programmieren, ist als Notation in Analyse, Design und zur Software-Dokumentation die UML (Unified Modeling Language) sehr hilfreich. Die UML spezifiziert verschiedene Diagramme: Use Case Diagram, Package Diagram, Component Diagram, Deployment Diagram, Class Diagram, Object Diagram, Composite Structure Diagram, Acitvity Diagram, State Machine Diagram, Sequence Diagram, Communication Diagram, Timing Diagram, Interaction Overview Diagram und Profile Diagram.

Teile dieser Diagramme sind auch hervorragend zur Anforderungsanalyse und in der Softwareentwicklung nutzbar. Mit der Anwendung der UML praktizieren Sie modellgetriebene SW-Entwicklung. Aus den UML-Designmodellen generieren Sie mit der richtigen UML Case-Tool-Unterstützung den Programmcode in C und/oder C++. Automatische Codegenerierung unterstützt toolabhängig die Erzeugung von Software zur Simulation auf den Entwicklungshost oder dem Target, aber auch direkt die Erzeugung des Produktionscodes.

In mittelständischen und kleineren Firmen und Unternehmen repräsentieren Sie als Software-Entwickler in Personalunion alle der o.a. Rollen oder einen Teil davon: Anforderungsanalyst, Software-Architekt und Software-Designer.

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu unseren Trainings und individuellen Coachings zum Thema Embedded-Software: Analyse, Design und Architektur.

Fachwissen zu Embedded- und Echtzeit-Softwareentwicklung

Veröffentlicht von

Thomas Batt

Thomas Batt

Thomas Batt studierte nach seiner Ausbildung zum Radio- und Fernsehtechniker Nachrichtentechnik. Seit 1994 arbeitet er kontinuierlich in verschiedenen Branchen und Rollen im Bereich Embedded-/Realtime-Systementwicklung. 1999 wechselte Thomas Batt zur MicroConsult GmbH. Dort verantwortet er heute als zertifizierter Trainer und Coach die Themenbereiche Systems/ Software Engineering für Embedded-/Realtime-Systeme sowie Entwicklungsprozess-Beratung.