• Keine Ergebnisse gefunden

Temporale Spezifikation objekt-orientierter Systeme

N/A
N/A
Protected

Academic year: 2022

Aktie "Temporale Spezifikation objekt-orientierter Systeme"

Copied!
33
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Temporale Spezifikation objekt-orientierter Systeme

Jens Brandt Juli 2003

(2)

Inhalts¨ ubersicht

I Daten-/Klassensignaturen I Ereignisstrukturen

I Temporallogische Formeln I Beispiel Cocopeli

I Zusammenfassung

(3)

2

Datensignaturen

I ΣD = (SD, ΩD) heißt Datensignatur:

◦ SD (Datensorten)

◦ ΩD = {Ωx,s}x∈S

D,s∈SD (Operationssymbole) I Terme:

◦ X = {Xs}s∈SD (Variablensymbole)

◦ TΣD(X) (Terme ¨uber X)

(4)

Interpretation einer Datensignatur

I ΣD-Algebra U

◦ sU (Tr ¨agermengen f ¨ur jede Datensorte s ∈ SD)

◦ ωU : xU → sU

(Operationen f ¨ur jedes ω : x → s ∈ Ω) I Interpretation eines Terms:

◦ tθU (Interpretation in U mit Belegung θ)

(5)

4

Klassensignaturen

I ΣC = (SO, I, A) heißt Klassensignatur

¨

uber der Datensignatur ΣD:

◦ SO (Objektsorten)

◦ I = {Ix,b}x∈S

DO,b∈SO (Instanzoperatoren)

◦ A = {Ax,b}x∈S

DO,b∈SO (Aktionsoperatoren)

(6)

Klassensignaturen: Beispiel

class User

uses nat, string, boolean;

attributes mtknr:nat, name,login,pwd:string;

actions new(nat,string,string), delete, XsetPassword(string);

X

axioms var m:nat; n,l,p:string;

new(m,n,l,p)

X⇒ B new B setPassword B delete) U delete X∧ (mtknr=m name=n login=l pwd=p),

delete

X⇒ ¬ B new ∧ ¬ B setPassword ∧ ¬ B delete, setPassword(p)

(7)

6

Instanzsignatur

ΣI = (Id, Ac) heißt Instanzsignatur:

I Id (Identit ¨aten)

I Ac = {Aci}i∈Id (Aktionsalphabete)

(8)

Ereignisstrukturen

