Herausforderungen an das Softwaredesign moderner Embedded-Systeme

In den heute eingesetzten Embedded-Systemen spielt die Software eine zunehmend zentrale Rolle. Systeme basierend auf komplexen Mikrocontroller- und Prozessorarchitekturen müssen mehr Funktionalitäten bieten – und das in kürzerer Entwicklungszeit als je zuvor. Dies stellt Entwickler vor die Herausforderung, qualitativ hochwertige Software zu entwerfen, die sowohl effizient als auch zuverlässig ist.

Herausforderungen an das Softwaredesign moderner Embedded-Systeme weiterlesen

Embedded Software Manager Pattern – Teil 2: Die Manager und ihre Funktionalitäten

Jede Embedded-Software muss in der Praxis eine Vielzahl von verteilten und zentral koordinierten Aufgaben ausführen. Software Patterns stellen dabei nicht nur die konzeptionelle Integrität sicher, sondern ermöglichen auch die Skalierbarkeit über verschiedene Projekte hinweg. Im zweiten Teil unserer Beitragsreihe rücken wir die Manager mit ihren vielfältigen Funktionen in den Fokus.

Embedded Software Manager Pattern – Teil 2: Die Manager und ihre Funktionalitäten weiterlesen

Embedded Software Manager Pattern – Teil 1: Zentrale Aufgaben skalierbar in der Software etablieren

(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. Embedded Software Manager Pattern – Teil 1: Zentrale Aufgaben skalierbar in der Software etablieren weiterlesen

Embedded Software Manager Pattern: Zentrale Aufgaben skalierbar in der Software etablieren

MicroConsult-Trainer Thomas Batt widmet seinen Vortrag auf dem ESE Kongress 2023 der Anwendung des Embedded Software Manager Patterns. Jetzt anmelden und Early-Bird-Ticket sichern!

Embedded Software Manager Pattern: Zentrale Aufgaben skalierbar in der Software etablieren weiterlesen

Requirements Engineering und Management für Embedded-Systeme

Embedded-Systeme sind ein wichtiger Bestandteil heutiger Technologien und ermöglichen eine Vielzahl von Applikationen in verschiedenen Bereichen, wie beispielsweise Industrie, Automatisierung, Medizintechnik, Automotive oder Luft- und Raumfahrt. Diese Systeme sind für die Ausführung spezifischer Funktionen unter Einhaltung der geforderten Qualitäten ausgelegt und werden häufig in größere Systeme oder Produkte integriert. Für den Erfolg eines Embedded-System-Projekts ist es entscheidend, effektive Prozesse für die Anforderungserhebung und das Anforderungsmanagement zu etablieren.

Requirements Engineering und Management für Embedded-Systeme weiterlesen

C++ Programmierung: Dynamische oder statische Polymorphie?

Mit steigender Komplexität von Embedded-Software erlangt die Erfüllung von Qualitätsmerkmalen, wie Änderbarkeit, Erweiterbarkeit, Anpassbarkeit und Wiederverwendbarkeit, eine immer größere Bedeutung. Ein wichtiges Mittel, um diese Software-Qualitätsanforderungen zu erfüllen, ist die Anwendung von polymorphen Strukturen in der Architektur, im Design und in der Implementierung. Die Softwareentwicklung unterscheidet dynamische und statische Polymorphie. 

C++ Programmierung: Dynamische oder statische Polymorphie? weiterlesen

Design for Test und Design for Safety – Software-Architektur nach Maß

Unser Alltag ist heute wie selbstverständlich von miteinander vernetzten Geräten und Systemen geprägt. Ob man mit dem Smartphone unterwegs den schnellsten Weg zum Ziel findet, auf dem Sofa mit dem Tablet die Zeitung liest oder die smarte Heizung über eine App auf dem Smartphone steuert, diese Systeme machen unser Leben komfortabler. Der Gewinn an Komfort erfordert jedoch auch strengere Security- und Safety-Anforderungen, mit denen die Entwickler solcher Systeme Schritt halten müssen. Dies gilt besonders für das autonome Fahren – hier haben schlüssige Safety-Konzepte oberste Priorität. 

Design for Test und Design for Safety – Software-Architektur nach Maß weiterlesen

Interface-Designs und ihre Implementierungen – Teil 2: Realisierung und Zugriff

Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragfähigen Software-Architekturen. Deshalb sollten sie so früh wie möglich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabhängige Personen, Teams oder Standorte ohne weitere „Reibungsverluste“ sicherstellen.

Welche Varianten der Architekt beim Interface-Design kennen sollte und wie diese in den Programmiersprachen C und C++ implementierbar sind, verrät dieser Beitrag in seinem zweiten Teil – er zeigt Implementierungsansätze durch Assoziation, Komposition, Fassade, virtuelle Interfaces, nicht-virtuelle Interfaces, C++ Templates und CRTP-Pattern auf.

Interface-Designs und ihre Implementierungen – Teil 2: Realisierung und Zugriff weiterlesen

Interface-Designs und ihre Implementierungen – Teil 1: Struktur und Definition

Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragfähigen Software-Architekturen. Deshalb sollten sie so früh wie möglich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabhängige Personen, Teams oder Standorte ohne weitere „Reibungsverluste“ sicherstellen.

Welche Varianten Sie beim Interface-Design kennen sollten und wie diese in den Programmiersprachen C und C++ implementierbar sind, verrät dieser Beitrag. Der erste Teil stellt Interface-Konzepte und unterschiedliche Interface-Typen vor.

Interface-Designs und ihre Implementierungen – Teil 1: Struktur und Definition weiterlesen

Embedded-Software-Redesign Guide Teil 3: Anforderungen und Checkliste

Manchmal ist es nicht mehr damit getan, alten Code zu erweitern: Eine Rundumerneuerung muss her. Dieser Beitrag beschreibt Vorgehen rund um das Embedded-Software-Redesign und erläutert dabei die Begriffe Reverse-Engineering, Refactoring und Reengineering.

Veranstaltungsformen wie Workshops eignen sich ideal, um mit den passenden Wissensträgern die Anforderungen zu erfassen und zu dokumentieren. Um Anforderungen aus dem Programmcode abzuleiten, existieren keine Tools am Markt. Hier ist manuelle Arbeit gefragt. Erfahrungsgemäß ist es nicht möglich, 100% aller in der Software implementierten Anforderungen zu erfassen.

Embedded-Software-Redesign Guide Teil 3: Anforderungen und Checkliste weiterlesen