<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Repository-Dienste f u¨r die modellbasierte Entwicklung</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Universita ̈t Siegen</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Viele langlebige Systeme existieren in mehreren Varianten, die parallel weiterentwickelt werden mu¨ssen. Hierzu werden unterstu¨tzende Repository-Dienste beno¨tigt, neben dem klassischen Mischen von Dokumenten auch Historienanalysen. Bei Systemen, die mit modellbasierten Methoden (weiter-) entwickelt werden, ergeben sich besondere Probleme, weil auch die Modelle mitversioniert und in die Analysen einbezogen werden mu¨ssen. Dieser Workshopbeitrag beschreibt dieses Problemfeld genauer und skizziert Lo¨sungsansa¨tze, die im Rahmen des SiDiff-Projekts entwickelt wurden.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Die modellbasierte Systementwicklung hat die Konsequenz, daß die Modelle zum
integralen Teil der Software werden. Die Modelle mu¨ ssen immer vo¨ llig konsistent sein mit
manuell entwickeltem Code, Konfigurationsdaten und sonstigen Ressourcen, die oft in
XML-Dateien gespeichert werden. Alle zusammengeh o¨rigen Dokumente – hierzu geho¨ ren
natu¨ rlich auch Testdaten, Dokumentationen und sonstige Begleitdokumente – mu¨ ssen
gemeinsam versioniert werden.</p>
      <p>Die Versionierung von Software wird klassischerweise durch Repository-Systeme wie
CVS oder SVN unterst u¨tzt. Diese sind allerdings fu¨ r Texte ohne spezielle Struktur
konzipiert worden und arbeiten mit strukturierten Dokumenten, namentlich Modellen, nicht
zufriedenstellend. Im Kern sind die u¨ blichen Repository-Dienste auch fu¨ r Modelle
erforderlich; Systeme, die dies leisten, bezeichnen wir i.f. als Modell-Repositories.
ModellRepositories mu¨ ssen natu¨ rlich nicht nur Modelle, sondern auch beliebige andere
Dokumente integriert mitverwalten ko¨ nnen.</p>
      <p>Wir konzentrieren uns i.f. auf solche Modell-Repositories, die Funktionen anbieten, die
die Weiterentwicklung langlebiger Software mit langen Versionshistorien unterst u¨tzen.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Modell-Repositories</title>
      <p>Hauptfunktionen von Modell-Repositories. Zur Unterstu¨ tzung von
Entwicklungsprozessen werden mit hoher Priorita¨t folgende Dienste bzw. Funktionen von Repositories
beno¨ tigt. Diese bauen auf Basisfunktionen zur Verwaltung von Versionsgraphen und
anderer administrativer Daten auf. Man kann alle Funktionen in einem einzigen System
realisieren oder einige in Form autarker Analysewerkzeuge, solche
Implementierungsentscheidungen interessieren uns an dieser Stelle nicht.
1. das Vergleichen und Mischen von Modellen: In großen Projekten ist arbeitsteilige
Entwicklung und das gemeinsame Bearbeiten von Dokumenten unvermeidlich. Das
exklusive Sperren von Dokumenten fu¨ hrt zu praktischen Problemen, daher hat sich in
der Praxis weitgehend die Strategie durchgesetzt, nicht zu sperren, sondern
automatisch zu mischen (3-Wege-Mischen).
2. Suchfunktionen, die “gleiche” Modellelemente oder -Fragmente in unterschiedlichen
Varianten finden: Wir unterstellen hier, daß bei langlebigen Systemen mehrere
Releases bei Anwendern installiert sind. Wenn in irgendeinem der Releases ein kritischer
Fehler gefunden wird, muß f u¨r alle anderen Releases gepru¨ ft werden, ob der Fehler
dort auch auftritt. In einen Fehler sind in der Regel mehrere Modellelemente
involviert. Dieses Modellfragment kann in anderen Releases identisch oder in modifizierter
Form auftreten. In diesem Zusammenhang ist es auch wichtig zu wissen, in welcher
Version – die nicht notwendig ein Release ist – der Fehler entstanden ist und in
welchem Kontext die damaligen A¨nderungen standen. Generell ist es fu¨ r das Versta¨ndnis
des Systems oft hilfreich zu wissen, welche Teile warum und zusammen mit welchen
anderen Teilen eingefu¨ hrt wurden und wie diese Systemteile weiterentwickelt wurden.
3. historienbasierte Modellanalysen: Ein System, das oft gea¨ndert wird, degeneriert
insofern, als die Qualita¨t der Entwurfsentscheidungen immer suboptimaler wird. Im
Endeffekt sinkt die Verstehbarkeit des Systems und damit auch die Wartbarkeit, ferner wird
die Einscha¨tzung, wie aufwendig bzw. risikoreich weitere A¨ nderungen sind, immer
schwieriger. Der Qualita¨tsverlust muß durch Maßnahmen zur Strukturverbesserung
kompensiert werden. Fu¨r die Planung solcher Reengineering-Maßnahmen beno¨tigt man
Analysefunktionen, die kritischsten Defizite des Systems zu finden helfen. Derartige
Analysefunktionen werden auch im Rahmen des Softwarequalita¨tsmanagements fu¨r
die Bewertung von Entwicklungsprozessen, zur Vorbereitung von Audits etc. beno¨tigt.</p>
      <sec id="sec-2-1">
        <title>Ein Referenzmodell fu¨ r Repository-Dienste. Die vorstehenden Funktionen werden im</title>
        <p>Prinzip direkt von Entwicklern genutzt. Intern weisen sie begriffliche U¨ berschneidungen
