28.11.2014 Aufrufe

Realzeitautomaten und Modelchecking Eine Einführung in das ...

Realzeitautomaten und Modelchecking Eine Einführung in das ...

Realzeitautomaten und Modelchecking Eine Einführung in das ...

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.

<strong>Realzeitautomaten</strong> <strong>und</strong> <strong>Modelcheck<strong>in</strong>g</strong><br />

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>das</strong> <strong>Modelcheck<strong>in</strong>g</strong>Tool Uppaal<br />

Vortrag im Rahmen der PG KautS, Sem<strong>in</strong>arphase<br />

von Stephanie Kemper<br />

16. Dezember 2002<br />

1 Motivation<br />

Bei “normalen” endlichen Automaten hängt die Ausgabe/Reaktion des Systems nur von<br />

der Reihenfolge der E<strong>in</strong>gabesignale ab. Was aber ist mit Systemen, bei denen nicht nur<br />

die Reihenfolge, sondern auch, bezogen auf den Start des Systems, der konkrete Zeitpunkt<br />

des Auftretens oder der zeitliche Abstand <strong>in</strong>teressant s<strong>in</strong>d?<br />

Man stelle sich beispielsweise e<strong>in</strong>en “Intelligenten Lichtschalter” vor [3]: Wird er zweimal<br />

<strong>in</strong>nerhalb kurzer Zeit gedrückt, so soll <strong>das</strong> Licht heller werden, andernfalls soll es<br />

ausgehen (Abbildung 1). Modelliert werden kann dieses Verhalten durch h<strong>in</strong>zufügen e<strong>in</strong>er<br />

Uhr X (Abbildung 2): X misst die Zeit, die zwischen dem wiederholten Drücken vergeht.<br />

Abhängig von dem Wert, den X zum Zeitpunkt des Drückens hat, wird der Zustand<br />

gewechselt (von ‘Licht an’ nach ‘Heller’ oder ‘Aus’).<br />

★<br />

press?<br />

✥<br />

★✥<br />

❄ ★✥ ★✥<br />

press? press?<br />

✲ Off ✲ Light ✲ Bright<br />

✧✦ ✧✦ ✧✦<br />

✧ ✻ press?<br />

✦<br />

Abbildung 1: Intelligenter Lichtschalter<br />

★<br />

press?<br />

✥<br />

★✥<br />

❄ ★✥ ★✥<br />

press? press?<br />

✲ Off ✲ Light ✲ Bright<br />

✧✦<br />

X := 0 X ≤ 3<br />

✧✦ ✧✦<br />

✧ ✻ press?<br />

✦<br />

X > 0<br />

Abbildung 2: Intelligenter Lichtschalter<br />

mit Uhr X<br />

Zur Spezifikation, Simulation <strong>und</strong> Verifikation solcher Automaten bietet sich <strong>das</strong> Modellcheck<strong>in</strong>g-Tool<br />

Uppaal an, auf <strong>das</strong> weiter unten noch genauer e<strong>in</strong>gegangen werden soll.<br />

2 Def<strong>in</strong>ition<br />

Büchi-Automaten: E<strong>in</strong> Büchi-Automat A ist e<strong>in</strong> 5-Tupel A = (Σ, Q, →, q 0 , F ). Diese Komponenten<br />

s<strong>in</strong>d wie bei Endlichen Automaten def<strong>in</strong>iert mit dem Unterschied, <strong>das</strong>s Büchi-<br />

Automaten zur Verarbeitung unendlicher Wörter e<strong>in</strong>gesetzt werden. E<strong>in</strong> Wort wird dabei<br />

von e<strong>in</strong>em Büchi-Automaten akzeptiert, wenn m<strong>in</strong>destens e<strong>in</strong> Endzustand unendlich oft<br />

durchlaufen wird.<br />

<strong>Realzeitautomaten</strong> (RAen): E<strong>in</strong> RA A ist e<strong>in</strong> 6-Tupel A = (Σ, Q, →, q 0 , F, X) mit<br />

1


• Σ, Q, q 0 , F wie bei Büchi-Automaten<br />

• X ist e<strong>in</strong>e endliche Menge von Uhren. Diese fangen bei Systemstart an zu laufen.<br />

