Startseite » Automotive Blog » Anforderungsmanagement

Anforderungsmanagement

In den folgenden Kapiteln wird das Thema: Anforderungsmanagement erläutert.

Es werden die Vorgaben aus relevanten Standards und Normen sowie die praxisnahen Beispiele aus dem Automotive-Bereich dargestellt.


Für wen ist dieser Artikel

Ziel des Artikels:– Einführung in das Thema: Anforderungsmanagement
– Kennenlernen des SDEC-Prinzips
– Praxisnahe Beispiele des Anforderungsmanagements
Artikelzielgruppe:– Anforderungsingenieure, welche eigene Erfahrung im Bereich Anforderungsmanagement erweitern möchten oder
– Interessenten aus der Automotive-Welt, die Anforderungsmanagement im Embedded-Umfeld kennenlernen möchten
Sprache:technisch und Automotive (viele spezifische Begriffe)
Empfohlene Vorkenntnisse:ASPICE [1], VDA [2], ISO 26262 [3], Automotive-Umfeld, Englisch
Hilfsmittel:VokabularStandards und Normen, *1)
Lesedauer:ca. 45 Minuten

*1) Um Grafiken zu vergrößern, benutzen Sie die rechte Maustaste und die Option: “Bild in neuem Tab öffnen”.


Einführung

In diesem Artikel werden die spezifischen Anforderungen an das Anforderungsmanagement aus dem Standard ASPICE und ISO 26262 kurz erläutert. Der Leser findet hier meine Methodik (SDEC-Dokompositionsprinzip), welche sich in einigen Projekten im Bereich Anforderungsmanagement gut durchgesetzt hat.

Die Anforderungsmanagement-Methode zeichnet sich durch die systematische Dekomposition eines Systems in kleinere Subsysteme und Systemelemente aus.

In weiteren Kapiteln findet man ein ausführliches Beispiel für ein paar Funktionen für die Anforderungen auf unterschiedlichen Entwicklungsebenen entsprechend ASPICE:

  • SYS.2 System Requirements Analysis (Systemanforderungsanalyse)
  • SYS.3 System Architectural Design (Systemarchitekturdesign)
  • SWE.1 Software Requirements Analysis (Softwareanforderungsanalyse)
  • SWE.2 Software Architectural Design (Softwarearchitekturdesign)

Definition des Anforderungsmanagements

Die Definition des Anforderungsmanagements kann nachfolgend formuliert werden:

Das Anforderungsmanagement kann als das Erfassen, Zusammenfassen und Verwalten relevanter Informationen sowie als die Festlegung verbindlicher Umsetzungsrichtlinien für ein Produkt über dessen gesamten Lebenszyklus definiert werden.

Werden ergänzend zur Definition die Embedded und Automotive Gegebenheiten (Standards wie ASPICE und VDA) berücksichtigt, kann man diese Definition entsprechend mit Aufgaben aus diesen Standards ergänzen:

Anforderungserhebung und -analyse:

  • Identifikation der Stakeholder-Anforderungen und deren detaillierte Analyse

Anforderungsspezifikation

  • Detaillierte Dokumentation der Anforderungen in einer klaren und überprüfbaren Form

Anforderungsvalidierung und -verifikation:

  • Sicherstellung, dass die Anforderungen korrekt und vollständig sind

Anforderungsmanagement:

  • Verwaltung von Änderungen und Nachverfolgbarkeit der Anforderungen während des gesamten Entwicklungsprozesses

Vorgaben für Anforderungsmanagement aus ASPICE

Relevante Prozessgebiete im ASPICE:

  • [SYS.1] Requirements Elicitation (Anforderungsermittlung)
  • [SYS.2] Requirements Analysis (Anforderungsanalyse)
  • [SYS.2] Requirements Specification (Anforderungsspezifikation)
  • [SYS.3, SWE.2] System/Software Architectural Design (System-/Softwarearchitekturentwurf)
  • [SYS.4] System Integration and Integration Verification (Systemintegration und Integrationsverifikation)
  • [SYS.5] System Verifikation (Systemverifikation)
  • [SWE.4] Software Unit Verifikation (Softwarekomponentverifikation)
  • [SWE.5] Software Component Verification and Integration Verification (Softwarekomponentverifikation und Integrationsverifikation)
  • [SWE.6] Software Verifikation (Softwareverifikation)

Die Hardware-Disziplin ist ebenfalls betroffen, steht jedoch nicht im Fokus.


Kernanforderungen:

  • [ASP.1] Anforderungen müssen vollständig, widerspruchsfrei und eindeutig formuliert sein.
  • [ASP.2] Anforderungen sind auf verschiedenen Ebenen (System, Subsystem, Software) hierarchisch organisiert.
  • [ASP.3] Jede Anforderung muss rückverfolgbar (traceable) zu ihren Quellen (z. B. Kundenanforderungen, Spezifikationen) und zu den implementierten Komponenten sein.
  • [ASP.4] Nutzung von Verlinkungen und Traceability-Matrizen zur Darstellung der Beziehungen zwischen den Anforderungen auf unterschiedlichen Ebenen.
  • [ASP.5] Separate Dokumente für jede Anforderungsebene, die durch eindeutige Identifikatoren und Verlinkungen miteinander verbunden sind.
  • [ASP.6] Verwendung von Werkzeugen zur Unterstützung der Anforderungsverwaltung und -verfolgung.
  • [ASP.7] Anforderungen müssen klar, präzise, überprüfbar und testbar sein.
  • [ASP.8] Vermeidung von Ambiguitäten und Mehrdeutigkeiten.

Vorgaben für Anforderungsmanagement aus VDA

Relevante Dokumente:

  • VDA 6.3: Prozessaudit für die Automobilindustrie.
  • VDA 6.x: Erweiterte Standards zum Qualitätsmanagement und Prozessoptimierung.
  • VDA: Oftmals ergänzend zu spezifischen Projektrichtlinien und -dokumentationen.

Kernanforderungen:

  • [VDA.1] Anforderungen müssen klar strukturiert und hierarchisch gegliedert sein.
  • [VDA.2] Verwendung von nummerierten und eindeutig identifizierten Anforderungen.
  • [VDA.3] Ähnlich wie bei ASPICE werden Anforderungen auf verschiedenen Ebenen dokumentiert (System, Subsystem, Komponenten, Software).
  • [VDA.4] Jedes Dokument repräsentiert eine Ebene und ist durch Verlinkungen (Hyperlinks) miteinander verbunden.
  • [VDA.5] Sicherstellung der Rückverfolgbarkeit durch Verknüpfung der Anforderungen über die Dokumentenhierarchie hinweg.
  • [VDA.6] Nutzung von Verweisen und Referenzen zwischen den Dokumenten zur Darstellung der Beziehungen.
  • [VDA.7] Anforderungen müssen eindeutig, vollständig, konsistent und überprüfbar sein.
  • [VDA.8] Vermeidung von Mehrdeutigkeiten durch präzise Formulierungen.
  • [VDA.9] Einsatz von Tools zur Verwaltung und Verlinkung der Anforderungsdokumente.
  • [VDA.10] Unterstützung bei der Pflege der Traceability und Konsistenz zwischen den Ebenen.

Die Vorgaben aus beiden Dokumenten für das Anforderungsmanagement überschneiden sich in fast allen Punkten. Allerdings fehlen hier nicht die Punkte bezüglich Anforderungsänderungen und Konfigurations-/Änderungsmanagement. Es gibt eine Prozessbeschreibung zur Freigabe von Requirements und zur Wechselwirkung mit anderen Prozessen. Diese Prozesse sind projektspezifisch und können flexibel gestaltet werden. Vielmehr geht es hier um die Festlegung der Anforderungsinformation, die in Anforderungsdokumenten dargestellt wird, um deren Strukturierung und um die Methodik zur Abstraktion.


Vorgaben für Anforderungsmanagement aus ISO 26262

Relevante Dokumente:

  • Teil 2 – Management der funktionalen Sicherheit,
    • Kapitel 6 – Planung der Aktivitäten für Funktionale Sicherheit
  • Teil 3 – Konzeptphase,
    • Kapitel 7 – Konzept für Funktionale Sicherheit
  • Teil 4 – Produktentwicklung auf Systemebene,
    • Kapitel 6 – Entwicklung des technischen Sicherheitskonzepts
  • Teil 6 – Produktentwicklung auf Softwareebene,
    • Kapitel 6 – Spezifizierung von Functional Safety relevanten Softwareanforderungen,
  • Teil 8 – Unterstützende Prozesse,
    • Kapitel 6 – Spezifikation und Management der Funktionalen Sicherheit relevanten Anforderungen,
  • Teil 9 – Sicherheitsanalyse,
    • Kapitel 8 – Sicherheitsanalyse und Anforderungen

Kernanforderungen:

Ergänzend zu den Anforderungen für Anforderungsmanagement aus ASPICE und VDA kann man noch ein paar wichtige Anforderungen aus dem ISO 26262 ableiten.

  • [ISO26262, Teil 3] Die Funktionale Sicherheit-relevanten Anforderungen sollen eine klare und eindeutige Rückverfolgbarkeit aufweisen über mehrere Dokumente: Safety Goals -> FSR -> TSR -> HW/SW
  • [ISO26262, Teil 3] Die Dokumentation von Anforderungsänderungen muss strengen Richtlinien unterliegen (Rückverfolgbarkeit, Konsistenz etc.)
  • [ISO26262, Teil 3 und Teil 6] Es wird empfohlen, spezielle Tools für Anforderungsmanagement zu benutzen (für nachvollziehbare und konsistente Rückverfolgbarkeit, Modellierung etc.)
  • [ISO26262, Teil 4 und Teil 6] Alle Funktionale Sicherheit-relevanten Anforderungen sollen auf Korrektheit und Vollständigkeit überprüft werden (Reviews, Tests oder Analyse)

Im Rahmen dieses Dokuments kann ich leider nicht alle Punkte eingehen. In diesem Fall muss man auch die Rückverfolgbarkeit zu FSR und TSR zeigen, was den zeitlichen Rahmen sprengen würde. Wir werden uns aus diesem Grund auf die Anforderungen von ASPICE und VDA im späteren Verlauf konzentrieren. Im realen Projekt muss man sich darauf einstellen, alle Anforderungen aus dem ISO 26262 an das Anforderungsmanagement zu berücksichtigen.


Zeitlicher Ablauf der Anforderungsentwicklung und Planung