und Abha¨ngigkeiten auf. Es liegt nahe, ein Repository-System in dementsprechende
Subsysteme zu zerlegen. Im folgenden Referenzmodell werden die konzeptuellen
Abha¨ngigkeiten und mit den Konzepten direkt korrespondierende Dienste in Form von Schichten
dargestellt:</p>
      </sec>
      <sec id="sec-2-2">
        <title>Schicht 0: Dokumentverwaltung</title>
        <p>Diese Schicht beinhaltet Dienste zur Speicherung von Dokumenten beliebigen Typs.
Eingeschlossen ist die Verwaltung von Nachfolger-Beziehungen zwischen
Revisionen, Benutzern und sonstigen administrativen Daten. Diese Schicht wird man in der
Regel durch ein etabliertes Repository-Produkt realisieren.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Schicht 1: Differenz- und A¨ hnlichkeitsberechnung von Modellen</title>
      <p>Dieser Schicht liegen Begriffsdefinitionen fu¨r die A¨ hnlichkeit von einzelnen
Modellelementen bzw. Modellfragmenten zugrunde. Diese Definitionen gehen direkt
in die Berechnung von Modelldifferenzen ein. Allerdings gilt bei manchen A¨
hnlichkeitsbegriffen auch die Umkehrung. Daher kann man die Berechnung von A¨
hnlichkeiten und Differenzen nicht trennen. Aus Dokumentdifferenzen kann man direkt
Differenzmetriken ableiten, die typischerweise in der Differenz angegebene
Korrespondenzen zwischen Modellelementen oder A¨nderungsoperationen za¨hlen, ggf.
gewichtet und/oder selektiert.</p>
      <p>Im Gegensatz zu Schicht 0 ist diese Schicht abha¨ngig vom Modelltyp, d.h. pro
Modelltyp sind eigene Implementierungen oder zumindest Anpassungen erforderlich.</p>
      <p>Dies gilt auch fu¨r die aufbauenden Schichten.</p>
      <sec id="sec-3-1">
        <title>Schicht 2a: Mischfunktionen</title>
        <p>Eine Mischung basiert in der Regel auf einer vorher bestimmten Differenz, da die
gemeinsamen Teile nur einmal in das Ergebnis u¨bernommen werden. Die speziellen
Teile der zu mischenden Dokumente ko¨nnen unvertra¨glich sein. Zentrale Begriffe
dieser Ebene sind daher Konflikte und Strategien zur Konfliktbehandlung.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Schicht 2b: Historienanalysen</title>
        <p>Diese Schicht realisiert die oben erwa¨hnten Suchfunktionen und historienbasierte
Modellanalysen. Sie baut direkt auf Schicht 1 auf und liegt daher parallel zu den
Mischfunktionen. Neben der Definition von Suchfunktionen sind hier Verfahren zur
Vorverarbeitung und Indexierung von Versionshistorien angeordnet.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Technologische Herausforderungen</title>
      <p>Dieser Abschnitt diskutiert den Stand der Technik in den vorstehende benannten Schichten
des Referenzmodells. Auf Schicht 0 gehen wir nicht ein, denn hier ist etablierte
Technologie verfu¨gbar.
3.1</p>
      <sec id="sec-4-1">
        <title>Differenzberechnung</title>
        <p>Die entscheidende interne Funktion ist hier Bestimmung korrespondierender
