Definition - Stefan-Marr.de
Definition - Stefan-Marr.de
Definition - Stefan-Marr.de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Kiwi.
Kiwi.<br />
Mo<strong>de</strong>llkonsistenz<br />
Themenbereich<br />
Mo<strong>de</strong>llmanagement und Qualität<br />
Vortrag im Seminar Software-Qualität bei <strong>de</strong>r mo<strong>de</strong>llbasierten<br />
Softwareentwicklung (SS2007)<br />
<strong>Stefan</strong> <strong>Marr</strong>
Agenda<br />
3<br />
■ Softwareentwicklung und Mo<strong>de</strong>llierung<br />
■ Inkonsistenz<br />
□ <strong>Definition</strong>, Grün<strong>de</strong>, Typen<br />
□ Inkonsistenz-Management<br />
■ Ansätze für Werkzeugunterstützung<br />
□ Typische Inkonsistenzen in UML-Diagrammen<br />
□ Spezielle und regelbasierte Ansätze<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Zweck von Mo<strong>de</strong>llen<br />
4<br />
■ Allgemein<br />
□ Kommunikation<br />
□ Dokumentation<br />
□ Spezifikation<br />
□ Evolution<br />
■ Mo<strong>de</strong>lle als Zwischenprodukte<br />
□ Mo<strong>de</strong>ll-Transformation<br />
□ Co<strong>de</strong>-Generierung<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Softwareentwicklung<br />
und Mo<strong>de</strong>llierung<br />
5<br />
Analyse<br />
Design<br />
class MyClass {<br />
private int x;<br />
}<br />
void m() {<br />
}<br />
Test<br />
Implementierung<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Auftreten<strong>de</strong>s Konsistenz-Problem im<br />
Lauf <strong>de</strong>r Entwicklung<br />
6<br />
Lecturer<br />
Stu<strong>de</strong>nt<br />
getAdvise()<br />
1 1<br />
■ Probleme<br />
□ Multiplizität<br />
□ Navigierbarkeit<br />
□ Abstraktes Objekt<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Entstehung von Inkonsistenzen<br />
7<br />
Abstraktionsgrad<br />
?<br />
?<br />
mo<strong>de</strong>llierter Aspekt<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Inkonsistenz<br />
8<br />
<strong>Definition</strong><br />
„Eine Inkonsistenz tritt genau dann auf, wenn eine<br />
Konsistenz-Regel verletzt wird.“ (nach [1])<br />
■ Mo<strong>de</strong>lle in beliebiger Sprache (UML, textuelle Notation,…)<br />
■ Regeln nicht immer spezifiziert<br />
■ Regeln auf verschie<strong>de</strong>nen Ebenen möglich<br />
□ Projektebene z.B. Vorgabe <strong>de</strong>r zu erstellen<strong>de</strong>n Mo<strong>de</strong>lle<br />
□ Mo<strong>de</strong>llebene z.B. Verhalten nur auf vorhan<strong>de</strong>nen Elementen<br />
□ Sprachebene z.B. OCL: Wellformedness von UML<br />
□ Diagrammebene z.B. Beziehungen zwischen Diagrammen<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Beispiel für Konsistenzregeln<br />
9<br />
Regeln aus <strong>de</strong>m UML-Metamo<strong>de</strong>ll<br />
■ Ein Element darf sich nicht direkt<br />
o<strong>de</strong>r indirekt selbst besitzen<br />
□ not self.allOwnedElements()<br />
->inclu<strong>de</strong>s(self)<br />
■ Element die bessen wer<strong>de</strong>n müssen,<br />
müssen einen Besitzer haben<br />
□ self.mustBeOwned() implies<br />
owner->notEmpty()<br />
aus [2]<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Grün<strong>de</strong> für Inkonsistenzen<br />
10<br />
■ Lücken in Spezifikation<br />
□ Unterschiedliche Auslegung<br />
□ Verschie<strong>de</strong>ne Design-Entscheidungen<br />
■ Fehler in Mo<strong>de</strong>llen<br />
□ Iterative und arbeitsteilige Entwicklung <strong>de</strong>r Mo<strong>de</strong>lle<br />
□ Diagramme nicht auf aktuellem Stand<br />
□ Komplexe Zusammenhänge <strong>de</strong>r Diagramme<br />
■ Ausdrucksfähigkeit <strong>de</strong>r Mo<strong>de</strong>llsprache<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Inkonsistenz-Typen<br />
11<br />
■ Vertikal: zwischen Abstraktionsebenen<br />
■ Horizontal: zw. Mo<strong>de</strong>llen o<strong>de</strong>r Mo<strong>de</strong>lldarstellungen einer Ebene<br />
■ Interlinguale Inkonsistenzen<br />
□ UML-Diagramm vs. Quellco<strong>de</strong>, vertikal<br />
□ Spezifikation vs. UML-Diagramm, horizontal<br />
■ Mo<strong>de</strong>ll interne Inkonsistenzen<br />
□ Struktur vs. Verhalten<br />
□ Struktur vs. Struktur<br />
□ Verhalten vs. Verhalten<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Framework zum<br />
Inkonsistenz-Management<br />
12<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007<br />
aus [3]
Inkonsistenz-Management<br />
13<br />
■ Inkonsistenzen nicht vermeidbar<br />
■ Teils sogar gewünscht<br />
□ Vermeidung zu früher Design-Entscheidungen<br />
□ Behebung in einigen Situation zu aufwendig<br />
■ Umgang mit Inkonsistenzen<br />
□ Konsistenzregeln kontrollieren<br />
□ Einschätzen<br />
– Auswirkung und Risiko<br />
□ Verfolgen und Beheben<br />
□ Messen<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Zwischenfazit<br />
14<br />
■ Mo<strong>de</strong>lle wichtiger Bestandteil <strong>de</strong>r Softwareentwicklung<br />
■ Konsistenzerhalt von Mo<strong>de</strong>llen und an<strong>de</strong>ren Artefakten ist<br />
Herausfor<strong>de</strong>rung für <strong>de</strong>n Entwicklungsprozess<br />
□ Inkonsistenz-Management möglich<br />
□ Tool-Unterstützung bei <strong>de</strong>r Bearbeitung von Mo<strong>de</strong>llen ebenso<br />
Kiwi?<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Agenda<br />
15<br />
■ Softwareentwicklung und Mo<strong>de</strong>llierung<br />
■ Inkonsistenz<br />
□ <strong>Definition</strong>, Grün<strong>de</strong>, Typen<br />
□ Inkonsistenz-Management<br />
■ Ansätze für Werkzeugunterstützung<br />
□ Typische Inkonsistenzen in UML-Diagrammen<br />
□ Spezielle und regelbasierte Ansätze<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Klassifikation von Inkonsistenzen in<br />
UML Klassen-, Sequenz- und<br />
Zustandsdiagrammen<br />
16<br />
Konfliktebene Verhalten Struktur<br />
Mo<strong>de</strong>ll-Mo<strong>de</strong>ll<br />
■ Vererbte Assoziationen<br />
■ Unspezifizierte<br />
Referenzen (Typen)<br />
Mo<strong>de</strong>ll-Instanz ■ Inkompatible <strong>Definition</strong>en ■ Fehlen<strong>de</strong><br />
Instanz<strong>de</strong>finition<br />
Instanz-Instanz<br />
■ Aufrufinkonsistenz<br />
■ Verhaltensinkonsistenz<br />
■ Inkompatibles Verhalten<br />
■ Unzusammenhängen<strong>de</strong><br />
Mo<strong>de</strong>lle<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007<br />
aus [4]
Konsistenz-Probleme in UML-Mo<strong>de</strong>llen<br />
Inkompatible <strong>Definition</strong>en<br />
17<br />
Lecturer<br />
Stu<strong>de</strong>nt<br />
getAdvise()<br />
1 1<br />
■ Probleme<br />
□ Multiplizität<br />
□ Navigierbarkeit<br />
□ Abstraktes Objekt<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Konsistenz-Probleme in UML-Mo<strong>de</strong>llen<br />
Inkompatibles Verhalten<br />
18<br />
Lecturer<br />
Stu<strong>de</strong>nt<br />
answer(question)<br />
answered()<br />
answer(question2)<br />
answer(question3)<br />
■ Problem<br />
□ Wi<strong>de</strong>rsprüchliche Verhaltens<strong>de</strong>finitionen<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Konsistenz-Probleme in UML-Mo<strong>de</strong>llen<br />
Vererbte Assoziationen<br />
19<br />
Advise<br />
1<br />
advisor<br />
Advisor<br />
aus [5]<br />
ma<br />
2<br />
Master Stu<strong>de</strong>nt<br />
Ph.D. Stu<strong>de</strong>nt<br />
■ Problem<br />
□ Mit Realität nicht vereinbare Relationen<br />
□ Bzw. Leere o<strong>de</strong>r unendliche Menge<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Konsistenz-Probleme in UML-Mo<strong>de</strong>llen<br />
Unzusammenhängen<strong>de</strong> Mo<strong>de</strong>lle<br />
20<br />
■ Problem<br />
□ Zustän<strong>de</strong> o<strong>de</strong>r Objekte nicht mehr erreichbar<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Ansätze zur<br />
werkzeuggestützten Prüfung<br />
21<br />
■ Grobe Unterteilung <strong>de</strong>r Ansätze<br />
1. Speziell auf bestimmtes Problem bezogen<br />
2. Regelbasiert und relativ allgemein gültig<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Spezielle Ansätze (1/2)<br />
22<br />
■ Allgemein<br />
□ Implizieren bestimmte Konsistenzregeln<br />
□ Bieten meist effiziente Algorithmen für genau ein Problem<br />
■ Ansatz zur Konsistenz von Klassen- und Zustandsdiagrammen [6]<br />
□ Formale Darstellung <strong>de</strong>r Diagramme<br />
□ Verwendung eine formalen Verfahrens zur Konsistenzprüfung<br />
Lecturer<br />
Stu<strong>de</strong>nt<br />
getAdvise()<br />
1 1<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Spezielle Ansätze (2/2)<br />
23<br />
■ Effiziente Prüfung bei vererbten Assoziationen [5]<br />
□ Unterstützt mit Einschränkungen<br />
Constrained Generalization Sets<br />
□ Aufwand <strong>de</strong>s Verfahren polynomial<br />
□ Basiert auf Algorithmus für E/R-Diagramme für Datenbanken<br />
um hier die Erfüllbarkeit eines Schemas sicherzustellen<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Regelbasierte Ansätze (1/2)<br />
24<br />
■ Allgemein<br />
□ <strong>Definition</strong> <strong>de</strong>r Beschreibungssprache für Regeln<br />
□ Überführung <strong>de</strong>r UML Diagramme in geeignete Darstellung<br />
□ Automatisches Prüfen <strong>de</strong>r Regel möglich<br />
Element<br />
(from Elements)<br />
Element<br />
/ownedElement<br />
* {union}<br />
/owner<br />
0..1 {union}<br />
■ not self.allOwnedElements()<br />
->inclu<strong>de</strong>s(self)<br />
■ self.mustBeOwned() implies<br />
owner->notEmpty()<br />
aus [2]<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Regelbasierte Ansätze (2/2)<br />
25<br />
■ Vorteil von Konsistenzregeln<br />
□ Anpassung und Erweiterung <strong>de</strong>r Regeln möglich<br />
□ können Domänen spezifisch sein<br />
■ Tool-Unterstützung meist mit aka<strong>de</strong>mischem Charakter<br />
■ Regeln meist nicht übertragbar auf an<strong>de</strong>re Tools<br />
■ Ansätze auf verschie<strong>de</strong>ner Grundlage<br />
□ Abstrakte Datentypen und Larch Prover [7]<br />
□ OCL [8,9]<br />
□ Discription Logic [10]<br />
□ Graphgrammatik und Graph Rewriting Rules [11, 12]<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Graphbasierter Ansatz von Mens [12]<br />
Angesprochene Probleme<br />
26<br />
■ Standardverletzungen<br />
□ Industrie- und Unternehmensstandards<br />
■ Mo<strong>de</strong>llierungsrichtlinien<br />
□ Namenskonventionen<br />
■ Unvollständige Mo<strong>de</strong>lle, Syntax, Semantik (Well-formedness)<br />
■ Redundanzerkennung<br />
■ Schlechte Praktiken und Anti-Patterns<br />
■ Erkennung von Refactoring-Möglichkeiten<br />
■ Erkennung visuellen Problemen<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Graphbasierter Ansatz von Mens [12]<br />
Umsetzungsi<strong>de</strong>e<br />
27<br />
■ Mo<strong>de</strong>ll als Typ-Graph (vereinfachtes UML-Metamo<strong>de</strong>ll)<br />
■ Für Defekte Graph-Transformations-Regeln<br />
■ Erkennung strukturelle Defekte <strong>de</strong>s Graphen<br />
□ Vorhan<strong>de</strong>n sein o<strong>de</strong>r fehlen bestimmter Mustern im Graphen<br />
■ Kennzeichnung im Graphen durch Konflikt-Knoten<br />
■ Probleme<br />
□ Nur prototypisch implementiert<br />
□ Nicht in Mo<strong>de</strong>llierungstool integriert<br />
□ Allgemein gültig, aber nur für Klassen-, Zustands- und<br />
Sequenzdiagramme umgesetzt<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Graphbasierter Ansatz von Mens [12]<br />
Typisierter Graph mit Konfliktknoten<br />
28<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Zusammenfassung und Fazit<br />
29<br />
■ Inkonsistenz ein ständiges Problem<br />
□ Aber auch Hilfsmittel<br />
■ Framework für Inkonsistenz-Management als Lösung<br />
■ Vorstellung von Inkonsistenzproblemen<br />
■ Ansätze zur werkzeuggestützten Erkennung<br />
□ Regelbasierte Ansätze<br />
■ Hochintegrierte mo<strong>de</strong>llgestützte Entwicklung immer noch<br />
Wunschtraum<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Literaturverweise<br />
30<br />
[1] B. Nuseibeh, To Be and Not to Be: On Managing Inconsistency in Software Development, IEEE<br />
Computer Society, 1996<br />
[2] E. Holz, UML Vertieft, Vorlesungsunterlagen HPI, Potsdam, Juli 2006 (auf Basis <strong>de</strong>s UML2.0<br />
Standards)<br />
[3] B. Nuseibeh et al., Leveraging Inconsistency in Software Development, Computer, IEEE Computer<br />
Society, 2000<br />
[4] J. P. S. Wagemann, Consistency Maintenance of UML Mo<strong>de</strong>ls with Description Logics, Vrije<br />
Universiteit Brussel, 2003<br />
[5] A. Maraee & M. Balaban, Efficient Decision of Consistency in UML Diagrams with Constrained<br />
Generalization Sets, Workshop Materials of the 1st Workshop on Quality in Mo<strong>de</strong>ling, 2006<br />
[6] W. L. Yeung, Checking Consistency between UML Class and State Mo<strong>de</strong>ls Based on CSP and B,<br />
Journal of Universal Computer Science, 2004<br />
[7] P. Andre et al., Checking the consistency of UML class diagrams using Larch Prover 2000<br />
[8] D. Chiorean et al., Ensuring UML Mo<strong>de</strong>ls Consistency Using the OCL Environment. Electr. Notes<br />
Theor. Comput. Sci., 2004<br />
[9] B. Hnatkowska, Consistency Checking in UML Mo<strong>de</strong>ls, 2001<br />
[10] J. Simmonds & M. C. Bastarrica, Description Logics for Consistency Checking of Architectural<br />
Features in UML 2.0 Mo<strong>de</strong>ls, Universidad <strong>de</strong> Chile, 2004<br />
[11] R. Wagner, A Plug-In for Flexible and Incremental Consistency Management University of<br />
Pa<strong>de</strong>rborn, 2003<br />
[12] T. Mens, Graph-Based Tool Support to Improve Mo<strong>de</strong>l Quality, Workshop Materials of the 1st<br />
Workshop on Quality in Mo<strong>de</strong>ling, 2006<br />
Mo<strong>de</strong>llkonsistenz | <strong>Stefan</strong> <strong>Marr</strong> | 23. August 2007
Q&A<br />
Kiwi!