Requirements Engineering für Embedded-Systeme

Autor / Redakteur: Eduard Weissmüller, Patrick Fakesch * / Dipl.-Ing. (FH) Hendrik Härter |

Konsequentes Anforderungsmanagement unterstützt den nachhaltigen Erfolg von Entwicklungsprojekten. Als gelebtes Requirements Engineering trägt es zu stetiger Qualitätsverbesserung bei.

Anbieter zum Thema

Die Spirale zeigt es: Nachhaltige Qualitätsverbesserung durch Requirements Engineering ist ein Prozess mit vielen Iterationen.
Die Spirale zeigt es: Nachhaltige Qualitätsverbesserung durch Requirements Engineering ist ein Prozess mit vielen Iterationen.
( Berner & Mattner)

Mehr als die Hälfte der Unternehmen hat keine explizit formulierten Requirements für ihre Produkte und Systeme, oder ihre einmal erstellten Spezifikationen sind nicht vollständig, ungenau oder werden nicht gepflegt. Dabei wird auch in diesen Unternehmen die Notwendigkeit von korrekten und vollständigen Anforderungsspezifikationen gar nicht bestritten. Die erfolgreiche Umsetzung eines Requirements Engineering aber hängt von unternehmerischen, menschlichen sowie fachlichen Kriterien ab.

Zuerst zu den unternehmerischen Faktoren: Schon die frühe Planung eines Projekts erfordert Aufwandsabschätzungen. Doch nur mit detaillierten Anforderungsspezifikationen lassen sich Kosten und Zeiten valide planen. Ihr Fehlen macht Abschätzungen zum Glücksspiel. Die Folge sind deutliche Budgetüberzüge.

Bildergalerie

Requirements Engineering wird oft wegdelegiert

Sind Auslagerungen von Arbeitspaketen in einem Projekt angedacht, erschwert das Fehlen von Anforderungsspezifikationen die Kommunikation. Oft werden detaillierte Anforderungsspezifikationen von Einkaufsabteilungen eingefordert, um eine Bewertungsgrundlage bei der Projektvergabe zu haben. Ohne sie sind Angebote nicht vergleichbar und das Outsourcing wird erschwert.

Anforderungsspezifikationen sind insbesondere auch dann notwendig, wenn Unternehmen nach Reifegradmodellen arbeiten wollen oder müssen. Das weit verbreitete und oft eingeforderte Reifegradmodell CMMI (Capability Maturity Model Integration) fordert schon ab Level 2 das Vorhandensein solcher Spezifikationen (wobei dies noch keine Aussage über deren Qualität oder Vollständigkeit trifft).

Requirements Engineers benötigen erhebliche Anzahl an Fähigkeiten

Im Hinblick auf die menschlichen Faktoren ist zu sagen, dass die Arbeit des Requirements Engineers häufig als wenig anspruchsvolle Leistung abgetan wird. In der Folge delegiert man diese Aufgabe schon mal an Werkstudenten, denen in der Regel das System-Knowhow fehlt, oder eben an Mitarbeiter, die zufällig noch freie Kapazitäten haben.

Bei der Besetzung der Rolle des Requirements Engineers wird oft weniger auf die notwendigen Fähigkeiten geachtet, als dies etwa bei Softwareentwicklern der Fall wäre.

Aber Requirements Engineers benötigen eine erhebliche Anzahl von Fähigkeiten, um den Erfolg ihrer Arbeit sicherzustellen. Viele davon sind Soft Skills wie Kommunikationsfähigkeit, aktives Zuhören, Talent für Konfliktlösungen oder empathische Fähigkeiten.

Der Requirements Engineer muss das System fachlich durchdringen und feststellen, wie es mit anderen Systemen und der Umwelt interagiert. Dieses Verständnis erfordert ein hohes System-Knowhow aus Hardware, Elektronik und Software – nur dann kann mit allen beteiligten Entwicklern zielführend kommuniziert werden.

Aus fachlicher Sicht reicht all dies aber noch nicht, um die Position optimal auszufüllen. Auch der „Methodenkoffer“ muss gut bestückt sein. So ist neben der schematischen textuellen Beschreibung von Requirements der Einsatz von Modellierungssprachen wie UML und SysML sinnvoll.

Anforderungen zu erheben ist nur ein Teil der Aufgabe. Es gilt, die davon abgeleitete Architektur und die Verlinkung von Anforderungen und Architekturelementen im Projekt nicht aus den Augen zu verlieren.

Spezifikationen müssen durch Tests verifiziert werden können

Auch die Testbarkeit der Anforderungen wird oft zu wenig beachtet. Meist wird keine Zeit eingeplant, um diese Themen mit der nötigen Priorität zu planen und umzusetzen.

Um die Bedürfnisse aller Stakeholder zu berücksichtigen, sollten Requirements mit einer iterativen Herangehensweise erhoben werden. Das aber erhöht den Zeitaufwand und das Diskussionspotential. Müssen im Erhebungsprozess zusätzlich Normen und Standards berücksichtigt werden, steigt der Aufwand weiter.

Was also tun? Die allgemeine Schulung von Mitarbeitern im Bezug auf Requirements Engineering reicht definitiv nicht aus. Ziel ist es, eine hochwertige Anforderungsspezifikation zu erstellen und sie im weiteren Entwicklungsprozess permanent aktuell zu halten und zu verfeinern. Requirements Engineering muss daher in den Gesamtprozess einer Entwicklung einbezogen werden. Nur so ist die Qualität des Produkts durch regelmäßige Reflektion sicherzustellen.

Anforderungsmanagement fängt bei der Führung an

