31.08.2013 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!