Effizientes Model-Checking für CTL - Institut für Theoretische ...
Effizientes Model-Checking für CTL - Institut für Theoretische ...
Effizientes Model-Checking für CTL - Institut für Theoretische ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
6 Zusammenfassung und Ausblick<br />
Die Aufgabe dieser Diplomarbeit ist es, das <strong>Model</strong>-<strong>Checking</strong>-Problem <strong>für</strong> <strong>CTL</strong> auszuarbeiten.<br />
Als Erstes wurde der allgemeine <strong>Model</strong>-<strong>Checking</strong>-Prozess betrachtet, und dessen<br />
grundlegende Begriffe wurden eingeführt. Insbesondere wurde die Kripke-Struktur definiert,<br />
mit deren Hilfe endliche zustandsbasierte Systeme modelliert werden können.<br />
Anforderungen an die Systeme werden mittels einer Spezifikationssprache formalisiert.<br />
Im Rahmen dieser Arbeit wurde auf die temporale Logik <strong>CTL</strong> (Computation Tree Logic)<br />
näher eingegangen, die <strong>für</strong> die Spezifikation verwendet wird. Die theoretischen Grundlagen<br />
wurden anhand von Beispielen veranschaulicht.<br />
Ein weiteres Ziel besteht darin, die Komplexität des <strong>Model</strong>-<strong>Checking</strong>-Problems <strong>für</strong><br />
<strong>CTL</strong> zu untersuchen. Dieses Problem ist als P-vollständig bekannt ([CES86], [Sch02]).<br />
Es wird versucht, leichtere Teilprobleme zu finden, die effizienter zu lösen sind. Da<strong>für</strong><br />
wurde <strong>CTL</strong>pos , ein Fragment von <strong>CTL</strong>, betrachtet, in dem die Negation nicht auf die<br />
temporalen Operatoren angewendet werden darf. Außerdem werden nur bestimmte temporale<br />
Operatoren erlaubt.<br />
Weiterhin wurden zwei <strong>Model</strong>-<strong>Checking</strong>-Algorithmen vorgestellt, und zwar <strong>für</strong> <strong>CTL</strong><br />
allgemein und <strong>für</strong> <strong>CTL</strong>pos. Als praktischer Teil dieser Arbeit wurden sie in Java implementiert.<br />
Dabei wurde ein schon existierendes Programm erweitert, in dem die Datenstruktur<br />
<strong>für</strong> die Kripke-Struktur vorhanden war. Dieses Programm wurde <strong>für</strong> <strong>Model</strong>-<strong>Checking</strong> <strong>für</strong><br />
eine andere temporale Logik entwickelt. Deswegen wurden die Datenstrukturen <strong>für</strong> <strong>CTL</strong>und<br />
<strong>CTL</strong>pos-Formeln geschaffen. Die beiden Algorithmen haben polynomielle Laufzeit.<br />
Im Algorithmus <strong>für</strong> <strong>CTL</strong>pos musste man nichtdeterministisch eine Entscheidung treffen.<br />
Dies wurde dadurch ersetzt, dass alle in Frage kommenden Möglichkeiten der Reihe<br />
nach untersucht wurden, bis eine Lösung gefunden wurde. Im schlimmsten Fall müssen<br />
aber alle Möglichkeiten überprüft werden. Dies führt zu der exponentiellen Laufzeit des<br />
implementierten Algorithmus. Als Verbesserung der exponentiellen Laufzeit wurde eine<br />
weitere Implementierung vorgenommen, in der Berechnungspfade in einer baumartigen<br />
Struktur gespeichert und entsprechend traversiert werden.<br />
Außerdem wurde ein großer Wert auf die Benutzerschnittstelle des Programms gelegt.<br />
Insbesondere wurde die graphische Benutzeroberfläche überarbeitet. Es wurden neue<br />
Funktionalitäten eingeführt, die unter anderem dem Benutzer ermöglichen, Zustände in<br />
der Kripke-Struktur per Mausklick zu (de-)selektieren und die Algorithmen <strong>für</strong> diverse<br />
Zustände auszuführen. Die Ergebnisse der Algorithmen werden nicht nur im Text,<br />
sondern auch graphisch angezeigt. Weiterhin kann der Benutzer das Programm so einzustellen,<br />
dass bestimmte Kripke-Struktur und Formel beim Öffnen des Programms automatisch<br />
geladen werden. Es besteht jetzt auch die Möglichkeit, Kripke-Strukturen mit<br />
bestimmter Anzahl der Zustände, der Übergänge und der atomaren Aussagen zufällig<br />
zu generieren.<br />
48