Sobald die Kundenanforderungen weitestgehend geklärt und die Systemanforderungen abgeleitet sind, arbeitet parallel ein Systemingenieur an der Systemarchitektur und leitet (zusammen mit der Hardware- und Softwareabteilung) die High-Level-Systemarchitektur ab.

Da das zu beschreibende System bisher nicht vollständig definiert ist, existieren zu diesem Zeitpunkt nur wenige konkrete Systemanforderungen. An dieser Stelle ist es wichtig, dass die Teams (HW, SW, ME und Qualität) untereinander effektiv kommunizieren. Ohne diese Kommunikation und die definierten Prozesse kann es unter Umständen zu gravierenden Fehlern im späteren Verlauf eines Projekts kommen. Hier sind einige Beispiele für typische Situationen aus der Praxis:

Die Lessons-Learned liefern nicht alle relevanten Details zur Fehlerbehandlung, und es fehlt an einer abschließenden Bewertung der Kosten, die durch solche Fehler verursacht werden können. Aus meiner Erfahrung sind die Folgen jedoch verheerend


Anforderungsmanagement-Methode nach dem “Strict Decomposition (SDEC)”-Prinzip

Auf dem Diagramm unten sind die Prinzipien von Anforderungsdekomposition nach einem “Strict Decomposition (SDEC)”-Prinzip beschrieben. Dieses Prinzip besagt, dass alle Abstraktionsebenen definierte Schnittstellen und spezifische Elemente haben, die beschrieben und zu einer eindeutigen Abstraktionsebene zugeordnet werden müssen.

Die Beschreibung der Funktion eines Elements erfolgt durch die Verhaltensbeschreibung des zugehörigen Interfaces. Der interne Aufbau und die konkrete Funktion des Elements werden dabei nicht erläutert; die Definition bezieht sich ausschließlich auf die Schnittstellen.

Diagramm: Anforderungsmanagement - Anforderungsimplementierung nach "Strict Decomposition (SDEC)"-Prinzip
Diagramm: Anforderungsmanagement – Anforderungsimplementierung nach “Strict Decomposition (SDEC)”-Prinzip

In diesem Prinzip kann man ein Muster erkennen, bei dem eine übergeordnete Abstraktionsebene mit definierten Schnittstellen und Funktionen beschrieben wird. Sobald alle Details festgelegt sind, wechselt man zur untergeordneten Ebene. Dort werden die Systemelemente identifiziert und ebenfalls mit ihren Schnittstellen und Funktionen beschrieben. Dieser Vorgang wird iterativ wiederholt, bis keine weiteren Elemente mehr aufgespalten werden können.

Auf diese Weise erhält das Anforderungsmanagement strikt getrennte Schichten, wodurch in unterschiedlichen Dokumenten ein- oder mehrere Systeme sauber beschrieben werden können.


Haftungsausschluss


Anforderungsmanagement anhand des Systemkontexts

Als Ausgangspunkt können wir das Beispiel aus dem Artikel: Systemarchitektur (in Praxis) nehmen. Die “Kundenanforderungen” für Fensterheber-ECU können im Kapitel: Funktionalität des Fensterheber-ECU (vereinfachte Funktion/Anforderungen) nachgelesen werden. Wir nehmen an, dass diese Beschreibung die Kundenanforderungen darstellt. Es gibt keine präzisen Angaben von dem Kunden, wie genau das System funktionieren soll. Wir gehen davon aus, dass ein Kunde unsere Systemanforderungen als seine eigenen Kundenanforderungen übernimmt.

In diesem Kapitel möchte ich meine Sichtweise auf die Methodik zur Implementierung des Anforderungsmanagements darlegen. In vielen Projekten habe ich Situationen beobachtet, in denen in dieser Disziplin erhebliche, unnötige Aufwände entstanden sind. Es traten zahlreiche Missverständnisse und widersprüchliche Meinungen auf. Meiner Einschätzung nach entstanden diese Probleme, weil die Prozesse in den Projekten unzureichend beschrieben waren. Die Projektstakeholder hatten kein Dokument, auf das sie sich beziehen konnten, in dem die Aufgaben und Verantwortlichkeiten klar definiert waren.

Es gibt unterschiedliche Einsätze, wie man das Anforderungsmanagement in einem Projekt realisieren kann. Besondere Herausforderung beim Anforderungsmanagement ist, eine Basis für alle Stakeholder zu erschaffen, bei der diese Stakeholder gleiches Verständnis für dieses Thema haben.

Des Weiteren gibt es Anforderungen aus manchen Standards, dass die Abstraktionsebenen (SYS.2, SYS.3, SWE.1, SWE.2) in getrennten Dokumenten (getrennte Ebenen: siehe oben [ASP.2], [ASP.5], [VDA.3], [VDA.4]) umgesetzt werden sollen, es wird von vielen Accessors verlangt. Die Kundenanforderungen sind oft nicht korrekt abstrahiert und beinhalten manchmal sogar Anforderungen aus der Ebene Detailed Design. Angesichts dessen ist es wichtig, saubere Implementierungswege über alle Abstraktionsebene zu erstellen und gut zu dokumentieren.

Hier ist ein möglicher Ansatz, welcher in vielen Projekten hervorragend etabliert hat. Obwohl dieser Ansatz für Automotive-Projekte gut geeignet ist, gibt es in jedem Projekt unterschiedliche Gegebenheiten. Es kann sein, dass alternative Lösungswege in bestimmten Fällen zu besseren Ergebnissen führen.

Auf dem Diagramm unten sieht man den FMS_PCB-Kontext und die Systemgrenzen. Des Weiteren ist auf dem Diagramm die Funktionszuordnung zu physikalischen Einheiten vorhanden.

Diagramm: FMS_PCB-Kontext
Diagramm: FMS_PCB-Kontext

Hier sehen wir die Systemgrenzen des FMS_PCB, welche durch folgende Schnittstellen (Ports) repräsentiert sind:

  • DC-Motor, PWM-Ansteuerung (von H-Brücke)
  • Hall-Sensor
  • Stromsensor
  • LIN-Interface

Die Systemanforderungen beschreiben das Verhalten des Systems anhand dieser Schnittstellen. Um eindeutig Anforderungen an die Schnittstellen zu formulieren, müssen diesen Schnittstellen ein Port (physikalischer Verbindungsweg zwischen Komponenten, z. B. zwischen Hall-Sensor und FMS_PCB) zugeordnet werden. Allerdings benötigen wir auch Signale (welche Dateninformation repräsentieren).

Beide können gleichnamig benannt werden: für den DC-Motor benötigen wir zwei Leitungen mit Signalen (Ports). Siehe das Diagramm: Systemarchitektur: Fenstermotorsteuerung (FMS_PCB). Somit ergeben sich die folgenden Signale (Ports):

  • VBAT (Stromversorgung +12 V)
  • GND (Masse)
  • M1PCB (DC-Motorsteuerung Pin 1)
  • M2PCB (DC-Motorsteuerung Pin 2)
  • LIN (LIN-Bus Kommunikationskanal)
  • USHHS (Hall-Sensor)

Die Systemanforderungen aus dem Beispiel FMS_PCB müssen beschreiben, welche Funktionen über diese Schnittstellen laufen und welchen Zusammenhang diese Schnittstellen untereinander haben.

Die Systemanforderungen sollen vollständig sein. D. h. dass alle zu einer Anforderung gehörende logisch verknüpfte Bedienungen in einem einzigen Anforderungsobjekt beschrieben werden (siehe Beispiel unten) sollen. Es gibt eine Möglichkeit, die Teilanforderungen separat anzulegen. Weitere Informationen hierzu finden sich im Kapitel: Erklärungen und Methodik für Anforderungsmanagement vorhanden.

Auf der Systemebene und Ebenen darunter beschreibt ein Anforderungsingenieur die Anforderung als eine Funktion der Eingangsinterfaces auf Systemebene (hier: Kontext vom Subsystem FMS_PCB) und der Ausgangsinterfaces. Diese Vorgehensweise hat einige Vorteile:

  • Die Systemanforderungen können vollständig auf Systemebene getestet werden.
  • Die Systemanforderungen beschreiben das „reine“ Verhalten des Systems, ohne in die Details zu gehen und aus einer anderen Ebene Informationen hereinzubringen.
  • Die Verifikationskriterien können einfach in Tests umgesetzt werden, somit ist das Testen sehr einfach und deckend.

Erklärungen und Methodik für Anforderungsmanagement

Angenommen, wir möchten jetzt eine Anforderung auf Systemebene für die Ansteuerung des Fenstermotors in Richtung “nach oben” abhängig von dem LIN-Signal vom Benutzertastenfeld formulieren.

Die Anforderungen aus: ISO 26262, VDA und ASPICE schreiben vor, dass die Anforderungen folgende Bedingungen für das formelle Erscheinen erfüllen sollen:

  • Vollständigkeit,
  • Konstistenz.

Daraus resultiert die folgende Anforderung:

Wenn das LIN-Signal: “HPCB_ComReq.UsrCmd” gleich dem Wert “FBNO” empfangen wird, dann soll FMS_PCB am Signalport:

  • M1PCB das PWM-Signal mit Duty Cycle gleich dem Parameter: “duty_cycle_up” am DC-Motor für die Fensterbewegung nach oben liefern, und das Signalport M2PCB gleich GND setzen.

Auf einer Seite wird eine Anforderung definiert, um die Vollständigkeit eines Requirements zu gewährleisten. Allerdings muss diese Anforderung mit anderen Anforderungen der unteren Ebenen verlinkt werden, was unter Umständen zu Schwierigkeiten bei der Anforderungspflege führen kann. Der Übersichtlichkeit hilft es auch nicht.

Außerdem gibt es Situationen, in denen Schnittstellen, die unterschiedliche ASIL-Stufen aufweisen, in einer einzigen Anforderung zusammengefasst werden, sofern diese eine bestimmte Logik erfüllen.

Als Abhilfe kann man eine größere Anforderung in kleinere, klar abgegrenzte Anforderungen aufteilen (Beispiel: SYS2_REQ_6, SYS2_REQ_21).

Der Nachteil dieser Aufteilung ist, dass beim Verschieben einer Anforderung der Bezug zum Gesamtkontext verloren gehen kann. Um die Einordnung eindeutig zu gestalten, wird im Anforderungstext ein Hinweis eingefügt. (Beispiel: in SYS2_REQ_5, Fensterbewegung nach oben – SYS2_REQ_6 und SYS2_REQ_21 mit Information ergänzt, dass die Anforderungen logisch zusammen gehören.)