• → ist die Transitionsrelation, →⊆ Q × Σ × Φ(X) × P(X ) × Q. Hierbei ist Φ(X)<br />

die Menge der Zeitbed<strong>in</strong>gungen über X, also anschaulich die Menge der Vergleiche<br />

von Uhren mite<strong>in</strong>ander oder mit rationalen Konstanten, e<strong>in</strong> Element aus P(X ) zeigt<br />

e<strong>in</strong>e Teilmenge von Uhren an, die beim Schalten auf 0 zurückgesetzt werden.<br />

<strong>Realzeitautomaten</strong> basieren auf der Vorstellung [1], <strong>das</strong>s <strong>das</strong> Schalten e<strong>in</strong>er Transition<br />

ke<strong>in</strong>e Zeit kostet <strong>und</strong> Zeit nur verstreicht, während der Automat <strong>in</strong> e<strong>in</strong>em se<strong>in</strong>er Zustände<br />

verharrt.<br />

RAen verarbeiten Realzeitwörter:<br />

E<strong>in</strong> Realzeitwort ist e<strong>in</strong> Paar (σ, τ) bestehend aus e<strong>in</strong>em unendlichen Wort σ ∈ Σ ω <strong>und</strong><br />

e<strong>in</strong>er Realzeitfolge τ, <strong>das</strong> heisst e<strong>in</strong>er monotonen Folge von Zeitpunkten. Anschaulich wird<br />

also jedem E<strong>in</strong>gabezeichen der Zeitpunkt, zu dem es auftritt, zugeordnet.<br />

Beispiel für e<strong>in</strong>en RA: Abbildung 3. Der Automat kann beliebig lange im Zustand q 0<br />

bleiben. Mit jeder a-Transition wird die Uhr X auf 0 gesetzt <strong>und</strong> der Automat geht <strong>in</strong><br />

Zustand q 1 über. Die b-Transition muss nun spätestens zwei Zeite<strong>in</strong>heiten später erfolgen.<br />

Der RA akzeptiert die Sprache L = {(σ, τ) | σ ∈ L((ab) ω ) ∧ ∀i ≥ 1 : τ 2i ≤ τ 2i−1 + 2}<br />

a<br />

★<br />

X := 0<br />

★✥<br />

❄<br />

✥<br />

★✥<br />

✤✜<br />

✲ q 0<br />

✧✦<br />

✲ q 1<br />

✧✦<br />

✣✢<br />

✧ ✻ b<br />

✦<br />

X ≤ 2<br />

Abbildung 3: Beispiel für e<strong>in</strong>en RA<br />

3 Temporale Logik<br />

Zur Spezifikation von Anforderungen an <strong>das</strong> System wird <strong>in</strong> Uppaal e<strong>in</strong>e “abgespeckte<br />

Form” der Temporalen Logik CT L (computation tree logic) verwendet. In CT L (<strong>und</strong><br />

somit auch <strong>in</strong> Uppaal) werden mögliche Läufe/Pfade durch den RA betrachtet.<br />

Es werden zwei der vier temporallogischen CLT -Operatoren verwendet: ✷ (globally)<br />

<strong>und</strong> ✸ (eventually). Diese können nicht alle<strong>in</strong>e verwendet werden, sondern müssen stets<br />

mit A ( ̂=∀) oder E ( ̂=∃) quantifiziert werden. Dabei bedeuten die Operatoren:<br />

• ✷: Auf den betrachteten Pfaden gilt immer (<strong>in</strong> jedem Zustand) die Bed<strong>in</strong>gung<br />

• ✸: Auf den betrachteten Pfaden gilt irgendwann (<strong>in</strong> e<strong>in</strong>em erreichbaren Zustand)<br />

die Bed<strong>in</strong>gung<br />

Zur genaueren Syntax siehe Uppaal-Hilfe.<br />

2


4 Uppaal<br />

Uppaal wurde 1995 entwickelt an den Universitäten Uppsala (Schweden) <strong>und</strong> Aalborg<br />

(Dänemark). Uppaal ist e<strong>in</strong> Tool zur Modellierung, Simulation <strong>und</strong> Verifikation von Realzeitsystemen.<br />

