Zertifizierung von Codegeneratoren
Transcription
Zertifizierung von Codegeneratoren
Zertifizierung von Codegeneratoren - Probleme und Lösungsmöglichkeiten Dr.-Ing. Ingo Stürmer Model Engineering Solutions, Berlin DGLR Workshop: Zertifizierung von generierter Software für Luft- und Raumfahrtsysteme 11. Okt. 2006, München Überblick Motivation Modell-basierte Codegenerierung Codegenerator Zertifizierungsaspekte Zertifizierung von Codegeneratoren Tool-Qualifizierung aus Sicht der DO-178B (2) Tool-Zertifizierung aus Sicht der IEC 61508 (1) Erfahrungen aus dem Automobilbereich (Lessons Learned) Î Einsatz CG für Seriencodegenerierung Lösungsmöglichkeiten Zusammenfassung und Ausblick Ingo Stürmer 2 Motivation: Modell-basierte Entwicklung Paradigmenwechsel in der Entwicklung eingebetteter Software Modell-basierte Entwicklung Zertifizierung von Codegeneratoren  Durchgängiger Einsatz von Modellen für Spezifikation, Design und Implementierung MATLAB/Simulink und -/Stateflow de-facto Modellierungsstandard Übergang von manueller Implementierung zur modell-basierten Codegenerierung Deutliche Effizienzgewinne in der Software-Implementierungsphase Konsequenter Einsatz von Optimierungstechniken zur Steigerung der Codeeffizienz erforderlich Ingo Stürmer 3 Modell-basierte Codegenerierung Zertifizierung von Codegeneratoren Physikalisches Modell (PM) Floating Point Entwicklungsrechner Compiler (Linker) Codegenerator Implementierungsmodell (IM) Fixed-point Autocode Eingebettetes System Cross-Compiler (Linker / Loader) Autocode Tool-Kette Ingo Stürmer 4 Modell-basiertes Testen von Autocode Zertifizierung von Codegeneratoren Übersetzung Modell in Autocode dann korrekt, wenn Autocode gleiches Ausführungsverhalten wie Modell zeigt („Funktionale Äquivalenz“) Dynamisches Prüfverfahren (Modell-basierter Back-to-Back Test) Testmodell Model-in-the-Loop (MiL) Test output o(t)Model Simulation Testvektor i(t) ? Codegenerator ≈ (Autocode Tool-Kette) ; : Ausführung Autocode Test output o(t)Code Software-in-the-Loop (SiL) + Processor-in-the-Loop (PiL) Ingo Stürmer 5 Codegenerator Zertifizierungsaspekte Codegenerator Zertifizierung (+Tool-Kette) Zertifizierung von Codegeneratoren Erhoffte Vorteile beim Einsatz eines (zertifizierten) Codegenerators: Höhere Qualität des generierten Codes (Fehleranzahl, Lesbarkeit, Traceability) gegenüber manuell erstellten Code Einheitliches Qualitätsniveau des Codes Konsistenz zwischen Spezifikation und Software Wiederverwendung der ausführbaren Spezifikationen in Folgeprojekten Reduzierung von V&V-Aktivitäten Eigenentwicklung von Software in Organisationen/Abteilungen ohne ausreichende Anzahl von Implementierungs-Spezialisten Effizientere Durchführung der Implementierungsphase in der SWEntwicklung V&V… Verifikation & Validation Ingo Stürmer 7 Zertifizierung Unter Zertifizierung wird im Allgemeinen die “Bewertung” (rechtliche Anerkennung) eines Produktes oder Prozesses durch eine unabhängige, offizielle Organisation oder Institution verstanden. Î Zertifizierung von Codegeneratoren An Stelle von “Bewertung” werden häufig die verwandten Begriffe Zulassung, Qualifizierung oder sonstige vertrauensbildende Maßnahmen verwendet. Eine Zertifizierung hat zweierlei Funktionen: Der Kunde darf darauf vertrauen, dass das Produkt nach relevanten Standards entwickelt und geprüft wurde 2. Der SW- Lieferant bekommt eine unabhängige Zusicherung, dass die Techniken, die für die Produktentwicklung und –prüfung eingesetzt wurden, den jeweiligen Anforderungen an die Sicherheit des Produktes entsprechen. 1. Wesentliche Zertifizierungsstandards für Luftfahrt und Automobilbereich: DO-178B (Luftfahrzeugindustrie) Î IEC 61508 (Automobilindustrie) Î Ingo Stürmer 8 DO-178B Zertifizierung von Codegeneratoren Internationaler Avionics Standard RTCA/DO-178B (Software Considerations in Airborne Systems and Equipment Certification Requirements) ist ein Prozess-Standard, dessen Einhaltung für die Luftfahrzeugindustrie obligatorisch ist! Ziel der Zertifizierung im Sinne der DO-178 B ist es sicherzustellen, dass die Softwareanteile des Systems (1) safe und (2) airworthy sind. Daher muss Software je nach den Software Zertifizierungsrichtlinien entwickelt werden, die der jeweiligen Kritikalitätsstufe entsprechen. Software kann nur zusammen mit dem Zielsystem, auf dem die Software laufen soll, zertifiziert werden!!! Ingo Stürmer 9 DO-178B - Qualifizierung Zertifizierung von Codegeneratoren Qualifizierung bezeichnet den erforderlichen Prozess zum Erhalt von Zertifizierungserleichterungen für ein Software-Werkzeug im Kontext eines spezifischen flugzeuggestützten Systems. Dies beinhaltet die “Bewertung” (engl. Assessement) des Werkzeugs im Hinblick auf Konformität zur DO-178B. Eine Qualifizierung geht immer der Zertifizierung voraus, muss aber nicht im Zusammenspiel mit dem Zielsystem durchgeführt werden! (Im Falle der CG Toolkette problematisch) Qualifizierung gilt nur im Zusammenhang mit dem zu zertifizierenden System (daher oft der Begriff “qualifizierbarer” CG, siehe z.B. VAPS QCG) Im Gegensatz zur Zertifizierung wird die Qualifizierung eines Produktes oder Prozesses gefordert, wenn Teile des Entwicklungsprozesses durch ein Werkzeug (1) eliminiert, (2) reduziert oder (3) automatisiert werden, ohne dass die Ausgaben des Werkzeugs (z.B. generierter Code) nicht wie im Standard gefordert verifiziert werden. Ingo Stürmer 10 DO-178B – Qualifizierung (Forts.) Zertifizierung von Codegeneratoren DO-178B unterscheidet zwei zu qualifizierende Werkzeugtypen:  Software Entwicklungswerkzeuge: Ausgaben von Entwicklungswerkzeugen sind Teil des Zielsystems und können somit potentiell Fehler einbringen (Code Generator, Compiler, Bibliotheken, Bertriebssystem).  Software Verifikationswerkzeuge: können selbst keine Fehler aus das Zielsystem einbringen, aber diese übersehen (Simulator, Emulatoren, Testdaten Generatoren). Wann ist Qualifizierung erforderlich? Kann Werkzeug Fehler In Airbone Software einbringen? Nein Ingo Stürmer Ja Werden die Ausgaben des Werkzeug NICHT wie in DO-178B spezifiziert verifiziert? Keine Qualifizierung erforderlich Nein Ja Werden Prozesse der DO-178B durch Werkzeug eliminiert, reduziert oder automatisiert? Nein Ja Qualifizierung erforderlich 11 Probleme bei der Tool-Qualifizierung (DO-178B) Zertifizierung von Codegeneratoren Aus der Sicht des Managers oder Tool Herstellers : Î Hohe Kosten Qualifizierung Development Tool signifikant höher als Verifcation Tool [Pot04] Beispiel: Kostenkalkulation von [San02] für GNAT ADA95 Compiler (625 KLOC) allein für MC/DC Coverage beläuft sich auf 58 Personenjahre. Unzureichende Regulierungen für Qualifizierung Î Verwendete Tools liefern häufig nicht ausreichende Daten, die aber vom Standard für Qualifizierung erfordert werden (Bsp.: MC/DC Coverage) Î Schwerpunkt des Herstellers liegt in der Entwicklung des Werkzeugs, nicht in dessen Qualifizierung Î Tool-Hersteller möchte kein wertvolles Know-how an andere weitergeben!! Î Aus technischer Sicht (nur einige Aspekte): Î Ein Werkzeug muss entsprechend der Kritikalitätsstufe der Software qualifiziert werden. Î Werkzeug läuft aber auf Host-PC und nicht auf dem Zielsystem Viele Aspekte der DO-178B daher nicht anwendbar Bei der Qualifizierung eines Codegen. werden Compiler nicht mit einbezogen Ingo Stürmer Ausgaben des Compilers muss zusätzlich überprüft werden (problematisch bei CrossCompilern) 12 IEC 61508 Zertifizierung von Codegeneratoren IEC 61508 (Functional Safety of Electrical/Electronic/Programmable Electronic Safety-related Systems) ist ein Safety-Standard für E/E/EPS, der z.B. in der Automobilindustrie für die Zertifizierung von sicherheits-relevanten, softwarebasierten E/E/EPS angewendet wird.  Besteht aus sieben Hauptteilen  Teil 1-3: Anforderungen an E/E/EPS  Teil 4-7: Erläuterungen zu Teil 1-3  Basiert auf dem Konzept der Safety-Integrity Levels (SIL 1-4)  Je höher der Level, desto höher die Auswirkungen auf System-Sicherheit  Z.B. SIL 4 enstpricht Anforderungen an Software-Anteile für z.B. „X-by-Wire“ Systeme, dessen Fehlverhalten katastrophale Auswirkungen auf Mensch, Umwelt oder das System selbst haben könnte Ingo Stürmer 13 IEC 61508: Zertifizierung Zertifizierung von Codegeneratoren Zertifizierung wird nicht explizit im Standard erwähnt Im Sinne der IEC 61508 muss Software „zugelassen“ (assessed) werden Î Anerkannte Zulassungsstellen: TÜV (DEU), Factory Mutual (USA) Î Compiler Assessment ist auf zwei Arten möglich: Zertifizierung (z.B. auf Basis des Sprachstandards) Î Problematisch bei Simulink und Stateflow 2. „Increased Confidence from Use“ Î Korrektes Arbeiten des Werkzeugs wurde im mehreren Projekten nachgewiesen (setzt stabile Tool-Version voraus) Î Compiler Assessment erfolgt NICHT im Bezug auf Safety! 1. „Fitness for Purpose“ „Tool is fit for intended purpose“ (z.B. durch „existence of conclusive evidence for correct code generation“) Î Siehe z.B. ASCET-SD Codegen. („Fitness for Purpose“ nach SIL3) Î Werkzeug-Zertifizierung nach Teil 1 und 3 der IEC 61508 möglich (siehe SCADE KCG) Ingo Stürmer 14 Probleme bei der Zertifizierung nach IEC 61508 Aus der Sicht des Managers oder Tool Herstellers : Î Zertifizierung von Codegeneratoren Siehe Probleme DO-178 B Aus technischer Sicht: Î Siehe Probleme DO-178 B Ingo Stürmer 15 Erfahrungen aus dem Automobilbereich Einsatz eines Codegenerators für Seriencodegenerierung Ein „typisches“ Flowchart [SCFD06] Zertifizierung von Codegeneratoren AND bitwise [ (BEEP_fla g_beep) & (runs > 0) ] { runs= 1; counter= 0; } Counter dependent of processors‘ execution speed [ runs > 0 ] { counter++; } Local SF variable implemented as global variable [ counter > t_tOn ] { { BEEP_flag_buz zer= 1 ; } BEEP_flag_buz zer= 0; } [ counter > (t_tOn + t_tOff) ] { counter= 0; runs++; } [ runs > 2 ] { runs= 0; } Ingo Stürmer Only 20 LOC !!! 17 Die „bessere“(?) Stateflow Variante [SCFD06] Zertifizierung von Codegeneratoren  Clearer than flowchart variant  Independent of processor’s execution speed (standardized event: CLK) • • Use of temporal logic Problem: more code cause by use of events  Parameterization possible (e.g. double beep)  120 LOC (due to use of events and states)  A compromise between meaningful modeling and code efficiency must be found! Ingo Stürmer 18 Kriterien für den erfolgreichen Einsatz eines Codegenerators Anforderung an den Tool-Hersteller: Î Î Î Î Î Zertifizierung von Codegeneratoren CG-Version stabil CG systematisch geprüft (zertifiziert) Gute Dokumentation des CG Sorgfältige Dokumentation der Fehler und Patches Effiziente Behebung von Fehlern/Problemen mit dem Tool Anforderungen an den Codegenerator: CG systematisch geprüft (z.B. durch Testuite) Î Semantikerhalt bei der Übersetzung der Modellierungssprache in Code Î Modellierungssprache weit verbreitet Î Anforderung an den Modellierer (im Hinblick auf Seriencode): Beherrschung der Modellierungssprache(n) Simulink, Stateflow + Modellierungssprache des Codegenerators (z.B. TargetLink Blockset, Lustre) Î Beherrschung des Codegenerators Î Kenntnis von Programmiersprache, Betriebssystemen (allg.), Hardware-Aspekten Î … Î Ingo Stürmer 19 Lessons Learned (Einsatz eines Codegenerators) Zertifizierung von Codegeneratoren KEIN PUSH-BUTTON Ansatz (für Seriencode) Expertenwissen wird benötigt Î Im Allgemeinen: Eine gutes Physikalisches Modell ≠ gutes Implementierungsmodell !!! Effizienz des Codes hängt im wesentlichen von der geeigneten Modellierung ab Î Lösung: Kompromiss zwischen Codeeffizienz und verständlicher Modellierung finden! Î Der generierte Code hat Overhead zu handgeschriebenen Code, bei: Ungeeigneter Modellierung Î Falscher Anwendung (Konfiguration) des Codegenerators Î Codegenerator erzeugt (eher selten) fehlerhaften oder ineffizienten Code Î Ingo Stürmer 20 Lösungsmöglichkeiten Autocode Validierungs-Testsuite (AVS) Zertifizierung von Codegeneratoren Zertifzierung eines Compiler über Testsuite für ADA und C Compiler erfolgreich eingesetzt Konformitätstest im Hinblick auf ADA und ISO C Standard Î Dies ist aber keine Zertifizierung nach DO-178B! Î Problem bei Codegenerator: Î Sprachstandard für SL/SF nicht publiziert (und teilweise bestimmt durch Ausführungsumgebung) Derzeitig Initiative von Automobilherstellern zur Validierung von TargetLink über AVS Testsuite Konsortium führender, deutscher Automobilhersteller und Zulieferern Î Testsuite bestehend aus allg., öffentlichen Teil + kundenspezifische Modelle (nicht-öffentlich) Î Wissenschaftliche Grundlagen für CG Testverfahren inkl. Fallstudien in [Stü06], [SC05] fundiert Î Testumgebung und Modellgenerator für Codegenerator-Validierung vorhanden Ingo Stürmer 22 Vorteile der CG Zertifizierung über AVS Zertifizierung von Codegeneratoren Allgemeiner Konsens über Inhalte des Testsuite Î Gilt nur wenn öffentlich und werkzeugübergreifend Semantik kann impliziert definiert werden Safeguarded Subset kann incrementell erweitert werden Kostengünstige Möglichkeit zur Tool-Zertifizierung „Delta-Certification“ (Modifikationen, Patches des CG) wird unterstützt Î Bei klassicher Zertifizierung eher schwierig Ingo Stürmer 23 (Idealerweise) Optimales Zusammenspiel der QA Aktivitäten [SCDF06] Zertifizierung von Codegeneratoren 5. Regression Testing 2. Testing 3. Static Analysis Development PC Compiler (Linker) 1. Model Review Code generator Implementation Model (IM) Fixed-point Autocode Embedded System Cross-Compiler (Linker / Loader) 6. Back-to-back Test (IM versus Autocode) Ingo Stürmer 4. Autocode Review 24 Zusammenfassung Zertifizierung von Codegeneratoren Tool-Hersteller: Zertifizierung eines Codegenerators sollte sorgfältig abgewogen werden Kunde: Nutzen eines zertifizierten Codegenerators sollte geklärt werden („nice-to-have“ oder „must-have“) Was kann ich durch den Einsatz eines zertifizierten CG einsparen? Î Kann ich z.B. auf Codeoptimierungen verzichten? Î Wichtig (aus persönliche Sicht): Wie ist das Zusammenspiel mit dem Tool-Lieferanten? Î Passt das Werkzeug zum eigenen SW- Entwicklungsprozess (muss ich Werkzeug oder Prozess anpassen) Î Optimales Zusammenspiel der QA-Aktivitäten Î Ingo Stürmer 25 Literatur Zertifizierung von Codegeneratoren [Pot04] Potter, B. “Use of the MathWorks Tool Suite to Develop DO-178B Certified Code.” Slide No. 13. Honeywell, May 2004 <http://faculty.erau.edu/ korn/ToolForum/potter.htm>. [San02] Santhanam, V.: The Anatomy of an FAA-Qualifiable Ada Subset Compiler, Proc. of the 2002 annual ACM SIGAda Int. Conference on Ada, Houston, Texas, USA, pp. 40-43, 2002. [SC05] I. Stürmer, M. Conrad, "Ein Testverfahren für Optimierende Codegeneratoren”, Informatik - Forschung und Entwicklung, Jun., 2005. [SCFD06] I. Stürmer, M. Conrad, I. Fey, H. Dörr, "Experiences with Model and Autocode Reviews in Model-based Software Development", Proc. of 3rd Intl. ICSE Workshop on Software Engineering for Automotive Systems (SEAS’06), Shanghai, China, May. 23, 2006. [Stü06] I.Stürmer, "Systematic Testing of Code Generation Tools – A Test Suiteoriented Approach for Safeguarding Model-based Code Generation", Dissertation, ProBusiness Verlag, Berlin, 2006. Ingo Stürmer 26 Kontakt Ingo Stürmer Zertifizierung von Codegeneratoren 27