25. Januar 2019

Entwicklungsprozesse als Basis moderner Softwareentwicklung

Im professionellen Software Engineering sind die Entwicklungs- und Prozessschritte vor der Softwareimplementierung essenziell. Begriffe wie Softwareanalyse und Softwaredesign bzw. Software-Grobdesign und Software-Feindesign aus den Entwicklungsprozessen (z.B. dem V-Modell XT oder dem branchenspezifischen V-Modell Automotive) stehen genau dafür.

 (Bild: MicroConsult GmbH)

ild: Kit8/stock.adobe.com)

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 Echtzeitsoftware/ Echtzeitsystemen 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 Anwender in der Softwareentwicklung durchführen.

Requirements Engineering steht am Projektbeginn

Als Grundlage für die Softwareentwicklung werden in der Rolle des Software-Anforderungsanalysten zu Beginn die Anforderungen erfasst. Im Rahmen des Requirements Engineering (Anforderungsentwicklung, Anforderungsanalyse) werden die Anforderungen der Stakeholder gesammelt. Hierbei wird unterschieden zwischen funktionalen und nicht-funktionalen Anforderungen (unter anderem Softwarequalitätsmerkmale), um qualitativ hochwertige Anforderungen zu formulieren. Im Rahmen des Anforderungsmanagements werden dann die Anforderungen mit geeigneten Requirements Management Tools verwaltet und gepflegt.

Der Softwarearchitekt definiert die Softwarearchitektur

Softwarearchitekten verfügen über viel Erfahrung in der Softwareentwicklung und beherrschen das Thema Softwarearchitektur in der Praxis. Unter den Aspekten der Wiederverwendbarkeit, Austauschbarkeit, Erweiterbarkeit und Portierbarkeit entwickeln sie idealerweise eine nicht monolithische Softwarearchitektur, die die identifizierten Softwarearchitektur-Anforderungen und Einflussfaktoren bestmöglich erfüllt. Die Architektur beschreibt die grobe Struktur und auch das darauf basierende interaktive Verhalten (Kommunikation). Softwarekomponenten, Softwareschichten, Softwaresubsysteme, Schnittstellen und deren Funktionen (Operationen/Methoden) und optional die wichtigsten Module/Klassen repräsentieren typische Architekturbausteine. Zur Architekturentwicklung werden Architekturrichtlinien, Architekturprinzipien, Architekturmuster (Patterns) und Softwarearchitektur-Beispiele genutzt. Softwarearchitekten treffen wichtige Entscheidungen. Beispielsweise legen sie fest, ob eine synchrone Architektur, eine asynchrone Architektur oder eine Mischform aus beidem entwickelt wird. 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 oder das Flash-Filesystem. Diese Komponenten sind als Free Software, Open Source Software und kommerzielle Software erhältlich. Für die Laufzeitarchitektur wählen Softwarearchitekten basierend auf Auswahlkriterien ein geeignetes Echtzeit-/Embedded-Betriebssystem aus. Bei Multicore- und Multiprozessorsystemen verteilen sie die Software auf verschiedenen Rechenknoten und führen bei Bedarf Virtualisierung und Hypervisor ein. Jeder Schritt wird dabei übersichtlich vom Softwarearchitekten dokumentiert.

www.microconsult.de

Das könnte Sie auch interessieren