Dokumentteile. Fu¨r textuelle Dokumente sind hinreichend gute und effiziente Algorithmen bekannt,
fu¨r graphstrukturierte Modelle ist das Problem deutlich komplizierter. Persistente
Darstellungen sind keine geeignete Basis, sondern nur abstrakte Syntaxba¨ume. Besonders
schwierig ist die Bestimmung von Korrespondenzen bei Modelltypen, in denen
wichtige Modellelemente keine markanten lokalen Eigenschaften haben, sondern deren
Nachbarschaft entscheidend ist. Ein zusa¨tzliches Problem bei langlebigen Systemen sind neue
Sprachversionen, die zu vera¨nderten Metamodellen fu¨hren.</p>
        <p>
          Der in [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] publizierte Vergleich von Algorithmen zeigt die Spannbreite der aktuell
bekannten Lo¨sungen und die jeweiligen Kompromisse auf:
– Verbreitet sind Verfahren, die auf Basis persistenter Identifizierer von Modellelementen
arbeiten. Sie sind sehr effizient und leicht implementierbar, basieren aber auf sehr
einschra¨nkenden Voraussetzungen und Annahmen, die bei langlebigen, großen Systemen
praktisch nicht erfu¨llbar sind. Sie bieten wenig bzw. keine Unterstu¨tzung fu¨r die
Konfliktbehandlung und a¨hnlichkeitsbasierte Suchverfahren, weil die Semantik der
Dokumenttypen nicht bekannt ist.
– Auf der anderen Seite stehen dedizierte Algorithmen fu¨r einzelne Sprachen bzw.
Dokumenttypen, die besonders hochwertige Vergleichs- bzw. Mischergebnisse liefern, dafu¨r
aber relativ ineffizient sind und einen sehr hohen (um nicht zu sagen prohibitiven)
Implementierungsaufwand verursachen, weil sie fu¨r jeden Modelltyp weitgehend neu
entwickelt werden mu¨ssen.
– Frameworks wie das System SiDiff [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] zielen mittels einer “Sprache” zur
Spezifikation von A¨ hnlichkeiten auf einen tragfa¨higen Kompromiß zwischen Laufzeiteffizienz,
Qualita¨t der Ergebnisse und Implementierungsaufwand der Algorithmen.
Qualitativ gute Algorithmen sind aktuell nur verfu¨gbar fu¨r Klassendiagramme
(Datenmodelle) in diversen Varianten, insb. fu¨r reverse engineerte Java-Quellprogramme, ferner fu¨r
einfachere Varianten von Aktivita¨tsdiagramme und Zustandsautomaten. Fu¨r andere
Modelltypen und doma¨nenspezifischen Sprachen ist wenig oder nichts verfu¨gbar. Weiterer
Forschungs- und Entwickungsbedarf besteht hinsichtlich der Gestaltung der Metamodelle,
der Qualita¨tsbeurteilung bzw. Optimierung von Differenzen und der Evolution der
Metamodelle.
3.2
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Mischfunktionen</title>
        <p>Beim Mischen von Dokumenten ko¨nnen Fehler entstehen, und zwar hinsichtlich
kontextfreier bzw. kontextsensitiver Syntax, Programmierstil und Semantik. Paare von
Modellteilen (bzw. die sie erzeugenden A¨ nderungen), die solche Fehler erzeugen, stehen in Konflikt
zueinander. Mischfunktionen haben daher zwei wesentliche Teilfunktionen, na¨mlich
Konflikterkennung und Konfliktbehandlung, also Mischentscheidungen. Beide Teilfunktionen
ha¨ngen von der Semantik des Modelltyps ab und sind schwieriger zu realisieren, wenn
–</p>
        <p>Modelle dieses Typs komplexe Konsistenzkriterien aufweisen und Modelleditoren nur
Modelle verarbeiten ko¨nnen, die einen hohen Korrektheitsgrad einhalten;
– eventuelle falsch positive Mischentscheidungen von nachfolgenden
Entwicklungsschritte nicht oder nur mit hohem Aufwand erkannt werden.</p>
        <p>Der Stand der Technik kann hier als rudimenta¨r bezeichnet werden. Fu¨r viele Modelltypen
gibt es keine Mischwerkzeuge, viele vorhandene Mischwerkzeuge unterstu¨tzen nur das
2Wege-Mischen auf Syntaxbaumsdarstellungen und bieten nur sehr wenig Unterstu¨tzung.
3.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>Suchfunktionen</title>
        <p>
          Suchfunktionen verallgemeinern die paarweise A¨ hnlichkeit, die schon beim Vergleichen
