Inhalt Vorwort... 2 Einleitung... 8 1 Anwendungsbereich... 11 2 Normative Verweisungen... 12 3 Begriffe und Abkürzungen... 12 3.1 Begriffe... 12 3.2 Abkürzungen... 16 4 Ziele, Konformität und Software-Sicherheitsanforderungsstufen... 17 5 Softwaremanagement und -organisation...18 5.1 Organisation, Rollen und Verantwortlichkeiten...18 5.2 Kompetenz der Mitarbeiter... 20 5.3 Fragen des Lebenszyklus und Dokumentation... 21 6 Softwaresicherung... 24 6.1 Softwaretests... 24 6.2 Software-Verifikation... 25 6.3 Software-Validierung... 27 6.4 Software-Begutachtung... 28 6.5 Software-Qualitätssicherung... 30 6.6 Modifikations- und Änderungskontrolle... 32 6.7 Hilfswerkzeuge und Sprachen... 33 7 Entwicklung generischer Software... 36 7.1 Lebenszyklus und Dokumentation für generische Software... 36 7.2 Software-Anforderungen... 37 7.3 Architektur und Entwurf... 39 7.4 Komponentenentwurf... 45 7.5 Implementierung und Test der Komponenten... 47 7.6 Integration... 48 7.7 Endabnahme/Validierung... 50 8 Entwicklung der Anwendungsdaten oder -algorithmen Systeme, die durch Anwendungsdaten oder -algorithmen konfiguriert werden... 52 8.1 Ziele... 52 8.2 Eingangsdokumente... 53 8.3 Ausgangsdokumente... 53 8.4 Anforderungen... 53 9 Bereitstellung und Wartung der Software... 56 9.1 Bereitstellung der Software... 56 9.2 Wartung der Software... 57 3
Entwurf Anhang A (normativ) Kriterien für die Auswahl der Techniken und Maßnahmen... 60 A.1 Tabellen zu den Abschnitten... 61 A.2 Detaillierte Tabellen... 67 Anhang B (normativ) Rollen der Schlüssel-Software und Verantwortlichkeiten... 73 Anhang C (informativ) Zusammenfassung der Dokumentenkontrolle und des Dokumentenlaufs... 82 Anhang D (informativ) Verfahrensübersicht... 84 D.1 KI(Künstliche-Intelligenz)-Fehlerkorrektur (en: AI Fault Correction)... 84 D.2 Analysierbare Programme... 84 D.3 Avalanche-/Belastungstests (en: Avalanche/Stress Testing)... 85 D.4 Grenzwertanalyse (en: Boundary Value Analysis)... 85 D.5 Rückwärts-Regeneration (en: Backward Recovery)... 86 D.6 Ursache-Wirkungsdiagramme (en: Cause Consequence Diagrams)... 86 D.7 Zertifizierte Werkzeuge und zertifizierte Übersetzer (en: Certified Tools and Certified Translators)... 86 D.8 Checklisten (en: Checklists)... 87 D.9 Steuerflussanalyse (en: Control Flow Analysis)...87 D.10 Analyse gemeinsamer Fehler (en: Common Cause Failure Analysis)... 87 D.11 Datenflussanalyse (en: Data Flow Analysis)... 88 D.12 Datenflussdiagramme (en: Data Flow Diagrams)... 88 D.13 Datenaufzeichnung und -analyse (en: Data Recording and Analysis)... 89 D.14 Entscheidungstabellen (Wahrheitstabellen) (en: Decision Tables (Truth Tables))... 89 D.15 Defensive Programmierung (en: Defensive Programming)... 90 D.16 Codierstandards und Formatanleitung (en: Coding Standards and Style Guide)... 91 D.17 Diversitäre Programmierung (en: Diverse Programming)... 91 D.18 Dynamische Rekonfiguration (en: Dynamic Reconfiguration)... 92 D.19 Tests auf Basis von Äquivalenzklassen und Eingangsdaten-Unterteilung (en: Equivalence Classes and Input Partitioning Testing)... 92 D.20 Fehlererkennende und -korrigierende Codes (en: Error Detecting and Correcting Codes)... 93 D.21 Fehlererwartung (en: Error Guessing)... 93 D.22 Fehlereinstreuung (en: Error Seeding)... 93 D.23 Ereignisbaumanalyse (en: Event Tree Analysis)... 94 D.24 Fagan-Inspektionen (en: Fagan Inspections)...94 D.25 Failure Assertion -Programmierung (en: Failure Assertion Programming)... 94 D.26 SEEA Softwarefehler-Auswirkungsanalyse (en: Software Error Effect Analysis)... 95 D.27 Fehlererkennung und Diagnose (en: Fault Detection and Diagnosis)... 95 D.28 Fehlerbaumanalyse (en: Fault Tree Analysis)...96 D.29 Finite-Zustandsmaschinen (FSM)/Zustands-Übergangsdiagramme (en: Finite State Machines/State Transition Diagrams)... 96 D.30 Formale Verfahren (en: Formal Methods)... 97 4
D.31 Formaler Nachweis (en: Formal Proof)... 102 D.32 Vorwärts-Regeneration (en: Forward Recovery)... 102 D.33 Abgestufte Funktionseinschränkungen (en: Graceful Degradation)... 102 D.34 Gefahren- und Operabilitätsstudie (HAZOP) (en: Hazard and Operability Study)... 103 D.35 Auswirkungsanalyse (en: Impact Analysis)... 104 D.36 Information-Hiding/Einkapselung (en: Information Hiding/Encapsulation)... 104 D.37 Schnittstellentests (en: Interface Testing)... 105 D.38 Untermenge der Programmiersprache (en: Language Subset)... 105 D.39 Aufzeichnung ausgeführter Fälle (en: Memorising Executed Cases)... 105 D.40 Bibliothek bewährter/verifizierter Komponenten (en: Library of Trusted/Verified Components)... 106 D.41 Markov-Modelle... 106 D.42 Metriken (en: Metrics)... 107 D.43 Modularer Ansatz (en: Modular Approach)... 107 D.44 Monte-Carlo-Simulation... 108 D.45 Leistungs-Modellierung (en: Performance Modelling)... 108 D.46 Leistungsanforderungen (en: Performance Requirements)... 109 D.47 Wahrscheinlichkeits-Tests (en: Probabilistic Testing)... 109 D.48 Prozesssimulation (en: Process Simulation)... 110 D.49 Prototyping/Animation... 110 D.50 Recovery Block... 111 D.51 Zuverlässigkeits-Blockdiagramme (en: Reliability Block Diagram)... 111 D.52 Antwortzeiten und Speichergrenzen (en: Response Timing and Memory Constraints)... 111 D.53 Re-Try Fault Recovery -Mechanismen (en: Re-Try Fault Recovery Mechanisms)... 112 D.54 Externe Überwachungseinrichtung (en: Safety Bag)... 112 D.55 Nebenpfadanalyse (en: Sneak Circuit Analysis)... 112 D.56 Software-Konfigurationsmanagement (en: Software Configuration Management)... 113 D.57 Streng typisierte Programmiersprache (en: Strongly Typed Programming Languages)... 113 D.58 Strukturabhängige Tests (en: Structure Based Testing)... 113 D.59 Strukturdiagramme (en: Structure Diagrams)... 114 D.60 Strukturierte Methodik (en: Structured Methodology)... 114 D.61 Strukturierte Programmierung (en: Structured Programming)... 118 D.62 Geeignete Programmiersprachen (en: Suitable Programming Languages)... 118 D.63 Symbolische Ausführung (en: Symbolic Execution)... 119 D.64 Zeit-Petri-Netze (en: Time Petri Nets)... 119 D.65 Betriebsbewährter Übersetzer (en: Translator Proven in Use)... 119 D.66 Walkthroughs/Entwurfsüberprüfungen (en: Walkthrouhgs/Design Reviews)... 120 D.67 Objektorientierte Programmierung (en: Object Oriented Programming)... 120 D.68 Verfolgbarkeit (en: Traceability)... 124 D.69 Statische Verifikation der Laufzeiteigenschaften durch abstrakte Interpretation (en: Static 5
Entwurf verification of runtime properties by abstract interpretation)... 124 D.70 Datenfluss (en: Dataflow)... 125 D.71 Metaprogrammierung (en: Metaprogramming)... 125 D.72 Prozedurale Programmierung (en: Procedural programming)... 126 D.73 Sequentielle Funktionslisten (en: Sequential Function Charts SFC)... 126 D.74 Kontaktplan (en: Ladder Diagram)... 126 D.75 Funktionsblockdiagramm (en: Functional Block Diagram)... 126 D.76 Zustandsliste oder Zustandsdiagramm (en: State Chart or State Diagram)... 126 D.77 Datenmodellierung (en: Data modelling)... 126 D.78 Kontrollflussdiagramm/Kontrollflussgraph (en: Control Flow Diagram/Control Flow Graph)... 127 D.79 Ablaufdiagramm (en: Sequence diagram)... 128 Literaturhinweise... 129 Bilder Bild 1 Software, Übersicht über das Vorgehen... 10 Bild 2 Unabhängigkeit und Kombination der Rollen in Bezug auf die Software- Sicherheitsanforderungsstufen... 19 Bild 3 Darstellung des Entwicklungs-Lebenszyklus 1... 23 Bild 4 Darstellung des Entwicklungs-Lebenszyklus 2... 24 Tabellen Tabelle 1 Beziehung zwischen Werkzeugklasse und anwendbarem Abschnitt... 36 Tabelle A.1 Fragen des Lebenszyklus und der Dokumentation (5.3)... 61 Tabelle A.2 Software-Anforderungsspezifikation (7.2)... 62 Tabelle A.3 Software-Architektur (7.3)... 63 Tabelle A.4 Software-Entwurf und -Implementierung (7.4)... 64 Tabelle A.5 Verifikation und Testen (6.2 und 7.3)... 65 Tabelle A.6 Software/Hardware-Integration (7.6)... 65 Tabelle A.7 Testen der Gesamtsoftware (6.2 und 7.7)... 65 Tabelle A.8 Software-Analysetechniken (6.3)... 66 Tabelle A.9 Software-Qualitätssicherung (6.5)... 66 Tabelle A.10 Software-Wartung (9.2)... 66 Tabelle A.11 Codierstandards... 67 Tabelle A.12 Dynamische Analyse und Testen... 67 Tabelle A.13 Funktions-/Black-Box-Tests... 68 Tabelle A.14 Text-Programmiersprachen... 68 Tabelle A.15 Diagrammartige Sprachen für Anwendungsalgorithmen... 69 Tabelle A.16 Modellierung... 69 Tabelle A.17 Leistungstests... 69 Tabelle A.18 Statische Analyse... 70 Tabelle A.19 Komponenten... 70 6
Tabelle A.20 Testabdeckung für Code... 71 Tabelle A.21 Objektorientierte Software-Architektur... 72 Tabelle A.22 Objektorientierter detaillierter Entwurf... 72 Tabelle B.1 Spezifikation der Rolle des Anforderungsmanagers... 73 Tabelle B.2 Spezifikation der Rolle des Entwerfers... 74 Tabelle B.3 Spezifikation der Rolle des Implementierers... 75 Tabelle B.4 Spezifikation der Rolle des Testers... 76 Tabelle B.5 Spezifikation der Rolle des Verifizierers... 77 Tabelle B.6 Spezifikation der Rolle des Integrators... 78 Tabelle B.7 Spezifikation der Rolle des Validierers... 79 Tabelle B.8 Spezifikation der Rolle des Gutachters... 80 Tabelle B.9 Spezifikation der Rolle des Projektmanagers... 81 Tabelle B.10 Spezifikation der Rolle des Konfigurationsmanagers... 81 Tabelle C.1 Zusammenfassung der Dokumentenkontrolle... 82 7