Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Anforderungen – Eine Checkliste zur Reife

Autor: Thomas Batt, MicroConsult GmbH

Beitrag - Embedded Software Engineering Kongress 2017

 

Anforderungen zu erfassen und zu verwalten ist ein wesentlicher Schlüssel zu erfolgreichen Projekten. Egal ob im klassischen oder agilen Prozessumfeld - professionelles Requirements Engineering und Management für Embedded- und Echtzeitsysteme verkürzt Ihre Projektlaufzeiten und spart Entwicklungs- sowie Wartungskosten ein. Stellen Sie sich dieser Herausforderung!

Vor dem Hintergrund meiner beruflichen Erfahrungen sowie der Durchführung von vielen Seminaren und Coachings zum Thema Requirements Engineering und Management ist die dem Beitrag zugrunde liegende Checkliste entstanden (s. PDF, Bild 1).

Die Checkliste soll Ihnen zeigen, was Sie zum Thema Anforderungen in Ihrem Unternehmen einführen, durchführen und optimieren können. Sie ist gleichermaßen eine Fundgrube wertvoller Tipps aus der Praxis.

Der folgende Beitrag greift alle Themenpunkte der Checkliste der Reihe nach auf und beleuchtet den Hintergrund dazu. Wichtig für das Verständnis: Wo der Begriff "System" verwendet ist, kann dieser durch andere Domänen wie beispielsweise Embedded-Software oder -Hardware ersetzt werden.

Die Requirements Engineering und Management Checkliste zusammen mit der dazugehörigen Dokumentation dazu haben wir unter [1] für Sie zum Download bereitgestellt.

Requirements Engineering - Anforderungen identifizieren, dokumentieren und verwalten

Anforderungen (WAS) von Umsetzung (WIE) trennen

Grenzen Sie gedanklich, schriftlich und organisatorisch Anforderungen von deren Umsetzung ab. Anforderungen meinen das WAS und die Umsetzung das WIE. Nur in wenigen begründbaren Fällen enthalten Anforderungen kein WIE.

Anforderungskontext identifizieren und darstellen

Grenzen Sie das anzufordernde System gegen dessen Kontext ab, um die externen Schnittstellen und damit die zugehörigen Anforderungen zu identifizieren.

(s. PDF, Bild 2)

Als grafische Notation dazu eignet sich für eine Kontextsicht das Use-Case Diagramm aus der UML (Unified Modeling Language) bzw. aus der SysML (Systems Modeling Language) [5].

Anforderungen textuell erfassen

Die Basis für alles weitere in der Entwicklung und im Test sind die Anforderungen. Sie sollten diese textuell erfassen und ggf. mit anderen Darstellungsformen wie Grafiken und Diagrammen ergänzen. Eine alternative Notationsmöglichkeit, mit der Sie die textuelle Anforderungserfassung komplett ersetzen können, ist bis heute (2017) nicht erfunden.

Anforderungstemplates anwenden

Verwenden Sie Anforderungstemplates [8], um bereits beim Schreiben der Anforderungen einen sehr hohen Qualitätslevel der Anforderung zu erreichen.

Anforderungstemplate für selbstständige Systemaktivität:

[Wann?] [Unter welcher Bedingung?] MUSS | SOLLTE DAS SYSTEM
<Objekt und Ergänzung des Objektes> <Prozesswort im Infinitiv>.

Anforderungstemplate für interaktive Systemaktivität:

[Wann?] [Unter welcher Bedingung?] MUSS | SOLLTE DAS SYSTEM <wem?> DIE MÖGLICHKEIT BIETEN, <Objekt und Ergänzung des Objektes> <Prozesswort im Infinitiv>.

Anforderungstemplate für potentielle Systemaktivität:

[Wann?] [Unter welcher Bedingung?] MUSS | SOLLTE DAS SYSTEM FÄHIG SEIN,
<Objekt und Ergänzung des Objektes> <Prozesswort im Infinitiv>.

Natürlichsprachliche Methode anwenden

Um die Qualität der Anforderungen nochmals zu steigern, wenden Sie ergänzend zu den Anforderungstemplates die natürlichsprachlichen Methode [8] an. Dadurch erreichen Sie eine Rücktransformation der beim Wissensausdruck entstehenden Tilgungen, Generalisierungen und Verzerrung.

Anforderungsqualitätsmerkmale definieren und berücksichtigen

Jede Anforderung muss die folgenden Qualitätsmerkmale erfüllen: vollständig, korrekt, verstehbar, notwendig, konsistent, verfolgbar, machbar, Verbindlichkeit klassifiziert, testbar und [optional] atomar.