von zwei Modellen beno¨tigt wurde, auf beliebige Revisions- und Varianten-Ketten oder
allgemeine Sammlungen von Modellen. Die Existenz bzw. Qualita¨t von Suchfunktionen
ha¨ngt daher direkt von den Funktionen ab, die A¨ hnlichkeiten berechnen. Einzelne
Lo¨sungsansa¨tze werden in [
          <xref ref-type="bibr" rid="ref13 ref14 ref2">2, 13, 14</xref>
          ] diskutiert, von einem fla¨chendeckenden Angebot
praxiserprobter Lo¨sungen ist man aber noch weit entfernt.
3.4
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>Analysefunktionen</title>
        <p>Hauptzweck dieser Funktionen ist, die Qualita¨t eines Systems zu beurteilen und insb.
Systemteile (also u.a. Modellfragmente) zu finden, an denen Strukturverbesserungen
notwendig sind. Systemteile mit einer geringen Gro¨ße sind in diesem Sinne leichter handhabbar,
weil man in vielen Fa¨llen die Defekte formal beschreiben kann (z.B. zu große Klassen oder
Zyklen in benutzt-Beziehungen); auf dieser Basis kann man Suchverfahren
implementieren, die die entsprechenden Stellen finden. Ferner ist aufgrund der geringen Gro¨ße der
Aufwand fu¨r die Reparatur gering, namentlich wenn sie durch Refactorings, ggf. in
Verbindung mit Design-Patterns, z.T. automatisierbar ist bzw. durch Werkzeuge unterstu¨tzt
wird.</p>
        <p>Strukturverbesserungen in gro¨ßeren Systemteilen werfen deutlich mehr Probleme auf: die
Definition, wann ein Defekt vorliegt, ist nicht formalisierbar, und vielfach wird nicht
alleine der Zustand einer Version zur Beurteilung herangezogen, sondern Merkmale der
A¨ nderungshistorie, d.h. es wird vom Entwicklungsprozeß auf die Qualita¨t des Produkts
geschlossen. Beispielsweise sind Defizite in Systemteilen, in denen wiederholt
gro¨ßere A¨nderungen stattfanden, wahrscheinlicher. Das Auffinden von suspekten Systemteilen
ist eher als ein Information-Retrieval-Problem anzusehen, bei dem es darum geht, unter
den vielen mo¨glichen Verbesserungsmaßnahmen diejenigen mit dem gro¨ßten Nutzen und
den geringsten Kosten herauszufinden. Wegen der ho¨heren Umbaukosten ko¨nnen na¨mlich
i.d.R. nur wenige derartige Maßnahmen durchgefu¨hrt werden.</p>
        <p>Visualisierung von Historien. Die geforderten Analysen ganzer Versionshistorien
stehen vor dem Problem der Informationsu¨berflutung: einzelne Versionen sind i.d.R. schon
sehr umfangreich, das Datenvolumen steigt infolge der Versionen um 1 - 2
Gro¨ßenordnungen.</p>
        <p>Viele Analyseverfahren nutzen daher Metriken, einzelne Versionen werden also nicht mehr
in allen Details dargestellt, sondern auf ihre Metrikwerte reduziert. “Auffa¨llige” Versionen
bzw. Vorkommnisse in der Versionshistorie ko¨nnen nur noch anhand der Metrikwerte bzw.
der numerischen Differenzen der Metrikwerte erkannt werden.</p>
        <p>
          Auf Metriken basieren auch fast alle Methoden zur Visualisierung von Historien. Die
bekannten Methoden zur Visualisierung von großen naturwissenschaftlichen Datenmengen
versagen aber bei Modellen weitgehend, weil hier die Grundstruktur des Datenraums nicht
ein homogenes 3D-Gitter ist, sondern durch die wesentlich komplizierteren Strukturen in
Modellen gepra¨gt ist. Es sind diverse Vorschla¨ge fu¨r 2- oder 3-dimensionale
Visualisierungen von Versionshistorien gemacht worden, die teilweise auf einer 2-dimensionalen
Darstellung einzelner Versionen basieren, u.a. die Evolution Matrix [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], die auf
polymetrischen Sichten [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] basiert, Evo Spaces [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], die sich optisch an Stadtbilder anlehnen, Gevol
[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], das Evolution Radar [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] und weitere Systeme.
        </p>
        <p>Ein genereller Nachteil der vorstehenden Ansa¨tze ist, daß die gewohnte graphische