Wie kann Requirements Engineering funktionieren? Es muss organisatorisch als Führungsaufgabe verstanden und in den Projekten als priorisiertes Ziel gefordert werden. Vorgaben aber sind nur so gut wie deren Kontrolle. Ein Kontrollmechanismus ist im Prozess zwingend zu definieren und umzusetzen.

Der Requirements-Prozess ist als integraler Bestandteil der Entwicklung zu etablieren. Ist dies einmal gelungen, sinkt der Aufwand für die Umsetzung in nachfolgenden Projekten. Der eingesetzte Prozess sollte dabei der kontinuierlichen Verbesserung unterliegen, indem ein Feedback-Kanal eingerichtet wird, der für den Rückfluss von Erfahrungen genutzt wird.

Die Erfahrung zeigt: Ist Requirements Engineering erfolgreich und für die Mitarbeiter gewinnbringend in ersten Projekten eingesetzt worden, so wird es von den Teams schnell als notwendiger und sinnvoller Teil von Entwicklungsprojekten unterstützt.

Den Requirements Engineer mit geeigneten Tools unterstützen

Organisatorisch sollte der Prozess der Anforderungsfindung mit der Erhebung und Formalisierung der Requirements beginnen. Dies ist die Diskussionsgrundlage für das entstehende System und dessen gesamte Funktionen. Dabei erhalten alle Stakeholder die Möglichkeit, die für sie relevanten Aspekte einzubringen.

Ganz nebenbei erhält das Unternehmen so eine Wissenssammlung, die das Teilwissen aus verschiedensten Abteilungen kombiniert. Der Requirements Engineer formt aus allen Aspekten eine Spezifikation und stellt sie in weiteren Iterationen zur Diskussion. Im Laufe eines Projekts werden Requirements mehrfach geändert oder verfeinert. Schon aus diesem Grund empfiehlt es sich, den Spezifikationsprozess durch Tools zu unterstützen.

Diese Tools erleichtern über Change-Management-Prozesse auch Änderungen nach Freigabe des Produktes. Voneinander abhängige Requirements werden hier formal verlinkt, um ihren Inhalt im Falle von Änderungen konsistent zu halten.

Was macht einen guten Requirements Engineer aus? Die Person muss mit einer guten Portion Perfektionismus ausgestattet sein. Dies ist entscheidend, um jede einzelne Anforderung nicht nur inhaltlich zu optimieren, sondern auch um Überschneidungen und Auswirkungen auf andere Anforderungen zu erkennen.

Abstraktionsvermögen ist ein ebenso wichtiger Faktor. Zusätzlich ist ein gutes Systemverständnis nötig. Da Requirements auf verschiedenen Ebenen erfasst werden, muss der Requirements Engineer den Detaillierungsgrad einer Ebene festlegen, so dass Entwickler und Tester genau wissen, was zu tun ist.

Use-Case-Analysen helfen bei der Anforderungsfindung

Oft nehmen die Anforderungen auch Design-Entscheidungen vorweg. Dies ist dann der Fall, wenn Anforderungen nur eine Design-Möglichkeit offen lassen. Wenn beispielsweise die Gegenstelle einen CAN-Bus mit 500 kBit/s und das Kommunikationsprotokoll CANopen erwartet, dann ist dies das Requirement.

Für die systematische Anforderungsfindung haben sich Use-Case-Analysen bewährt. Wird eine solche Use-Case-Untersuchung für ein Gesamtsystem gemacht, das mehrere Teilsysteme enthält, ist es sinnvoll, die Analyse für die Teile in verfeinerter Form erneut vorzunehmen. Die Abbildung auf der vorigen Seite zeigt den Systems-of-Systems Ansatz.

Die Anwendungsfälle werden dann in Funktionen übertragen, und eine umfassende Funktionsanalyse beschreibt das System aus Funktionssicht. So ergibt sich der zu entwickelnde Umfang des Systems mitsamt den Top-Level-Funktionen.

Es ist die fachliche Aufgabe von Spezifikationen, formal verlinkte Texte mit verständlichen UML- oder SysML-Diagrammen zu kombinieren. Solche hybriden Spezifikationen erleichtern es auch Modellierungslaien, das Thema zu durchdringen.

Iterativer Prozess führt zu immer besseren Resultaten

Betrachtet man den Requirements-Engineering-Prozess in Form einer Spirale, die sich von der Evaluation bis zum Projektabschluss erstreckt, dann erschließen sich aus dieser Arbeit zahlreiche positive Aspekte. Die aus dem Prozess resultierenden Arbeitspakete können fundiert abgeschätzt werden, und die Planungsqualität verbessert sich erheblich. Einzelne Leistungen können ausgelagert werden.

Ist dies der Fall, dann können Dienstleister (egal, ob intern oder extern) qualifizierte und vergleichbare Angebote auf Basis der vollständigen Spezifikation erstellen. Die erbrachten Leistungen können nach der Fertigstellung mit Hilfe von Abnahmekriterien, die aus den Anforderungen abgeleitet werden, bewertet werden. Diese Abnahmekriterien bilden die Basis für die Tests auf den verschiedenen Ebenen des Entwicklungsprozesses.

Da sich die Qualität der Spezifikation durch den iterativen Ansatz im Laufe des Projektes stetig erhöht, ist dessen Dokumentation am Ende einfach möglich: Das erstellte System entspricht der Anforderungsspezifikation.

* * Eduard Weissmüller ist Senior Software Engineer bei dem Münchner Beratungshaus Berner & Mattner und Patrick Fakesch ist dort als Requirements Engineer tätig.

(ID:29885760)