Sichtgraphen: Ein Konzept Zur Gezielten Untersuchung Von Kontrollflussstrukturen
Total Page:16
File Type:pdf, Size:1020Kb
Sichtgraphen: Ein Konzept zur gezielten Untersuchung von Kontrollflussstrukturen Der technischen Fakultät der Universität Erlangen-Nürnberg zur Erlangung des Grades D O K T O R – I N G E N I E U R vorgelegt von Stefan Goßens Erlangen, 2004 Als Dissertation genehmigt von der Technischen Fakultät der Universität Erlangen-Nürnberg Tag der Einreichung: 14. Mai 2004 Tag der Promotion: 15. Juli 2004 Dekan: Prof. Dr. Albrecht Winnacker Berichterstatter: Prof. Dr. Dr. h.c. Mario Dal Cin Prof. Dr.-Ing. habil. Fevzi Belli Kurzfassung Die vorliegende Arbeit beschreibt ein Konzept zur Abstraktion von Kontrollflussstrukturen, die Sichtgraphen, und mögliche Anwendungen. Viele Aufgabenstellungen der Informatik, speziell im Validierungs– und Verifikationsbereich, basieren direkt oder indirekt auf der Analyse von Kontrollflüssen. Oft interessieren dabei beson- ders bestimmte Aktionen im Kontrollfluss des Systems – beispielsweise Ein– und Ausgaben. Diese Aktionsmengen definieren eine Sicht auf den Graphen. Die möglichen Abfolgen der Ak- tionen werden im vorgestellten Ansatz kompakt als Sichtgraph repräsentiert, der so eine gezielte Abstraktion des Kontrollflussgraphen darstellt. Es gibt viele denkbare Anwendungen für Sichtgraphen. Die Arbeit stellt neben den Grundla- gen exemplarisch zwei spezielle Sichten vor, die Verhaltenssicht und die Zuverlässigkeitssicht. Dies sind die Sichten bezüglich der Ein– und Ausgabeanweisungen bzw. der Anweisungen, die zur Realisierung expliziter Fehlertoleranz dienen. Die entsprechenden Sichtgraphen sind Verhaltensgraphen und Zuverlässigkeitsgraphen. Verhaltensgraphbasierte Metriken können zur Bewertung von Testfallmengen dienen. In der Arbeit wird eine solche Kenngrösse, die Verhaltensdiversität, vorgestellt. Ein Ansatz zur Mo- dellierung der Fehleraufdeckungsfähigkeiten von Programmen wird entwickelt und in einer experimentellen Untersuchung der Verhaltensdiversität benutzt. Anhand der Zuverlässigkeitssicht lässt sich die Fehlertoleranzarchitektur eines Systems prüfen. Die Arbeit betrachtet ein entsprechendes Verfahren. Zusätzlich wird ein an Sichtgraphen angelehntes Konzept zum Entwurf von Tests aus automa- tenbasierten Spezifikationen beschrieben. Abstract The thesis describes a concept for the abstraction of control flow graphs, view graphs, and some of its possible applications. Many computer science applications, especially in validation and verification, are directly or indirectly based on control flow analysis. Often, certain actions in the control flow are of special interest – e.g. input and output actions. These actions define a view of the graph. Their possible sequences are represented as view graphs in the presented approach, which are view–focused abstractions of the control flow graph. There are many imaginable applications for view graphs. The thesis introduces the basic con- cepts as well as two special views, behavioural view and reliability view. These are the views with respect to input and output statements resp. the statements that constitute explicit fault tolerance mechanisms. The corresponding view graphs are behavioural graphs and reliability graphs. Metrics based on behavioural graphs can serve as a basis of test case evaluations. This thesis in- troduces such a metric, behavioural diversity. An approach for modeling fault detection abilities of programs is developed and used in an experimental evaluation of the metric. Using reliability graphs, the fault tolerance architecture of a system can be examined and veri- fied. The thesis describes a corresponding approach. Additionally, a concept similar to the view–graph approach to generate test designs is presented. Dank Für Betreuung, gute Zusammenarbeit und Begutachtung danke ich Prof. Dr. Dr. h.c. Dal Cin. Bei Prof. Dr.–Ing. habil. Fevzi Belli bedanke ich mich für die Übernahme des Zweitgutachtens und die besonders freundliche Unterstützung. Neben den genannten haben auch andere Menschen durch fachliche Diskussion, konstruktive Kritik und/oder Ermutigung zur Entstehung der Arbeit beigetragen. Für diese oft nur kurzen, aber manchmal entscheidenden, Gespräche danke ich: Dipl.–Math. Martin Becker–Wennecker, Dr. Yunja Choi, Prof. Dr. Jürgen Ebert, Prof. Dr. Klaus Echtle, Prof. Dr.–Ing. Wolfram Glauert, Dipl.–Ing. Werner Haas, Dr.–Ing. Ulrich Heinkel, Prof. Dr.–Ing. Ulrich Herzog, Dr. Markus Jochim, Dr.–Ing. Roman König, Dr.–Ing. David Kreische, Dr. Raymond Paul, Prof. Dr. Francesca Saglietti, Dr.–Ing. Volkmar Sieh, Dr.–Ing. habil. Bernd Straube und Dr. Andreas Winter. Mein besonderer Dank gilt M.Sc. (mult.) Fangfang Wang für die umfassendste Unterstützung, die denkbar ist. Inhaltsverzeichnis 1 Einführung 1 1.1 Black-Box und White-Box-Perspektiven . 1 1.2 Umfang und Beitrag dieser Arbeit . 2 1.3 Kapitelübersicht . 3 2 Verhaltensgraphen und Sichtgraphen 5 2.1 Abstraktion von Verhaltensstrukturen . 7 2.1.1 Berechnung von Verhaltensgraphen . 8 2.1.2 Sichtgraphen . 10 3 Verhaltensgraphen und Testfallmengenbewertung 11 3.1 Strukturbasierte Kontrollflussmetriken . 12 3.2 Verhaltensdiversität . 14 3.3 Fehleraufdeckungsmodellierung . 15 3.3.1 Fehlerentstehung und Fehleraufdeckung . 16 3.3.2 Fehleraufdeckungshäufigkeiten und -wahrscheinlichkeiten . 19 3.4 Validierungsexperiment . 23 3.4.1 Das Werkzeug proggen . 23 3.4.2 Das Experiment . 28 3.4.3 Parameterauswahl . 34 3.4.4 Ergebnisse . 36 3.5 Diskussion . 40 4 Sichtgraphen und Architekturuntersuchung 47 4.1 Fehlertoleranzstrukturen . 47 4.2 Zuverlässigkeitssicht . 50 4.3 Pfade als Suchmuster . 51 4.4 Strukturanalyse mit mcana und SMV . 52 4.4.1 Das Werkzeug mcana . 53 4.4.2 Pfadsuche . 53 4.4.3 Fallbeispiel . 54 4.5 Diskussion . 61 5 Unterstützung beim Testentwurf 63 5.1 Rechnergestütztes Testen . 63 i Inhaltsverzeichnis 5.2 Generierung von Testentwürfen aus Spezifikationsautomaten . 64 5.2.1 ADeVA . 65 5.2.2 Generierung von Testentwürfen . 67 5.3 Testpfadgenerierung mit Guwen . 69 5.3.1 Umformung von ADeVA–Tabellen in SMV–Modelle . 69 5.3.2 CTL–Formeln und Pfadbestimmung . 72 5.3.3 Interpretation der SMV–Ergebnisse . 72 5.4 Diskussion . 74 6 Perspektiven 77 6.1 Sichtgraphen als Automaten: Sichttypen . 77 6.2 Numerische Analyse . 81 6.2.1 Zeitbehaftete Verhaltensgraphen . 81 6.2.2 Zuverlässigkeitsparameter . 81 6.3 Erweiterte Architekturuntersuchung . 82 6.4 Verwandte Techniken . 82 Literaturverzeichnis 85 Schriftenverzeichnis 90 A Programme der Voruntersuchung 93 B Listen der Sprungbefehle und E/A–Routinen 97 C SMV-Lauf 101 ii Abbildungsverzeichnis 2.1 Beispiel eines Kontrollflussgraphen . 6 2.2 Black-Box-Sicht eines Systems . 6 2.3 Verhaltensgrapherzeugung . 8 3.1 Strukturelemente in proggen-Kontrollflussgraphen . 24 3.2 Von proggen erzeugter Kontrollflussgraph . 26 3.3 Von proggen generiertes Pseudoprogramm . 27 3.4 Von proggen erzeugter Verhaltensgraph . 28 3.5 Von proggen erzeugter Pfad im Kontrollflussgraph und Verhaltensgraph . 29 3.6 Programmgrösse gegen E/A-Prozentanteile . 33 3.7 Programmgrösse gegen E/A-Prozentanteile (Ausschnitt) . 34 3.8 Programmgrösse gegen Verzweigungs-Prozentanteile . 35 3.9 Programmgrösse gegen Verzweigungs-Prozentanteile (Ausschnitt) . 35 ¢¡ min 3.10 f £ nach Verteilung nichtaufdeckende/aufdeckende Ausgabeanweisungen und Häufigkeitsobergrenzen (1) . 42 ¢¡ min 3.11 f £ nach Verteilung nichtaufdeckende/aufdeckende Ausgabeanweisungen und Häufigkeitsobergrenzen (2) . 43 min 3.12 Verzweigungsabdeckung/f £ nach Verteilung nichtaufdeckende/aufdeckende Ausgabeanweisungen und Häufigkeitsobergrenzen (3) . 44 min 3.13 Verzweigungsabdeckung/f £ nach Verteilung nichtaufdeckende/aufdeckende Ausgabeanweisungen und Häufigkeitsobergrenzen (4) . 45 4.1 Recovery Block–Modul . 49 4.2 MVP–Modul . 49 4.3 Gemischte Fehlertoleranzarchitektur . 50 4.4 Kontrollflüsse Recovery Block und Multiversion Programming . 51 4.5 Geschachtelte Zuverlässigkeitsmuster . 52 4.6 Untersuchtes Programm . 55 4.7 Kontrollflussgraph des untersuchten Programms . 56 4.8 Zuverlässigkeitsgraph . 58 4.9 SMV–Eingabe . 58 4.10 Entwurfsfehler (1) . 59 4.11 Zuverlässigkeitsgraph nach Änderung (1) . 59 4.12 Entwurfsfehler (2) . 60 4.13 Zuverlässigkeitsgraph nach Änderung (2) . 61 iii Abbildungsverzeichnis 5.1 Mode Transition Table für Signal current mode . 66 5.2 Data Transformation Table für Signal byteMON . 66 5.3 SMV–Modell für ADeVA–Tabelle aus Abbildung 5.1 . 71 5.4 Testentwürfe . 73 6.1 Erzeugung von Kontrollflussautomaten aus Kontrollflussgraphen . 79 6.2 Automat und Typ zum Verhaltensgraph aus Kapitel 2 . 79 iv Tabellenverzeichnis 3.1 Pakete der Vorstudie . 32 3.2 Ergebnisse nach Häufigkeitsobergrenzen . 36 3.3 Ergebnisse nach Anteil potenziell fehlerhafter E/A-Anweisungen (1) . 38 3.4 Ergebnisse nach Anteil potenziell fehlerhafter E/A-Anweisungen (2) . 39 v Tabellenverzeichnis vi 1 Einführung Der Verhaltensbegriff wird zum Beginn des 20. Jahrhunderts durch den Behaviorismus wis- senschaftlich konkretisiert. Dessen Gegenstand ist die Analyse des manifesten, beobachtbaren (menschlichen) Verhaltens, basierend auf Reiz-Reaktions-Schemata. Im Rahmen dieser Inter- pretation des Verhaltensbegriffs werden die Termini Stimulus-Response-Modell (S-R-Modell) und Black-Box-Modell geprägt. In späteren Entwicklungen konkretisieren sich die Begriffe „Sti- mulus“ und „Response“ auf physiologische (und damit letztlich physikalische) Begrifflichkei- ten, was sich auch terminologisch im neueren Begriff Rezeptor-Effektor-System niederschlägt.1 Betrachtung und Bewertung von Ingenieurskonstruktionen basieren üblicherweise auf diesem Modell. Dessen Übernahme in die Ingenieurwissenschaften und speziell die Elektrotechnik lässt sich mindestens bis in die vierziger