Darstellung der Modelle, in der die Systemstrukturen gut dargestellt werden, nicht mehr
eingesetzt wird. Wegen der geometrischen Eigenschaften ist es sogar prinzipiell fraglich, ob
man die gewohnten Darstellungsformen u¨berhaupt fu¨r Historien einsetzen kann; sie
stoßen bei großen Modellen ohnehin an ihre Grenzen und sind nicht fu¨r die Darstellung von
Historien konzipiert worden. Vera¨nderungen an den Strukturen eines Systems za¨hlen indes
zu den interessantesten Vera¨nderungen.
4</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>L o¨sungsans a¨tze zur Visualisierung von Modell-Historien</title>
      <p>
        Dieser Abschnitt skizziert einige Lo¨sungsansa¨tze, die fu¨r die Visualisierung von
ModellHistorien im Kontext des SiDiff-Projekts [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] entwickelt wurden.
4.1
      </p>
      <sec id="sec-5-1">
        <title>Metriken von Differenzen statt Differenzen von Metriken</title>
        <p>U¨ bliche Metriken fu¨r Modelle sind Za¨hlungen von Strukturelementen, z.B. die Zahl der
Attribute einer Klasse in einem Klassendiagramm oder die Zahl der ausgehenden
Transitionen eines Zustands in einem Zustandsmodell. Wenn nun die ein Attribut durch ein
anderes ersetzt wird oder eine Transition durch eine andere, a¨ndern sich die Metrikwerte
nicht, obwohl signifikante A¨ nderungen stattgefunden haben. Anders gesagt sind die
numerischen Differenzen der Metrikwerte nur ein unzuverla¨ssiger Indikator fu¨r den Umfang
der A¨ nderungen.</p>
        <p>
          Die naheliegende Lo¨sung besteht darin, zuna¨chst eine vollsta¨ndige (korrekte) Differenz
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] zwischen den Versionen zu berechnen. Aus dieser Differenz geht hervor, welche
Editieroperationen zum Nachvollziehen der Vera¨nderungen notwendig sind. Metriken, die
sich auf Differenzen beziehen und z.B. die darin enthaltenen Operationen za¨hlen,
bezeichnen wir als Differenzmetriken. Differenzmetriken sind offensichtlich viel genauere
Indikatoren fu¨r den Umfang der A¨ nderungen als Differenzen von Metrikwerten.
Differenzmetriken haben den Vorteil, daß Typen von A¨nderungen hinsichtlich ihres
Risikos kategorisiert werden ko¨nnen. Ferner ko¨nnen tabellarische oder graphische
Darstellungen von A¨ nderungshistorien einzelne Metriken isoliert darstellen (m.a.W. sollten
Analysewerkzeuge dies erlauben).
        </p>
        <p>
          Differenzmetriken und Werkzeuge, die diese unterstu¨tzen, mu¨ssen spezifisch fu¨r
einzelne Modelltypen entwickelt werden, da jeder Modelltyp eigene Editieroperationen und
Konsistenzkriterien hat. Das reine Graphiksystem eines Werkzeugs kann weitgehend
unabha¨ngig von den Modelltypen entwickelt werden (s. z.B. [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]), muß also nicht fu¨r jeden
Modelltyp neu entwickelt werden. Das relevanteste Problem ist auch hier wieder die
Differenzberechnung (vgl. Abschnitt 3.1).
4.2
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>3D-Darstellungen und Animation</title>
        <p>3-dimensionale Darstellungen von Versionshistorien ko¨nnen grob eingeteilt werden in
solche, die Strukturen der Modelle direkt anzeigen, auf dieser Basis natu¨rlich auch
Vera¨nderungen der Strukturen, und andere, die i.w. nur Metrikwerte anzeigen.</p>
        <p>
          Anzeige von Modellstrukturen. Ein Beispiel fu¨r die erste Kategorie ist der
StructureChangesView im Werkzeug Evolver [
          <xref ref-type="bibr" rid="ref15 ref4">4, 15</xref>
          ], s. Bild 1. Diese Ansicht adressiert vor
allem strukturelle A¨ nderungen, z.B. wenn Klassen ihre Assoziationen zu anderen Klassen
a¨ndern. Die Darstellung besteht aus mehreren hintereinanderliegenden “Scheiben”, von
denen jede eine Version darstellt. Jede Versionsdarstellung besteht aus Wu¨rfeln, die z.B.
Klassen eines Klassendiagramms oder Zusta¨nde eines Zustandsdiagramms repra¨sentieren.
Linien zwischen diesen Wu¨rfeln stellen Beziehungen, Transitionen o.a¨. dar. Die
Grunddarstellung kann mit diversen Metriken angereichert werden, z.B. kann je eine Metrik auf
die Ho¨he, Breite und Farbe der Quader und die Dicke und Farbe der Linien abgebildet
werden.
        </p>
        <p>Abbildung 1: StructureChangesView im Werkzeug Evolver
