Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Test, Qualität und Safety von Embedded-Software

Softwarequalität ist der Weg und das Ziel erfolgreicher Softwareentwicklung

Softwarequalität beschränkt sich leider noch zu häufig auf die Formel: Hauptsache, es läuft! Doch jeder, der Erfahrung mit über Jahre gewachsener Software hat, weiß, welche unangenehmen Folgen diese sehr einseitige Sicht haben kann. Gerade weil sich Software lange Zeit schnell verändern und erweitern lässt, muss der Qualität eine besondere Aufmerksamkeit geschenkt werden.

Es geht dabei nicht nur um die sogenannte äußere Qualität, sondern auch die innere Qualität. Die äußere Qualität steht für vor allem für die Erfüllung der funktionalen Anforderungen. Die innere Qualität steht für eher unsichtbare Merkmale, wie handwerklich saubere und verständliche Codierung (Clean Code), Erweiterbarkeit, Wartbarkeit und Wiederverwendbarkeit.

Die Verantwortung für qualitativ hochwertigen Code tragen dabei alle, die durch ihre Rolle im Projekt Einfluss darauf haben: Entwickler, Tester, Softwarearchitekten, Produktmanager, Qualitätsbeauftragte, Projektleiter. Wir sollten aber auch die Kunden, Vorgesetzte, Vertrieb und weitere Stakeholder nicht vergessen, die die Rahmenbedingungen erheblich mitbestimmen.

Qualität ist das Ergebnis eines Prozesses, in den viele Rollen eingebunden werden müssen. Der Tester hat letztlich die Aufgabe festzustellen, inwieweit dieser Prozess funktioniert. Abhängig von der Rolle beherrschen Sie als qualitätsbewusster Projektbeteiligter folgende Fähigkeiten.

Sie kennen die maßgeblichen Standards

Für die Softwareentwicklung und Softwarebewertung werden z.B. in der Norm ISO/IEC 9126 für die Produktqualität im Software Engineering verschiedene Qualitätskriterien und Qualitätsmerkmale für die Software definiert. Sie teilen die Kriterien und Merkmale sicher in funktionale und nichtfunktionale Qualitätsaspekte:

Kriterien für funktionale Eigenschaften der Software

Was soll die SW leisten, und wie soll sie es leisten?

Software-Funktionalität Dieses Merkmal umfasst die Angemessenheit, Interoperabilität, Ordnungsmäßigkeit, Richtigkeit und Sicherheit (security, safety).

Kriterien für nicht-funktionale Eigenschaften der Software

Wie soll sich die SW im Betrieb verhalten?

Software-Benutzbarkeit
(Software Usability)

Dieses Merkmal umfasst die Bedienbarkeit, Erlernbarkeit und Verständlichkeit.

Software-Effizienz

Dieses Merkmal umfasst das Verbrauchs- und Zeitverhalten.

Software-Änderbarkeit

Dieses Merkmal umfasst die Kriterien die Analysierbarkeit, Modifizierbarkeit, Prüfbarkeit und Wartbarkeit.

Software-Zuverlässigkeit

Dieses Merkmal umfasst die Fehlertoleranz, Stabilität, Reife der Software und Wiederherstellbarkeit.

Software-Übertragbarkeit

Dieses Merkmal umfasst die Anpassbarkeit, Austauschbarkeit und Installierbarkeit.

 

Da sich die Qualitätsmerkmale teilweise gegenseitig ausschließen bzw. beeinflussen, können nicht mehr als vier der sechs aufgelisteten Qualitätskriterien gleichzeitig erfüllt werden. Sie sind in der Lage, die Qualitätskriterien im Sinne der Projektziele abzuwägen und festzulegen.

Wenn Ihre Software-Entwicklung spezifischen Qualitäts-Anforderungen unterliegt, sorgen Sie dafür, dass Codier-Standards wie der MISRA-C Coding Standard, CMMI und SPICE bzw. Automotive SPICE eingehalten werden.