Produkt-, Projekt- und Plattformanforderungen differenzieren

Machen Sie sich dieser Anforderungskategorien bewusst:

Produktanforderungen:
Anforderungen, die Leistungsmerkmale, Fähigkeiten und Eigenschaften des aktuell zu entwickelnden Produktes beschreiben

Projektanforderungen:
Von der Projektleitung kommende Anforderungen, beispielsweise Zeiten, Kosten, Lieferumfang und Logistik

Plattformanforderungen:
Anforderungen, die für mehrere Produkte bzw. für diese Produktgruppe immer gültig sind -> Wiederverwendbarkeit von Anforderungen

Funktional, nichtfunktional und Zusicherung differenzieren

Machen Sie sich dieser Anforderungsarten bewusst:

Funktionale Anforderungen:
Nach außen hin sichtbare / beobachtbare Funktionalitäten

Nichtfunktionale Anforderungen:
Qualitäten, Qualitätsmerkmale einzelner funktionaler Anforderungen oder des gesamten Systems

Zusicherungen als Anforderungen:
Standards, Normen, Prozesse, technische Zusicherungen, Projektanforderungen

Qualitätsanforderungen definieren und erfassen

Beschreiben Sie nicht nur funktionale Anforderungen, sondern auch deren Qualitäten und genauso wie die Qualitäten für das gesamte System.

(Abstrakte) Qualitätsmerkmale quantisieren

Quantisieren Sie abstrakte Qualitätsmerkmale wie beispielsweise Wiederverwendbarkeit. "Die Embedded-Software muss wiederverwendbar sein." -> "Die Embedded-Software muss mit dem Grad 4 wiederverwendbar sein." Dabei müssen Sie die verschiedenen Grade einmalig spezifizieren. Daraus geht hervor, was die Embedded-Software erfüllen muss.

Bei konkreten Qualitätsmerkmalen, wie beispielsweise dem Leistungsverbrauch eines Systems, können Sie direkt den Wert mit Einheit setzen.

(Abstrakte) Qualitätsmerkmale testbar / nachweisbar gestalten

In der oben beschriebenen Gradspezifikation beschreiben Sie zusammen mit dem Testteam auch die Testbarkeit / Nachweisbarkeit für die Erfüllung des (abstrakten) Qualitätsmerkmals.

Bei konkreten Qualitätsmerkmalen, wie beispielsweise dem Leistungsverbrauch eines Systems, ist die Testbarkeit / Nachweisbarkeit meist klar.

Aus Standards gültige Requirements ableiten

Standards und Normen enthalten nicht immer direkt die Anforderungen für das Produkt. Vielmehr lassen die Texte häufig einen gewissen Interpretationsspielraum zu. Umso wichtiger ist es, dass Sie einmalig aus den für Ihre Produkte gültigen Standards und Normen die konkreten Anforderungstexte ableiten und diese gemeinsam mit den Beratungsstellen der zertifizierenden Organisationen vor der Umsetzung abstimmen.

Anforderungsglossar als Teil des Projektglossars pflegen

Wenn Sie in den Anforderungstexten Substantive, Verben, Adjektive oder Abkürzungen verwenden, die bei Stakeholdern nicht geprägt sind, müssen Sie diese Begriffe in einem Glossar erklären. Führen Sie ein einziges Glossar anstelle mehrerer verschiedener für das gesamte Projekt è Vermeiden von Redundanz und Inkonsistenz 

Prozess, Vorgehen, Methode

Anforderungen auf allen Entwicklungsebenen etablieren

Führen Sie Requirements Engineering und Management nicht nur für Kunden- und Systemanforderungen ein, sondern für alle Entwicklungsdomänen, z.B. Subsysteme, Hardware, Embedded-Software, Software, Konstruktion, usw.

(s. PDF, Bild 3)

Workflows, Aktivitäten, Artefakte und Rollen definieren

Egal ob Sie traditionelle [3] oder agile [4] Prozesse leben, definieren Sie eindeutige Workflows mit genau benannten Aktivitäten, deren ein- und ausgehenden Artefakten und deren verantwortlichen Rollen.

Verständnis und Commitment zu Anforderungen schaffen

Insbesondere bei der Unternehmenseinführung von Requirements Engineering und Management in Pilotprojekten ist es wichtig, ein gemeinsames Verständnis sowie ein hohes Maß an Motivation, Wissen und Zustimmung unter den Beteiligten zu schaffen. Zweifler involvieren Sie punktuell, z.B. in Engineering Meetings.

Ist-Zustand der bisherigen Produkte analysieren