Die Kameraposition kann beliebig zwar in Realzeit vera¨ndert werden (“Ego-Shooter”),
normalerweise ist sie vor der vordersten Scheibe, so auch in Bild 1. Nur diese vorderste
Version kann man also unbehindert erkennen, die dahinterliegenden Versionen werden von
den davorliegenden teilweise verdeckt. Die vorneliegende Version ist die am meisten
interessierende; um diese von den anderen optisch abzuheben, werden die hinteren Versionen
immer transparenter gezeichnet. Die Knoten der Graphen werden vereinfacht dargestellt;
wu¨ rde man alle Details einer Klasse oder eines Zustands darstellen, wa¨ren diese nicht mehr
lesbar.</p>
        <p>Diese Darstellung ist gut geeignet, um bestimmte Typen von A¨ nderungen zu erkennen,
allerdings hat sie durchaus Limitationen:
–
–</p>
        <p>Die Zahl der angezeigten Entita¨ten muß klein sein. Fu¨ r eine erste Gesamtu¨ bersicht
u¨ ber ein unbekanntes System ist diese Darstellung daher wenig geeignet, sie ist eher
nach einer Einschra¨nkung der Menge der zu untersuchenden Entita¨ten sinnvoll. Gute
Mo¨ glichkeiten zur Selektion der angezeigten Entita¨ten sind daher sehr wichtig.
Es kann nur eine beschra¨nkte Zahl von Versionen sinnvoll angezeigt werden, ca. 5
Versionen sind noch gut erkennbar, ab ca. 10 Versionen wird die Darstellung trotz
transparenter Darstellung unbrauchbar. Die Zahl der anzeigten Versionen sollte in Realzeit
vera¨nderbar sein, ebenso die vorne angezeigte Version. Wu¨ nschenswert ist ferner eine
Funktion, die aus der gesamten Revisionskette besonders interessante Versionen
anhand bestimmter Kriterien selektiert.</p>
        <p>Metrikbasierte Darstellungen. Ein Beispiel fu¨ r die zweite o.g. Kategorie ist der
EvolutionView im Werkzeug Evolver, s. Bild 2. Diese zeigt fu¨ r jede Version und jede Entita¨t eine
Sa¨ule. Die Ho¨ he einer Sa¨ule ergibt sich anhand einer Metrik, angewandt auf diese Entita¨t
in dieser Version. Bei der Kameraposition, die in Bild 2 gewa¨hlt ist, verla¨uft die “Zeit”
von hinten nach vorne. Von links nach rechts sind die angezeigten Entita¨ten angeordnet.
In Bild 2 ist eine der Entita¨ten selektiert und alle zugeordneten Sa¨ulen u¨ ber alle Versionen
hinweg sind dunkler gezeichnet.</p>
        <p>Abbildung 2: EvolutionView
An den Seiten befinden sind zusa¨tzlich noch zwei Spektrographen: diese zeigen die
Ha¨ufigkeitsverteilungen der Metrikwerte an. Hierzu wird der Wertebereich der Metrik in ca. 10
Intervalle eingeteilt, entsprechend viele kleine u¨bereinanderliegende Rechtecke stehen auf
einer Spektrographen-Wand zur Verfu¨gung. Mit einer Farbcodierung wird die Zahl der
Sa¨ulen, deren Gro¨ße im jeweiligen Intervall liegt, angezeigt. Die in Bild 2 vorne sichtbare
Spektrographen-Wand zeigt die Ha¨ufigkeitsverteilungen der Metrikwerte pro Entita¨t u¨ber
die Systemversionen hinweg an, die seitlich sichtbare Wand die Ha¨ufigkeitsverteilungen
pro Systemversion.</p>
        <p>Animationen. Die beiden vorigen Darstellungsformen haben die zeitliche Reihenfolge,
die durch eine Folge von Revisionen eines Systems entsteht, auf eine Dimension eines
3-dimensionalen graphischen Objekts abgebildet. Ein vo¨llig anderer Ansatz besteht darin,
die zeitliche Reihenfolge durch eine Animation darzustellen. Basis kann eine geeignete
2oder 3-dimensionale Darstellung einzelner Versionen sein. Dies muß allerdings so gewa¨hlt
sein, daß die Bewegungen gut erkennbar sind, also nicht zu geringfu¨gig und nicht zu heftig
sind.</p>
        <p>
          Ein Beispiel findet sich im EvolutionView des Werkzeugs Evolver, s. Bild 3, das nur ein