I Tripel E = (Ev, →, #) heißt Ereignisstruktur:

◦ Ev (Ereignisse)

◦ →⊆ Ev × Ev (Kausalit ¨at: partielle Ordung auf Ev)

◦ # ⊆ Ev × Ev (Konflikt: symm. und irreflex. Relation) I Zwei Ereignisse sind

◦ kausal abh ¨angig e1 ∼ e2 ⇔ (e1 e2 ∨ e2 e1)

◦ nebenl ¨aufig e1coe2 ⇔ ¬(e1 ∼ e2 ∨ e1#e2)

(9)

8

Ereignisstrukturen: Beispiel

...

e1 e2

e3 e4

e5 e6

e8

e7

(10)

Ereignisstrukturen: Weitere Definitionen

I Lokale Konfiguration: ↓ e = {e0|e0 e}.

I Lebenszyklus: maximale Konfiguration in E I Sequentielle Ereignisstruktur:

◦ eindeutiges, minimales Element ∈ Ev

◦ lokale Konfiguration ↓ e vollst ¨andig geordnet

⇒ e#f ⇔ ¬(ecof)

(11)

10

Sequentielle Ereignisstrukturen: Beispiel

e1 e2

e3 e4

e5 e6

...

(12)

Sequentielle Ereignisstrukturen: Beispiel

e1 e2

e3 e4

e5 e6

...

(13)

12

Sequentielle Ereignisstrukturen: Beispiel

e1 e2

e3 e4

e5 e6

...

(14)

Sequentielle Ereignisstrukturen: Beispiel

e1 e2

e3 e4

e5 e6

...

(15)

14

Σ

I

-Ereignisstrukturen

I E = S

E heißt ΣI-Ereignisstruktur:

◦ ΣI = (Id, Ac) (Instanzsignatur)

◦ E = {Ei}i∈Id (Vereinigung aller Ereignisstrukturen) I L = (Lc, →) = S

L heißt verteilter Lebenszyklus:

◦ L ⊆ E

◦ L = {Li}i∈Id ⊆ E mit Li ⊆ Ei f ¨ur jedes i ∈ Id

(16)

Σ

I

-Ereignisstrukturen: Beispiel

e2

e3 e4

e5 e6

...

e1

e2

e6 e8 e7

e9 e3

... e5

e1 e2

e7

e6

e8 e4

e9

(17)

16

Σ

I

-Ereignisstrukturen: Beispiel

e2

e3 e4

e5 e6

...

e1

e2

e6 e8 e7

e9 e3

... e5

e1 e2

e7

e6

e8 e4

e9

(18)

Σ

I

-Ereignisstrukturen: Beispiel

e2

e3 e4

e5 e6

...

e1

e2

e6 e8 e7

e9 e3

... e5

e1 e2

e7

e6

e8 e4

e9

(19)

18

Σ

I

-Ereignisstrukturen: Beispiel

e2

e3 e4

e5 e6

...

e1

e2

e6 e8 e7

e9 e3

... e5

e1 e2

e7

e6

e8 e4

e9

(20)

Beschriftungen von Ereignisstrukturen

I Beschriftung einer ΣI-Ereignisstruktur E = (Ev, →)

◦ α¯ : Ev+ → S

Ac

◦ α¯ = S

α, α = {αi : Evi+ → Aci}i∈Id

◦ F ¨ur alle Ereignisse e1, e2 ∈ Ev gilt:

¯

α(e1) 6= ¯α(e2), wenn e ∈ Ev mit e → e1 und e → e2

(21)

20

Beschriftungen: Beispiel

...

delete

new

setPassword

delete setPassword

(22)

Temporallogische L

Σ

(X)-Ausdr¨ ucke

I Syntaktisch korrekte LΣ(X)-Ausdr ¨ucke:

◦ (t1 =ss t2) ∈ LΣ(X) f ¨ur t1, t2 ∈ TΣ(X)s

◦ α(i), B α(i) ∈ LΣ(X)

Xf ¨ur α(i) ∈ Tσ(Xac) und i ∈ TΣ(X)id Identit ¨at von α

◦ (¬φ) ∈ LΣ(X) f ¨ur φ ∈ LΣ(X)

◦ (φ1 ⇒ φ2) ∈ LΣ(X) f ¨ur φ1, φ2 ∈ LΣ(X)

◦ (X iφ), (F iφ), (Y iφ), (P iφ) ∈ LΣ(X) Xf ¨ur i ∈ TΣ(X)id und φ ∈ LΣ(X)

(23)

22

Temporallogische Ausdr¨ ucke: Beispiel

...

delete

new

setPassword passwd=woohoodelete

setPassword passwd=woohoo

(24)

Temporallogische Ausdr¨ ucke: Beispiel

...

delete

delete setPassword

new new

deletesetPasswordsetPassword deletesetPassword

(25)

24

Semantik von L

Σ

(X)-Ausdr¨ ucken (1/2)

I Semantik von LΣ(X)-Ausdr ¨ucken

◦ L,¯ ↓ e, θ i : (t1 =ss t2) ⇔ t1θU = t2θU

◦ L,¯ ↓ e, θ i : α(j) ⇔ e ∈ Lciθ

U und α(e) =¯ α(j)

◦ L,¯ ↓ e, θ i :B α(j) ⇔ e ∈ Lciθ

Xund f ¨ur ein e2 ∈ Eviθ U

U, e →iθ

U e2 und α(e¯ 2) = α(j)

◦ L,¯ ↓ e, θ i : (¬φ) ⇔ e ∈ Lciθ

U

Xund nicht L,¯ ↓ e, θ i : φ

◦ L,¯ ↓ e, θ i : (φ1 ⇒ φ2) ⇔ e ∈ Lciθ

U

Xund (L,¯ ↓ e, θ i : φ2 oder nicht L,¯ ↓ e, θ i : φ1)

(26)

Semantik von L

Σ

(X)-Ausdr¨ ucken (2/2)

I Semantik von LΣ(X)-Ausdr ¨ucken

◦ L,¯ ↓ e1, θ i : (Xjφ) ⇔ e1 ∈ Lcjθ

U

Xund L,¯ ↓ e2, θ j : φ f ¨ur ein Ereignis e2 ∈ Lcjθ Xso dass e1iθ U

U e2 oder e1jθ U e2

◦ L,¯ ↓ e1, θ i : (Fjφ) ⇔ e1 ∈ Lcjθ

U

Xund L,¯ ↓ e2, θ j : φ f ¨ur ein Ereignis e2 ∈ Lcjθ Xso dass e1 e2 U

◦ L,¯ ↓ e , θ i : (Y φ) und L,¯ ↓ e , θ i : (P φ) analog

(27)

26

Beispiel: Cocopeli (1/5)

class User

uses nat, string, boolean;

attributes mtknr:nat, name,login,pwd:string, verified:boolean;

actions new(nat,string,string), delete, setPassword(string);

axioms var m:nat; n,l,p:string;

new(m,n,l,p)

X⇒ B new B setPassword B delete) U delete

X∧ (mtknr=m name=n login=l pwd=p verified=false), delete

X⇒ ¬ B new ∧ ¬ B setPassword ∧ ¬ B delete, setPassword(p)

X⇒ pwd=p W setPassword

(28)

Beispiel: Cocopeli (2/5)

class User

uses nat, string, boolean;

attributes mtknr:nat, name,login,pwd:string, verified:boolean;

actions *new(nat,string,string), +delete, setPassword(string);

axioms var m:nat; n,l,p:string;

new(m,n,l,p)

X⇒ (mtknr=m name=n login=l pwd=p verified=false), setPassword(p)

X⇒ pwd=p W setPassword

(29)

28

Beispiel: Cocopeli (3/5)

class Database uses User;

actions *new, +delete,

XchangePassword, checkPassword ; axioms var u:user; old,new:string;

changePassword(user,old,new) user.verified

X⇒ ¬ B changePassword U user.setPassword(new), checkPassword(user,pwd) user.pwd=pwd

X⇒ user.verified

X W ( checkPassword ∨user.setPassword), checkPassword(user,pwd) user.pwd6=pwd X⇒ ¬ user.verified

X W ( checkPassword; ∨user.setPassword)

(30)

Beispiel: Cocopeli (4/5)

class Negotiator

uses User, Database;

attributes user:User, db:Database;

actions *new(User), +delete,

XclickChangePassword, submitChangePassword;

axioms var u:user; old,new:string;

create(u) XX⇒ user=u

clickChangePassword

X⇒ B submitChangePassword

submitChangePassword(old,new)

(31)

30

Beispiel: Cocopeli (5/5)

M ¨ogliches Anwendungsszenario:

I Nebenl ¨aufige Komposition zweier Negotiator-Objekte I Ein Benutzer zweimal angemeldet

I Passwort ¨anderung konsistent?

(32)

Objektorientierte Erweiterungen

I eingebettet durch Morphismen I definiert f ¨ur

◦ Spezialisierung

◦ Generalisierung

◦ Uberschreiben¨

◦ Verstecken

◦ . . .

(33)

32

Zusammenfassung

I Ansatz: Algebraische Spezifikation I Modell: Ereignisstrukturen

I Beschreibung: Temporale Logik I Erfolg versprechend?

◦ viele ungel ¨oste Details

◦ kein Beweiser

◦ keine Ver ¨offentlichungen in letzter Zeit

Referenzen

ÄHNLICHE DOKUMENTE

Im Folgenden werden die beiden Pre- und Post-Operatoren innerhalb etwas komplexerer Ausdr¨ ucke verwendet.. Hinweis: Bei der

Im folgenden Programm haben sich in den logischen Ausdr¨ ucken wieder ein paar kleine Fehler eingeschlichen. Die nachfolgende Ausgabeanweisung (printf()) gibt immer an, f¨ ur welche

Da rechts aber eine Variable steht, k¨ onnte man die Ausd¨ ucke schachteln, denn der Wert einer Zuweisung ist das Ergebnis. Das ++ bezieht sich auf j, i wird um den neuen Wert von

Welche Klammern sind f¨ ur das Einklammern von arithmetischen und logischen Ausdr¨ ucken in der Programmiersprache C erlaubt. (): ja []: nein

– Two regular expressions may be concatenated; the resulting regular expression matches any string concatenating two substrings that match the subexpressions. – Two regular

– Auch f¨ur komplexere Strukturen als regul¨are Sprachen – G¨angig f¨ur die Beschreibung von Programmiersprachen.. Beispiel: Auszug der Grammatik

In vielen F¨ allen m¨ ochte man, dass ein regul¨ arer Ausdruck an einer Stelle nicht auf ein besonderes Zeichen sondern auf eine ganze Menge von Zeichen passt.. Dies kann durch

Du kannst nach literalen Zeichenketten suchen und weisst, dass bei regul¨ aren Aus- dr¨ ucke standardm¨ assig Gross- und Kleinschreibung unterschieden werden.. Du kannst regul¨