Insbesondere bei Softwareprojekten, die Safety-Anforderungen für die funktionale Sicherheit (IEC 61508, ISO 26262) unterliegen, weisen Sie für alle Entwicklungs-Testschritte Dokumente nach, die belegen, dass bei allen Entwicklungsphasen die Forderungen an die Sicherheit (safety, security) eingehalten wurden. Beispielsweise stellen Sie sicher, dass bei Fehlern während des Betriebs das System angemessen reagiert und gegebenenfalls in einen sicheren Zustand überführt wird.

Softwarequalität betrifft jede Rolle und Phase des Projekts

Das Vorgehensmodell (Prozessmodell) definiert die auszuführenden Entwicklungsschritte bzw. Projekt-Phasen und deren Reihenfolge in Software-Projekten. Es gibt eine Reihe von verschiedenen Vorgehensmodellen, z.B. agile Software-Entwicklung, eXtreme Programming, Rational Unified Process, Spiral-Modell, V-Modell XT, Wasserfall-Modell.

Sie verstehen es, die Maßnahmen zur gewünschten Softwarequalität in den gewählten Prozess zu integrieren und mit den Rollen im Projektteam zu kombinieren, beispielsweise bei der Anwendung des Prozessmodells V-Modell XT:

Projekt-Phasen des V-Modell XT

Das V-Modell XT ist ein Vorgehensmodell zum Entwickeln von Systemen. Es deckt im Wesentlichen die Disziplinen Projektmanagement, Qualitätssicherung, Ausschreibung und Vergabe sowie die Systementwicklung ab.

Test und Qualität von Embedded-Software - Testen im V-Modell XT

Bild 1: Test und Qualität von Embedded-Software - Projektphasen im V-Modell XT


Die Projekt-Phasen des V-Modell XT

System-Anforderungs-Analyse

Sie ermitteln die Systemanforderungen (Requirements), z.B. was soll das System tun, in welcher Reihenfolge führt das System die einzelnen Aktivitäten aus, was sind die Abhängigkeiten der Komponenten im System, was sind die zeitlichen Anforderungen, usw.? Diese Requirements sind die Grundlage für einen systematischen Systemtest und unverzichtbare Grundlage für die Qualitätssicherung, denn sie bestimmen die Qualitätsmerkmale. In allen nun folgenden Phasen stellen Sie durch den professionellen Einsatz von Methoden und Tools sicher, dass diese Merkmale auch im Rahmen der Möglichkeiten umgesetzt werden.

Analysephase

Sie ermitteln, inwieweit sich die Requirements mit den vorhandenen Ressourcen, der verfügbaren Zeit bis zur Auslieferung und dem gesteckten Kostenrahmen umgesetzt werden können. Gegebenenfalls wirken Sie im Rahmen Ihrer Möglichkeiten auf eine Anpassung der Anforderungen oder der Projektparameter.

System-Entwurf

Sie modularisieren das System.

Software-Architektur-Definition und Software-Design-Definition

Dieses Merkmal umfasst die Fehlertoleranz, Stabilität, Reife der Software und Wiederherstellbarkeit.

Software-Übertragbarkeit

Sie strukturieren das System.

Software-Entwurf

Sie programmieren die einzelnen Software-Module (software units).
Unit Test Sie testen die einzelnen Software-Module (software unit test).
System-Integrationstest

Sie testen, ob die System-Anforderungen in der realen Umgebung vollständig erfüllt werden.

Abnahme-Test

Sie prüfen, ob die Anforderungen des Auftraggebers vollständig erfüllt werden; dabei kann dieser Test von einem Benutzerhandbuch begleitet werden.

Umfassendes Qualitätsmanagement ist die Basis der Produktqualität