In einem realen Projekt sollten die Anforderungen mit zusätzlichen Attributen wie “Information, Zugehörigkeit etc.” ergänzt werden. Eine bessere Lösung besteht darin, ein separates Attribut für die Funktion anzulegen und den Funktionsnamen dort zu notieren. Hier mache ich dies ausschließlich, um die Breite der Tabelle übersichtlich zu halten.

Dasselbe gilt auch für das Attribut „Verifikationskriterium“.

Wie bereits früher erwähnt, gibt es in realen Projekten Parameter- und Speicherdaten, die von der Applikation verwendet werden. In unserem Fall sieht man Parameter wie “duty_cycle_up” und “duty_cycle_down”. Die Parameter, deren Parametrierung sowie die Speicherdaten werden hier jedoch nicht behandelt.

Die Definitionen vom “normal mode” und anderen Modi könnten zentral in diesem Dokument festgelegt werden, sodass nicht bei jeder Anforderung wiederholt werden muss, dass beispielsweise VBAT (Stromversorgung) und LIN-Kommunikation vorhanden sind.

Natürlich gehört zum Anforderungsmanagement viel mehr als nur die Erstellung und Verteilung der Anforderungen in Dokumenten. Die beschriebene Vorgehensweise und Vorgaben aus Standards und Normen oben helfen jedoch, weitere fehlende Punkte zu identifizieren und zu definieren.


Systemanforderungen (SYS.2)

Wir starten mit Systemanforderungen gemäß dem SDEC-Prinzip. Hier werden die Interaktionen der Schnittstellen, wie sie von dem FMS_PCB aus betrachtet werden, und deren Funktionen beschrieben.

Die Verlinkung zu Kundenanforderungen lassen wir an der Stelle aus. Im realen Projekt ist die Verlinkung aber ein Muss.

Bedeutung von Attributen in der Anforderungstabelle unten:

  • Anforderungs-ID: einzigartige ID einer Anforderung
  • Anforderungstext: textuelle Beschreibung der Anforderung
  • Objekttyp: heading, fun_req (functional requirements) etc.
  • Disziplin: Software (SW), Hardware (HW) und System
    • SYS: Systemanforderungsebene
    • HW und SW einer Dekomposition in Systemarchitektur
  • Verifikationskriterium: Rahmenbedienungen für Test
  • Verifikationsstrategie: Testtyp (Testabstraktionsebene)

Typische Anforderungen für das FMS_PCB könnten so aussehen (siehe Tabelle unten):

Anforderungs-ID:Anforderungstext:Objekttyp:ASILDisziplin:Verifikationskriterium:Verifikations-strategie:
SYS2_REQ_1StromversorgungheadingNANANANA
SYS2_REQ_2Wenn das FMS_PCB über die Ports: VBAT und GND mit 12 V Gleichstrom versorgt wird und eine valide Software auf den Mikrocontroller geflasht ist, soll das FMS_PCB-System hochfahren und innerhalb von 80 ms auf die Master-LIN-Nachrichten antworten.fun_reqASIL BSYS– flashe den FMS_PCB-µC,
– das FMS_PCB soll im „normal mode“ sein,
– überprüfe, dass das ECU durch die Ports FMS_PCB eingeschaltet werden kann und nach 80 mS auf die LIN-Kommandos reagiert und das PWM-Signal liefert.
sys_test
SYS2_REQ_3Benutzersteuerung vom DC-MotorheadingNANANANA
SYS2_REQ_4Die Benutzersteuerung des DC-Motors dient dazu, das Fahrzeugfenster entsprechend den Benutzerkommandos über den LIN-Bus zu steuern.informationNANANANA
SYS2_REQ_5Fensterbewegung nach oben:headingNANANANA
SYS2_REQ_6Das FMS_PCB soll am Signalport M1PCB ein PWM-Signal mit einem Duty Cycle, das dem Parameter “duty_cycle_up” entspricht, an den DC-Motor für die Fensterbewegung liefern und den Signalport M2PCB auf GND setzen.

Information:
Zugehörigkeit: SYS2_REQ_21
fun_reqASIL BSYS(Teste zusammen mit SYS2_REQ_21)
Teil: 1
– das FMS_PCB muss im “normal mode“ sein
– ändere Parameter “duty_cycle_up“ gleich 0 %,
sys_test
SYS2_REQ_21.. wenn das LIN-Signal: “HPCB_ComReq.UsrCmd” mit dem Wert “FBNO” empfangen wird.

Information:
Zugehörigkeit: SYS2_REQ_6
fun_reqASIL BSYS(Teste zusammen mit SYS2_REQ_6)
Teil: 2
– sende das LIN-Kommando “HPCB_ComReq.UsrCmd” gleich “FBNO”,
– prüfe, ob DC vom PWM-Signal dem gesetzten Wert gleich ist (prüfe andere Werte von DC “duty_cycle_up“)
sys_test
SYS2_REQ_7Fensterbewegung nach unten:headingNANANANA
SYS2_REQ_8Das FMS_PCB soll am Signalport:
– M2PCB PWM-Signal mit einem Duty Cycle gleich dem Parameter: “duty_cycle_down” an den DC-Motor für die Fensterbewegung liefern,
– und das Signalport M1PCB gleich GND (0V) setzen,

Information:
Zugehörigkeit: SYS2_REQ_22
fun_reqASIL BSYS(Teste zusammen mit SYS2_REQ_22)
Teil: 1
– das FMS_PCB muss im “normal mode“ sein,
– schalte einen Lastwiderstand von 30 A (statt DC-Motor),
– ändere den Parameter “duty_cycle_down“ gleich 100 %,
sys_test
SYS2_REQ_22.. wenn das LIN-Signal: “HPCB_ComReq.UsrCmd” gleich dem Wert “FBNU” empfangen wird.

Information:
Zugehörigkeit: SYS2_REQ_8
fun_reqASIL BSYS(Teste zusammen mit SYS2_REQ_8)
Teil: 2
– sende über LIN-Kommando “HPCB_ComReq.UsrCmd” gleich “FBNU”,
– prüfe, ob H-Brücke 30 A Strom liefern kann
(prüfe andere Werte von DC “duty_cycle_down“)
sys_test
SYS2_REQ_9Fensterbewegung stopp:headingNANANANA
SYS2_REQ_10Das FMS_PCB soll an Signalports:
– M1PCB und M2PCB
0 V Spannung liefern,

Information:
Zugehörigkeit: SYS2_REQ23
fun_reqASIL BSYS(Teste zusammen mit SYS2_REQ_23)
Teil: 1
– das FMS_PCB muss im “normal mode“ sein,
– fahre den DC-Motor hoch (M1PCB und M2PCB) über das LIN-Kommando: “PCB_ComReq.UsrCmd” gleich dem Wert „FNNO“,
sys_test
SYS2_REQ_23.. wenn das LIN-Signal: “HPCB_ComReq.UsrCmd“ gleich dem Wert „BS” empfangen wird.

Information:
Zugehörigkeit: SYS2_REQ10
fun_reqASIL BSYS(Teste zusammen mit SYS2_REQ_10)
Teil: 2
– stoppe den DC-Motor (M1PCB und M2PCB) über das LIN-Kommando: “PCB_ComReq.UsrCmd” gleich dem Wert „FBS“,
– prüfe, ob Spannung am M1PCB und M2PCB gleich 0 V ist
sys_test
SYS2_REQ_19Fensterbewegung Status:headingNANANANA
SYS2_REQ_20Das FMS_PCB soll, abhängig von Fensterbewegung, das Statussignal:
– “FMSPCB_Response.WindState”
an den H_PCB über den LIN-Bus senden.
fun_reqASIL BSYS– das FMS_PCB muss im „normal mode“ sein,
– sende das LIN-Kommando (siehe oben) für die Fensterbewegung nach oben,
– prüfe, dass das Signal: “FMSPCB_Response.WindState” gleich „Fensterbewegung nach oben“ ist (ähnlich werden die Bewegungen nach unten und das Fenster-Stopp-Kommando überprüft)
sys_test
SYS2_REQ_11Einklemmerkennung (Anti-Pinch) Funktion (APF)headingNANANANA
SYS2_REQ_12Die Anti-Pinch-Funktion detektiert ein Hindernis, während das FMC_PCB eine Fensterbewegung nach oben ausführt. In diesem Fall wird die Aufwärtsbewegung gestoppt, und der FMC_PCB führt eine Fensterbewegung nach unten aus. Dadurch werden Verletzungen von Personen durch Einklemmen am Fenster vermieden.

Damit werden die Verletzungen an Personen durch Einklemmen vom Fenster vermieden.
informationNANANANA
SYS2_REQ_13Hindernis erkannt (STOPP):headingNANANANA
SYS2_REQ_14Das FMC_PCB soll die Fensterbewegung nach oben innerhalb von 15 ms stoppen (M1PCB und M2PCB), wenn der Stromverbrauch des DC-Motors >= 12 A und die Update-Frequenz des Hall-Sensors am DC-Motor <= 350 Hz detektiert wird.fun_reqASIL BSYS– das FMS_PCB soll im „normal mode“ sein,
– fahre das Fensterglas hoch (M1PCB und M2PCB) über LIN-Kommando: “HPCB_ComReq.UsrCmd” gleich dem Wert „FBNO“
– erhöhe den Laststrom am DC-Motor >= 12 A und
– verkleinere die Updatefrequenz vom Hall-Sensor (USHHS) auf <= 350 Hz
– prüfe, ob die Fensterbewegung innerhalb von 15 ms gestoppt ist
sys_test
SYS2_REQ_15Fensterumkehrantrieb nach Hinderniserkennung aktiv (FUANH):headingNANANANA
SYS2_REQ_16Wenn das FMC_PCB ein Hindernis erkannt hat und die Fensterbewegung nach oben gestoppt wurde, soll das FMC_PCB innerhalb <= 10 ms eine Fensterbewegung nach unten ausführen (15 cm oder bis zum unteren Anschlag).fun_reqASIL BSYS– das FMS_PCB soll im „normal mode“ sein,
– simuliere die Hinderniserkennung Aktivierung durch Lasterhöhung am DC-Motor bis >= 12 A und verzögere die DC-Motor-Getriebe-Updatefrequenz <= 350 Hz
– prüfe, ob Fensterbewegung nach unten innerhalb von 25 ms (15 ms + 10 ms) nach Hindernisdetektierung startet und 15 cm nach unten ausgeführt wird
sys_test
SYS2_REQ_17Diagnose von EingangswertenheadingNANANANA
SYS2_REQ_18Das FMC_PCB soll die Selbstdiagnose durchführen und folgende Größen überprüfen:
– Batteriespannung,
– Stromaufnahme des DC-Motors,
– Temperatur der H-Brücke,
– DC-Motorspannung
und im Fehlerfall soll das System in Safe-State *1) übergehen.