Aus den gesammelten Erfahrungen mit den Vorgängerprodukten leiten Sie Anforderungen für das neue Produkt ab.

Stakeholder identifizieren und analysieren

Stakeholder sind Personen und Institutionen, die ein berechtigtes Interesse an dem neuen Produkt haben. Nicht nur der Produktmanager sollte sich intensiv über potentielle Stakeholder Gedanken machen, sondern auch die Anforderungsverantwortlichen nachfolgender Entwicklungsebenen.

Stakeholder auswählen und dokumentieren

Wählen Sie aus den identifizierten Stakeholder-Gruppen einzelne Repräsentanten aus und dokumentieren Sie Ihre Auswahl.

Stakeholder-Interviews durchführen

Vereinbaren Sie mit den ausgewählten Stakeholder-Repräsentanten Interviewtermine und befragen Sie sie zu den von Ihnen vorbereiteten Anforderungsthemen. Lernen und üben Sie dazu Interviewtechniken. Hierzu profitieren Sie von Kenntnissen über NLP (Neuro-Linguistisches Programmieren) [7].

Anforderungen aus Interview-Ergebnissen ableiten

Leiten Sie aus den Interviewergebnissen konkrete Anforderungen ab.

Anforderungen mit Auftraggeber / Stakeholdern abstimmen

Stimmen Sie die aus den Interviewergebnissen abgeleiteten Anforderungen in einer nächsten Iteration mit den Stakeholdern ab.

Anforderungen analysieren, modellieren

Modellieren Sie im Rahmen der Analyse die Anforderungen. So werden Inkonsistenzen und Unvollständigkeiten entdeckt, und ein verbessertes Themenverständnis wird erlangt. Dabei entwickeln Sie neben der Kontextsicht Funktionale-Anforderungssichten, interaktive und generische Verhaltenssichten. Als Notation dazu sei nochmals auf die UML / SysML [5] verwiesen. Um noch weitere Anforderungen aufzudecken, führen Sie auf Basis der entstandenen Sichten eine Fehleranalyse durch.

Anforderungen simulieren, ausführen

Mithilfe von Toolunterstützung und entsprechender Vorbereitung führen Sie das Anforderungsmodell aus und simulieren so die Anforderungen. Mittels der Simulationsergebnisse verbessern Sie die Anforderungsqualitäten.

Anforderungsmachbarkeit prüfen

Ein Anforderungsqualitätsmerkmal ist die Machbarkeit der Anforderung. Wenn nicht einmal der Fachspezialist die Machbarkeit abschätzen kann, müssen Sie eine Machbarkeitsstudie (Feasibility Study) beauftragen. Damit entscheiden Sie die Machbarkeit.

Prototyp (Wegwerf- oder evolutionär) erstellen

Mittels des vom Prototypen-Team erstellten Prototyps erhalten Sie eine konkrete Aussage über die Machbarkeit der Anforderung. Den Wegwerf-Prototyp entsorgen Sie, den evolutionären Prototyp lassen Sie ins Produkt einfließen. Vereinbaren Sie vor der Prototypenerstellung dessen Art und halten Sie das Ergebnis schriftlich fest. Beachten Sie, dass ein Wegwerf-Prototyp niemals zu einem evolutionären Prototyp mutieren darf!

QA: Reviews durchführen

Führen Sie mit ausgewählten Stakeholdern Reviews der textuellen und der modellierten Anforderungen durch. Mit den Review-Ergebnissen verbessern Sie die Anforderungsqualitäten.

QA: Funktionalszenarien und Qualitätsszenarien ausführen

Funktionalszenarien: Analysieren Sie mit „Papier und Bleistift“ oder toolgestützt mit der UML / SysML Notation [5] typische und untypische funktionale Abläufe gegen die Schnittstellen des Systems. Basis dazu ist der aktuelle Kenntnisstand über das System. Prüfen Sie dabei die Konsistenz und Vollständigkeit der Anforderungen zu den Abläufen. Als nebenläufigen Nutzen können Sie diese Funktionalszenarien auch als Testszenarien gegen die externen Schnittstellen (Systemtest) einsetzen.

Qualitätsszenarien: Analysieren Sie, welche realistischen und konkreten Szenarien sich für (abstrakte) Qualitätsmerkmale für das System ergeben. Beispielsweise resultieren aus dem abstrakten Qualitätsmerkmal Portabilität in der Embedded-Software mehrere Dimensionen: Portierbarkeit bezogen auf Hardware, Betriebssystem, Kommunikation, Middleware. Für alle relevanten Dimensionen arbeiten Sie realistische Szenarien aus, z.B. Hardware-Portierung von Mikrocontroller A zu Mikrocontroller B, und nehmen diese als Anforderung mit auf.   