Die dauerhafte Entwicklung qualitativ hochwertiger Produkte ist die Basis für höchstmögliche Kundenzufriedenheit. Obendrein lässt sich damit eine Reduktion der fortlaufenden Entwicklungskosten erreichen, da eine klare Strukturierung der Software die Wiederverwendbarkeit der einzelnen Software-Module erhöht. Ihr Ziel ist ein dauerhaft hohes Qualitätslevel; dies erfordert ein angemessenes Qualitätsmanagement (beispielsweise Total Quality Management TQM). Nur wenn Sie alle am Projekt beteiligten Personen, Rollen und Tätigkeiten in diesen Qualitätsmechanismus einbinden, wird ein dauerhafter Erfolg möglich. Dazu erstellen Sie für Softwareentwicklung und Software-Test einen Qualitätssicherungsplan.

Der Software-Qualitätssicherungsplan definiert die Aufgaben für das Testmanagement

Zur Sicherung der Softwarequalität verwenden Sie in Ihrem Projekt eine Reihe von Software-Analyseverfahren für die Softwarequalitätssicherung.

Als Ausgangspunkt für die Qualitätssicherung wählen Sie eine Risikoanalyse, auf deren Basis Sie die Testschwerpunkte setzen.

Für den Softwaretest wenden Sie verschiedene Testverfahren an:

  • Statische und dynamische Code-Analysen, wie Code-Reviews (Analyse des programmierten Codes)
  • White-Box Tests (Test auf Basis des Kontrollflusses der Software – mit Prüfung der Anweisungsüberdeckung, Zweigüberdeckung, Bedingungsüberdeckung und Pfadüberdeckung)
  • Black-Box Tests (funktionsbasierendes Testen ohne Kenntnis der inneren Funktionen: Verhält sich das System gemäß der Spezifikation?).


Sie spezifizieren alle auszuführenden Tests in einem Software-Qualitätssicherungsplan und nutzen die Vorteile der Testautomatisierung. Im Zuge des Test-Managements nehmen Sie nach der Durchführung der verschiedenen Tests eine Testauswertung vor.

Sie sind sich bewusst, wie wichtig es ist, alle notwendigen Abläufe im Software-Qualitätsmanagement zu definieren, die nach einer Änderung der Software bzw. der Hardware zu erfolgen haben. Ihr Schlüssel zum Projekterfolg ist die Disziplin aller Projektteilnehmer, denn der Mensch ist der größte Risikofaktor im Projekt.

Firmenintern unterstützen Sie die Definition eines Software-Entwicklungsprozesses, der folgende Schritte enthält: Anforderungsmanagement und -analyse für das Gesamtsystem und die Software-/ Hardware-Komponenten/-Module (Requirements Analysis), Definition der Architektur und des Software-Designs, HW-/SW-Implementierung und einzelne Testschritte.

Gerade bei softwareintensiven Systemen mit einer hohen Anzahl von Code-Zeilen (lines of code, LOC) in den Systemen (z.B. softwaregesteuerte Systeme im Flugzeug oder Auto) sind Software-Qualitätsprozesse für Sie ein „Muss“. Sie wissen, dass Fehlfunktionen in ausgelieferten Systemen zu einer Gefährdung von Personen bis hin zum Tod führen könnten. Eine Fehlerbehebung (z.B. Rückrufaktion) kann sehr kostspielig sein und den mühsam aufgebauten Ruf Ihres Unternehmens zerstören.

Investitionen in Softwarequalität lohnen sich für alle Projektbeteiligten

Know-how aus der Praxis verschafft Ihnen in kurzer Zeit ein umfassendes Verständnis für alle Aspekte der Softwarequalität. Besuchen Sie deshalb die Trainings, Workshops, Seminare und Coachings rund um das Thema Softwaretest und Softwarequalität bei MicroConsult.


Test, Qualität und Safety von Embedded-Software - unsere Trainings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich zu Schulungen/ Seminaren/ Trainings und Workshops von MircoConsult zum Thema Test und Debug von Embedded-Software sowie Qualität und Sicherheit von Embedded-Software.

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

Embedded-Software-Test: Best Practices für den Unit-/Modul-/Komponenten-Test