Information:
*1) siehe TSC-Dokument
fun_reqASIL BSYS– prüfe die Tests der verlinkten Entscheidungen in der Systemarchitektur (Alternativ können die Fehler simuliert und über den LIN-Bus ausgelesen werden; dies betrifft jedoch ausschließlich Architekturdetails, die später während der Systemintegration getestet werden.)review
Tabelle: Systemanforderungen (SYS.2) nach SDEC-Prinzip

Die Hardwareanforderungen werden nicht in diesem Dokument betrachtet.

Wir haben jetzt ein paar Systemanforderungen definiert und können zur Systemarchitektur übergehen.


Systemarchitekturanforderungen (SYS.3)

Im Diagramm: Systemarchitektur: Fenstermotorsteuerung und kritische Pfade sind die Informationen dargestellt, die für die Ableitung von Systemarchitekturanforderungen notwendig sind.

Hier wird der Kontext des Systems – also des gesamten FMS_PCB – und der jeweiligen Funktionen und deren Schnittstellen gezeigt, die zusammen ein übergeordnetes FMS_PCB-System mit kritischen Pfaden bilden.

Um die Systemarchitektur während der Systemintegrationstests zu überprüfen, können LIN-Debugging-Nachrichten definiert werden, die die internen Variablenwerte nach außen kommunizieren.

Diese Dienste sollten ausschließlich zum Testen verwendet und bei der Auslieferung an Kunden deaktiviert werden. Dieses Thema wird hier nicht im Detail erläutert; in den Verifikationskriterien wird vereinfacht festgehalten, dass die Variablen über den LIN-Bus ausgelesen werden können.

Ergänzend möchte ich betonen, dass ASIL-B-relevante Schnittstellen zusätzliche Tests in Richtung Fault-Injection und Diagnose benötigen, welche hier jedoch nicht vollständig erläutert werden.

In einem realen Projekt werden die TSC-Vorgaben in den SYS.3-Anforderungen berücksichtigt.

Es genügt, wenn in den Funktionen ausschließlich die Output-Signale getestet werden (nicht die internen Input-Signale). Hier habe ich absichtlich alle Signale mit Tests abgedeckt, damit man ein Gefühl dafür bekommt, wie die Tests aussehen und was genau während der Systemintegration geprüft wird. Außerdem war hier die Absicht, nicht alle Funktionen mit Anforderungen abzudecken.

Anforderungs-ID:Links_SYS.2:Anforderungstext:Disziplin:ASIL:Objekttyp:Verifikationskriterium:Verifikations-strategie:
SYS3_REQ_1NAFunktion: FMPCB_WindowCtrl_swNANAheadingNANA
SYS3_REQ_2NADie Funktion FMPCB_WindowCtrl_sw steuert H-Brücke für Fensterbewegung über PWM-Signale.NANAinformationNANA
SYS3_REQ_3NAInput-Signale:NANAheadingNANA
SYS3_REQ_4SYS2_REQ_18[INTERN]
– DIAG_ERR
SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– lese das DIAG_ERR-Signal über den LIN-Bus und prüfe nach, ob entsprechendes Fehlerbit nicht gesetzt ist
– erzeuge eine Unterspannung (12V_MON = 8.9V),
– lese das DIAG_ERR-Signal über den LIN-Bus und prüfe nach, ob entsprechendes Fehlerbit gesetzt ist
(ähnlich werden CURR_MON, TEMP_HBRGD, U_MOTOR und UCNTR getestet)
sysint_test
SYS3_REQ_5SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
– OBST_DETSWASIL Bfun_reqabgedeckt in SYS3_REQ_17 (Output-Signals)sysint_test
SYS3_REQ_6SYS2_REQ_22
SYS2_REQ_23
SYS2_REQ_20
[LIN]
– WND_MOT_CNTRL
SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– sende Signal: „PCB_ComReq.UsrCmd“ gleich „FBNO“,
– prüfe, ob die Fensterbewegung nach oben ausgeführt wird und das Signal WND_MOT_CTRL gleich “FBNO” ist
sysint_test
SYS3_REQ_19SYS2_REQ_6
SYS2_REQ_21
SYS2_REQ_8
SYS2_REQ_22
SYS2_REQ_10
SYS2_REQ_23
SYS2_REQ_14
SYS2_REQ_16
[INTERN]
– WIN_POS
SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– sende das Signal: „PCB_ComReq.UsrCmd“ gleich „FBNO“,
– prüfe, ob bei der Fensterbewegung das WIN_POS-Signal proportional zur Entfernung zum unteren Fensteranschlag inkrementiert wird. (ähnlich für Fensterbewegung nach unten)
sysint_test
SYS3_REQ_7NAOutput-Signale:NANAheadingNANA
SYS3_REQ_8SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
[HSI]
– HBRG_EN
SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– prüfe, ob das Signal HBRG_EN = “0” ist,
– sende das Signal: „HPCB_ComReq.UsrCmd“ gleich „FBNO“,
– prüfe, ob das Signal HBRG_EN = “1” ist
sysint_test
SYS3_REQ_9SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
– PWM1H
– PWM2H
– PWM1L
– PWM2L
SWASIL Bfun_req– das FMS_PCB muss im „normal mode“ sein,
– sende das Signal: „HPCB_ComReq.UsrCmd“ gleich „FBNO“,
– prüfe, ob das Signal: PWM1H ein PWM-Signal, mit DC gleich “duty_cycle_up” und das Signal: PWM2L gleich “high” ist,
– sende das Signal: „HPCB_ComReq.UsrCmd“ gleich „FBNU“,
– prüfe, ob das Signal: PWM2H gleich “duty_cycle_down” und das Signal: PWM1L gleich “GND “high” ist,
sysint_test
SYS3_REQ_10SYS2_REQ_22
SYS2_REQ_23
SYS2_REQ_20
[LIN]
– WND_STATE
SWASIL Bfun_req– das FMS_PCB muss im „normal mode“ sein,
– sende das Signal: „HPCB_ComReq.UsrCmd“ gleich „FBNU“,
– lese das Signal: WND_STATE über den LIN-Bus und prüfe, ob es gleich „FBNU“ ist
sysint_test
SYS3_REQ_11NAFunktion: FMPCB_AntiPinchCtrl_swNANAheadingNANA
SYS3_REQ_12NADie FMPCB_AntiPinchCtrl_sw-Funktion soll die Verletzungen von Personen durch Fenstereinklemmen vorbeugen.NANAinformationNANA
SYS3_REQ_13NAInput-Signale:NANAheadingNANA
SYS3_REQ_14SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
[INTERN]
– HBRG_CURR_STATE
SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– sende das Signal: “HPCB_ComReq.UsrCmd” gleich „FBNO“,
– lese das Signal: HBRG_CURR_STATE über den LIN-Bus und prüfe, ob es gleich „OFF“ ist,
– simuliere eine Hinderniserkennung (DC-Motor-Strom >= 12 A),
– lese das Signal: HBRG_CURR_STATE über den LIN-Bus und prüfe, ob es gleich „ON“ ist
sysint_test
SYS3_REQ_15SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_18
– UCNTR_FSWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– lese das UCTR_F-Signal über den LIN-Bus und prüfe, ob der Wert sich nicht ändert,
– sende das Signal: “HPCB_ComReq.UsrCmd” gleich „FBNO“,
– lese das UCNTR_F-Signal über den LIN-Bus und prüfe, ob das Signal toggelt, mit einer Frequenz von ca. 450 Hz)
sysint_test
SYS3_REQ_18SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
– WIN_POSSWASIL Bfun_reqsiehe SYS2_REQ_19sysint_test
SYS3_REQ_16NAOutput-Signale:NANAheadingNANA
SYS3_REQ_17SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
[INTERN]
– OBST_DET
SWASIL Bfun_req– das FMS_PCB muss im „normal mode“ sein,
– sende das Signal: „HPCB_ComReq.UsrCmd“ gleich „FBNO“,
– lese das HBRG_CURR_STATE-Signal über den LIN-Bus und prüfe, ob es gleich „OFF“ ist,
– simuliere eine Hinderniserkennung (DC-Motor Strom >= 12 A, verkleinere Hall-Sensor-Update-Frequenz UCNTR_F),
– lese das HBRG_CURR_STATE-Signal über den LIN-Bus und prüfe, ob es gleich „ON“ ist
sysint_test
Tabelle: Systemarchitekturanforderungen (SYS.3) nach SDEC-Prinzip

Aus den Systemarchitekturanforderungen und Systemanforderungen können nun die Softwareanforderungen abgeleitet werden.

Auch hier ändert sich der Kontext, da die Software ausschließlich auf dem FMS-Mikrocontroller ausgeführt wird. Dies wird im nächsten Kapitel erläutert.


Software-Software-Interface

Die SW-SW-Interface-Tabelle beinhaltet das Mapping von Systemsignalen zu Softwaresignalen. Die Systemsignale für interne Zustände (z. B. HBRG_CURR_STATE), haben entsprechende Softwaresignale in Form:

  • <Systemzugehörigkeit>_<Funktionsname>_<SW-Signal>.

In diesem Fall steht FMS für die Domäne “Fenstermotorsteuerung“, DC für die Funktion “Diagnostic Control” und HBrCurr_State für das Softwaresignal “H-Bridge Current State” (FMS_DC_HBrCurr_State).

.

Später werden in der Softwarearchitektur nur Softwaresignale zusammen mit AUTOSAR-Syntax verwendet

Die Statussignale sind hier nicht aufgelistet, damit das Dokument nicht zu groß wird. Diese Statussignale sind aber für die Diagnose und für die Funktionale Sicherheit wichtig.

