Programmanalysen Zur Verbesserung Der Softwaremodellprprotect {Grmnu@D 1Ex{Setbox Z@ Hbox {Char 127}Dimen@ -.45Exadvance Dimen@
Total Page:16
File Type:pdf, Size:1020Kb
Martin{Luther{Universitat¨ Halle{Wittenberg Naturwissenschaftliche Fakultat¨ III Institut fur¨ Informatik Lehrstuhl fur¨ Software{Engineering und Programmiersprachen Programmanalysen zur Verbesserung der Softwaremodellprufung¨ Dissertation eingereicht am : 07.11.2011 von : Dirk Richter geboren am 7. Juni 1981 in Halle (Saale) 1. Gutachter : Prof. Dr. Wolf Zimmermann 2. Gutachter : Univ.-Prof. Dr. Jens Knoop Verteidigungsdatum : 31.01.2012 Stichworte: symbolisches Kellersystem (SPDS), Modellreduktion, Modellanalyse, Modellprufung¨ Kurzfassung Kaum eine heutige Software ist fehlerfrei. Mit Softwaremodellprufung¨ 1 k¨onnen Eigenschaften der Software wie Korrektheit formal nachgewiesen werden. Ein solcher Korrektheitsnachweis ist beim Testen der Software nicht m¨oglich, wenn die Software entsprechend komplex ist. Durch Testen kann dann nur die Anwesenheit von Fehlern festgestellt werden. Die Modellprufung¨ ist im Gegensatz zum Testen sehr viel aufw¨andiger, was den Einsatz der Modellprufung¨ in der Praxis erschwert. Program- me einer turingm¨achtigen Programmiersprache zu verifizieren (Halteproblem), ist nicht m¨oglich. Sie werden daher bei der Modellprufung¨ zu Modellen vereinfacht [220]. Als Modelle werden endli- che Automaten, Kripkestrukturen, Petri-Netze oder Kellersysteme (engl. Pushdown System, PDS) verwendet. Kellersysteme z.B. sind derartig pr¨azise, dass damit eine ISO-C kompatible Semantik (insb. Rekursion) von C-Programmen nachbildet werden kann [70]. Sie dienen darum als Modelle fur¨ die Untersuchungen in dieser Arbeit, da sie außerdem zu weniger Fehlalarmen fur¨ sequentielle Programme fuhren¨ als andere Modelle. Pr¨azise Modelle fuhren¨ i.d.R. zu komplexeren Modellen. Verhaltensbeschreibungen bzw. Modelle zu vereinfachen, ohne dabei aber die Pr¨azision des Modell- prufung¨ sprozesses zu verlieren, ist eines der Ziele dieser Arbeit. Die Modellprufung¨ wird durch die sehr große Anzahl m¨oglicher Modellzust¨ande erschwert (Zu- standsraumexplosion [81, 183]). In dieser Arbeit wurden daher vorrangig Verfahren entwickelt, um die Modellprufung¨ von Kellersystemen durch eine a priori Zustandsraumverkleinerung zu beschleu- nigen. Der Speicherverbrauch und die Laufzeit von Modellprufern¨ werden dabei derart reduziert, dass Modelle, die wegen bisheriger Speicheruberl¨ ¨aufe und Zeituberschreitungen¨ nicht uberpr¨ uft¨ werden konnten, teilweise nun prufbar¨ werden. Es wird in dieser Arbeit gezeigt, dass und welche Modellanalysen dazu genutzt werden k¨onnen, um die Modellprufung¨ symbolischer Kellersysteme in dieser Hinsicht zu verbessern. 1Im Folgenden auch kurz als Modellprufung¨ bezeichnet. Kursiv hervorgehobene Worte finden sich im Schlagwort- verzeichnis. Seite 2 Programmanalysen zur Verbesserung der Softwaremodellprufung¨ Erkl¨arung Hiermit erkl¨are ich, dass ich diese Dissertation selbst¨andig und ohne fremde Hilfe verfasst, andere als die von mir angegebenen Quellen und Hilfsmittel nicht benutzt und die den benutzten Werken w¨ortlich oder inhaltlich entnommenen Stellen als solche kenntlich gemacht habe. gez. Dirk Richter Halle (Saale), den 17. Februar 2012 Programmanalysen zur Verbesserung der Softwaremodellprufung¨ Seite 3 Seite 4 Programmanalysen zur Verbesserung der Softwaremodellprufung¨ Inhaltsverzeichnis 1. Einleitung 7 1.1. Zielsetzung und Motivation...............................7 1.2. Vorgehensweise...................................... 13 2. Verwandte Arbeiten 15 2.1. Techniken zur Modelloptimierung............................ 18 2.1.1. Vereinfachung von Ausdrucken¨ ......................... 19 2.1.2. Slicing und Lebendigkeit............................. 19 2.1.3. Elimination unwichtiger Variablen....................... 19 2.1.4. Verkleinerung von Variablentypen....................... 20 2.2. Fazit............................................ 20 3. Modellprufung¨ 21 3.1. Kellersystem....................................... 21 3.2. Symbolisches Kellersystem................................ 23 3.2.1. Syntax....................................... 24 3.2.2. Semantik..................................... 28 3.2.3. Beschr¨ankungen................................. 31 3.3. Modellprufung¨ von Kellersystemen........................... 32 3.3.1. Analyse des Verhaltens von Kellersystemen.................. 32 3.3.2. Erreichbarkeitsproblem .............................. 34 3.3.3. Temporale Formeln................................ 35 3.3.4. Modellprufung¨ temporaler Formeln....................... 37 3.3.5. Korrektheit von Modelltransformationen .................... 37 4. Modellreduktionstechniken 43 4.1. Beschreibung und Eigenschaften von Modellreduktionstechniken.......... 43 4.2. Modelltransformationen fur¨ SPDS-Erweiterungen................... 44 4.3. Untersuchte Modellreduktionen............................. 45 4.3.1. Ausdrucksvereinfachung............................. 45 4.3.1.1. Motivation............................... 45 4.3.1.2. Notwendige abstrakte Informationen................. 46 4.3.1.3. Einsetzbare Programmanalysen und Werkzeuge bzw. Techniken. 48 4.3.1.4. Modellanalysebeispiele......................... 51 4.3.1.5. Modellreduktion............................ 65 4.3.1.6. Eigenschaften............................. 66 4.3.1.7. Zusammenfassung........................... 67 4.3.2. Modellbeschneidung............................... 68 4.3.2.1. Motivation............................... 68 4.3.2.2. Notwendige abstrakte Informationen................. 70 4.3.2.3. Einsetzbare Programmanalysen .................... 71 4.3.2.4. Modellanalysebeispiel......................... 72 4.3.2.5. Modellbeschneidung Tslice ...................... 73 4.3.2.6. Eigenschaften............................. 76 4.3.2.7. Zusammenfassung........................... 77 4.3.3. Prozeduruberbr¨ uckung¨ .............................. 78 4.3.3.1. Motivation............................... 78 Inhaltsverzeichnis 4.3.3.2. Notwendige abstrakte Informationen................. 80 4.3.3.3. Einsetzbare Programmanalysen .................... 82 4.3.3.4. Modellanalysebeispiele......................... 83 4.3.3.5. Prozeduruberbr¨ uckung¨ Tskip ..................... 87 4.3.3.6. Eigenschaften............................. 88 4.3.3.7. Zusammenfassung........................... 89 4.3.4. Variablenredundanzelimination......................... 90 4.3.4.1. Motivation............................... 90 4.3.4.2. Notwendige abstrakte Informationen................. 92 4.3.4.3. Einsetzbare Programmanalysen .................... 97 4.3.4.4. Modellanalysebeispiele......................... 99 ∗ 4.3.4.5. Redundanzelimination Tomit(Telim(TR(S)))............. 104 4.3.4.6. Eigenschaften............................. 109 4.3.4.7. Zusammenfassung........................... 111 4.3.5. Wertebereichsreduktion ............................. 112 4.3.5.1. Motivation............................... 112 4.3.5.2. Notwendige abstrakte Informationen................. 113 4.3.5.3. Einsetzbare Programmanalysen .................... 114 4.3.5.4. Modellanalysebeispiel......................... 114 4.3.5.5. Wertebereichsreduktion Tmin ..................... 115 4.3.5.6. Eigenschaften............................. 117 4.3.5.7. Zusammenfassung........................... 119 4.4. Modellreduktionsreihenfolge............................... 120 5. Experimente 123 5.1. Eingriff in die gew¨ahlte Modellprufkette¨ von Moped................. 123 5.2. Remopla - Beschreibungssprache fur¨ SPDS ...................... 123 5.3. Rahmenbedingungen................................... 124 5.4. Ergebnisse......................................... 125 6. Zusammenfassung 129 7. Ausblick 131 A. Abkurzende¨ Schreibweisen fur¨ SPDS 133 B. Beweise wichtiger Aussagen 145 Literaturverzeichnis 161 Abbildungsverzeichnis 181 Tabellenverzeichnis 183 Quellcodeverzeichnis 185 Seite 6 Programmanalysen zur Verbesserung der Softwaremodellprufung¨ 1. Einleitung 1.1. Zielsetzung und Motivation Modellprufung¨ und deren Verwendung. H¨aufige Fehlerkorrekturen und Sicherheitswarnungen aktueller Softwareprojekte (z.B. Internet-Browser, Betriebssysteme) zeigen, dass Software meist nicht fehlerfrei ist. Um diesen Umstand zu verbessern, k¨onnen verschiedene Methoden eingesetzt werden. Eine davon ist Software-Modellprufung¨ 1. Bei der Software-Modellprufung¨ geht es allgemein um die Frage, ob ein gegebenes System M eine Menge von Eigenschaften E erfullt¨ (siehe Abbildung 1.1), d.h. dass es in keiner Ausfuhrung¨ zu einem definierten Fehlverhalten bezuglich¨ E kommt. M ist ublicherweise¨ als ein Zustands-Transitions-System und E als eine Menge von Formeln einer temporalen Logik gegeben. Modellprufung¨ fur¨ Hardware ist derart erfolgreich, dass alle großen Chiphersteller diese zum zentralen Bestandteil bei der Qualit¨atssicherung gemacht haben [156]. Modellprufung¨ von Software zur Steigerung der Softwarequalit¨at ist ebenfalls bereits im Einsatz, wie die Projekte JavaPathFinder (NASA) [131], SMV [128] oder Moped [122] zeigen. So werden bereits z.B. Kfz-Steuerungen [187], Programme fur¨ Microkontroller [209], Ger¨atetreiber [171, 188], Dateisysteme [255,7], Netzwerk Filterlogik [44], diverse Protokolle [132] oder Serveranwendungen [133] mittels Modellprufung¨ verifiziert. Allerdings sind die derzeit verfugbaren¨ Modellprufer¨ noch nicht in der Lage, den Quelltext komplexer Softwareprojekte ad¨aquat selbst¨andig und automatisiert zu uberpr¨ ufen.¨ So wird der Validierungs- und Verifikationsphase bei der Entwicklung eingebetteter Systeme (wie in der Raumfahrt oder im medizinischen Bereich), 50%-70% der Projektressourcen zugeschrieben [206]. Grunde¨ fur¨ Modellprufung.¨ Dennoch