Lernen Sie den Entwicklungs- und Testprozess im Zusammenhang mit all seinen Abhängigkeiten, Ergänzungen und Wechselbeziehungen kennen, um durch die Nutzung von Synergien effizient und effektiv zu testen. In zahlreichen praktischen Übungen mit Software und Hardware wird das Gelernte umgesetzt.
Zum Training - Embedded-Software-Test

Qualität, Test und Softwareentwicklung im Medizinbereich

Dieses Test-Seminar gibt Ihnen einen Überblick über die Normen und ihre Anwendung bei der Entwicklung von Software im medizinischen Bereich.
Zum Training - Qualität, Test und Softwareentwicklung im Medizinbereich

Agiles Testen und Test-Driven Development von Embedded-Systemen (Agile TDD)

Sie kennen wichtige Begriffe, Zusammenhänge und Methoden, um maßgeblich zur Gestaltung, Umsetzung und Durchführung von agilem Testen und Test-Driven Development in der Entstehung Ihrer Embedded-Systeme (System-, Hardware- und Softwareentwicklung) beizutragen.
Zum Training - Agiles Testen und Test-Driven Development TDD

Legacy Code: Wie teste ich chaotische Software?

Das Seminar befasst sich mit der Vermessung sowie dem dynamischen Test von Legacy Code, wobei hier der Begriff "Legacy Code" enger gefasst wird auf alten, überlieferten Programmcode, der erkennbar gewachsen ist, anstatt geplant erstellt worden zu sein, und zu dem Kommentare und Spezifikationen weitgehend fehlen. Dieses Seminar ist darauf ausgerichtet, die Teilnehmer für die Thematik des logischen "Gestrüpps" zu sensibilisieren und an die Problematik seiner eingeschränkten Handhabbarkeit hinzuführen. Theoretische und praktische Übungen machen mit Methodiken vertraut, mit dem Code dieser Art vermessen wird (Code-Metriken) und Testfälle erstellt werden.
Zum Training: Legacy Code: Wie teste ich chaotische Software?

Continuous Integration: Softwarequalität dauerhaft sicherstellen

Dieser praxisorientierte Workshop befasst sich mit dem Prozess der fortlaufenden Integration von Komponenten zu einem System mit dem Ziel, die Softwarequalität zu steigern. Dabei wird typischerweise durchgehend überprüft, ob sich die Anwendung noch erstellen lässt. Um die Qualität der Software noch weiter zu erhöhen und beständig zu gewährleisten, sollten sich diesem Prozess noch weitere Schritte wie automatisierte Tests anschließen.
Zum Training: Continuous Integration: Softwarequalität dauerhaft sicherstellen

Software-Erosion: Ursachen, Wirkungen und Maßnahmen

Dieses Training beschreibt statische Software-Analysen zur Sicherung der inneren Qualität von Software und ihre Integration in den Entwicklungsprozess. Auf Basis dieser Informationen lassen sich Maßnahmen ableiten, die die Software-Erosion stoppen und beseitigen.
Zum Training - Software-Erosion

Requirements Engineering und Requirements Management für Embedded-Systeme

Mit dem erworbenen Wissen führen Sie einen Requirements Prozess in Ihrer Firma ein und bewerten, optimieren, verstehen und leben ihn.
Zum Training - Requirements Engineering und Requirements Management für Embedded-Systeme

Software-Usability Praxisseminar: Produkte benutzerfreundlich entwickeln

Das Training sensibilisiert Sie für Fragen der Software-Usability. Es wird gezeigt, wie Anwender sie sinnvoll in ihren Entwicklungsprozess integrieren und sich so erfolgreiche Produkte gestalten lassen.
Zum Training - Software-Usability Praxis-Seminar

Funktionale Sicherheit (FuSi) von Elektronik und deren Software nach IEC 61508 und ISO 26262

