05.08.2014 Aufrufe

Definition - Stefan-Marr.de

Definition - Stefan-Marr.de

Definition - Stefan-Marr.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

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!

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!