Temporale Spezifikation objekt-orientierter Systeme
Jens Brandt Juli 2003
Inhalts¨ ubersicht
I Daten-/Klassensignaturen I Ereignisstrukturen
I Temporallogische Formeln I Beispiel Cocopeli
I Zusammenfassung
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)
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 θ)
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)
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)
6
Instanzsignatur
ΣI = (Id, Ac) heißt Instanzsignatur:
I Id (Identit ¨aten)
I Ac = {Aci}i∈Id (Aktionsalphabete)
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)
8
Ereignisstrukturen: Beispiel
...
e1 e2
e3 e4
e5 e6
e8
e7
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)
10
Sequentielle Ereignisstrukturen: Beispiel
e1 e2
e3 e4
e5 e6
...
Sequentielle Ereignisstrukturen: Beispiel
e1 e2
e3 e4
e5 e6
...
12
Sequentielle Ereignisstrukturen: Beispiel
e1 e2
e3 e4
e5 e6
...
Sequentielle Ereignisstrukturen: Beispiel
e1 e2
e3 e4
e5 e6
...
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
Σ
I-Ereignisstrukturen: Beispiel
e2
e3 e4
e5 e6
...
e1
e2
e6 e8 e7
e9 e3
... e5
e1 e2
e7
e6
e8 e4
e9
16
Σ
I-Ereignisstrukturen: Beispiel
e2
e3 e4
e5 e6
...
e1
e2
e6 e8 e7
e9 e3
... e5
e1 e2
e7
e6
e8 e4
e9
Σ
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
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
20
Beschriftungen: Beispiel
...
delete
new
setPassword
delete setPassword
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)
22
Temporallogische Ausdr¨ ucke: Beispiel
...
delete
new
setPassword passwd=woohoodelete
setPassword passwd=woohoo
Temporallogische Ausdr¨ ucke: Beispiel
...
delete
delete setPassword
new new
deletesetPasswordsetPassword deletesetPassword
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)
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 e1 →iθ U
U e2 oder e1 →jθ 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
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
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
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)
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)
30
Beispiel: Cocopeli (5/5)
M ¨ogliches Anwendungsszenario:
I Nebenl ¨aufige Komposition zweier Negotiator-Objekte I Ein Benutzer zweimal angemeldet
I Passwort ¨anderung konsistent?
Objektorientierte Erweiterungen
I eingebettet durch Morphismen I definiert f ¨ur
◦ Spezialisierung
◦ Generalisierung
◦ Uberschreiben¨
◦ Verstecken
◦ . . .
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