Das Training vermittelt die Grundlagen zur Sicherheit (Safety) von technischer Steuerungselektronik und deren Software sowie eine Übersicht über den Stand der Technik. Sie erhalten einen Einblick in die Voraussetzungen, die vom Management auf Unternehmensebene und vom Projektmanagement zum Erreichen der Sicherheit von Elektronik und deren Software gemäß dem Stand der Technik erwartet werden.
Zum Training - Funktionale Sicherheit (FuSi)

Security-Fundamente für eingebettete Systeme (Embedded Systems)

Das Training beleuchtet strukturiertes und gezieltes Security by Design sowie das Bewerten und Schließen potientieller Sicherheitslücken in eingebetteten Systemen (Embedded Systems). Dazu gehören die wichtigsten kryptographischen Verfahren und deren Anwendungen ebenso wie ausgewählte Hardware- und Softwarekonzepte. Als wichtigen Vertreter aus dem Normenbereich kennen Sie die ISO/SAE 21434 im Detail und erfüllen entsprechende Anforderungen.
Zum Training - Security-Fundamente für eingebettete Systeme

Security: Sicheres Update und Boot für Embedded-Systeme

Sie wissen um potientielle Sicherheitslücken in eingebetteten Systemen (embedded systems) wie z.B. IoT und können Risiken anhand ausgewählter Methoden bewerten. Geeignete Gegenmaßnahmen werden anhand von Secure Boot und Update erläutert und deren Umsetzung demonstriert. Abschließend findet eine Überprüfung auf Wirksamkeit statt. 
Zum Training - Security - Sicheres Update und Boot für Embedded-Systeme

Security: Kryptographie und sichere Systeme

Sie erhalten einen Einblick in die Methoden der Kryptographie und der Kryptanalyse, vor allem aber lernen Sie potenzielle oder erfolgreiche Angriffe abzuwehren. Mit Beispielprogrammen vertiefen und veranschaulichen Sie dieses Wissen.
Zum Training - Security / Kryptographie

ISO SAE 21434 Road Vehicles - Cybersecurity Engineering

Sie kennen den aktuellen Stand der ISO SAE 21434 zum Thema Cybersecurity im Automotive-Umfeld. Dabei lernen Sie, wie die Cybersecurity-Perspektive im Engineering von E/E-Systemen adressiert und berücksichtigt werden soll.
Zum Training - ISO SAE 21434 Road Vehicles - Cybersecurity Engineering

 

Alle Trainings & Coachings zu diesem Themenfeld:

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.


Test, Qualität und Safety von Embedded-Software - Fachwissen

Wertvolles Fachwissen zum Thema Qualität und Sicherheit von Embedded-Software sowie Test und Debug von Embedded-Software steht für Sie zum kostenfreien Download bereit:

 
Fachwissen zu den weiteren Themen unseren Portfolios finden Sie hier.


Test und Qualität von Embedded-Software - 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.

Remo Markgraf

Dipl.-Ing. Remo Markgraf ist Senior Management Consultant bei der MicroConsult GmbH. Neben Begeisterung für Innovation und Leidenschaft für Embedded-Systeme verfügt er über langjährige Projekt- und internationale Führungserfahrung in Softwareentwicklung, Systems Engineering, Projekt-, Produkt-, Innovations- und Business Development Management sowie dem technischen Vertrieb.

Dieter Volland

Dipl.-Ing. Dieter Volland studierte Technische Informatik und war ab 1985 als Entwicklungsingenieur & Trainer an der "Siemens Schule für Mikroelektronik" tätig. Er ist Mitbegründer der MicroConsult GmbH und verfügt über jahrzehntelange Erfahrung mit Mikroprozessoren und Mikrocontrollern (Intel, ARM, Infineon, Freescale) sowie der Programmierung von Embedded-Systemen. Weitere Themen sind Analyse und Design von Embedded-Systemen mit UML sowie Software-Test. Heute trainiert und berät er weltweit Entwickler in den Themenbereichen Mikrocontroller, Software Engineering für Embedded-Systeme sowie Entwicklungs- und Testprozesse.