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.
Inhaltsverzeichnis
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: | Vokabular, Standards 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:
- Lücken in Kundenanforderungen sind nicht geschlossen
- Reviewkriterien und Reviewprozesse nicht definiert
- Tailoring-Guideline nicht benutzt
- Falsche Zuordnung zu einer Abstraktionsebene
- Fehlende Beschreibung für die entwickelten Dokumente
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.
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
Hier möchte ich betonen, dass die unten dargestellten Anforderungen weder vollständig noch in der Umsetzung garantiert korrekt sind. Diese Anforderungen habe ich im Rahmen meiner Internetpräsentation ohne umfassende Tests und ohne tief in die Details zu gehen ausgearbeitet – ausschließlich zum Kennenlernen.
In der Anforderungsbeschreibung gibt es viele Verbesserungsmöglichkeiten, wie den Einsatz von Platzhaltern oder unterschiedliche Ansätze zur Aufteilung von Anforderungen. Da hier jedoch nur Teile der Funktionalität beschrieben werden, können Informationslücken entstehen.
Es gibt weder Informationen über Diagnose, DTC-Behandlung noch über Speicherung und Parametrierung von Daten.
Für jeglichen Gebrauch von enthaltenen hier Informationen in Projekten kann ich nicht haften oder haftbar gemacht werden. Sie tragen allein das Risiko, die Anforderungsmanagement-Methoden, Strategien oder andere Informationen zu übernehmen und anzuwenden. Falls Sie aber meine Dienstleistung in Anspruch nehmen möchten, stehe ich Ihnen gerne zur Verfügung.
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.
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.
Wenn die Kundenanforderungen zu detailliert sind, können diese Anforderungen direkt auf die richtige Ebene übernommen und mit den Kundenanforderungen verlinkt werden. Als Anforderungsursprung können dann die Kundenanforderungen angegeben werden.
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: | ASIL | Disziplin: | Verifikationskriterium: | Verifikations-strategie: |
SYS2_REQ_1 | Stromversorgung | heading | NA | NA | NA | NA |
SYS2_REQ_2 | Wenn 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_req | ASIL B | SYS | – 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_3 | Benutzersteuerung vom DC-Motor | heading | NA | NA | NA | NA |
SYS2_REQ_4 | Die Benutzersteuerung des DC-Motors dient dazu, das Fahrzeugfenster entsprechend den Benutzerkommandos über den LIN-Bus zu steuern. | information | NA | NA | NA | NA |
SYS2_REQ_5 | Fensterbewegung nach oben: | heading | NA | NA | NA | NA |
SYS2_REQ_6 | Das 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_req | ASIL B | SYS | (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_req | ASIL B | SYS | (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_7 | Fensterbewegung nach unten: | heading | NA | NA | NA | NA |
SYS2_REQ_8 | Das 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_req | ASIL B | SYS | (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_req | ASIL B | SYS | (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_9 | Fensterbewegung stopp: | heading | NA | NA | NA | NA |
SYS2_REQ_10 | Das FMS_PCB soll an Signalports: – M1PCB und M2PCB 0 V Spannung liefern, Information: Zugehörigkeit: SYS2_REQ23 | fun_req | ASIL B | SYS | (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_req | ASIL B | SYS | (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_19 | Fensterbewegung Status: | heading | NA | NA | NA | NA |
SYS2_REQ_20 | Das FMS_PCB soll, abhängig von Fensterbewegung, das Statussignal: – “FMSPCB_Response.WindState” an den H_PCB über den LIN-Bus senden. | fun_req | ASIL B | SYS | – 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_11 | Einklemmerkennung (Anti-Pinch) Funktion (APF) | heading | NA | NA | NA | NA |
SYS2_REQ_12 | Die 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. | information | NA | NA | NA | NA |
SYS2_REQ_13 | Hindernis erkannt (STOPP): | heading | NA | NA | NA | NA |
SYS2_REQ_14 | Das 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_req | ASIL B | SYS | – 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_15 | Fensterumkehrantrieb nach Hinderniserkennung aktiv (FUANH): | heading | NA | NA | NA | NA |
SYS2_REQ_16 | Wenn 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_req | ASIL B | SYS | – 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_17 | Diagnose von Eingangswerten | heading | NA | NA | NA | NA |
SYS2_REQ_18 | Das 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_req | ASIL B | SYS | – 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 |
Die Hardwareanforderungen werden nicht in diesem Dokument betrachtet.
An dieser Stelle muss erwähnt werden, dass ein Anforderungsdokument in einem realen Projekt viel mehr Attribute aufweist, als hier gezeigt wird. Z. B. „Objektstatus“ (z. B. „in_progress“, „done“, „released“), „physikalische Allokation“ (z. B. „FMS_PCB“), „Target Delivery“ (Zieldatum einer Auslieferung für Software), „ASIL“ (Zuordnung zu einer bestimmten ASIL-Ebene) etc.
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_1 | NA | Funktion: FMPCB_WindowCtrl_sw | NA | NA | heading | NA | NA |
SYS3_REQ_2 | NA | Die Funktion FMPCB_WindowCtrl_sw steuert H-Brücke für Fensterbewegung über PWM-Signale. | NA | NA | information | NA | NA |
SYS3_REQ_3 | NA | Input-Signale: | NA | NA | heading | NA | NA |
SYS3_REQ_4 | SYS2_REQ_18 | [INTERN] – DIAG_ERR | SW | ASIL B | fun_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_5 | SYS2_REQ_16 SYS2_REQ_14 SYS2_REQ_12 | – OBST_DET | SW | ASIL B | fun_req | abgedeckt in SYS3_REQ_17 (Output-Signals) | sysint_test |
SYS3_REQ_6 | SYS2_REQ_22 SYS2_REQ_23 SYS2_REQ_20 | [LIN] – WND_MOT_CNTRL | SW | ASIL B | fun_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_19 | SYS2_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 | SW | ASIL B | fun_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_7 | NA | Output-Signale: | NA | NA | heading | NA | NA |
SYS3_REQ_8 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | [HSI] – HBRG_EN | SW | ASIL B | fun_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_9 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | – PWM1H – PWM2H – PWM1L – PWM2L | SW | ASIL B | fun_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_10 | SYS2_REQ_22 SYS2_REQ_23 SYS2_REQ_20 | [LIN] – WND_STATE | SW | ASIL B | fun_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_11 | NA | Funktion: FMPCB_AntiPinchCtrl_sw | NA | NA | heading | NA | NA |
SYS3_REQ_12 | NA | Die FMPCB_AntiPinchCtrl_sw-Funktion soll die Verletzungen von Personen durch Fenstereinklemmen vorbeugen. | NA | NA | information | NA | NA |
SYS3_REQ_13 | NA | Input-Signale: | NA | NA | heading | NA | NA |
SYS3_REQ_14 | SYS2_REQ_16 SYS2_REQ_14 SYS2_REQ_12 | [INTERN] – HBRG_CURR_STATE | SW | ASIL B | fun_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_15 | SYS2_REQ_16 SYS2_REQ_14 SYS2_REQ_18 | – UCNTR_F | SW | ASIL B | fun_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_18 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | – WIN_POS | SW | ASIL B | fun_req | siehe SYS2_REQ_19 | sysint_test |
SYS3_REQ_16 | NA | Output-Signale: | NA | NA | heading | NA | NA |
SYS3_REQ_17 | SYS2_REQ_16 SYS2_REQ_14 SYS2_REQ_12 | [INTERN] – OBST_DET | SW | ASIL B | fun_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 |
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_STATE | FMS_DC_HBrCurr_State | Status 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 | 1 | NA |
UCNTR_F | FMS_DC_Ucnt_Hz | Counter des Hall-Sensors. | 0..2000 (Zähler) | 1 | NA |
WIN_POS | FMS_DC_WinPos_mm | Position vom Fensterglas relativ zum unteren Anschlag. | 0..400 | 1 | mm |
DIAG_ERR | FMS_DC_DiagErr_State | Detektierte 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) … | 1 | NA |
OBST_DET | FMS_AP_ObstacleDet_State | Status der Hinderniserkennung. | 0..1 0 – Hindernis nicht erkannt – HE 1 – Hindernis nicht erkannt – HNE | 1 | NA |
WIN_MOT_CTRL | FMS_LC_LINFHUserCmd_State | Das LIN-Kommando eines Benutzers für die Fensterbewegung. | 0..2 0 – Fensterbewegung nach oben – FBNO 1 – Fensterbewegung stopp – FBS 2 – Fensterbewegung nach unten – FBNU | 1 | NA |
WND_STATE | FMS_LC_WState_State | Status 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 … | 1 | NA |
HBRG_EN | FMS_WC_HBrgEn_State | Aktivierung des DC-Motor-Treibers (H-Brücke). | 0..1 0 – H-Brücke nicht aktiv 1 – H-Brücke aktiv | 1 | NA |
PWM1H_Ctrl | FMS_WC_WinCtrlDC1H_perc | Das PWM-Signal für den ersten Highside-MOSFET der H-Brücke. | 0..100 % PWM-Signal mit Duty Cycle. | 1 | % |
PWM2L_Ctrl | FMS_WC_WinCtrlDC2L_perc | Das PWM-Signal für den zweiten Lowside-MOSFET der H-Brücke. | 0..1 0 – nicht aktiv 1 – aktiv (GND) | 1 | NA |
PWM2H_Ctrl | FMS_WC_WinCtrlDC2H_perc | Das PWM-Signal für den zweiten Highside-MOSFET der H-Brücke. | 0..100 % PWM-Signal mit Duty Cycle. | 1 | % |
PWM1L_Ctrl | FMS_WC_WinCtrlDC1L_perc | Das PWM-Signal für den ersten Lowside-MOSFET der H-Brücke. | 0..1 0 – nicht aktiv 1 – aktiv (GND) | 1 | NA |
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_1 | NA | NA | Funktion: FMPCB_AntiPinchCtrl_sw | NA | NA | heading | NA | NA |
SWE1_REQ_2 | NA | NA | Hindernis erkannt: | NA | NA | heading | NA | NA |
SWE1_REQ_3 | SYS2_REQ_21 SYS2_REQ_22 SYS2_REQ_23 | SYS3_REQ_6 | Wenn das Signal: FMS_LC_LINFHUserCmd_State = “FBNO” und Information: Zugehörigkeit: SWE1_REQ_4, SWE1_REQ_5, SWE1_REQ_6 | SW | ASIL B | fun_req | Teste 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_4 | SYS2_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 | SW | ASIL B | fun_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_5 | SYS2_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 | SW | ASIL B | fun_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_6 | SYS2_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 | SW | ASIL B | fun_req | – prüfe, ob innerhalb von 10 ms das Signal: FMS_AP_ObstDet_State auf “HE” gesetzt wird | sw_verific_test |
SWE1_REQ_7 | NA | NA | Hindernis nicht erkannt: | NA | NA | heading | NA | NA |
SWE1_REQ_8 | SYS2_REQ_21 | SYS3_REQ_6 | Wenn das Signal: FMS_LC_LINFHUserCmd_State gleich “FBNO” ist und Information: Zugehörigkeit: SWE1_REQ_9, SWE1_REQ_11, SWE1_REQ_10 | SW | ASIL B | fun_req | Teste 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_9 | SYS2_REQ_16 | SYS3_REQ_19 | – das Signal: FMS_DC_WinPos_mm <= 399 mm und Information: Zugehörigkeit: SWE1_REQ_8, SWE1_REQ_11, SWE1_REQ_10 | SW | ASIL B | fun_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_10 | SYS2_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 | SW | ASIL B | fun_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_11 | SYS2_REQ_16 SYS2_REQ_14 SYS2_REQ_12 | SYS3_REQ_5 | soll 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 | SW | ASIL B | fun_req | – lese das Signal: FMS_AP_ObstDet_State über den LIN-Bus und prüfe, ob der Wert nach 50 ms gleich “HNE” gesetzt ist | sw_verific_test |
SWE1_REQ_12 | NA | NA | Funktion: FMPCB_WindowCtrl_sw | NA | NA | heading | NA | NA |
SWE1_REQ_13 | NA | NA | Ein-/Ausschalten des Motortreibers (H-Brücke) | NA | NA | heading | NA | NA |
SWE1_REQ_14 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | SYS3_REQ_8 | Die 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. | SW | ASIL B | fun_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_15 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | SYS3_REQ_8 | Die 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. | SW | ASIL B | fun_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_16 | NA | NA | Fensterbewegung nach oben: | NA | NA | heading | NA | NA |
SWE1_REQ_17 | SYS2_REQ_22 SYS2_REQ_23 SYS2_REQ_20 | SYS3_REQ_6 | Wenn 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 | SW | ASIL B | fun_req | Teste 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_18 | SYS2_REQ_16 | SYS3_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob Signal: FMS_AP_ObstDet_State gleich „HNE“ ist, | sw_verific_test |
SWE1_REQ_19 | SYS2_REQ_18 | SYS3_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob Signal: FMS_DC_DiagErr_State gleich „0x00 00“ ist, | sw_verific_test |
SWE1_REQ_20 | SYS2_REQ_16 | SYS3_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob Signal: FMS_DC_WinPos_mm <= 399 mm ist, | sw_verific_test |
SWE1_REQ_21 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | SYS3_REQ_9 | dann 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 | SW | ASIL B | fun_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_22 | SYS2_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC2L_perc gleich “1” ist, | sw_verific_test |
SWE1_REQ_23 | SYS2_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC2H_perc gleich „0“ ist, | sw_verific_test |
SWE1_REQ_25 | SYS2_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob das Signal: FMS_WC_WinCtrlDC1L_perc gleich „0“ ist, | sw_verific_test |
SWE1_REQ_26 | SYS2_REQ_20 | SYS3_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 | SW | ASIL B | fun_req | – prüfe, über den LIN-Bus, ob Signal: FMS_LC_WState_State gleich „Fensterbewegung nach oben“ ist. | sw_verific_test |
SWE1_REQ_27 | NA | NA | Fensterbewegung nach unten: | NA | NA | NA | NA | NA |
SWE1_REQ_28 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | SYS3_REQ_6 | Wenn 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 | SW | ASIL B | fun_req | Teste 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_29 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_30 | SYS2_REQ_18 | SYS3_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 | SW | ASIL B | fun_req | Teste 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_31 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_32 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | SYS3_REQ_9 | dann 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 | SW | ASIL B | fun_req | Teste 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_33 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_34 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_35 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_36 | SYS2_REQ_20 | SYS3_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 | SW | ASIL B | fun_req | Teste 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_37 | NA | NA | Hinderniserkennung ist aktiv: | NA | NA | NA | NA | NA |
SWE1_REQ_38 | SYS2_REQ_16 SYS2_REQ_14 SYS2_REQ_12 | SYS3_REQ_5 | Wenn 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 | SW | ASIL B | fun_req | Teste 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_39 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 | SYS3_REQ_9 | dann 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 | SW | ASIL B | fun_req | Teste 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_40 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_41 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_42 | SYS2_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 | SW | ASIL B | fun_req | Teste 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_43 | NA | NA | Fensterumkehrantrieb nach Hinderniserkennung aktiv (FUANHA): | NA | NA | NA | NA | NA |
SWE1_REQ_44 | SYS2_REQ_6 SYS2_REQ_8 SYS2_REQ_10 SYS2_REQ_21 SYS2_REQ_22 SYS2_REQ_23 | SYS3_REQ_19 | Wenn 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. | SW | ASIL B | fun_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_45 | SYS2_REQ_22 SYS2_REQ_23 SYS2_REQ_20 | SYS3_REQ_6 | Wä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. | SW | ASIL B | fun_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 |
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.
Bitte beachten, dass die Zustandssignale wie Fehler- und Initialisierungswerte in dieser Tabelle nicht vorhanden sind.
SW-Signal: | I-Type: | Sender: | Empfänger: | Beschreibung: | Wertebereich: | Auflösung: | Einheit: |
DiagErr_State | SR | DIAC | WINC | Der 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 … | 1 | NA |
WinPos_mm | SR | DIAC | WINC APIF | Die Position des Fensters relativ zum unteren Anschlag. | 0..400 | 1 | mm |
ObstacleDet_State | SR | APIF | WINC | Hindernis erkannt. | 0..1 0 – Hindernis nicht erkannt – HE 1 – Hindernis nicht erkannt – HNE | 1 | NA |
LINFHUserCmd_State | SR | LINC | WINC | Benutzerkommando für die Fensterbewegung. | 0 – Fensterbewegung nach oben – FBNO 1 – Fensterbewegung stopp – FBS 2 – Fensterbewegung nach unten – FBNU | 1 | NA |
HBrgEn_State | SR | WINC | IOHC | Schalter für H-Brücke. | 0..1 0 – H-Brücke nicht aktiv 1 – H-Brücke aktiv | 1 | NA |
MotCtrlDir | CS | WINC | IOHC | Fensterbewegungsrichtung. | 0..3 0 – Fensterbewegung stopp 1 – Fensterbewegung nach oben 2 – Fensterbewegung nach unten | 1 | NA |
HBrCurr_State | SR | DIAC | APIF | Strom von H-Brücke. | Funktion. 0..1 1 – ON – Strom ist größer, gleich 12 A 0 – OFF – Strom ist kleiner als 12 A | 1 | NA |
WState_State | SR | WINC | LINC | Status 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 … | 1 | NA |
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_1 | NA | Softwarekomponente: WINC (Window Control) | NA | NA | heading | NA | NA |
SWE2_REQ_2 | NA | Die 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. | NA | NA | information | NA | NA |
SWE2_REQ_3 | NA | Input-Signale: | NA | NA | heading | NA | NA |
SWE2_REQ_4 | SWE1_REQ_19 SWE1_REQ_30 | – [SR] DIAC_to_WINC_DiagErr_State | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_5 | SWE1_REQ_6 SWE1_REQ_11 SWE1_REQ_18 SWE1_REQ_29 | – [SR] APIF_to_WINC_ObstacleDet_State | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_6 | SWE1_REQ_3 SWE1_REQ_8 SWE1_REQ_17 SWE1_REQ_28 | – [SR] LINC_to_WINC_LINFHUserCmd_State | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_7 | SWE1_REQ_4 | – [SR] DIAC_to_WINC_WinPos_mm | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_8 | NA | Output-Signale: | NA | NA | heading | NA | NA |
SWE2_REQ_9 | SWE1_REQ_14 SWE1_REQ_15 | – [SR] WINC_to_IOHC_HBrgEn_State | SW | ASIL B | fun_req | 1) 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_10 | SWE1_REQ_26 | – [SR] WINC_to_LINC_ WState_State | SW | ASIL B | fun_req | 1) 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_11 | SWE1_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_req | 1) 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_12 | SWE1_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_MotCtrlDir | SW | ASIL B | fun_req | 1) 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_13 | NA | Softwarekomponente: APIF (Anti-Pinch Funktion) | NA | NA | heading | NA | NA |
SWE2_REQ_14 | NA | Die 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. | NA | NA | information | NA | NA |
SWE2_REQ_15 | NA | Input-Signale: | NA | NA | heading | NA | NA |
SWE2_REQ_16 | SYS2_REQ_14 | – [SR] DIAG_to_APIF_HBrCurr_State | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_17 | SYS2_REQ_15 | – [SR] DIAC_to_APIF_Ucntr_Hz | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_18 | SYS2_REQ_18 | – [SR] DIAC_to_APIF_WinPos_mm | SW | ASIL B | fun_req | – siehe SW-SW-Tabelle (Inputsignal) | sw_int_tests |
SWE2_REQ_19 | NA | Output-Signale: | NA | NA | heading | NA | NA |
SWE2_REQ_20 | SWE1_REQ_38 SWE1_REQ_6 SWE1_REQ_11 SWE1_REQ_18 SWE1_REQ_29 | – [SR] APIF_to_WINC_ObstacleDet_State | SW | ASIL B | fun_req | 1) 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 |
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.2 | SYS.3 | SWE.1 | SWE.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 |
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. |
Quellenangabe:
- [1] Automotive SPICE Process Assessment / Reference Model, Version 4.0
- [2] VDA (German Association of the Automotive Industry)
- [3] ISO 26262-1:2018 Road vehicles — Functional safety
Autor: Dipl.-Ing. Nachrichtentechnik (FH) Oleg Czaikowsky, den 04.04.2025