Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Embedded-Software: Analyse, Design und Architektur

Mittlerweile hat es sich herumgesprochen, dass die VHIT-Methode (vom Hirn ins Terminal) mit der heutigen und in Zukunft noch weiter steigenden Komplexität von Embedded- und Echtzeit-Software/ Echtzeit-Systemen nicht mehr vereinbar ist.

Professionelles Software Engineering heißt, dass Sie in der Software-Entwicklung (Software Development) bereits vor der Software-Implementierung weitere wichtige Entwicklungs-/ Prozess-Schritte durchlaufen. Aus den Entwicklungsprozessen, beispielsweise dem V-Modell XT oder dem branchenspezifischen V-Modell Automotive, stehen dafür Begriffe wie Software-Analyse und Softwaredesign oder Software-Grobdesign und Software-Feindesign.

Im Folgenden sind wichtige Aktivitäten in der Embedded-Software-Analyse, im Embedded-Software-Design bzw. im SW-Engineering kurz beschrieben, die Sie für das Software Engineering durchführen.

Requirements Engineering steht am Projektbeginn

Als Grundlage für die Softwareentwicklung 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 (Werkzeugen).

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 (software architecture, SW architecture), 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 Layer, Layered Architecture), Software-Subsysteme, Schnittstellen und deren Funktionen (Operationen/ Methoden) und optional die wichtigsten Module/ Klassen repräsentieren typische Architekturbausteine.

Sie nutzen zur Architekturentwicklung Architekturrichtlinien, Architekturprinzipien, Architektur-Muster (Architektur-Patterns) und Softwarearchitektur-Beispiele (software architecture examples). 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 (graphic libraries). 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 RTOS) 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 (software architecture document oder software architecture specification).

Embedded-Software-Architektur Beispiel – Software-Schichtendarstellung

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

Der Software-Designer verfeinert die Software-Architektur

