Folien (4up) - Benjamin Braatz
Folien (4up) - Benjamin Braatz
Folien (4up) - Benjamin Braatz
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Semantische Konsistenz Objekt-Orientierter<br />
Viewpoint-Spezifikationen<br />
Gunnar Schröter, <strong>Benjamin</strong> <strong>Braatz</strong>, Markus Klein<br />
Projekt IOSIP<br />
Kolloquium des DFG-SPP “Software-Spezifikation”<br />
Stuttgart, 20. November 2003<br />
Konsistenz von OO Viewpoints<br />
Überblick<br />
Rückblick und Motivation (Phasen 1 und 2; G. Schröter)<br />
– Viewpoint-Spezifikationen<br />
– semantische Integration<br />
– Integrationsmodell<br />
– bisherige Ergebnisse<br />
integrierte objektorientierte Spezifikationstechnik (Phase 3; B. <strong>Braatz</strong>)<br />
Überblick<br />
– Semantische Modelle – Objekt-Orientierte Transformations-Systeme (OOTS)<br />
– Perspektiven – Eigenschaften von OOTS<br />
– Konsistenz-Prüfung – Konstruktion kanonischer Modelle<br />
Entwicklungs-Relationen (z.B. Verfeinerung, Bisimulation, Reduktion, ...) für<br />
Viewpoint-Spezifikationen (G. Schröter)<br />
DFG-SPP-Kolloquium, 20.11.2003 1<br />
Konsistenz von OO Viewpoints<br />
Motivation für Viewpoint-Spezifikationen<br />
Viewpoint-Spezifikationen<br />
Konsistenz von OO Viewpoints<br />
Viewpoint-Spezifikationen<br />
Viewpoint-Spezifikationen<br />
reale technische Systeme sind aus einer<br />
Vielzahl unterschiedlicher Perspektiven betrachtbar<br />
(Struktur, Zeitabhängigkeiten, Kommunikation, ...)<br />
– in der Gesamtheit schwer in einerTechnik beschreibbar<br />
– einzelne Perspektiven sind (jeweils) durch einzelne (UML-)Techniken adäquat<br />
beschreibbar ( Viewpoint-Spezifikationen)<br />
System-Spezifikation besteht aus einer Menge von Viewpoint-Spezifikationen,<br />
die unterschiedliche Perspektiven auf ein System beschreiben<br />
Spec 1<br />
Spec 2<br />
Spec 3<br />
V<br />
2<br />
(M)<br />
Systemspezifikation:<br />
Menge heterogener (partieller) Viewpoint-Spezifikationen,<br />
interpretiert als eine Spezifikation eines Systems<br />
V<br />
1<br />
(M)<br />
M<br />
V<br />
3<br />
(M)<br />
M<br />
DFG-SPP-Kolloquium, 20.11.2003 2<br />
DFG-SPP-Kolloquium, 20.11.2003 5
Konsistenz von OO Viewpoints<br />
Viewpoint-Spezifikationen<br />
Konsistenz von OO Viewpoints<br />
Transformations-Systeme<br />
Integration Viewpoint-Spezifikationen<br />
Motivation für Transformations-Systeme<br />
Spec 1<br />
Spec 2<br />
Spec 3<br />
Mod(Spec 2)<br />
?<br />
M<br />
gesucht ist ein formaler semantischer Bereich:<br />
– unterschiedlichste Aspekte von ingenieurwissenschaftlichen Anwendungsgebieten<br />
adäquat modellierbar<br />
– technisch handhabbar<br />
Mod(Spec 1)<br />
Mod(Spec ) 3<br />
Transformations Systeme (TS) (entwickelt in Phase 1 + 2; MGR01)<br />
Mod(SysSpec)<br />
SysSpec ist konsistent<br />
DFG-SPP-Kolloquium, 20.11.2003 11<br />
DFG-SPP-Kolloquium, 20.11.2003 12<br />
Konsistenz von OO Viewpoints<br />
Transformations-Systeme<br />
Konsistenz von OO Viewpoints<br />
Transformations-Systeme<br />
Transformations-Systeme<br />
Transformations-Systeme<br />
CG:<br />
m<br />
D DSig<br />
:<br />
D1<br />
ac1<br />
D2<br />
ac3<br />
D4<br />
ac4<br />
ein TS enthält:<br />
– einen Transitionsgraphen , genannt Control Graph,<br />
– einen Transitionsgraphen , genannt Data Space (induziert über einer Data<br />
Space Signature ),<br />
– einen Transitions-Graph-Morphismus , genannt Labeling-<br />
Morphismus<br />
allg. Kompositionsoperationen<br />
ac2<br />
allg. Entwicklungsrelationen<br />
D3<br />
DFG-SPP-Kolloquium, 20.11.2003 17<br />
DFG-SPP-Kolloquium, 20.11.2003 23
Konsistenz von OO Viewpoints<br />
Transformations-Systeme<br />
Aspektmodellierung mit Transformations-Systemen<br />
Konsistenz von OO Viewpoints<br />
Weiterentwicklungen in der 3. Projekt-Phase<br />
Objekt-Orientierte Transformations-Systeme<br />
Mit TS adäquat modellierbar:<br />
Semantiken und Kompositionsoperatoren von<br />
– CCS, CSP<br />
– Petrinetze<br />
– Unity<br />
– Statecharts<br />
– Classdiagrams<br />
– MSC’s<br />
Entwicklungsrelationen<br />
– Data-Refinement<br />
– LOTOS-Entwicklungsrelationen (Trace-Equivalence, -Refinement, Extension,<br />
Reduction, Testequivalence, starke und schwache Bisimulation)<br />
– Reynold’s Methode zur Programmverfeinerung<br />
Modellierung von objekt-orientierten Software-Systemen<br />
Definition von Perspektiven<br />
Spezifikation von Perspektiven mit UML-Techniken<br />
Algorithmischer/konstruktiver Konsistenz-Check<br />
Def. von Entwicklungsrelationen für einen formalen Top-Down-Entwurf<br />
Syntaktische (UML-)Regeln für diese Entwicklungsrelationen<br />
Entwicklung eines Komponentenkonzept<br />
DFG-SPP-Kolloquium, 20.11.2003 24<br />
DFG-SPP-Kolloquium, 20.11.2003 25<br />
Konsistenz von OO Viewpoints<br />
Objekt-Orientierte Transformations-Systeme<br />
Objekt-Orientierte Transformations-Systeme<br />
Konsistenz von OO Viewpoints<br />
Struktureller Viewpoint<br />
Objekt-Orientierte Transformations-Systeme<br />
Perspektive: Struktur der Datenzustände und Aktionen im OOTS<br />
Objekt-Orientierte Tranformations-Systeme (OOTS) sind eine Spezialisierung der<br />
Transformations-Systeme zur Modellierung objekt-orientierter Software-Systeme<br />
Kontroll-Graph-Ebene (wie TS)<br />
Spezialisierung der Daten-Raum-Ebene<br />
– Objekt-Konfigurationen als Datenzustände<br />
– Ereignisse (Methoden-Aufrufe, Methoden-Beendungen, Attribut-Veränderungen)<br />
als Aktionen<br />
object sorts: List, ListElem<br />
attributes: first: List ListElem<br />
current: List ListElem<br />
next: ListElem ListElem<br />
content: ListElem Int<br />
actions: createList call : List<br />
createList ret : List<br />
Spezifikations-Technik: Klassen-Diagramm<br />
List<br />
-current: ListElem<br />
+ createList(): List<br />
+insert(Int)<br />
+start(): Int<br />
+step(): Int<br />
insert call : List Int<br />
insert ret : List<br />
start call : List<br />
start ret : List Int<br />
ass first : List ListElem<br />
ass current : List ListElem<br />
. . .<br />
first<br />
ListElem<br />
0..1 next<br />
-content: Int<br />
0..1<br />
+ createListElem(Int): ListElem<br />
+getContent(): Int<br />
+setNext(ListElem)<br />
+getNext(): ListElem<br />
+existsNext(): Bool<br />
DFG-SPP-Kolloquium, 20.11.2003 26<br />
DFG-SPP-Kolloquium, 20.11.2003 27
Konsistenz von OO Viewpoints<br />
Statischer Viewpoint<br />
Objekt-Orientierte Transformations-Systeme<br />
Konsistenz von OO Viewpoints<br />
Objekt-Orientierte Transformations-Systeme<br />
Methoden-Effekt-Viewpoint<br />
Perspektive: Statischer Anteil des OOTS<br />
Perspektive: Datenzustands-Effekte von Methoden im OOTS<br />
data sorts: Int SP Int =<br />
data opns: zero: Int zero SP = 0<br />
succ: Int Int succ SP (i) = i+1<br />
pred: Int Int pred SP (i) = i-1<br />
add: Int Int Int add SP (i,j) = i+j<br />
Spezifikations-Technik: Algebraische Spezifikation<br />
<br />
Int<br />
+zero(): Int<br />
+succ(Int): Int<br />
+pred(Int): Int<br />
+add(Int,Int): Int<br />
succ(pred(i))=i<br />
pred(succ(i))=i<br />
add(i,zero)=i<br />
add(i,succ(j))=succ(add(i,j))<br />
add(i,pred(j))=pred(add(i,j))<br />
ll:List<br />
ll:List<br />
ll:List<br />
first<br />
first<br />
le1:ListElem<br />
content=23<br />
le1:ListElem<br />
content=23<br />
ll.insert(42)<br />
ll.insert(42)<br />
ll.insert(23)<br />
ll:List<br />
ll:List<br />
ll:List<br />
first<br />
first<br />
first<br />
Spezifikations-Technik: OCL-Constraint an Methode<br />
le2:ListElem<br />
content=42<br />
le1:ListElem<br />
content=42<br />
le2:ListElem<br />
content=23<br />
context List::insert(i: Int)<br />
post: first.next = first@pre<br />
first.content = i<br />
next<br />
next<br />
le1:ListElem<br />
content=23<br />
le1:ListElem<br />
content=23<br />
DFG-SPP-Kolloquium, 20.11.2003 28<br />
DFG-SPP-Kolloquium, 20.11.2003 29<br />
Konsistenz von OO Viewpoints<br />
Objekt-Orientierte Transformations-Systeme<br />
Methoden-Struktur-Viewpoint<br />
Perspektive: Strukturierung von Methoden im OOTS<br />
Konsistenz von OO Viewpoints<br />
Kontrollfluss-Viewpoint<br />
Perspektive: Aufrufbarkeit von Methoden im OOTS<br />
getContent call(le)<br />
Objekt-Orientierte Transformations-Systeme<br />
getContent ret(le,i3)<br />
ll:List<br />
first<br />
(ll) start call<br />
le1:ListElem<br />
content=23<br />
(le1)<br />
ass current<br />
getContent call(le1) getContent ret (le1,23)<br />
ll:List<br />
first<br />
current<br />
le1:ListElem<br />
content=23<br />
Spezifikations-Technik: Methoden-Beschreibung in einer Action Language<br />
method List::start():Int<br />
current := first<br />
return current.getContent()<br />
start ret (ll,23)<br />
in<br />
createListElem call(le,i1)<br />
getContent call (le)<br />
createListElem ret(le)<br />
existsNext ret (le,b1)<br />
getContent ret (le,i2)<br />
setNext call (le,le1)<br />
existsNext call (le)<br />
setNext ret (le)<br />
existsNext ret (le,b2)<br />
Spezifikations-Technik: Statechart-Diagramm für Klasse<br />
getContent,existsNext<br />
getContent,setNext,getNext,existsNext<br />
setNext call (le,le2)<br />
getNext ret (le,le3)<br />
(le)<br />
existsNext call<br />
setNext ret (le)<br />
getNext call (le)<br />
createListElem<br />
next unset<br />
setNext<br />
next set<br />
DFG-SPP-Kolloquium, 20.11.2003 30<br />
DFG-SPP-Kolloquium, 20.11.2003 31
Konsistenz von OO Viewpoints<br />
Kontrollfluss-Viewpoint<br />
Objekt-Orientierte Transformations-Systeme<br />
Konsistenz von OO Viewpoints<br />
Konsistenz-Prüfung<br />
Konsistenz-Prüfung<br />
Wenn kein Kontrollfluss spezifiziert ist, ist implizit jede Methode immer aufrufbar.<br />
Spec 1<br />
Spec 2<br />
Spec 3<br />
in<br />
insert call (ll,i1)<br />
insert ret (ll)<br />
start call (ll)<br />
Mod(Spec 2)<br />
createList call(ll)<br />
createList ret (ll)<br />
step ret (ll,i3)<br />
start ret (ll,i2)<br />
step call (ll)<br />
Mod(Spec 1)<br />
Mod(Spec ) 3<br />
M<br />
insert,start,step<br />
createList<br />
created<br />
Mod(SysSpec)<br />
Perspektiven-Modelle für die einzelnen Viewpoint-Spezifikationen<br />
Konstruktion eines (kanonischen) System-Modells für die System-Spezifikation<br />
Konsistenz, wenn dieses Modell existiert<br />
Inkonsistenz, wenn es nicht existiert<br />
DFG-SPP-Kolloquium, 20.11.2003 32<br />
DFG-SPP-Kolloquium, 20.11.2003 36<br />
Konsistenz von OO Viewpoints<br />
Konsistenz-Prüfung zwischen den Perspektiven<br />
Konsistenz-Prüfung<br />
Konsistenz von OO Viewpoints<br />
Beheben der Inkonsistenz<br />
Konsistenz-Prüfung<br />
Behebung durch neue Kontrollfluss-Spezifikation<br />
in<br />
cL c (l)<br />
cL r (l)<br />
sta c (l)<br />
sta r (l,i1)<br />
in<br />
insert call (ll,i2)<br />
insert ret (ll)<br />
insert call (ll,i4)<br />
insert ret (ll)<br />
start call (ll)<br />
createList call (ll)<br />
createList ret(ll)<br />
insert call(ll,i1)<br />
insert ret(ll)<br />
start call(ll)<br />
start ret(ll,i3)<br />
step ret (ll,i6)<br />
start ret (ll,i5)<br />
step call (ll)<br />
in<br />
insert<br />
insert,start,step<br />
createList<br />
empty<br />
insert<br />
current unset<br />
start<br />
current set<br />
cL r (l) i c (l,42)<br />
cLE r (e1)<br />
i r (l)<br />
cL c (l)<br />
cLE (e1,42)<br />
l c<br />
l e1:<br />
a cont (e1,42)<br />
a l e1:42 first (l,e1)<br />
l<br />
e1:42<br />
DFG-SPP-Kolloquium, 20.11.2003 40<br />
DFG-SPP-Kolloquium, 20.11.2003 41
Konsistenz von OO Viewpoints<br />
Konsistenz-Prüfung zwischen den Perspektiven<br />
Konsistenz-Prüfung<br />
Konsistenz von OO Viewpoints<br />
Entwicklungs-Relationen<br />
Konzept von Entwicklungs-Relationen für Systemspezifikationen<br />
in<br />
cL c (l)<br />
cL r (l)<br />
i c (l,i1)<br />
i r (l)<br />
Spec 1<br />
Spec2<br />
R<br />
2<br />
R 1<br />
V (M)<br />
2<br />
Spec 3<br />
R<br />
3<br />
V<br />
1<br />
(M)<br />
V<br />
1<br />
(E)<br />
M<br />
V<br />
3<br />
(M)<br />
M<br />
in<br />
Spec 1<br />
‘ Spec‘<br />
2<br />
V<br />
2<br />
(E)<br />
E<br />
V<br />
3<br />
(E)<br />
Spec‘<br />
3<br />
V (N)<br />
2<br />
cL r (l) i c (l,42)<br />
cLE r (e1)<br />
i r (l)<br />
cL c (l)<br />
cLE (e1,42)<br />
l c<br />
l e1:<br />
a cont (e1,42)<br />
a l e1:42 first (l,e1)<br />
l<br />
e1:42<br />
V<br />
1<br />
(N)<br />
N<br />
V<br />
3<br />
(N)<br />
DFG-SPP-Kolloquium, 20.11.2003 43<br />
DFG-SPP-Kolloquium, 20.11.2003 48<br />
Konsistenz von OO Viewpoints<br />
Entwicklungs-Relationen für OOTS<br />
Entwicklungs-Relationen<br />
Konsistenz von OO Viewpoints<br />
Konsistenz von Entwicklungsschritten<br />
Entwicklungs-Relationen<br />
Identifizierung/Definition der notwendigen Entwicklungsrelationen ( ODEMA)<br />
Spec 1<br />
Spec2<br />
R<br />
2<br />
R 1<br />
V (M)<br />
2<br />
Spec 3<br />
R<br />
3<br />
Zerlegung in Entwicklungsrelationen<br />
auf den Perspektiven<br />
syntaktische Repräsentation von<br />
– korrekte und<br />
– vollständige<br />
Regelmengen<br />
durch<br />
Spec 1<br />
‘<br />
V<br />
1<br />
(M)<br />
Spec‘<br />
2<br />
M<br />
E<br />
V<br />
3<br />
(M)<br />
Spec 3<br />
‘<br />
M<br />
Entwicklung von Konsistenzkriterien für Entwicklungschritte<br />
M( Spec‘<br />
2)<br />
M( Spec 1<br />
‘)<br />
?<br />
M( Spec 3<br />
‘)<br />
DFG-SPP-Kolloquium, 20.11.2003 49<br />
DFG-SPP-Kolloquium, 20.11.2003 54
Konsistenz von OO Viewpoints<br />
Verfeinerung von Methoden<br />
Methodenverfeinerung<br />
Konsistenz von OO Viewpoints<br />
Beispiel für Methodenverfeinerung<br />
Methodenverfeinerung<br />
eine (abstrakte) Methode wird<br />
– mittel Kompositionsoperatioren (sequentiell, alternativ, Fixpunkt)<br />
– über anderen (konkreteren) Methoden<br />
strukturiert (implementiert)<br />
move<br />
body<br />
(p,7,16)<br />
move<br />
call<br />
(p,7,16) x(p) = 42<br />
x(p) = 49<br />
y(p) = 13<br />
y(p) = 29<br />
move ret(p)<br />
DFG-SPP-Kolloquium, 20.11.2003 55<br />
DFG-SPP-Kolloquium, 20.11.2003 56<br />
Konsistenz von OO Viewpoints<br />
Beispiel für Methodenverfeinerung<br />
Methodenverfeinerung<br />
Konsistenz von OO Viewpoints<br />
Zerlegung der Methodenverfeinerung<br />
Methodenverfeinerung<br />
Methodenverfeinerung hat Effekte auf:<br />
ass x(p,7)<br />
ass<br />
move<br />
call<br />
(p,7,16) x(p) = 42 x(p) = 49<br />
y(p,16)<br />
x(p) = 49<br />
y(p) = 13 y(p) = 13 y(p) = 29<br />
move ret(p)<br />
– Abstrakte Methoden-Perspektive<br />
Reduktion des Nichtdeterminismus<br />
Verstärkung der Postcondition<br />
Domänenerweiterungen<br />
Abschwächung der Precondition<br />
– Konkrete Methoden-Perspektive<br />
Strukturierung des Methodenbody<br />
Konkretisierung des Methodenablaufs<br />
sonst keine Effekte (<br />
Diagonalrelationen)<br />
Inkonsistenzen möglich<br />
algorithmisch entscheidbare Konsistenzkriterien notwendig<br />
DFG-SPP-Kolloquium, 20.11.2003 57<br />
DFG-SPP-Kolloquium, 20.11.2003 58
Konsistenz von OO Viewpoints<br />
Zusammenfassung<br />
Methodenverfeinerung<br />
Konsistenz von OO Viewpoints<br />
Ausblick<br />
Methodenverfeinerung<br />
Entwicklung des TS-Framework<br />
Validierung der Nutzbarkeit anhand der Modellierung von verschiedensten formalen<br />
– semantischen Bereichen,<br />
– Kompositionsoperatoren,<br />
– Enwicklungsrelationen<br />
TS-Semantik insb. für:<br />
– Classdiagrams<br />
– Statecharts<br />
Enwicklung von OOTS<br />
Entwicklung einer formalen, heterogenen Spezifikationsmethode für objektorientierten<br />
Softwareentwurf mit<br />
adäquater Spezifikation der Viewpoints durch UML-Techniken<br />
erweiterbar/offen für die Integration weiterer Aspekte<br />
formalen und algorithmisch entscheidbaren Konsistenzkriterien<br />
kompositionaler Semantik<br />
formalen Entwicklungsrelationen<br />
DFG-SPP-Kolloquium, 20.11.2003 59<br />
DFG-SPP-Kolloquium, 20.11.2003 60