Bild einer Animation zeigt. Komplette Animationen ko¨nnen auf der WWW-Seite des
Projekts [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] als Video angesehen werden. Entita¨ten werden hier durch Ellipsen dargestellt,
die kreisfo¨rmig um einen Mittelpunkt angeordnet sind. Jeweils eine Metrik wird
dargestellt durch (a) den Abstand der Ellipsen vom Mittelpunkt, (b) die Gro¨ße der Ellipse und
(c) die Richtung der La¨ngsachse der Ellipse. A¨nderungen in diesen Metriken fu¨hren zu
entsprechenden mehr oder wenig schnellen Bewegungen der Ellipsen; die Fa¨higkeiten des
menschlichen Sehsystems ko¨nnen hier besonders gut ausgenutzt werden.
Zusa¨tzlich kann eine der Entita¨ten ausgewa¨hlt werden, deren Beziehungen zu anderen
Entita¨ten dargestellt werden.
        </p>
        <p>Abbildung 3: AnimationView</p>
      </sec>
      <sec id="sec-5-3">
        <title>Integration und Evaluation der Darstellungsformen. Die vorstehenden Darstellungs</title>
        <p>formen haben jeweils eigene Sta¨rken und Schwa¨chen und mu¨ssen in einer integrierten
Form verfu¨gbar sein, in der man nahtlos zwischen diesen und weiteren Darstellungen,
auch von Einzelversionen, wechseln kann.</p>
        <p>Erste kontrollierte Evaluationen der oben vorgestellten Darstellungsformen zeigten, daß
die EvolutionView aus Anwendersicht den gro¨ßten Nutzen brachte, gefolgt von der
AnimationView. Am schlechtesten schnitt die StructureChangesView ab.
5</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Resu¨ mee</title>
      <p>Die modellbasierte Systementwicklung erfordert fu¨r Modelle die gleichen
RepositoryDienste, die man bei textuellen Dokumenten gewohnt ist. In der Praxis und hinsichtlich
der technologischen Grundlagen ist man hiervon noch weit entfernt.</p>
      <p>Das aus Sicht der Praxis dra¨ngendste Problem stellen Misch- und Vergleichswerkzeuge
dar. Fu¨r viele Modelltypen sind keine brauchbaren Werkzeuge verfu¨gbar, die
verfu¨gbaren Werkzeuge unterstu¨tzen nur das zeitaufwendige manuelle Mischen und bieten nur
beschra¨nkte Unterstu¨tzung bei der Konflikterkennung.</p>
      <p>Analysefunktionen, die die Weiterentwicklung von Systemen mit vielen Revisionen bzw.