Sie als Software-Designer verfeinern die SW-Architektur so, dass sie der Software-Entwickler 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 Design-Mustern (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 (software design document, software design specification).

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 und Design und zur Software-Dokumentation die UML (Unified Modeling Language) eine hilfreiche Option. 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.

Diese 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 in 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.



Embedded-Software: Analyse, Design und Architektur - unsere Trainings & Coachings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zum Thema Embedded-Software: Analyse, Design und Architektur.

Unsere Inhalte vermitteln wir Ihnen sowohl in Präsenz- als auch Live-Online-Trainings.

Software-Architekturen für Embedded-Systeme und Echtzeitsysteme

Sie kennen die Begriffe und Bedeutung von Software-Architektur; die Aufgaben und Verantwortungen von Software-Architekten und deren Rolle im Projekt; State-of-the-Art Methoden und Techniken zur Entwicklung von Software-Architekturen. Sie haben die Fähigkeit, Softwarearchitekturen mit Projektbeteiligten abzustimmen, zu dokumentieren und kommunizieren sowie die wesentlichen Schritte des Software-Architekturentwurfs selbstständig durchzuführen.
Zum Training: Software-Architekturen für Embedded-Systeme und Echtzeitsysteme

Embedded-Software-Design und Patterns mit C

Sie lernen die für die Embedded-Softwareentwicklung wichtigen Programmierprinzipien und Design Pattern kennen, können diese in C programmieren und in Ihren Projekten anwenden. Sie beherrschen die objektorientierte Programmierung und Implementierung von Zustandsautomaten in C. Sie sind mit den Mechanismen eines Embedded- / Echtzeitbetriebssystems vertraut und setzen Hardware-Treiber, Interrupt-Konzepte und Callback-Strukturen in C um - unter Berücksichtung von "Design for Test". Mittels Refactoring verbessern Sie die Qualität von vorhandenem C-Programmcode (Legacy Code).
Zum Training - Embedded-Software-Design und Patterns mit C

Design Patterns (nicht nur) für Embedded-Systeme

Sie erfahren, unter welchen Bedingungen klassische Entwurfsmuster auch in ressourcenlimitierten Embedded-Systemen gewinnbringend eingesetzt werden können. Muster, die für diesen Zweck besonders geeignet sind, werden anhand von hardwarenahen oder anderen für Embedded-Systeme typischen Anwendungen erläutert. Besonderer Wert wird dabei auf die Beurteilung der Speicherplatz- und Laufzeitkosten gelegt.
Zum Training: Design Patterns (nicht nur) für Embedded-Systeme

UML-Grundlagen und Einstieg in die modellbasierte Softwareentwicklung

In der UML-Schulung lernen Sie, wie Sie Analyse und Entwurfsverfahren sowie die Darstellungsform der Unified Modeling Language (UML) kompetent einsetzen.
Zum Training: UML-Grundlagen

UML-Praxis-Workshop: Praktischer Einsatz modellbasierter Softwareentwicklung für Embedded- und Echtzeitsysteme

Sie wissen, wie Sie die UML für typische Projekte aus der Embedded- und Echtzeitwelt einsetzen. Sie sind in der Lage, die Anwendung der UML für Ihre Projekte und Ihr Unternehmen individuell anzupassen und zu optimieren.
Zum Training: UML-Praxisworkshop

OOP-Grundlagen: Sprachunabhängiger Einstieg in die objektorientierte Programmierung

Sie beherrschen die Begriffe der objektorientierten Programmierung.Sie verfügen über die wesentlichen Voraussetzungen für den Umgang mit objektorientierten Programmiersprachen, wie C++, C# oder Java.
Zum Training: OOP-Grundlagen

Objektorientierte Softwareentwicklung: Spezielle Programmierprinzipien - der Weg zum Clean Code

Softwareentwicklung als Handwerkskunst - 'Software Craftsmenship' - Der Weg zum 'Clean Code'
Zum Training: Objektorientierte Softwareentwicklung - Spezielle Programmierprinzipien

 

Coachings zum Thema Software-Analyse, -Design und -Architektur

Die Coaching-Angebote vom MicroConsult bieten den großen Vorteil, dass unsere Experten ihr Wissen und ihre Erfahrungen direkt in Ihren Lösungsprozess einbringen und damit unmittelbar zum Projekterfolg beitragen. Gemeinsam werden beispielsweise Einsatzmöglichkeiten und Nutzen neuer Software-Engineering- oder Führungsmethoden analysiert, konkrete Maßnahmen zur Einführung entwickelt und dann umgesetzt.
Mehr über Coachings für Software-Analyse, Software-Design und Software-Architektur


Training & Coaching zu den weiteren Themen unseren Portfolios finden Sie hier.


Unsere Inhalte vermitteln wir Ihnen sowohl in Präsenz- als auch Live-Online-Trainings.


Embedded-Software: Analyse, Design und Architektur - Fachwissen

Wertvolles Fachwissen zum Thema Embedded-Software: Analyse, Design und Architktur steht hier für Sie zum kostenfreien Download bereit, darunter die folgenden Veröffentlichungen und Vorträge:

  • Embedded-Software-Design: Anforderungen entwickeln und Architekturen verfeinern
  • CMSIS, MCAL und Co. – Low-Level-Treiber von der Stange
  • Requirements Engineering und Management
  • Moderne Low-Level-Treiberprogrammierung
  • Mit durchdachter Software-Usability Wettbewerbsvorteile erzielen
  • Hinweise auf drohende Software-Erosion und was Sie dagegen tun können
  • Neuen Schwung ins Embedded-Projekt mit C++11
  • Sensoren mit Linux ansprechen
  • Software-Architektur braucht Verantwortung und Können
  • So sieht zukunftsfähige Embedded-Softwareentwicklung aus
  • Betriebssystem: mit oder ohne? - Vergleich und Auswahl von Software-Laufzeitarchitekturen
  • Prinzipien für Embedded-Softwarearchitekturen
  • Systems Engineering mit der SysML: Diagramme, Notationen, Anwendungen
  • Das Embedded Software Engineering Kochbuch
  • Anti-Aging für Embedded-Software - Tipps für langlebige Software
  • Software-Engineering mit UML & C: Praxisgerechter Einsatz für kleine Embedded-Systeme
  • GoF-Design-Patterns in Embedded-Systemen? - Entwurfsmuster und ihr Einsatz in Embedded-Systemen


Fachwissen - Embedded- und Echtzeit-Softwareentwicklung


Fachwissen zu den weiteren Themen unseren Portfolios finden Sie
hier.


Embedded-Software: Analyse, Design und Architektur - unsere Experten

Thomas Batt

Dipl.-Ing. (FH) Thomas Batt ist gebürtiger Freiburger. Nach seiner Ausbildung als Radio- und Fernsehtechniker studierte er Nachrichtentechnik in Offenburg. Seit 1994 arbeitet er kontinuierlich in verschiedenen Branchen 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.