Anzeige

MicroConsult GmbH

Entwicklungsprozesse als Basis moderner Software-Entwicklung

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/ Echtzeit-Systemen nicht mehr vereinbar ist. Im Folgenden sind wichtige Aktivitäten in der Embedded-Software-Analyse, im Embedded-Software-Design bzw. im SW-Engineering kurz beschrieben, die Sie in der Software-Entwicklung 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.

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

Bild: Embedded-Software-Architektur Beispiel – Software-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.

Über den Autor 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.

Über MicroConsult

Die 1995 von Dipl.-Ing. Ingo Pohle und Dipl.-Ing. Dieter Volland gegründete MicroConsult Microelectronics Consulting & Training GmbH mit Sitz in München unterstützt Embedded-Ingenieure mit praxisnahem Wissen und bewährten Entwicklungsmethoden beim termin- und kostengerechten Abschluss ihrer Projekte. Das umfangreiche Trainings- und Beratungsangebot zu Technologien, Tools und Methoden für Entwickler sowie zu allen wichtigen Themen des erfolgreichen Projektmanagements umfasst Embedded Software Engineering und Embedded Systems Engineering sowie Management für Embedded-Projekte, vom Singlecore- oder Multicore-Controller über Echtzeitbetriebssysteme bis hin zur komplexen Applikation. Zu den Kunden von MicroConsult gehören über 1.000 Unternehmen aus Europa, Asien und den USA und mittlerweile über 100.000 Entwickler und Führungskräfte, die von dem profunden Wissen und der langjährigen Erfahrung der MicroConsult-Experten profitieren. Die hochkarätigen Trainer und Coaches vermitteln auf sympathische und verständliche Art ihr Expertenwissen und legen dabei großen Wert auf praxisorientierte Lösungswege. Am Standort München bietet das 40-köpfige Team um Ingo Pohle und mehr als 15 weitere externe Trainer unter dem Motto “Experience Embedded” maßgeschneiderte Seminare für Embedded-Ingenieure, die auf eine schnelle Problemlösung zielen, um damit Zeit und Geld zu sparen.

Pressekontakt:
Bernhard Lermann
Lermann Public Relations
Enzianstr. 2c, 85591 Vaterstetten/München
Tel.: 089 21551215
Mobil: 0179 5029855
bernhard@lermann-pr.com

MicroConsult GmbH auf IoT Design

Scrum neu gedacht

Scrum neu gedacht

Um im Embedded-Umfeld erfolgreich agil zu entwickeln, müssen neben den Scrum-Grundlagen die Besonderheiten des komplexen Zusammenspiels von Hard- und Software von der Planung bis zum Test berücksichtigt werden. ScrumBedded verspricht hier als maßgeschneiderte Lösung Erfolg.

Anforderungen entwickeln und Architekturen verfeinern

Embedded-Software-Design

Anforderungen entwickeln und Architekturen verfeinern

‚Predictive Maintenance‘ wird laut Experten in den nächsten fünf bis zehn Jahren bei so gut wie allen rotierende Maschinen die Norm sein. Die rasante Entwicklung der Sensortechnologie und der künstlichen Intelligenz beschleunigt dieses Tempo zusätzlich. Die hierzu mit dem Internet of Things (IoT) verbundenen Embedded-Systeme stellen immer komplexere Anforderungen an das Design. Wer im Vorfeld durchdachte Anforderungen entwickelt und die Architektur konsequent mit Software-Design verfeinert, sichert Software- und Produktqualität.

Agile Rollen in Embedded-Projekten

Agile Rollen in Embedded-Projekten

Erfolgreich besetzen

Die agile Entwicklung ist in den letzten Jahren die bestimmende Methodik für die Herstellung technischer Produkte und Produktkomponenten in einer Vielzahl von Industriebereichen geworden. Die Besetzung der agilen Rollen ist dabei eine der größten Hürden bei der Änderung der Entwicklungsmethodik.

Safety & Security: Doppelt sicher

Safety & Security: doppelt sicher

Auf Nummer sicher gehen

Sicherheit sorgt einerseits dafür, dass die Betriebssicherheit (safety) erhalten bleibt, andererseits versteht man darunter die Gesamtheit der Maßnahmen, um ein System nach außen zu schützen (security). Das unterstreicht sowohl die Abgrenzung dieser Begriffe, zeigt aber auch, wie eng sie zusammenhängen.

In Systemen und Architekturen denken

In Systemen und Architekturen denken

Die Embedded-Welt und die IT-Welt sind miteinander verflochten und werden sich immer mehr verflechten. Die große Herausforderung liegt darin, in immer komplexeren und dynamischeren Systemen zu denken und die immer rasanteren technischen und unternehmerischen Aspekte zu neuen Systemen und Geschäftsideen zu kombinieren.

Anzeige
Anzeige
Anzeige