Varianten unterstu¨tzen, existieren nur als Forschungsprototypen. Hier ist noch viel Raum
fu¨r Verbesserungen vorhanden, sowohl bei der Entwicklung weiterer Darstellungsformen
als auch bei der Integration verschiedener Darstellungsformen und Optimierung
hinsichtlich der praktischen Nutzung.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>d'Ambros</surname>
          </string-name>
          , Marco; Lanza, Michele; Lungu, Mircea: Visualizing Integrated Logical Coupling Information; in
          <source>: Proc. International Workshop on Mining Software Repositories 2006 (MSR</source>
          <year>2006</year>
          )
          <article-title>;</article-title>
          ACM Press;
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2] Bildhauer, Daniel; Horn, Tassilo; Ebert, Ju¨rgen:
          <string-name>
            <surname>Similarity-Driven Software</surname>
          </string-name>
          Reuse; p.
          <fpage>31</fpage>
          -
          <lpage>36</lpage>
          <source>in: Proc. 2009 ICSE Workshop on Comparison and Versioning of Software Models; IEEE Catalog Number CFP0923G; 2009</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Collberg</surname>
          </string-name>
          , Christian; Kobourov, Stephen; Nagra, Jasvir; Pitts, Jacob; Wampler,
          <article-title>Kevin: A System For Graph-based Visualization of the Evolution of Software; p.77ff in:</article-title>
          <source>Proc. 2003 ACM Symposium on Software Visualization SoftVis'03; ACM; 2003</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Evolver</surname>
          </string-name>
          :
          <article-title>Analyzing Software Evolution with Animations and 3D-Visualizations (Project homepage</article-title>
          ); http://pi.informatik.uni-siegen.de /projects/evolver; 2009
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Kelter</surname>
          </string-name>
          , Udo; Wehren, Ju¨rgen; Niere,
          <article-title>Jo¨rg: A Generic Difference Algorithm for</article-title>
          UML Models; p.
          <fpage>105</fpage>
          -
          <lpage>116</lpage>
          <source>in: Software Engineering</source>
          <year>2005</year>
          .
          <article-title>Fachtagung des GI-Fachbereichs Softwaretechnik, 8</article-title>
          .-
          <fpage>11</fpage>
          .3.
          <year>2005</year>
          , Essen; LNI 64, GI;
          <fpage>2005</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Kolovos</surname>
          </string-name>
          , Dimitrios S.; Ruscio, Davide Di; Pierantonio, Alfonso; Paige, Richard F.:
          <article-title>Different Models for Model Matching: An Analysis Of Approaches To Support Model Differencing</article-title>
          ; p.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          <source>in: Proc. 2009 ICSE Workshop on Comparison and Versioning of Software Models; IEEE; 2009</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Lanza</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Recovering Software Evolution Using Software Visualization</surname>
          </string-name>
          Techniques; p.
          <fpage>37</fpage>
          -
          <lpage>42</lpage>
          <source>in: Proc. 4th Intl. Workshop Principles Software Evolution IWPSE; ACM; 2001</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Lanza</surname>
          </string-name>
          , Michele; Ducasse, Ste´phane:
          <string-name>
            <surname>Polymetric Views - A Lightweight Visual Approach</surname>
          </string-name>
          To Reverse Engineering; IEEE Trans. Softw. Eng.,
          <volume>29</volume>
          :9, p.
          <year>782ff</year>
          ;
          <fpage>2003</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Lungu</surname>
          </string-name>
          , Mircea; Lanza, Michele: Softwarenaut: Exploring Hierarchical System Decompositions; p.
          <fpage>351</fpage>
          -
          <lpage>354</lpage>
          <source>in: Proc. Conference on Software Maintenance and Reengineering (CSMR '06)</source>
          , Washington, DC, USA,
          <year>2006</year>
          ; IEEE Computer Society; 2006
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Miller</surname>
          </string-name>
          , Joaquin; Mukerji, Jishnu (eds.):
          <source>MDA Guide Version 1.0</source>
          .1; OMG, Document Number: omg/2003-06-01;
          <fpage>2003</fpage>
          -06-12; http://www.omg.org/docs/omg/03-06-01.pdf
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11] SiDiff Differenzwerkzeuge; http://www.sidiff.org;
          <year>2008</year>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Treude</surname>
          </string-name>
          , Christoph; Berlik, Stefan; Wenzel, Sven; Kelter, Udo: Difference Computation of Large Models; p.
          <fpage>295</fpage>
          -
          <lpage>304</lpage>
          <source>in: 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, Sep</source>
          <volume>3</volume>
          -
          <issue>7</issue>
          , Dubrovnik, Croatia;
          <fpage>2007</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13] Wenzel, Sven; Kelter, Udo; Hutter, Hermann: Tracing Model Elements; p.
          <fpage>104</fpage>
          -
          <lpage>113</lpage>
          <source>in: 23rd IEEE International Conference on Software Maintenance (ICSM</source>
          <year>2007</year>
          ),
          <source>October 2-5</source>
          ,
          <year>2007</year>
          , Paris, France; IEEE ;
          <fpage>2007</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14] Wenzel, Sven; Kelter, Udo: Analyzing Model Evolution; p.
          <fpage>831</fpage>
          -
          <lpage>834</lpage>
          <source>in: Proc. 30th International Conference on Software Engineering</source>
          , Leipzig, Germany, May
          <volume>1018</volume>
          ,
          <year>2008</year>
          (ICSE'08); ACM Press;
          <year>2008</year>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15] Wenzel, Sven; Koch, Jens; Kelter, Udo; Kolb, Andreas:
          <article-title>Evolution Analysis with Animated and</article-title>
          3D-Visualizations; p.
          <fpage>475</fpage>
          -
          <lpage>478</lpage>
          <source>in: Proc. 25th IEEE International Conference on Software Maintenance (ICSM</source>
          <year>2009</year>
          ),
          <year>2009</year>
          , Edmonton, Canada; IEEE;
          <fpage>2009</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Wettel</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ; Lanza,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Visual exploration of large-scale system evolution</article-title>
          ; p.
          <fpage>219</fpage>
          -
          <lpage>228</lpage>
          <source>in: Proc. 15th Working Conference on Reverse Engineering (WCRE)</source>
          ,
          <string-name>
            <surname>Washington</surname>
            <given-names>DC</given-names>
          </string-name>
          , USA; IEEE Computer Society; 2008
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Holt</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Hassan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <source>Exploring Software Evolution Using Spectrographs</source>
          ; p.
          <fpage>80</fpage>
          -
          <lpage>89</lpage>
          <source>in: Proc. Working Conference on Reverse Engineering (WCRE</source>
          <year>2004</year>
          )
          <article-title>; 2004</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>