Konsistenz zwischen Anforderungen und Umsetzung gewährleisten

Gleichen Sie kontinuierlich die Umsetzung mit den Anforderungen ab. Im Fehlerfall korrigieren Sie die Anforderungen. Bei Anforderungsänderungen prüfen Sie die Umsetzung. Allerspätestens am Projektende sollte das System exakt die Umsetzung der Anforderungen widerspiegeln – nicht mehr und nicht weniger.

Abnahmekriterium / Test-Case für jede Anforderung entwickeln

Das Testteam stattet jede Anforderung mit mindestens einem Test-Case aus. Durch die personelle Trennung (vier-Augen-Prinzip) ergeben sich positive Rückwirkungen auf die Anforderungsqualitäten. Mit dem späteren Ausführen des Test-Cases weist der Tester nach, dass die Anforderung im System umgesetzt ist. Es existiert keine Anforderung ohne Test-Case. In Umkehrschluss entfällt jede Anforderung ohne Test-Case.

Kontinuierliches, proaktives Risikomanagement etablieren

Die Projektleitung führt während des gesamten Projektes ein Risiko-Tracking-Dokument, in das die Projektbeteiligten die identifizierten Risiken eintragen.

 (s. PDF, Bild 4)

Damit Sie die Eintrittswahrscheinlichkeit P und das Schadensausmaß S nicht nach Bauchgefühl angeben, müssen Sie für P und S konkrete Werte und Einheiten definieren.

Änderungsprozess für Anforderungen etablieren

Während der Entwicklung ändern sich aus verschiedensten Gründen immer wieder Anforderungen, bzw. neue kommen hinzu und bestehende entfallen. Hierzu sollten Sie einen Ablauf definieren, in dem ein Team die Konsequenzen der Änderung bewertet (Impact-Analyse) und final über die Änderung entscheidet. Fällt die Entscheidung gegen die Änderung, sollten Sie die Anforderung für das Folgeprodukt speichern.

Aus Fehlern lernen

Sorgen Sie dafür, dass Sie die gleichen Fehler (in der Anforderungserhebung) nicht mehrfach machen è Lessons learned.

Prozess, Vorgehen, Methode und Tooling kontinuierlich verbessern

Jedes neue Projekt bietet die Chance, den Prozess und was dazugehört kontinuierlich zu verbessern. Notieren Sie sich die Optimierungspunkte während des Projektes (Projekttagebuch) und adaptieren Sie den Prozess vor dem nächsten Projekt. 

Requirements Management - Anforderungen verwalten, verfolgen und verlinken

Anforderungen wiederverwenden

Insbesondere in Unternehmen, in denen Sie immer gleiche oder ähnliche Produkte entwickeln, bietet sich die Wiederverwendung von Anforderungen an. Dabei ist eine Möglichkeit der Minimal-Plattformgedanke: die für alle Produkte gleichen Anforderungen als Plattformanforderungen zu separieren und im individuellen Produktanforderungsset zu referenzieren. Eine Alternative dazu ist der Maximal-Plattformgedanke. In der Maximalplattform sind alle Anforderungen für alle Produkte enthalten. Für neue Produkte referenzieren Sie die entsprechend gültigen und versionierten Anforderungen.

Anforderungen parametrieren

Auch im Kontext der Anforderungswiederverwendung können Sie Anforderungstext mit Variablen und Einheiten besetzen, deren Werte Sie produktindividuell in deren Parameterlisten anpassen, z.B. die maximale Leistungsaufnahme Pmax im Watt.

Anforderungseigenschaften (Properties / Attribute) definieren

Statten Sie Anforderungen mit Eigenschaften aus, von denen Sie einen Nutzen haben. Manchmal ist weniger mehr. Neben der einzigartigen ID (z.B. REQ-EMB-SW_000001) zur Identifikation und Referenzierung, sollte jede Anforderung auch einen Status (z.B. in Bearbeitung / freigegeben / umgesetzt / getestet) besitzen. Alle Eigenschaften müssen Sie pflegen, sonst haben diese keinen Nutzen.

(s. PDF, Bild 5a und 5b)

Versionierung von Anforderungen etablieren

Die Version als Eigenschaft der Anforderung erlaubt es Ihnen, die Entstehung nachzuverfolgen und Anforderungen zukünftig evolutionär weiterzuentwickeln.

Baselining / Releases für Anforderungen etablieren