SY-Signal:SW-Signal:Beschreibung:Wertebereich:Auflösung:Einheit:
HBRG_CURR_STATEFMS_DC_HBrCurr_StateStatus vom H-Brücke-Strom der DiagCtrl Funktion.0..1
ON – Strom ist größer, gleich 12 A
OFF – Strom ist kleiner als 12 A
1NA
UCNTR_FFMS_DC_Ucnt_HzCounter des Hall-Sensors.0..2000 (Zähler)1NA
WIN_POSFMS_DC_WinPos_mmPosition vom Fensterglas relativ zum unteren Anschlag.0..4001mm
DIAG_ERRFMS_DC_DiagErr_StateDetektierte Fehler.0..65535 (0x0000 bis 0xFFFF)
0x0001 – 1, bei Überspannung H-Bridge (>16 V), sonst 0
0x0002 – 1, bei Unterspannung H-Brücke (< 9.0 V), sonst 0
0x0004 – 1, bei Überstrom H-Brücke (> 30 A)
0x0008 – 1, bei H-Brücke Temperatur > 85 °C
0x0010 – 1, wenn Hall-Sensor Updatefrequenz zu niedrig ist (<400 Hz)
1NA
OBST_DETFMS_AP_ObstacleDet_StateStatus der Hinderniserkennung.0..1
0 – Hindernis nicht erkannt – HE
1 – Hindernis nicht erkannt – HNE
1NA
WIN_MOT_CTRLFMS_LC_LINFHUserCmd_StateDas LIN-Kommando eines Benutzers für die Fensterbewegung.0..2
0 – Fensterbewegung nach oben – FBNO
1 – Fensterbewegung stopp – FBS
2 – Fensterbewegung nach unten – FBNU
1NA
WND_STATEFMS_LC_WState_StateStatus der Fenstersteuerung am HPCB über den LIN-Bus.0..255
0x01 – Fehler aus DIAG_ERR (wenn mind. ein Fehler vorhanden)
0x02 – Fensterbewegung nach oben – FBNO
0x04 – Fensterbewegung nach unten -FBNU
0x08 – Fensterbewegung stopp – FBS
0x10 – Safe-State (1: aktiv; 0: nicht aktiv) – FSS1
0x20 – Hindernis erkannt – HE
0x30 – Umkehrbewegung – UB
1NA
HBRG_ENFMS_WC_HBrgEn_StateAktivierung des DC-Motor-Treibers (H-Brücke).0..1
0 – H-Brücke nicht aktiv
1 – H-Brücke aktiv
1NA
PWM1H_CtrlFMS_WC_WinCtrlDC1H_percDas PWM-Signal für den ersten Highside-MOSFET der H-Brücke.0..100 %
PWM-Signal mit Duty Cycle.
1%
PWM2L_CtrlFMS_WC_WinCtrlDC2L_percDas PWM-Signal für den zweiten Lowside-MOSFET der H-Brücke.0..1
0 – nicht aktiv
1 – aktiv (GND)
1NA
PWM2H_CtrlFMS_WC_WinCtrlDC2H_percDas PWM-Signal für den zweiten Highside-MOSFET der H-Brücke.0..100 %
PWM-Signal mit Duty Cycle.
1%
PWM1L_CtrlFMS_WC_WinCtrlDC1L_percDas PWM-Signal für den ersten Lowside-MOSFET der H-Brücke.0..1
0 – nicht aktiv
1 – aktiv (GND)
1NA
Tabelle: SW-SW-Interface

Softwareanforderungen (SWE.1)

Die Softwareanforderungen werden im Kontext des FMS-PCB-Mikrocontrollers zusammengefasst. Die Softwaresystemgrenzen sind die Mikrocontroller Pins. Die Hardware- und Softwareabteilung stellt Informationen für Schnittstellen des Mikrocontrollers nach außen im Dokument: Hardware-Software-Interface (HSI). Dort findet man Informationen über die nötigen ADC-Auflösungen, Pin-Zuordnung und entsprechende Softwaresignale.

Anschließend wird ein SW-SW-Interface-Dokument erstellt, welches die internen Softwaresignale für die Funktionskommunikation definiert.

Die Softwareanforderungen beschreiben das Verhalten der Eingangs- und Ausgangssignale des Mikrocontrollers.

Anforderungs-ID:Link zu SYS.2:Link zu SYS.3:Anforderungstext:Disziplin.ASIL:Objekttyp:Verifikationskriterium:Verifikationsstrategie:
SWE1_REQ_1NANAFunktion: FMPCB_AntiPinchCtrl_swNANAheadingNANA
SWE1_REQ_2NANAHindernis erkannt:NANAheadingNANA
SWE1_REQ_3SYS2_REQ_21
SYS2_REQ_22
SYS2_REQ_23
SYS3_REQ_6Wenn das Signal: FMS_LC_LINFHUserCmd_State = “FBNO” und

Information:
Zugehörigkeit: SWE1_REQ_4, SWE1_REQ_5, SWE1_REQ_6
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Hindernis erkannt“
– das FMS_PCB soll im „normal mode“ sein,
– sende das LIN-Signal: „HPCB_ComReq.UsrCmd“ gleich “FBNO” und
sw_verific_test
SWE1_REQ_4SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_19– das Signal: FMS_DC_WinPos_mm <= 399 mm ist und

Information:
Zugehörigkeit: SWE1_REQ_3, SWE1_REQ_5, SWE1_REQ_6
SWASIL Bfun_req– lese FMS_DC_WinPos_mm über den LIN-Bus, prüfe, ob der Wertebereich <= 399 ist (berücksichtige die Laufzeiten von Testumgebung)sw_verific_test
SWE1_REQ_5SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
SYS3_REQ_14– das Signal: FMS_DC_HBrCurr_State >= 12 A und
– das Signal: FMS_DC_Ucntr_Hz Update-Frequenz den Wert <= 350 Hz hat, für Dauer >= 10 ms,

Information:
Zugehörigkeit: SWE1_REQ_3, SWE1_REQ_4, SWE1_REQ_6
SWASIL Bfun_req– lese das Signal: FMS_DC_HBrCurr_State über den LIN-Bus (OFF – Strom ist kleiner als 12 A),
– erhöhe den Stromverbrauch vom DC-Motor (durch Hindernissimulation),
– lese das Signal: FMS_DC_HBrCurr_State über den LIN-Bus (ON – Strom ist gößer, gleich 12 A),
– prüfe, ob das Signal: FMS_DC_Ucntr Update-Frequenz <= 350 Hz ist,
sw_verific_test
SWE1_REQ_6SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
SYS3_REQ_5
dann soll die FMS_PCB-SW das Signal:
– FMS_AP_ObstacleDet_State auf den Wert: „HE“ setzen.

Information:
Zugehörigkeit: SWE1_REQ_3, SWE1_REQ_4, SWE1_REQ_5
SWASIL Bfun_req– prüfe, ob innerhalb von 10 ms das Signal: FMS_AP_ObstDet_State auf “HE” gesetzt wirdsw_verific_test
SWE1_REQ_7NANAHindernis nicht erkannt:NANAheadingNANA
SWE1_REQ_8SYS2_REQ_21SYS3_REQ_6Wenn das Signal: FMS_LC_LINFHUserCmd_State gleich “FBNO” ist und

Information:
Zugehörigkeit: SWE1_REQ_9, SWE1_REQ_11, SWE1_REQ_10
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Hindernis nicht erkannt“
– das FMS_PCB muss im „normal mode“ sein,
– sende das LIN-Signal: HPCB_ComReq.UsrCmd gleich “FBNO” und
sw_verific_test
SWE1_REQ_9SYS2_REQ_16SYS3_REQ_19– das Signal: FMS_DC_WinPos_mm <= 399 mm und

Information:
Zugehörigkeit: SWE1_REQ_8, SWE1_REQ_11, SWE1_REQ_10
SWASIL Bfun_req– lese das Signal: FMS_DC_WinPos_mm über den LIN-Bus, prüfe, ob der Wertebereich <= 399 ist (berücksichtige die Laufzeiten von Testumgebung)sw_verific_test
SWE1_REQ_10SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
SYS3_REQ_14
SYS3_REQ_15
– das Signal: FMS_DC_HBrCurr_State < 12 A und
– das Signal: FMS_DC_Ucntr_Hz den Wert >= 450 Hz hat, für Dauer >= 50 ms,

Information:
Zugehörigkeit: SWE1_REQ_8, SWE1_REQ_11, SWE1_REQ_9
SWASIL Bfun_req– lese das Signal: FMS_DC_HBrCurr_State über den LIN-Bus (OFF – prüfe, ob der Wert kleiner 12 A),
– prüfe, ob das Signal: FMS_DC_Ucntr_Hz Update-Frequenz >= 450 Hz ist,
sw_verific_test
SWE1_REQ_11SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
SYS3_REQ_5soll die FMS_PCB-SW das Signal:
– FMS_AP_ObstDet_State auf den Wert: „HNE“ setzen.

Information:
Zugehörigkeit: SWE1_REQ_10, SWE1_REQ_8, SWE1_REQ_9
SWASIL Bfun_req– lese das Signal: FMS_AP_ObstDet_State über den LIN-Bus und prüfe, ob der Wert nach 50 ms gleich “HNE” gesetzt istsw_verific_test
SWE1_REQ_12NANAFunktion: FMPCB_WindowCtrl_swNANAheadingNANA
SWE1_REQ_13NANAEin-/Ausschalten des Motortreibers (H-Brücke)NANAheadingNANA
SWE1_REQ_14
SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_8Die FMS_PCB-SW soll den DC-Motor-Treiber (H-Brücke) einschalten beim Setzen des Signals: FMS_WC_HBrgEn_State gleich „1“ vor jeder Fensterbewegung.SWASIL Bfun_req– das Fenster ist geschlossen
– sende das LIN-Signal: “HPCB_ComReq.UsrCmd” gleich “FBNU”,
– prüfe, über den LIN-Bus, ob Signal: FMS_WC_EnblHBrg_State gleich “1” ist
sw_verific_test
SWE1_REQ_15SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_8Die FMS_PCB-SW soll den DC-Motor-Treiber (H-Brücke) ausschalten beim Setzen des Signals: FMS_WC_HBrgEn_State gleich „0“ nach jeder Fensterbewegung.SWASIL Bfun_req– sende das LIN-Signal: „HPCB_ComReq.UsrCmd“ gleich „FBS“,
– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_EnblHBrg_State gleich „0“ ist
sw_verific_test
SWE1_REQ_16NANAFensterbewegung nach oben:NANAheadingNANA
SWE1_REQ_17SYS2_REQ_22
SYS2_REQ_23
SYS2_REQ_20
SYS3_REQ_6Wenn die FMS_PCB-SW das Signal:
– HPCB_ComReq.UsrCmd mit dem Wert: „FBNO“ liest, und