Realzeitsysteme werden <strong>in</strong> Uppaal durch parallele, mite<strong>in</strong>ander kommunizierende<br />

<strong>Realzeitautomaten</strong> modelliert. Bezüglich der Syntax aller Spezifikationen, Wertübergaben<br />

<strong>und</strong> ähnlichem stellt Uppaal e<strong>in</strong>e umfangreiche Hilfe zur Verfügung.<br />

4.1 Der Editor<br />

Die Modellierung e<strong>in</strong>es Realzeitsystems <strong>in</strong> Uppaal kann vom Vorgehen her <strong>in</strong> etwa verglichen<br />

werden mit der Programmierung e<strong>in</strong>er ma<strong>in</strong>-Methode e<strong>in</strong>er OO-Programmiersprache.<br />

Diese Analogie soll hier zum besseren Verständnis verwendet werden.<br />

Gr<strong>und</strong>bauste<strong>in</strong>e <strong>in</strong> Uppaal s<strong>in</strong>d die sogenannten “Templates”. Templates stellen dabei<br />

(<strong>in</strong> der Regel) noch nicht die Automaten dar, wie sie später im System ersche<strong>in</strong>en; sie<br />

s<strong>in</strong>d vielmehr “Bauvorschriften”, vergleichbar mit den Klassen e<strong>in</strong>er OO-Sprache.<br />

Jedes Template benutzt e<strong>in</strong>e Anzahl Parameter, diese werden, analog zu Konstanten/Variablen<br />

e<strong>in</strong>er Klasse, unter “Lokal Declarations” def<strong>in</strong>iert <strong>und</strong> eventuell gleich <strong>in</strong>itialisiert.<br />

Parameter <strong>in</strong> Uppaal können neben Integerkonstanten <strong>und</strong> -variablen auch Uhren,<br />

Kanäle <strong>und</strong> Integerarrays se<strong>in</strong>. Darüber h<strong>in</strong>aus (<strong>und</strong> hier passt die Analogie leider<br />

nicht) kann es Parameter geben, die von mehreren Templates geme<strong>in</strong>sam benutzt werden,<br />

<strong>in</strong>sbesondere Kanäle zur Synchronisation. Diese werden unter “Global Declarations” def<strong>in</strong>iert<br />

<strong>und</strong> müssen dem Template unter “Parameters” übergeben werden. An dieser Stelle<br />

wird nur Name <strong>und</strong> Typ des Parameters übergeben, die Wertzuweisung erfolgt an anderer<br />

Stelle.<br />

Unter “Process assignments” werden die def<strong>in</strong>ierten Templates nun <strong>in</strong>itialisiert, ähnlich<br />

wie Objekte. <strong>E<strong>in</strong>e</strong> Instanz e<strong>in</strong>es Templates nennt sich Prozess. Natürlich müssen auch die<br />

zuvor def<strong>in</strong>ierten Parameter mit <strong>in</strong>itialisiert werden, so dies nicht schon vorher geschehen<br />

ist.<br />

Nachdem alle benötigten Prozesse erzeugt werden, wird aus den Prozessen unter “System<br />

def<strong>in</strong>ition” e<strong>in</strong> (Realzeit-)System, bestehend aus den verschiedenen Prozessen, def<strong>in</strong>iert.<br />

Dies ist vergleichbar mit der ma<strong>in</strong>-Methode, <strong>in</strong> der verschiedene Objekte vorkommen.<br />

4.1.1 Detaillierte Spezifikation von Stellen <strong>und</strong> Transitionen<br />

Durch Doppelklick auf e<strong>in</strong>e Stelle öffnet sich e<strong>in</strong>e E<strong>in</strong>gabemaske. Hier besteht die Möglichkeit,<br />

die Stelle als Startstelle (‘<strong>in</strong>itial’) zu def<strong>in</strong>ieren, ihr e<strong>in</strong>en Namen zu geben - um sie<br />

später im Verifier referenzieren zu können - <strong>und</strong> e<strong>in</strong>e Invariante für diese Stelle zu def<strong>in</strong>ieren.<br />