Zu einem definierten Zeitpunkt im Projektablauf halten Sie die aktuelle Reife der Anforderungen zur weiteren Umsetzung fest. 

Bidirektionale Traceability über alle Entwicklungsschritte etablieren

In denen für sicherheitskritische (Safety) Systeme gültigen Standards ist die bidirektionale Traceability (Verlinkung) zwischen Anforderungen über die Umsetzung bis hin zum Test-Case meist gefordert. Dies über verschiedene Entwicklungsdomänen und deren unterschiedliche Tools zu schaffen ist dabei die wesentliche Herausforderung è Toolintegration, Standards wie ReqIF [5] und STEP [7].

Templates für Artefakte bereitstellen

Stelle Sie für die Artefakte im Prozess Templates bereit. Damit erreichen Sie, dass die gleichen Artefakt-Typen (z. B. Requirements Specification) immer gleich aussehen und erhöhen so das Verständnis. Durch die vorgegebenen Inhalte übersehen Sie keine Punkte, die zu bearbeiten sind. Für viele Artefakt-Typen gibt es heute bereits Standards.

Requirements Management Tools

Text vers. Application/Product Life Cycle (A/PLM) Tools evaluieren

Grundsätzlich müssen Sie bei Tools die Entscheidung zwischen rein textverarbeitenden oder datenbankorientierten Tools treffen. Die Komplexität Ihrer Produkte wird weiterhin steigen. Je mehr Anforderungen und andere Artefakte Sie managen müssen, desto besser unterstützen Sie dabei datenbankorientierte Tools.

Tool anforderungsbasierend auswählen

Es gibt nicht das beste Tool am Markt. Es gibt höchstens das Tool am Markt, das Ihren Bedarf bzw. Ihre Toolanforderungen am besten erfüllt. Denken Sie bei der Toolauswahl an die folgende Reihenfolge: erst der Mensch, dann die Methode und dann das Tool! Die Toolauswahl sollte keine firmenpolitische Entscheidung sein.

Tool integrieren, testen und schulen

Integrieren und testen Sie das ausgewählte Tool vor Projektbeginn. Um einer möglichen Toolablehnung durch die Anwender entgegenzuwirken, sollten diese vor der Toolnutzung eine Toolschulung erhalten.

Tool in täglicher Arbeit etablieren

Etablieren Sie das Tool über mehrere Abteilungen hinweg. Auch hier ist ein kontinuierlicher Lern- und Verbesserungsprozess zu leben.

Resümee

Bei jedem einzelnen Checklisten-Punkt müssen Sie für sich den dazugehörigen Nutzen im Verhältnis zum Umsetzungsaufwand abwägen. Die besten Punkte für Sie sind die mit hohem Nutzen bei kleinem Umsetzungsaufwand.

Referenzierte und weiterführende Links

[1] MicroConsult Download für diesen Beitrag - komplett und aktuell

[2]  MicroConsult Trainings:

  • Requirements Engineering und Management für Embedded-Systeme
  • Funktionale Sicherheit (Safety) von Elektronik und deren SW– Umsetzung nach ICE 61508 und ISO 26262
  • Security: Sicherheit von Embedded-Systemen im Kontext der funktionalen Sicherheit
  • Usability: Produkte benutzerfreundlich entwickeln
  • SysML: Systemanalyse und Systemdesign mit der Systems Modeling Language
  • UML-Praxis-Workshop: Praktischer Einsatz für Embedded- und Echtzeitsoftware-Entwicklung

[3] V-Modell

[4] Agiles Manifest

[5] Object Management Group (OMG)

[6] STEP (Standard for the Exchange of Product Model Data) ISO 10303

[7] Neuro-Linguistisches Programmieren

[8] Fachliteratur:Requirements Engineering und Management
SOPHIST GmbH, HANSER Verlag, Print-ISBN: 978-3-446-43893-4, E-Book-ISBN: 978-3-446-44313-6

Autor:

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 und Rollen im Bereich Embedded-/Real-Time 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-/Real-Time-Systeme sowie Entwicklungsprozess-Beratung.

 

Beitrag als PDF downloaden


Requirements - MicroConsult Trainings & Coachings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zum Thema Requirements /Embedded- und Echtzeit-Softwareentwicklung.

 

Training & Coaching zu den weiteren Themen unseren Portfolios finden Sie hier.


Requirements - Fachwissen

Wertvolles Fachwissen zum Thema Requirements/Embedded- und Echtzeit-Softwareentwicklung steht hier für Sie zum kostenfreien Download bereit.

Zu den Fachinformationen

 
Fachwissen zu weiteren Themen unseren Portfolios finden Sie hier.