Information:
Zugehörigkeit: SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach oben“
– das FMS_PCB muss im „normal mode“ sein,
– sende das LIN-Signal: HPCB_ComReq.UsrCmd gleich „FBNO“,
sw_verific_test
SWE1_REQ_18SYS2_REQ_16SYS3_REQ_17
SYS3_REQ_5
– das Signal: FMS_AP_ObstDet_State gleich „HNE“ ist, und

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob Signal: FMS_AP_ObstDet_State gleich „HNE“ ist,sw_verific_test
SWE1_REQ_19SYS2_REQ_18SYS3_REQ_4– das Signal: FMS_DC_DiagErr_State keine Fehler aufweist (0x00 00), und

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob Signal: FMS_DC_DiagErr_State gleich „0x00 00“ ist,sw_verific_test
SWE1_REQ_20SYS2_REQ_16SYS3_REQ_19– das Signal: FMS_DC_WinPos_mm <= 399 mm ist,

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob Signal: FMS_DC_WinPos_mm <= 399 mm ist,sw_verific_test
SWE1_REQ_21SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9dann soll die FMS_PCB-SW das Signal:
– FMS_WC_WinCtrlDC1H_perc auf den Wert „duty_cycle_up“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC1H_perc gleich einem PWM-Signal, mit DC-Wert gleich „duty_cycle_up“ ist,sw_verific_test
SWE1_REQ_22SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC2L_perc auf den Wert „1“ (aktiv) setzen und

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_23, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC2L_perc gleich “1” ist,sw_verific_test
SWE1_REQ_23SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC2H_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_25, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC2H_perc gleich „0“ ist,sw_verific_test
SWE1_REQ_25SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC1L_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_26
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC1L_perc gleich „0“ ist,sw_verific_test
SWE1_REQ_26SYS2_REQ_20SYS3_REQ_10– das Signal: FMS_LC_WState_State auf den Wert „Fensterbewegung nach oben“ setzen.

Information:
Zugehörigkeit: SWE1_REQ_17, SWE1_REQ_18, SWE1_REQ_19, SWE1_REQ_20, SWE1_REQ_21, SWE1_REQ_22, SWE1_REQ_23, SWE1_REQ_25
SWASIL Bfun_req– prüfe, über den LIN-Bus, ob Signal: FMS_LC_WState_State gleich „Fensterbewegung nach oben“ ist.sw_verific_test
SWE1_REQ_27NANAFensterbewegung nach unten:NANANANANA
SWE1_REQ_28SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_6Wenn die FMS_PCB-SW das Signal:
– HPCB_ComReq.UsrCmd mit dem Wert: „FBNU“ liest, und

Information:
Zugehörigkeit: SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– das FMS_PCB soll im „normal mode“ sein,
– sende das LIN-Signal: „HPCB_ComReq.UsrCmd“ gleich „FBNU“,
sw_verific_test
SWE1_REQ_29SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
SYS3_REQ_5– das Signal: FMS_AP_ObstDet_State gleich „HNE“ ist, und

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_AP_ObstDet_State gleich “HNE” ist,
sw_verific_test
SWE1_REQ_30SYS2_REQ_18SYS3_REQ_4– das Signal: FMS_DC_DiagErr_State keine Fehler aufweist (gleich 0x00 00 ist), und

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_DC_DiagErr_State gleich „0x00 00“ ist,
sw_verific_test
SWE1_REQ_31SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS2_REQ_16
SYS3_REQ_19– das Signal: FMS_DC_WinPos_mm >= “1” mm ist,

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_DC_WinPos_mm >= 1 mm ist,
sw_verific_test
SWE2_REQ_32SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9dann soll die FMS_PCB-SW das Signal:
– FMS_WC_WinCtrlDC1H_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC1H_perc gleich “0” ist,
sw_verific_test
SWE1_REQ_33SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC2L_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_34, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC2L_perc gleich „0“ ist,
sw_verific_test
SWE1_REQ_34SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC2H_perc auf den Wert „duty_cycle_down“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_35, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC2H_perc DC gleich „duty_cycle_down“ ist,
sw_verific_test
SWE1_REQ_35SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC1L_perc auf den Wert „1“ (aktiv) setzen und

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_36
SWASIL Bfun_reqTeste zusammen alle Anfdorderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC1L_perc gleich „1“ ist,
sw_verific_test
SWE1_REQ_36SYS2_REQ_20SYS3_REQ_10– das Signal: FMS_LC_WState_State auf den Wert „Fensterbewegung nach unten“ setzen.

Information:
Zugehörigkeit: SWE1_REQ_28, SWE1_REQ_29, SWE1_REQ_30, SWE1_REQ_31, SWE1_REQ_32, SWE1_REQ_33, SWE1_REQ_34, SWE1_REQ_35
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: „Fensterbewegung nach unten”
– prüfe, über den LIN-Bus, ob das Signal FMS_LC_WState_State gleich „Fensterbewegung nach unten“ ist.
sw_verific_test
SWE1_REQ_37NANAHinderniserkennung ist aktiv:NANANANANA
SWE1_REQ_38SYS2_REQ_16
SYS2_REQ_14
SYS2_REQ_12
SYS3_REQ_5Wenn während einer Fensterbewegung nach oben die FMS_PCB-SW detektiert, dass das Signal:
FMS_AP_ObstDet_State den Wert von „Normal Operation“ auf „Obstacle Detected“ ändert,

Information:
Zugehörigkeit: SWE1_REQ_39, SWE1_REQ_40, SWE1_REQ_41, SWE1_REQ_42
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: “Hinderniserkennung ist aktiv (HEA)
– das FMS_PCB soll im „normal mode“ sein,
– wiederhole Testschritte aus Kapitel: „Hindernis erkannt:
– prüfe, ob das Signal: FMS_AP_ObstDet_State gleich “Obstacle Detected” ist
sw_verific_test
SWE1_REQ_39SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9dann soll die FMS_PCB-SW innerhalb von 5 ms das Signal:
– FMS_WC_WinCtrlDC1H_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_38, SWE1_REQ_40, SWE1_REQ_41, SWE1_REQ_42
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: “Hinderniserkennung ist aktiv (HEA)
– prüfe, dass innerhalb von 5 ms das Signal: FMS_WC_WinCtrlDC1H_perc gleich „0“ ist,
sw_verific_test
SWE1_REQ_40SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC2L_perc auf den Wert „0“ setzten und

Information:
Zugehörigkeit: SWE1_REQ_38, SWE1_REQ_39, SWE1_REQ_41, SWE1_REQ_42
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: “Hinderniserkennung ist aktiv (HEA)
– prüfe, dass innerhalb von 5 ms das Signal: FMS_WC_WinCtrlDC2L_perc gleich „0“ ist,
sw_verific_test
SWE1_REQ_41SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC2H_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_38, SWE1_REQ_39, SWE1_REQ_40, SWE1_REQ_42
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: “Hinderniserkennung ist aktiv (HEA)
– prüfe, dass innerhalb von 5 ms das Signal: FMS_WC_WinCtrlDC2H_perc gleich „0“ ist,
sw_verific_test
SWE1_REQ_42SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS3_REQ_9– das Signal: FMS_WC_WinCtrlDC1L_perc auf den Wert „0“ setzen und

Information:
Zugehörigkeit: SWE1_REQ_38, SWE1_REQ_39, SWE1_REQ_40, SWE1_REQ_41
SWASIL Bfun_reqTeste zusammen alle Anforderungen aus Kapitel: “Hinderniserkennung ist aktiv (HEA)
– prüfe, dass innerhalb von 5 ms, Signal: FMS_WC_WinCtrlDC1L_perc gleich „0“ ist,
sw_verific_test
SWE1_REQ_43NANAFensterumkehrantrieb nach Hinderniserkennung aktiv (FUANHA): NANANANANA
SWE1_REQ_44SYS2_REQ_6
SYS2_REQ_8
SYS2_REQ_10
SYS2_REQ_21
SYS2_REQ_22
SYS2_REQ_23
SYS3_REQ_19Wenn die FMS_PCB-SW nach einer Hinderniserkennung (HEA) die Fensterbewegung gestoppt hat, soll die FMS_PCB- SW die Stoppposition (FMS_DC_WinPos_mm) merken und von dieser Position soll die FMS_PCB-SW eine Fensterbewegung nach unten (siehe oben) 15 cm oder bis zur unteren Fensteranschlagposition ausführen.SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– wiederhole Testschritte aus Kapitel: „Hindernis erkannt
– lese unmittelbar nach Hindernisdetektierung das LIN-Signal: FMS_DC_WinPos_mm und merke den Wert (1),
– lese nach einer Rückwärtsbewegung das LIN-Signal: FMS_DC_WinPos_mm (2), vergleiche den Wert (1) und Wert (2),
– prüfe, dass die Wertdifferenz gleich 15 cm ist
sw_verific_test
SWE1_REQ_45SYS2_REQ_22
SYS2_REQ_23
SYS2_REQ_20
SYS3_REQ_6Während der Fensterbewegung nach unten durch FUANHA, soll die FMS_PCB-SW keine anderen Kommandos ausführen oder durch Fehler die Fensterbewegung stoppen, bis die Endposition für FUANHA erreicht ist.SWASIL Bfun_req– das FMS_PCB soll im „normal mode“ sein,
– wiederhole Testschritte aus Kapitel: „Hindernis erkannt
– während das Fenster im Fensterumkehrantrieb sich befindet,
– sende das LIN-Signal: HPCB_ComReq.UsrCmd gleich “FBNO”,
– prüfe, ob die Fensterumkehrbewegung nicht unterbrochen wird
sw_verific_test
Tabelle: Softwareanforderungen (SWE.1) nach SDEC-Prinzip

Software-Software-Interface (für SWE.2)

Ein weiterer Punkt ist die Definition von internen Signalen für die Kommunikation zwischen Softwarekomponenten. Da wir bereits auf Systemarchitekturebene einige Softwaresignale definiert haben, die für die Kommunikation zwischen einzelnen Funktionen zuständig sind, fehlen uns noch einige Softwaresignale, die speziell für die Kommunikation zwischen einzelnen Softwarekomponenten benötigt werden.

Hier ist die abgespeckte Signalliste für die Kommunikation zwischen zwei Softwarekomponenten: WINC und APIF. Die Signale auf System-, Systemarchitektur-, Software- und Softwarearchitekturebene sind eindeutig miteinander gemappt.

Somit gibt es hier keinen weiteren Bedarf, die Signale untereinander in einem übergreifenden Dokument zu verlinken. Um die Anzahl von redundanter Information zu verringern, kann man alle Signale über alle Ebenen in einem Dokument speichern. In DOORS besteht die Möglichkeit, unterschiedliche Ansichten für verschiedene Ebenen zu erstellen, sodass man für System und Software spezielle Ansichten anlegen und nutzen kann.