Zur Erklärung der Eigenschaften ‘commited’ <strong>und</strong> ‘urgent’ siehe [4].<br />

Durch Doppelklick auf e<strong>in</strong>e Transition öffnet sich ebenfalls e<strong>in</strong>e E<strong>in</strong>gabemaske. Hier<br />

können folgende D<strong>in</strong>ge spezifiziert werden: Die Transition kann e<strong>in</strong>en ‘guard’ zugeordnet<br />

bekommen, <strong>das</strong> heisst e<strong>in</strong>e Bed<strong>in</strong>gung über Variablen <strong>und</strong>/oder Uhren, unter der sie<br />

nur schalten darf. Unter dem Punkt ‘assign’ werden Uhren angegeben, die beim Schalten<br />

der Transition zurückgesetzt werden, geme<strong>in</strong>sam mit dem Wert, auf den sie gesetzt<br />

werden. Unter ‘sync’ werden e<strong>in</strong> oder mehrere Kanalnamen angegeben, diese dienen zur<br />

Synchronisation (s. u.).<br />

3


4.1.2 Synchronisation über Kanäle<br />

Synchronisation zwischen den e<strong>in</strong>zelnen Templates kann mit Hilfe der def<strong>in</strong>ierten Kanäle<br />

stattf<strong>in</strong>den. Die Synchronisation verläuft nach dem “Handshak<strong>in</strong>g”-Pr<strong>in</strong>zip: E<strong>in</strong> Template<br />

gibt mittels < kanalname >! (zu def<strong>in</strong>ieren unter ‘sync’, s. o.) e<strong>in</strong>en Impuls auf den Kanal,<br />

e<strong>in</strong> weiteres nimmt diesen mittels < kanalname >? entgegen. Die beiden Transitionen<br />

können nur gleichzeitig schalten. Zur Synchronisation mehrerer Templates siehe [4].<br />

4.2 Der Simulator<br />

Ist <strong>das</strong> def<strong>in</strong>ierte Realzeitsystem syntaktisch korrekt, kann im Simulator <strong>das</strong> Verhalten<br />

des Systems “per Hand” ausprobiert werden. Sonst kann nicht <strong>in</strong> den Simulator oder<br />

Verifier gewechselt werden, ausserdem gibt Uppaal H<strong>in</strong>weise, wo der Fehler möglicherweise<br />

zu f<strong>in</strong>den ist. Da der Simulator <strong>in</strong>tuitiv verständlich ist, soll hier nicht weiter darauf<br />

e<strong>in</strong>gegangen werden.<br />

4.3 Der Verifier<br />

Auch der Verifier ist eigentlich selbsterklärend. Anforderungen an <strong>das</strong> System (Queries)<br />

können mittels der gegebenen Syntax (Uppaal-Hilfe) spezifiziert <strong>und</strong> anschliessend überprüft<br />

werden.<br />

Erwähnenswert ist an dieser Stelle lediglich die Funktion “Diagnostic Trace” (unter<br />

“Options”): Ist diese Funktion aktiviert, so erstellt Uppaal zur gerade überprüften Anforderung<br />

e<strong>in</strong>en Lauf durch <strong>das</strong> System, auf dem diese Anforderung gilt bzw. verletzt<br />

wird. Nützlich ist dies <strong>in</strong>sbesondere bei der Fehleranalyse, wenn zum Beispiel gewünschte<br />

Anforderungen nicht erfüllt werden.<br />

Literatur<br />

[1] E.-R. Olderog, M. Schenke <strong>und</strong> H. Dierks, Skript zur VL Realzeitsysteme, Universität<br />

Oldenburg, März 2001<br />

[2] R. Alur, D. Dill: A Theory of Timed Automata, TCS 126:183-235, 1994<br />

[3] K. G. Larsen, Tutorial: Advances <strong>in</strong> Real-Time Model Check<strong>in</strong>g, FTRTFT-Tagung<br />

2002 <strong>in</strong> Oldenburg,<br />

[4] A. David, T. Amnell, Uppaal2k: Small Tutorial, Tutorial zur aktuellen Uppaal-<br />

Version, http://www.uppaal.com, 16. Oktober 2002<br />

4

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!