SW-Signal:I-Type:Sender:Empfänger:Beschreibung:Wertebereich:Auflösung:Einheit:
DiagErr_StateSRDIACWINCDer ausgewertete Fehlerstatus von der Komponente: IOHW:
– Überstrom
– Unter-/Übersprannung H-Brücke
– Unter-/Überspannung DC-Motor

0..65535 (0x0000)
0x0001 – 1, bei Überspannung H-Bridge (>16 V), sonst 0
0x0002 – 1, bei Unterspannung H-Brücke (< 9.0 V), sonst 0
0x0004 – 1, bei Überstrom H-Brücke (> 30 A), sonst 0
0x0008 – 1, bei H-Brücke Temperatur > 85 °C, sonst 0
1NA
WinPos_mmSRDIACWINC
APIF
Die Position des Fensters relativ zum unteren Anschlag.0..4001mm
ObstacleDet_StateSRAPIFWINCHindernis erkannt.0..1
0 – Hindernis nicht erkannt – HE
1 – Hindernis nicht erkannt – HNE
1NA
LINFHUserCmd_StateSRLINCWINCBenutzerkommando für die Fensterbewegung.0 – Fensterbewegung nach oben – FBNO
1 – Fensterbewegung stopp – FBS
2 – Fensterbewegung nach unten – FBNU
1NA
HBrgEn_StateSRWINCIOHCSchalter für H-Brücke.0..1
0 – H-Brücke nicht aktiv
1 – H-Brücke aktiv
1NA
MotCtrlDirCSWINCIOHCFensterbewegungsrichtung.0..3
0 – Fensterbewegung stopp
1 – Fensterbewegung nach oben
2 – Fensterbewegung nach unten
1NA
HBrCurr_StateSRDIACAPIFStrom von H-Brücke.Funktion.
0..1
1 – ON – Strom ist größer, gleich 12 A
0 – OFF – Strom ist kleiner als 12 A
1NA
WState_StateSRWINCLINCStatus von FMS_PCB.0x01 – Fehler aus DIAG_ERR (wenn mind. ein Fehler vorhanden)
0x02 – Fensterbewegung nach oben
0x04 – Fensterbewegung nach unten
0x08 – Fensterbewegung stopp
0x10 – Safe-State (1: aktiv; 0: nicht aktiv)
0x20 – Hindernis erkannt
1NA
Tabelle: SW-SW-Interface

Softwarearchitekturanforderungen (SWE.2)

Die Softwarearchitektur beschreibt im Folgenden zwei Softwarekomponenten: Window Control und Anti-Pinch Function. Die Software-Integrationstests sind als die Verifikationsstrategie gewählt.

Die Tests können mit Google-Test-Framework durchgeführt werden, die Input-Signale werden durch Stubs simuliert. Spezielle Performance-Anforderungen wie Ressourcennutzung (RAM, ROM etc.) werden hier nicht angesprochen.

Anforderungs-ID:Link zu SWE.1:Anforderungstext:Disziplin:ASIL:Objekttyp:Verifikationskriterium:Verifikations-strategie:
SWE2_REQ_1NASoftwarekomponente: WINC (Window Control)NANAheadingNANA
SWE2_REQ_2NADie SWC: WINC (Window Control) steuert die PWM-Signale für die Fensterbewegung (DC-Motor) abhängig von Benutzersignalen.
Des Weiteren führt die WINC-Komponente eine Fensterrückwärtsbewegung bei einer Hindernisdetektierung durch.
NANAinformationNANA
SWE2_REQ_3NAInput-Signale:NANAheadingNANA
SWE2_REQ_4SWE1_REQ_19
SWE1_REQ_30
– [SR] DIAC_to_WINC_DiagErr_StateSWASIL Bfun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_5SWE1_REQ_6
SWE1_REQ_11
SWE1_REQ_18
SWE1_REQ_29
– [SR] APIF_to_WINC_ObstacleDet_StateSW
ASIL B
fun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_6SWE1_REQ_3
SWE1_REQ_8
SWE1_REQ_17
SWE1_REQ_28
– [SR] LINC_to_WINC_LINFHUserCmd_StateSW
ASIL B
fun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_7SWE1_REQ_4– [SR] DIAC_to_WINC_WinPos_mmSW
ASIL B
fun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_8NAOutput-Signale:NANAheadingNANA
SWE2_REQ_9SWE1_REQ_14
SWE1_REQ_15
– [SR] WINC_to_IOHC_HBrgEn_StateSW


ASIL B
fun_req1) Das Signal: WINC_to_IOHC_HBrgEn_State = “H-Brücke nicht aktiv”,
2) Das Signal: DIAC_to_WINC_WinPos_mm <= 399 mm,
3) Das Signal: DIAC_to_WINC_DiagErr_State =”0x00 00″,
4) Das Signal: APIF_to_WINC_ObstacleDet_State = “HNE”,
5) Das Signal: LINC_to_WINC_LINFHUserCmd_State = “FBNO”,
6) prüfe, ob das Signal: WINC_to_IOHC_HBrgEn_State = “H-Brücke aktiv” ist (analog führe weitere Tests mit unterschiedlichen Kombinationen von Eingängen)
sw_int_tests
SWE2_REQ_10SWE1_REQ_26– [SR] WINC_to_LINC_ WState_StateSW
ASIL B
fun_req1) Das Signal: DIAC_to_WINC_WinPos_mm <= 399 mm,
2) Das Signal: DIAC_to_WINC_DiagErr_State = “0x00 00”,
3) Das Signal: APIF_to_WINC_ObstacleDet_State = “HNE”,
4) Das Signal: LINC_to_WINC_LINFHUserCmd_State = “FBNO”,
5) prüfe, ob das Signal: WINC_to_LINC_ WState_State = “Fensterbewegung nach oben”
(analog führe weitere Tests mit unterschiedlichen Kombinationen von Eingängen)
sw_int_tests
SWE2_REQ_11SWE1_REQ_21
SWE1_REQ_22
SWE1_REQ_23
SWE1_REQ_25
SWE2_REQ_32
SWE2_REQ_33
SWE2_REQ_34
SWE2_REQ_35
SWE2_REQ_39
SWE2_REQ_40
SWE2_REQ_41
SWE2_REQ_42

– [CS] WINC_to_IOHC_SetMotCtrlPWM ( )SW
ASIL B
fun_req1) Das Signal: DIAC_to_WINC_WinPos_mm <= 399 mm,
2) Das Signal: DIAC_to_WINC_DiagErr_State = “0x00 00”,
3) Das Signal: APIF_to_WINC_ObstacleDet_State = “HNE”,
4) Das Signal: LINC_to_WINC_LINFHUserCmd_State = “FBNO”,
5) prüfe, ob das Signal: MotCtrlDir ist gleich “Fensterbewegung nach oben” und das Signal: WINC_to_IOHC_SetMotCtrlPWM = “Window Movement UP Cmd” ist
(analog führe weitere Tests für Fensterbewegung nach unten mit unterschiedlichen Kombinationen von Eingängen)
sw_int_tests
SWE2_REQ_12SWE1_REQ_21
SWE1_REQ_22
SWE1_REQ_23
SWE1_REQ_25
SWE2_REQ_32
SWE2_REQ_33
SWE2_REQ_34
SWE2_REQ_35
SWE2_REQ_39
SWE2_REQ_40
SWE2_REQ_41
SWE2_REQ_42

– [SR] WINC_to_IOHC_MotCtrlDirSW
ASIL B
fun_req1) Das Signal: DIAC_to_WINC_WinPos_mm <= 399 mm,
2) Das Signal: DIAC_to_WINC_DiagErr_State = “0x00 00”,
3) Das Signal: APIF_to_WINC_ObstacleDet_State = “HNE”
4) Das Signal: LINC_to_WINC_LINFHUserCmd_State = “FBNU”
5) prüfe, ob das Signal: MotCtrlDir = “Fensterbewegung nach unten” und WINC_to_IOHC_SetMotCtrlPWM ( ) gleich “Window Movement DOWN Cmd” ist
(analog führe weitere Tests für Fensterbewegung nach unten mit unterschiedlichen Kombinationen von Eingängen)
SWE2_REQ_13NASoftwarekomponente: APIF (Anti-Pinch Funktion)NANAheadingNANA
SWE2_REQ_14NADie SWC APIF (Anti-Pinch Funktion) detektiert Anomalien in H-Brücke-Stromverbrauch und Rotationsfrequenz der DC-Motor-Getriebe. Anhand von diesen Daten prüft APIF, ob ein Hindernis im Laufweg des Fensterglases vorhanden ist und falls vorhanden, signalisiert APIF die Hindernisdetektierung an WINC-Komponente.NANAinformationNANA
SWE2_REQ_15NAInput-Signale:NANAheadingNANA
SWE2_REQ_16SYS2_REQ_14– [SR] DIAG_to_APIF_HBrCurr_StateSW
ASIL B
fun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_17SYS2_REQ_15– [SR] DIAC_to_APIF_Ucntr_HzSW
ASIL B
fun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_18SYS2_REQ_18– [SR] DIAC_to_APIF_WinPos_mmSW
ASIL B
fun_req– siehe SW-SW-Tabelle (Inputsignal)sw_int_tests
SWE2_REQ_19NAOutput-Signale:NANAheadingNANA
SWE2_REQ_20SWE1_REQ_38
SWE1_REQ_6
SWE1_REQ_11
SWE1_REQ_18
SWE1_REQ_29
– [SR] APIF_to_WINC_ObstacleDet_StateSW
ASIL B
fun_req1) Das Signal: DIAC_to_WINC_WinPos_mm <= 399 mm
2) Das Signal: DIAC_to_WINC_DiagErr_State = “0x00 00”
3) Das Signal: APIF_to_WINC_ObstacleDet_State = “HNE”
4) Das Signal: LINC_to_WINC_LINFHUserCmd_State = “FBNO”
5) Setze das Signal: Ucntr_Hz = 350 Hz
6) Setze das Signal: HBrCurr_State = 1 (>12 A)
7) Prüfe, ob das Signal: APIF_to_WINC_ObstacleDet_State = “HE”
sw_int_tests
Tabelle: Softwarearchitekturanforderungen (SWE.2) nach SDEC-Prinzip

Jetzt haben wir einen Teil der Anforderungen für zwei Funktionen: Anti-Pinch (APIF) Control und Window Control (WINC).


Abdeckung von ASPICE und VDA Anforderungen für Anforderungsmanagement

Mit SDEC-Vorgehensweise kann man die fehlenden Punkte wie die Funktionale Sicherheit, Fehlerbehandlung, Diagnose und weitere Funktionalitäten ausarbeiten und dokumentieren, aber zumindest zu dieser Untermenge kann man schon eine Konformitätsmatrix zu Standards wie ASPICE, VDA und ISO 26262 erstellen.

Die unten zusammengestellte Tabelle zeigt, wie die Anforderungen aus beiden Normen – APSICE und VDA – über Dokumente aus unterschiedlichen Ebenen abgedeckt sind.

Standard und Anforderung:SYS.2SYS.3SWE.1SWE.2
[VDA.1] Anforderungen müssen klar strukturiert und hierarchisch gegliedert sein.– Funktionsunterteilung (Kapitelweise)– Funktionsunterteilung (Kapitelweise)– Funktionsunterteilung (Kapitelweise)– Funktionsunterteilung (Softwarekomponente)
[VDA.2] Verwendung von nummerierten und eindeutig identifizierten Anforderungen.(Anforderungs-ID) SYS2_REQ(Anforderungs-ID) SYS3_REQ(Anforderungs-ID) SWE1_REQ(Anforderungs-ID) SWE2_REQ
[VDA.3] Ähnlich wie bei ASPICE werden Anforderungen auf unterschiedlichen Ebenen dokumentiert (System, Subsystem, Komponenten, Software).– getrenntes Dokument für SYS.2– getrenntes Dokument für SYS.3– getrenntes Dokument für SWE.1– getrenntes Dokument für SWE.2
[ASP.2] Anforderungen sind in verschiedenen Ebenen (System, Subsystem, Software) hierarchisch organisiert.– getrenntes Dokument für SYS.2– getrenntes Dokument für SYS.3– getrenntes Dokument für SWE.1– getrenntes Dokument für SWE.2
[ASP.5] Separate Dokumente für jede Anforderungsebene, die durch eindeutige Identifikatoren und Verlinkungen miteinander verbunden sind.– getrenntes Dokument für SYS.2– getrenntes Dokument für SYS.3– getrenntes Dokument für SWE.1– getrenntes Dokument für SWE.2
[VDA.4] Jedes Dokument repräsentiert eine Ebene und ist durch Verlinkungen (Hyperlinks) miteinander verbunden.– fehlt zu Kundenanforderungen, da keine nummerierten Kundenanforderungen vorhanden– Links zu SYS.2:– Link zu SYS.2:
– Link zu SYS.3:
– Link zu SWE.1:
[ASP.3] Jede Anforderung muss rückverfolgbar (traceable) zu ihren Quellen (z. B. Kundenanforderungen, Spezifikationen) und zu den implementierten Komponenten sein.– fehlt zu Kundenanforderungen, da keine nummerierten Kundenanforderungen vorhanden– Links zu SYS.3:– Link zu SYS.2:
– Link zu SYS.3:
– Link zu SWE.1:
[ISO26262.1] Die Funktionale Sicherheit-relevanten Anforderungen sollen eine klare und eindeutige Rückverfolgbarkeit aufweisen über mehrere Dokumente: Safety Goals -> FSR -> TSR -> HW/SW– hier fehlen die Links zu TSR, weil die Funktionale Sicherheit nicht im Fokus dieses Dokuments ist (im realen Projekt kann durch Verlinkung realisiert werden)– hier fehlen die Links zu TSR, weil die Funktionale Sicherheit nicht im Fokus dieses Dokuments ist (im realen Projekt kann durch Verlinkung realisiert werden)– hier fehlen die Links zu TSR, weil die Funktionale Sicherheit nicht im Fokus dieses Dokuments ist (im realen Projekt kann durch Verlinkung realisiert werden)– hier fehlen die Links zu TSR, weil die Funktionale Sicherheit nicht im Fokus dieses Dokuments ist (im realen Projekt kann durch Verlinkung realisiert werden)
[ISO26262.2] Die Dokumentation von Anforderungsänderungen muss strengen Richtlinien unterliegen (Rückverfolgbarkeit, Konsistenz etc.)– die Abdeckung in Rückverfolgbarkeit kann durch Automatisierung mit Skripten durchgeführt werden
– Hilfsmittel wie Baselines sollen benutzt werden
– die Abdeckung in Rückverfolgbarkeit kann durch Automatisierung mit Skripten durchgeführt werden
– Hilfsmittel wie Baselines sollen benutzt werden
– die Abdeckung in Rückverfolgbarkeit kann durch Automatisierung mit Skripten durchgeführt werden
– Hilfsmittel wie Baselines sollen benutzt werden
– die Abdeckung in Rückverfolgbarkeit kann durch Automatisierung mit Skripten durchgeführt werden
– Hilfsmittel wie Baselines sollen benutzt werden
[VDA.5] Sicherstellung der Rückverfolgbarkeit durch Verknüpfung der Anforderungen über die Dokumentenhierarchie hinweg.– im Doors-Tool (o. Ä.) ist die Rückverfolgbarkeit bei Links zu realisieren (bidirektional)– im Doors-Tool (o. Ä.) ist die Rückverfolgbarkeit bei Links zu realisieren (bidirektional)– im Doors-Tool (o. Ä.) ist die Rückverfolgbarkeit bei Links zu realisieren (bidirektional)– im Doors-Tool (o. Ä.) ist die Rückverfolgbarkeit bei Links zu realisieren (bidirektional)
[ASP.4] Nutzung von Verlinkungen und Traceability-Matrizen zur Darstellung der Beziehungen zwischen den Anforderungen auf unterschiedlichen Ebenen.– das Doors-Tool bietet eine Möglichkeit, unterschiedliche Ansichten zu erstellen und nach Excel zu exportieren, um eine Abdeckung zu prüfen– das Doors-Tool bietet eine Möglichkeit, unterschiedliche Ansichten zu erstellen und nach Excel zu exportieren, um eine Abdeckung zu prüfen– das Doors-Tool bietet eine Möglichkeit, unterschiedliche Ansichten zu erstellen und nach Excel zu exportieren, um eine Abdeckung zu prüfen– das Doors-Tool bietet eine Möglichkeit, unterschiedliche Ansichten zu erstellen und nach Excel zu exportieren, um eine Abdeckung zu prüfen
[VDA.6] Nutzung von Verweisen und Referenzen zwischen den Dokumenten zur Darstellung der Beziehungen.– kann im Doors-Tool über spezielle Attribute wie (“Abhängigkeit”) realisiert werden– kann im Doors-Tool über spezielle Attribute wie (“Abhängigkeit”) realisiert werden– kann im Doors-Tool über spezielle Attribute wie (“Abhängigkeit”) realisiert werden– kann im Doors-Tool über spezielle Attribute wie (“Abhängigkeit”) realisiert werden
[VDA.7] Anforderungen müssen eindeutig, vollständig, konsistent und überprüfbar sein.– durch die Aufteilung, Überschriften und Hinweise gewährleistet
– kann durch ein Review bestätigt werden
– durch die Aufteilung, Überschriften und Hinweise gewährleistet
– kann durch ein Review bestätigt werden
— durch die Aufteilung, Überschriften und Hinweise gewährleistet
– kann durch ein Review bestätigt werden
– durch die Aufteilung, Überschriften und Hinweise gewährleistet
– kann durch ein Review bestätigt werden
[ISO26262.4] Alle Funktionale Sicherheit-relevanten Anforderungen sollen auf Korrektheit und Vollständigkeit überprüft werden (Reviews, Tests oder Analyse)– Reviews, Tests (ergänzende Analyse)– Reviews, Tests (ergänzende Analyse)– Reviews, Tests (ergänzende Analyse)– Reviews, Tests (ergänzende Analyse)
[VDA.8] Vermeidung von Mehrdeutigkeiten durch präzise Formulierungen.– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden
[ASP.1] Anforderungen müssen vollständig, widerspruchsfrei und eindeutig formuliert sein.– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden
[ASP.7] Anforderungen müssen klar, präzise, überprüfbar und testbar sein.– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden
[ASP.8] Vermeidung von Ambiguitäten und Mehrdeutigkeiten.– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden– kann durch disziplinübergreifendes Review gewährleistet werden
[VDA.9] Einsatz von Tools zur Verwaltung und Verlinkung der Anforderungsdokumente.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.
[ASP.6] Verwendung von Werkzeugen zur Unterstützung der Anforderungsverwaltung und -verfolgung.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.
[ISO26262.3] Es wird empfohlen, spezielle Tools für Anforderungsmanagement zu benutzen (für nachvollziehbare und konsistente Rückverfolgbarkeit, Modellierung etc.)– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.– Polarion, Doors o. Ä.
[VDA.10] Unterstützung bei der Pflege der Traceability und Konsistenz zwischen den Ebenen.– am besten durch Automatisierung zu realisieren– am besten durch Automatisierung zu realisieren– am besten durch Automatisierung zu realisieren– am besten durch Automatisierung zu realisieren
Tabelle: SDEC und Standards, ASPICE, VDA, ISO 26262

Wie man aus dieser Matrix erkennt, sind alle aufgeführten Punkte im realen Projekt realisierbar.


Vor- und Nachteile von SDEC-Anforderungsmanagement-Methode

Alles unter einem Nenner kann man die Vor- und Nachteile in Form einer Tabelle zusammenfassen:

Vorteile:Nachteile:
Trennung der Ebenen und Struktur:
Klare Struktur für jede Abstraktionsebene erlaubt striktes Testen, wenn man zu jeder Ebene (zu jedem Dokument) die gleiche Verifikationsstrategie verwendet. Das bedeutet wiederum eine Verwendung der gleichen Testtools und der gleichen Teststrategie.
Testabdeckung und Tests in unterschiedlichen Ebenen:
obwohl dieses Problem auch in anderen Anforderungsmanagementmethoden im Anforderungsmanagement öfter auftritt, sollte man im Klaren sein, dass die Tests sehr wohlüberlegt sein müssen, um die Redundanz zu minimieren
Normenkonform:
Klares Bild für alle Abstraktionsebenen stellt die Normen und Standards wie ASPICE und VDA zufrieden
Geringere Anfälligkeit gegenüber den Fehlern und Lücken in der Dokumentation:
Weniger anfällig gegenüber vermeintlichen Lücken in der Beschreibung
Es gibt klare Schnittstellen und Elemente, welche beschrieben werden müssen. Alle Elemente werden nacheinander beschrieben, durchgehend in allen Ebenen.
Tabelle: SDEC-Prinzip – Vor- und Nachteile

Quellenangabe:

Autor: Dipl.-Ing. Nachrichtentechnik (FH) Oleg Czaikowsky, den 04.04.2025