<!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>Vorschlag Hypermodelling: Data Warehousing für Quelltext</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tim Frey</string-name>
          <email>tim.frey@tim-frey.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>OvG University Magdeburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2011</year>
      </pub-date>
      <fpage>55</fpage>
      <lpage>60</lpage>
      <abstract>
        <p>This paper explains the idea to load source code into a Data Warehouse. First, separation of concerns is explained. Following, the motivation to load source code in a Data Warehouse is briefly presented. Afterwards, the multi-dimensionality of software is discussed. Also, a first model for software in a Data Warehouse is shown. Nearby, the challenge that multiple cubes will be needed in order to load software in a Data Warehouse is elucidated. Thereafter, related work is shown and its relation to the revealed idea is explained. Finally, conclusions are done and future work paths are described.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Separation of Concerns</kwd>
        <kwd>OLAP</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. EINLEITUNG</title>
      <p>
        Bei der Softwareentwicklung ist das Prinzip der Separation of
Concerns (deutsch: Trennung der Belange, kurz SOC) etabliert.
Dieses Prinzip entspricht der Handlungsweise, ein
Softwaresystem aus verschiedenen Blickwinkeln zu betrachten und die
Codierung für jeden Blickwinkel, in einzelnen Modulen zu
erstellen [
        <xref ref-type="bibr" rid="ref2">1</xref>
        ]. Diese Blickwinkel werden oftmals auch Belang
oder Concern genannt. Verschiedene Programmiersprachen
stellen dabei verschieden mächtige Mechanismen zur
Verfügung, um Module für die einzelnen Blickwinkel zu erstellen.
Durch die Modularisierung wird eine erhöhte
Wiederverwendbarkeit und Verständlichkeit erreicht. Trotz der Anwendung
von SOC ist die Erstellung und die Untersuchung von Software
eine große Herausforderung. Ferner ist es nicht einfach
möglich, einzelne Concerns in Module zu kapseln, weil eine
"absolute" Modularität mit gängigen eingesetzten
Programmierparadigmen nicht möglich ist [
        <xref ref-type="bibr" rid="ref3 ref5">2,4</xref>
        ]. So ist es zum Beispiel bei der
Kodierung von Problemstellungen durch das objektorientierte
Paradigma nicht möglich, alle Concerns in einzelne Module zu
verpacken. Ein Modul ist oftmals für verschiedene
Zuständigkeiten zugleich programmiert [
        <xref ref-type="bibr" rid="ref3 ref4 ref5">2, 3, 4</xref>
        ]. Folglich sind
verschiedene Concerns in Modulen vermischt und werden nicht in
einzelnen Modulen, wie es eigentlich die Idee von SOC ist,
kodiert. Um die Analyse von Software im Zusammenhang mit
Concerns zu ermöglichen, muss folglich ein Analyseverfahren
den Umstand der Vermischung von Concerns in Modulen
beachten. Der Beitrag dieses Papiers ist daher die Idee,
mehrdimensionale Analyseverfahren, die solche Umstände beachten
      </p>
      <sec id="sec-1-1">
        <title>Abbildung 1: Prozesse mit einem Data Warehouse</title>
        <p>
          Dargestellt ist dies in Abbildung 1. Daten werden aus
operativen Systemen in ein Data Warehouse geladen. Diese Daten
1 Aufgrund des Bezuges des Papieres auf SOC und Data
Warehouse Technologien wird im weiteren Verlauf von einer
Vertrautheit mit SOC [
          <xref ref-type="bibr" rid="ref2">1</xref>
          ] und den hierbei auftretenden Problemen
[
          <xref ref-type="bibr" rid="ref3 ref5">2,4</xref>
          ], Frameworks [
          <xref ref-type="bibr" rid="ref10 ref9">8,9</xref>
          ], aspekt-orientierter Programmierung
[
          <xref ref-type="bibr" rid="ref13">12</xref>
          ], domänen-spezifischen Sprachen [
          <xref ref-type="bibr" rid="ref12">11</xref>
          ], Annotationen [
          <xref ref-type="bibr" rid="ref11">10</xref>
          ]
und Grundkenntnissen im Data Warehouse Bereich [
          <xref ref-type="bibr" rid="ref1 ref6 ref8">5,7</xref>
          ]
ausgegangen.
2 Eine integrierte Unternehmensplanung ist die Hinterlegung
von Planzielen in einem Data Warehouse. In diesem werden
hierbei Merkmalkombinationen in Verbindung mit
Kennzahlen gespeichert, wobei zumindest ein Merkmal ein
zukünftiges Zeitdatum darstellt. Der Zusammenhang zwischen
strategischen Entscheidungen und Planung ist, dass strategische
Entscheidungen zu Planzielen führen können.
werden dann genutzt, um Berichte zu erzeugen. Aufgrund
dieser Berichte werden Entscheidungen getroffen. Diese führen zu
einer Planung für die Zukunft. Der Plan wird dann als
Plandaten im Data Warehouse gespeichert. Dabei können die
Plandaten auch dazu führen, dass automatisiert in die operativen
Systeme geschrieben wird (grauer Pfeil). Durch Planung und deren
Umsetzung entstehen neue Daten in den operativen Systemen.
Diese werden dann wieder in das Data Warehouse geladen und
können mit den Plandaten verglichen werden. Das führt zu
Entscheidungen und gegebenenfalls zu einem neuen Plan [
          <xref ref-type="bibr" rid="ref1 ref8">7</xref>
          ].
Bei der Softwareentwicklung fallen ebenfalls Artefakte in einer
Vielzahl von Systemen an, und bei vielen Projekten ist die
Quelltextbasis zu groß, um einfach überblickt oder analysiert zu
werden. Die Vision ist daher eine integrierte, homogenisierte
Sicht auf Software als multidimensionales Gebilde, durch die
die verschiedenen Artefakte, die im Produktlebenszyklus
auftreten, abgebildet werden können. Der Kern der Idee ist, dass
Software nicht nur aus der Applikationslogik besteht, sondern
aus einer Vielzahl weiterer Artefakte, wie zum Beispiel Tests.
Eine multidimensionale Anordnung im Data Warehouse könnte
eine integrative Komponente sein, die es erlaubt, die Software
aus verschiedenen Blickwinkeln zu betrachten. Desweiteren
würde es der Einsatz dieser Technologie zulassen, außer der
Analyse weitere Anwendungen möglich zu machen. Der
Planungsprozess in Data Warehouses, der zur integrierten Planung
verwendet wird, könnte dazu dienen, Qualitätskriterien zu
definieren, oder auch Weiterentwicklungen von Software zu planen
und diese dann mit der erfolgten Realität zu vergleichen.
Ziel dieser Arbeit ist es daher, erste Möglichkeiten des
Speicherns von Quelltext in einem Data Warehouse zu untersuchen.
Diese erste Evaluation soll Hinweise über die Realisierbarkeit
des Einsatzes von Data Warehouses zur Quelltextuntersuchung
liefern.
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>3. MEHRDIMENSIONALE SOFTWARE</title>
      <p>
        Software wird normalerweise unter der Nutzung von
Frameworks, die vorgefertigte Funktionalität bereitstellen, erstellt.
[
        <xref ref-type="bibr" rid="ref10 ref9">8,9</xref>
        ]. Software kann als ähnlich zu einem n-dimensionalen
Hyperwürfel betrachtet werden. Die Ecken bzw. Kanten des
Würfels sind Frameworkfunktionen. Durch diese Anschauung
ist es nötig, Software nicht nur aus einer Position zu betrachten.
Die Ansicht ist ähnlich zu einem Hyperwürfel und kann gedreht
werden. Eine Drehung kann hierbei verschiedene Dimensionen
in den Vordergrund verschieben und andere im Hintergrund
verschwinden lassen. Dieser Vergleich zeigt, dass der Mensch
nicht dazu fähig ist Software, die ähnlich einem Hyperwürfel
ist, direkt und vollständig zu erfassen. Darstellungen sind
vielmehr Projektionen in den Verständnisraum des Menschen.
Die Analogie zu einem Hyperwürfel kann auf dessen
Konstruktion reduziert werden. Dabei kann ein Würfel gesehen werden,
der durch weitere Dimensionen erweitert wird. Im Falle von
Software wird ein Würfel durch Quelltext "befüllt", der sich im
vorgegebenen Rahmen eingliedert. Dies bedeutet, dass
Quelltextmodule aufgrund der Nutzung verschiedener
Frameworkfunktionen verschiedenen Dimensionen zugehörig
sind. Diese Zugehörigkeit ergibt sich daraus, dass die einzelnen
Concerns nicht in Modulen getrennt sind, und somit ein Modul
durch die Nutzung verschiedener Funktionen verschiedenen
Dimensionen gleichzeitig zugehörig sein kann.
      </p>
      <p>Beim Erstellen von Software werden Funktionen, die im
„aktuell erstellten“ Quelltext selbst sind und nicht aus Frameworks
stammen, auch genutzt. Der Programmierer erzeugt sich ein
eigenes Framework für seine spezielle Aufgabe. Dieses setzt
auf bestehende Funktionen von Frameworks auf oder definiert
vollkommen neue Funktionen. Somit wird ein Teil des
Würfelinhaltes zu neuen Dimensionen. Diese befinden sich in dem
Würfelrahmen und erzeugen hierin spezialisierte Unterräume
oder sie spannen Dimensionen auf, die orthogonal zu den
bisherigen Dimensionen stehen. Dabei rücken diese neuen
Dimensionen in den Vordergrund und bisherige Dimensionen werden
verdeckt, was einer Drehung des Würfels ähnlich ist.
In Abbildung 2 wird Quelltext, der selbst in eine
Frameworkdimension aufsteigt, grafisch visualisiert. Dabei sind
zuerst zwei Frameworks A und B zu sehen. Der Quelltext
konsumiert die Fähigkeiten eines Frameworks A und eines anderen
B, womit eine Komposition von beiden Frameworks erreicht
wird. Ein solches Konsumieren kann z.B. ein Funktionsaufruf
oder jedes andere Nutzen der Fähigkeiten eines Frameworks
sein. Die Pfeile zeigen das Konsumieren von Fähigkeiten an.
Aufgrund dessen, dass neuer Quelltext den bestehenden
Quelltext nutzt, steigt der zuvor erzeugte Quelltext im unteren Teil
der Grafik, selbst zur eigenständigen Dimension auf. Diese
wird dann von neuem Quelltext konsumiert. Dabei kann es
auch sein, dass der New Code nicht mehr das originale
Framework B nutzt, sondern nur den zuvor erzeugten Code und
Framework A, was durch die Schraffierung angedeutet ist.
Die Idee ist, dass Frameworkfunktionen oftmals Concerns
repräsentieren. Somit können die verschiedenen Concerns der
Software mit Dimensionen gleichgesetzt werden.</p>
      <sec id="sec-2-1">
        <title>Abbildung 2: Quelltext, der zur Dimension aufsteigt</title>
        <p>Daraus folgt eine abstrahierte Darstellung des Sachverhaltes
von Abbildung 2 in Abbildung 3. Hierbei wurden die
Dimensionen des Quelltextes mit C für Concern gekennzeichnet. Die
Komposition durch Quelltext von verschiedenen Concerns ist
durch den Verbindungsvektor VC1 dargestellt. In Abbildung 3b
wird diese Dimension, beziehungsweise dieser Concern, selbst
wiederum konsumiert (VC2). Der gestrichelte VC1 Vektor und
dessen Parallelverschiebung zeigt, dass die neue Dimension
komplett gleichberechtigt zu den „normalen“ C Dimensionen
ist.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Abbildung 3: Quelltext der zur Dimension aufsteigt</title>
        <p>Ein weiterer Umstand, den es zu beachten gilt, ist die
Anordnung der Concerns im Falle von Quelltext. Dieser kann, wie
beschrieben mehreren Concerns zugehörig sein. Diese können
sich zudem in verschiedenen Hierarchien befinden.
Beispielsweise könnte eine Hierarchie VC2 zu VC1 und Cn sein. VC1
wiederum ist die Wurzel der Cx, Cy Hierarchie. Abstrakt
dargestellt ist dies in Abbildung 4a. Dort wird die Hierarchie
visualisiert, in der sich VC2 befindet. VC2 bildet dabei den
Ursprung von dem aus die Hierarchie aufgespannt wird. In
Abbildung 4b wird der Sachverhalt verallgemeinert gezeigt, dass
Dimensionen/Concerns auch hierarchisch angeordnet sein
können. Verschiedene Tiefenebenen sind als Dimensionsebenen
(DE1- DEn) beschriftet.3 Die Wurzel der Hierarchien bildet
dabei das Fragment, in dem die einzelnen Concerns komponiert
wurden. Ein praktisches Beispiel für Hierarchien sind
Methodenaufrufe oder Vererbung.</p>
      </sec>
      <sec id="sec-2-3">
        <title>Abbildung 4: Dimensionshierarchien</title>
        <p>Da in modernem Quelltext oftmals eine hohe Anzahl von
Frameworks verwendet wird, stellt sich die Herausforderung, trotz
der Analogie zwischen Frameworkfunktionen und
Dimensionen, diese bei einer Umsetzung in einem Schema nicht
vollständig gleichzusetzen. Dies hat den Grund, dass oftmals eine
Vielzahl von Frameworks in Quelltext verwendet wird und
somit eine hohe Anzahl verschiedener Dimensionen
wahrscheinlich die Skalierbarkeit der Umsetzung beeinflussen
würde. Folglich sollten Frameworkfunktionen als eine Dimension
mit verschiedenen Elementen, den eigentlichen Funktionen der
Frameworks, modelliert werden.</p>
        <p>Ziel ist ein Modell, welches die zuvor genannten Sachverhalte
in einem Data Warehouse abbildet. Dies kann genutzt werden,
um Abfragen auf Quelltext zu ermöglichen. Aufgrund der
Mehrdimensionalität des Ansatzes und dem Hintergrund, dass
bei der Programmierung Modelle die Realität abbilden, ist der
Name der Kombination, zwischen Data Warehouse und
Softwarequelltext, Hypermodelling.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>4. MODELLIERUNG</title>
      <p>
        Data Warehouses nutzen im Normalfall eine relationale
Datenquelle, um OLAP-Würfel zu füllen. Daher ist der erste Schritt
ein relationales Schema, das Quelltext in einem Data
Warehouse abbildet. In Data Warehouses werden zu der Abbildung von
Daten in relationalen Tabellen im Normalfall Stern- oder
Schneeflockenschemata verwendet [
        <xref ref-type="bibr" rid="ref32">31</xref>
        ]. Nachfolgend werden
zwei relationale Modelle, inspiriert von diesen, gezeigt. Zuletzt
wird die OLAP Darstellung angerissen und Problematiken des
entwickelten Schemas aufgezeigt.
      </p>
      <sec id="sec-3-1">
        <title>4.1.1 Einfaches Schema</title>
        <p>
          In Abbildung 5 ist exemplarisch eine Tabellenstruktur mit
Fragmenten, die in Quelltext vorkommen, an ein Sternschema
angelehnt, dargestellt. In der Abbildung ist das zentrale
Element die Faktentabelle. Eine Zeile in dieser repräsentiert ein
Quelltextfragment, wie ein Modul. Ein solches ist zum Beispiel
eine Klasse oder Funktion. Eine Klasse kann Annotationen
3 Die Ebenen sind rein zur besseren Visualisierung dargestellt;
nicht jede Dimension muss über die gleiche Anzahl von
Hierarchien verfügen.
enthalten. Oftmals werden Annotationen in Frameworks
definiert und daher ist die Annotationstabelle mit der
Frameworktabelle verknüpft. Die Parameter Tabelle zeigt die
Möglichkeit, dass Annotationen auch Parameter besitzen
können. Zusätzlich sind oftmals externe domänenspezifische
Sprachen (domain specific language (DSL)) mit Quelltext assoziiert.
Durch diese können zu Quelltextfragmenten verschiedene
Funktionalitäten hinzu konfiguriert werden [
          <xref ref-type="bibr" rid="ref12">11</xref>
          ]. Ein bekanntes
Beispiel hierfür ist die Konfiguration persistenter Klassen über
eine DSL. In modernem Quelltext treten auch Aspekte [
          <xref ref-type="bibr" rid="ref13">12</xref>
          ] auf.
Aspekte sind Fragmente die es ermöglichen, Funktionalität, die
nach dem Objektparadigma nicht an einer Stelle kodiert werden
kann, an einem zentralen Punkt zu realisieren. In diesem wird
dann angegeben welche Module von dem Aspektcode (Advice)
betroffen sind. Die Konfiguration der betroffenen Module
erfolgt über sogenannte pointcuts. Zuletzt kann ein Modul einer
Komponente und Aufgaben zugordnet werden. Beispielsweise
können solche Aufgaben das Einpflegen von Änderungen in der
Funktionalität darstellen.
        </p>
        <sec id="sec-3-1-1">
          <title>Abbildung 5: Grundlegendes relationales Quelltextschema</title>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>4.1.2 Schneeflockenschema</title>
        <p>Das in Abschnitt 4.1.1 dargestellte Schema wurde in Abbildung
6, an ein Schneeflockenschema angelehnt, erweitert. Eine
generische Zuordnung von Modulen zu Concerns wird besser
ermöglicht und mehr Sachverhalte können dargestellt werden.
Ebenfalls wird der Umstand beachtet, dass eine generische
Darstellung der Beziehungen im Quelltext aus Abschnitt 3
dargestellt wird und verschiedene Frameworks nicht als
eigenständige Tabelle realisiert sind. Vielmehr sind die
Frameworkfunktionen in einer Tabelle zusammengefasst.
Wie zu sehen ist, verweist die Faktentabelle auf verschiedene
Concerns, zu denen die Zugehörigkeit durch Cmembership in
Prozent ausgedrückt werden kann. Als Modulgranularität wurde
eine Funktion gewählt. Diese stellt eine kleine Einheit klarer
Funktionalität dar und gliedert sich in eine Klasse ein. Folglich
ist Aggregation von Fakten auf Klassenebene möglich. Eine
Funktion kann andere Funktionen nutzen (Function_call).
Hierbei kann spezifiziert werden, ob der Konsum ein Aufruf oder
ein andere Nutzungsart (Usage type), wie zum Beispiel das
Überschreiben einer Funktion eines Frameworks ist. Ebenfalls
können Typen eines Frameworks, wie zum Beispiel durch
Annotationen oder Erbschaftbeziehungen, konsumiert werden
(Type_usage).</p>
        <p>Rückverweise auf die Faktentabelle zeigen, dass Hierarchien
von Funktionen möglich sind. Die Aufrufhierarchie wird durch
die CallHierarchy Table dargestellt. Die EvolvedConcernCode
Tabelle ermöglicht es, Funktionen/Fakten selbst als Concern zu
führen. Durch diese Tabelle kann Quelltext, der sich zum
Concern entwickelt (siehe Abschnitt 3), aber kein Teil eines
Frameworks ist, dargestellt werden.</p>
        <p>Besonders interessant ist die Issue Tabelle, die Bugs darstellt.
Diese können auf zugehörige Tests verweisen. Dabei können
auch Tasks oder deren Kontext mit solchen Issues verbunden
sein. Ebenfalls wurde der Umstand ins Modell eingeflochten,
dass Packages oftmals Layer zugeordnet werden können.
Metrics, Profiling info und Author zeigen, dass weitere
Informationen im Bezug auf Quelltext dargestellt werden können.
somit keine Repräsentation der Programmstruktur, sondern
vielmehr die Assoziation von Programmelementen miteinander.
Ein Beispiel für die Assoziation von Programmelementen
miteinander ist die zuvor beschriebene Aufrufhierarchie. Da somit
beide OLAP-Würfel eine Assoziation zu dem Quelltext
besitzen, können diese dann in einem Verknüpften OLAP-Würfel
zusammengeführt werden. In diesem Linked Cube werden dann
zusätzliche Fakten, mit denen des logischen Modells einer
Programmiersprache zusammen geführt.</p>
        <sec id="sec-3-2-1">
          <title>Abbildung 6: Quelltext, Schneeflockenschema</title>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>4.1.3 OLAP-Darstellung</title>
        <p>Grundlegend zeigt das Schema aus Abschnitt 4.1.2 bei näherer
Betrachtung die Einschränkung, dass eine direkte Umsetzung in
einen OLAP-Würfel keine elegante Lösung darstellt.
Insbesondere die rückverweisende CallHierarchy besitzt Eigenschafen
einer Faktentabelle; CallHierarchy kann mehrmals gleiche
Einträge besitzen, wenn eine Funktion mehrmals die gleiche
Funktion aufruft. Zur Realisierung sollte somit mit der Sichtweise
einer zentralen Faktentabelle gebrochen werden.</p>
        <p>In Abbildung 7 ist aufgrund der zuvor genannten
Einschränkungen daher die Idee, mehrere OLAP-Würfel zu erstellen, die
einen Bezug zu den Daten eines konkreten Programmes, das
analysiert werden soll, haben. Ziel ist es einen OLAP-Würfel,
ähnlich A, zu erstellen, der Zuordnungen mit einem logischen
Modell einer Programmiersprache enthält. Hierbei kann dieser
OLAP-Würfel durch zusätzliche Daten, die im direkten
Zusammenhang zu der Programmiersprachenlogik, stehen
angereichert werden. Solche Daten könnten zum Beispiel Tests oder
deren Ergebnisse sein. Dieser OLAP-Würfel stellt ein Abbild
der Programmiersprachenstruktur dar, welches durch ein
konkretes Program als Fakten „befüllt“ wird.</p>
        <p>In einem weiteren OLAP-Würfel werden dann Fakten, die nicht
der Programmiersprachenstruktur entsprechen, definiert. Jedoch
besitzen die Daten zumindest einen Bezug zu dem
Quelltextmodel. Im Vergleich zu OLAP-Würfel A ist OLAP-Würfel B</p>
        <sec id="sec-3-3-1">
          <title>Abbildung 7: OLAP-Würfel, Zuordnung von Quelltext</title>
          <p>Schlussendlich zeigt sich, dass für die Entwicklung eines
relationalen Schemas, zuerst Fakten von der Struktur von Quelltext
getrennt werden sollten. Danach können die verschiedenen
Fakten in einem weiteren Modell zusammengeführt werden.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>5. VERWANDTE ARBEITEN</title>
      <p>Auf der Homepage4 des Hypermodelling Projektes befinden
sich weitere Informationen über die Idee, Quelltext in ein Data
Warehouse zu laden und verwandte Forschung.</p>
      <p>
        Die Gruppe der Source Code Query Tools stellt im
Wesentlichen Programme dar, die Quelltext aufgrund von Abfragen
untersuchen können. Diese Werkzeuge können als verwandte
Arbeiten zu der Idee von Hypermodelling gesehen werden, da
diesen zu Grunde liegt, Quelltext, aufgrund von Abfragen zu
untersuchen. JQuery ist ein Abfrage basierter Source Code
Browser für Java. Realisiert ist er als Eclipse Plugin [
        <xref ref-type="bibr" rid="ref14">13</xref>
        ].
JQuery stellt eine deklarative Abfragesprache zur Verfügung
und erlaubt es, durch diese verschiedene Ansichten auf
Quelltext zu erzeugen [
        <xref ref-type="bibr" rid="ref15">14</xref>
        ]. Ferret ist ein weiteres Source Code
Query Tool und wurde von Brian de Alwis im Rahmen seiner
Dissertation entwickelt [
        <xref ref-type="bibr" rid="ref16 ref17">15, 16</xref>
        ]. Es erlaubt es ähnlich JQuery,
Abfragen an Java Quelltext zu erstellen. Ferret ist hauptsächlich
dafür gedacht, den Quelltext aufgrund seiner Aufrufstruktur
und Vererbung zu untersuchen. Lost ist ein Query Tool für
aspekt-orientierte Programmierung [
        <xref ref-type="bibr" rid="ref18">17</xref>
        ]. Grundlegend
verfolgen alle Source Code Query Tools das gleiche Ziel und besitzen
ähnliche Funktionalität. JQuery erscheint von allen Tools das
am besten gepflegteste und mächtigste zu sein und kann somit
als bestes Vergleichsprodukt zu Hypermodelling gesehen
werden. Im Vergleich zu Hypermodelling unterscheiden sich die
Source Code Query Tools darin, dass diese nicht das Ziel
verfolgen, Data Warehouse Technologie zur Analyse von
Quelltext zu nutzen. Ebenfalls orientiert sich ihre Funktionsweise
oder die Abfragemöglichkeiten nicht an Data Warehouse
Technologie.
4 http://hypermodelling.com
Martin Robillard forscht auf dem Gebiet der Concernanalyse.
Sein Werkzeug, ConcernMapper [
        <xref ref-type="bibr" rid="ref19">18</xref>
        ], soll helfen, Quelltext
nach verschiedenen Concerns zu unterteilen und ist auf
manuelle Zuordung von Concerns zu Quelltextfragmenten ausgelegt.
Der Unterschied zu den Source Code Query Tools ist, dass der
Concern Mapper keine Abfragesprache oder ähnliche Mittel
nützt, sondern dieser auf die rein manuelle Zuordnung von
Concerns ausgelegt ist. Der größte Nachteil im Vergleich zu
Hypermodelling ist, dass das Anlegen und Zuordnen der
Concerns eine Mehrarbeit des Entwicklers bedeutet und nicht
das Ziel verfolgt wird, Abfragen aufgrund dem Entwickler
bekannter Quelltextelemente zu ermöglichen.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref20">19</xref>
        ] wird ein Verfahren beschrieben, bei dem ein Metrics
Warehouse eingesetzt wird. Dieses erinnert aufgrund des
Warehouses entfernt an die Idee des Hypmermodelling. Dabei
wird bei dem Verfahren beschrieben, wie Projekte anhand von
Metriken, gesteuert werden können. Dies bezieht sich auf
Metriken aus betriebswirtschaftlichen Systemen und nicht direkt
auf Metriken, die durch eine Funktion aus Quelltext berechnet
werden können. Diese Metriken werden dann in ein nicht näher
erläutertes Metrics Warehouse geladen, das einem Data
Warehouse ähnlich ist. Der genaue Aufbau des Metrics Warehouses,
die Struktur der Daten, und der Inhalt des Warehouses wird
nicht näher beschrieben.
      </p>
      <p>
        Source Code Mining ist die Anwendung von Data Mining
Algorithmen auf die Quelltext, Bug Datenbanken und
Versionsverwaltungssysteme [
        <xref ref-type="bibr" rid="ref21">20</xref>
        ]. Somit stellt diese Technik auch die
Zielsetzung auf, Quelltext zu analysieren und dadurch
Verbesserungen zu erreichen, und kann somit als ähnlich erachtet
werden. Die Hauptidee hierbei ist es, Bugs aus Issue Tracking
Systemen, mit deren Lösungen aus Versionsverwaltungssystemen,
aufgrund der entsprechenden Quelltexte zu verknüpfen und
darauf Data Mining zur Analyse zu nutzen. Muster im Quelltext
werden aufgedeckt, interpretiert und Handlungen abgeleitet.
Solche Analysen können beispielsweise zu Feststellungen
führen, dass Problemlösungen, die an einem bestimmten
Wochentag gemacht wurden, mit einer hohen Wahrscheinlichkeit
wieder zurückgenommen werden [
        <xref ref-type="bibr" rid="ref22">21</xref>
        ]. Das Source Code Mining
besitzt den Nachteil, dass derzeit nur Zusammenhänge
zwischen Fehlern und Beziehungen zwischen einzelnen
Quelltextelementen im Source Code aufgedeckt werden können. Es wird
dabei kein Verfahren offenbart, wie weitere Daten in die
Wissensbasis integriert werden können. Des Weiteren verfolgt
Source Code Mining im Vergleich zu Hypermodelling nicht das
Ziel, eine Datenbasis in Form des Ladens von Daten in ein Data
Warehouse zu erschaffen, auf welcher dann Analysen
ausgeführt werden können.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref23">22</xref>
        ] wird Software Intelligence beschrieben. Software
Intelligence wird hier als die Anwendung von Business
Intelligence Mechanismen oder Technologien auf Software
beschreiben. Dies ist der hier vorgestellten Idee ähnlich. Der
Unterschied liegt darin, dass Software Intelligence nicht das
Ziel verfolgt, Quelltext in OLAP-Würfel zu laden und sich auf
Source Code Mining konzentriert.
      </p>
      <p>
        Die Untersuchung von Quelltext unter der Zuhilfenahme einer
relationalen Datenbank zur Analyse wird im Sourcerer Projekt
durchgeführt [
        <xref ref-type="bibr" rid="ref24">23</xref>
        ]. Das relationale Modell umfasst vier
Tabellen. Quelltext wird in Projekte, Dateien, Kommentare und
Entitäten die mit Beziehungen verknüpft sind, aufgeteilt. Solche
Entitäten sind zum Beispiel Klassen, Interfaces und Methoden
[
        <xref ref-type="bibr" rid="ref25">24</xref>
        ]. Im Vergleich zu Hypermodelling zeigt der Umfang des
relationalen Modells einen wesentlichen Unterschied;
Hypermodelling visualisiert schon in den ersten vorgestellten
Modellen die verschiedenen Beziehungen in unterschiedlichen
Tabellen. Zudem ist das Ziel von Hypermodelling, Data Warehouse
und insbesondere OLAP-Würfel zu verwenden. Dies
ermöglicht Aggregationen von Fakten, was bei Sourcerer nicht
erstrebt wird. Dies ist zudem auch darin zu sehen, dass Sourcerer
keine Faktentabellen nutzt, um Beziehungen im Quelltext
abzubilden.
      </p>
      <p>
        Codegenie, dass auf Sourcerer aufsetzt, ermöglicht es,
Komponenten aufgrund von Testfällen aufzudecken und in ein
Programm zu integrieren [
        <xref ref-type="bibr" rid="ref26 ref27">25, 26</xref>
        ]. Ähnlich zu Codegenie zeigt [
        <xref ref-type="bibr" rid="ref28">27</xref>
        ]
weitere Möglichkeiten der Komponentenaufdeckung, unter der
Zuhilfenahme von Codesuchmaschinen und gibt einen
Überblick und Vergleich über die Aufdeckung von Komponenten.
Im Vergleich zu diesen Codesuchmaschinen liegt der Fokus
von Hypermodelling auf der Analyse und Abfragen aufgrund
von Concerns. Eine Verwendung der Hypermodelling Idee zur
Codesuche könnte jedoch eine interessante Anwendung sein.
Orthographic Software Modeling (OSM) ist der Ansatz,
mehrdimensionale Navigation durch Modelle bei der
Softwareentwicklung einzusetzen [
        <xref ref-type="bibr" rid="ref31">30</xref>
        ]. Ziel ist es, Quelltext und die
zugehörigen Modelle in einem zentralen Modell abzubilden um
daraus die verschiedenen Modellansichten dynamisch erzeugen
zu können [
        <xref ref-type="bibr" rid="ref29">28</xref>
        ]. Um die Navigation durch die verschiedenen
Modellansichten zu ermöglichen, werden verschiedene
Dimensionen und deren Ausprägungen definiert. Zum Beispiel eine
Dimension die in ihren Ausprägungen die Abstraktionsebenen
festlegt oder eine Projektionsdimension, deren Ausprägung die
Struktur oder die Interaktion von Elementen beschreibt. Die
Auswahl einer Kombination von Ausprägungen von
Dimensionen bestimmt letztendlich dann, welches Modell gezeigt wird
[
        <xref ref-type="bibr" rid="ref30">29</xref>
        ]. Die mehrdimensionale Navigation und die Sichtweise von
Software als ein mehrdimensionales Konstrukt, das von
verschiedenen Blickwinken aus betrachtet werden kann, ähnelt
Hypermodelling. Jedoch verfolgt OSM nicht das Ziel, Data
Warehouse ähnliche Mechanismen zu nutzen, um dadurch
Quelltext untersuchen zu können. Ferner liegen die Ziele von
Hypermodelling nicht direkt in der Modellierung von Software,
sondern vielmehr darin, Abfragen unter der Nutzung
verschiedener Concerns zu ermöglichen. In diesem Kontext könnte
natürlich auch die dynamische Erstellung von Ansichten bei
OSM als Abfragen verstanden werden, und es könnte
interessant sein, eine Kombination zwischen OSM und
Hypermodelling zu untersuchen.
      </p>
      <p>
        Bezogen auf die Data Warehouse Schemata zeigen [
        <xref ref-type="bibr" rid="ref6">5</xref>
        ] und [
        <xref ref-type="bibr" rid="ref32">31</xref>
        ]
einen umfassenden Überblick über das Thema Data Warehouse.
Hier werden die verschiedenen Schemata besprochen und
praktische Beispiele aufgezeigt. Business Intelligence, wie auch die
integrierte strategische Unternehmensplanung im speziellen
Anwendungsfall, wird in [
        <xref ref-type="bibr" rid="ref1 ref8">7</xref>
        ] beschreiben. Ein
betriebswirtschaftlich- orientierter Überblick der integrierten
Unternehmensplanung stellt [
        <xref ref-type="bibr" rid="ref7">6</xref>
        ] dar. Einen herstellerneutralen Überblick
über die Planung mit Data Warehouse Systemen bietet [
        <xref ref-type="bibr" rid="ref33">32</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>6. ZUSAMMENFASSUNG UND AUSBLICK</title>
      <p>In diesem Papier wurde die Idee, Quelltext in ein Data
Warehouse zu laden, vorgestellt. Hierbei wurde beschrieben, dass
Quelltext ein mehrdimensionales Gebilde aus Concerns ist.
Dabei wurde insbesondere der Umstand hervorgehoben, dass
Module oftmals mehreren Concerns zugeordnet werden
können. Es wurde erläutert, dass in diesem mehrdimensionalen
Gebilde neue Dimensionen durch Kompositionen erschaffen
werden können. Dieser Umstand zeigt eine besondere
Herausforderung, im Bezug auf das Laden von Quelltext in ein Data
Warehouse. Unter Beachtung dieser Rahmenbedingung wurden
relationale Modelle mit Faktentabellen präsentiert, in die
Quelltext geladen werden kann. Durch deren Darstellung konnte die
Problematik aufgedeckt und verdeutlicht werden: Eine einzige
Faktentabelle ist zur Darstellung von Quelltext nicht
ausreichend. Zuletzt wurden verwandte Arbeiten präsentiert, deren
Analyse zeigt, dass die Idee, Quelltext in ein Data Warehouse
zu laden, bisher noch nicht durchgeführt wurde. Dennoch
deuten die verwandten Arbeiten darauf hin, dass der primäre
Einsatzort für Abfragewerkzeuge derzeit die integrierte
Entwicklungsumgebung ist.</p>
      <p>Eine wichtige Folgerung aus den Darstellungen dieses Papiers
ist, dass bei der Erstellung eines weiteren Schemas, Quelltext in
verschiedene Fakten aufgeteilt werden sollte. Dies wird
benötigt, um ein relationales Modell zu erstellen. Somit stellt sich
für zukünftige Arbeiten die Frage, welche Mittel einer
Programmiersprache als strukturell und welche als assoziativ
zueinander begriffen werden können. Eine derzeitige Überlegung
ist daher Quelltext als Mechanismen von Kategorisierung
(strukturell) und Komposition (assoziativ) zu betrachten.
Kategorisierung ist hierbei alles, das einer logischen Zuordnung
dient. Zum Beispiel Klassen zu Packages. Komposition stellen
sämtliche Elemente dar, die eine direkte Auswirkung auf die
Funktionalität ausüben, wie Methodenaufrufe. Dennoch sind
hier Diskussionspunkte offen. So ist es zum Beispiel
fragwürdig, ob Ableitungen eher eine Kategorisierung oder eine
Komposition darstellen. Ziel dieser Überlegungen ist es Quelltext in
OLAP-Würfel zu laden, um dadurch komplexe Analysen von
Quelltext zu ermöglichen.</p>
      <p>Eine weitere Überlegung kommt aus der Betrachtung der
verwandten Arbeiten, die Großteils für Eclipse umgesetzt wurden.
Diese inspirieren dazu, OLAP ähnliche Abfragen direkt in der
integrierten Entwicklungsumgebung zu ermöglichen. Dies kann
ein besonders großer Vorteil für Entwickler sein, da diese mit
solchen Hypermodelling Abfragen direkt in der
Entwicklungsumgebung Quelltext untersuchen können.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>7. LITERATUR</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>E. W.</given-names>
            <surname>Dijkstra</surname>
          </string-name>
          .
          <article-title>Selected Writings on Computing: A Personal Perspective</article-title>
          .
          <article-title>On the role of scientific thought</article-title>
          . Springer.1982
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>W.</given-names>
            <surname>Harrison</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Ossher</surname>
          </string-name>
          .
          <article-title>Subject-oriented programming: a critique of pure objects</article-title>
          .
          <source>OOPSLA '93. ACM</source>
          .
          <year>1993</year>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Lahres</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Gregor</given-names>
            <surname>Rayman</surname>
          </string-name>
          .
          <source>Objektorientierte Programmierung. Galileo Computing</source>
          .
          <year>2009</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>H.</given-names>
            <surname>Ossher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tarr</surname>
          </string-name>
          <article-title>. Multi-dimensional separation of concerns and the hyperspace approach</article-title>
          .
          <source>In Proceedings of the Symposium on Software Architectures and Component Technology</source>
          . Kluwer.
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>W.H.</given-names>
            <surname>Inmon</surname>
          </string-name>
          .
          <article-title>Building the Data Warehouse</article-title>
          . 4th ed., J.Wiley &amp; Sons, New York.
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M. C.</given-names>
            <surname>Meier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Sinzig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Mertens</surname>
          </string-name>
          .
          <article-title>Enterprise Management with SAP SEM/Business Analytics</article-title>
          .
          <source>2nd Edition</source>
          , Springer. Berlin.
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Gómez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Rautenstrauch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Cissek</surname>
          </string-name>
          .
          <source>Einführung in Business Intelligence mit SAP NetWeaver 7</source>
          .0. Springer.2008
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S. H.</given-names>
            <surname>Kaisler</surname>
          </string-name>
          .
          <article-title>Software paradigms</article-title>
          . John Wiley and Sons.2005
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>W.</given-names>
            <surname>Pree. Meta Patterns - A Means For</surname>
          </string-name>
          <article-title>Capturing the Essentials of Reusable Object-Oriented Design</article-title>
          .
          <source>ECOOP 94</source>
          . Springer. 1994
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Bloch</surname>
          </string-name>
          .
          <article-title>Metadata Facility for the Java Programming Language</article-title>
          .
          <year>2004</year>
          . http://www.jcp.org/en/jsr/detail?id=
          <fpage>175</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>T.</given-names>
            <surname>Stahl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Völter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Efftinge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Haase</surname>
          </string-name>
          . Modellgetriebene Softwareentwicklung: Techniken, Engineering, Management. Dpunkt Verlag.
          <year>2007</year>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Filman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Elrad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Clarke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Aksit AspectOriented Software Development. Addison-Wesley Professional</surname>
          </string-name>
          ;
          <volume>1</volume>
          <fpage>edition</fpage>
          . 2004
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [13]
          <article-title>JQuery a query-based code browser</article-title>
          . homepage. The University of British ColumbiaVancouver, Canada. http://jquery.cs.ubc.ca/index.htm.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [14]
          <string-name>
            <surname>K. De Volder. JQuery: A Generic Code</surname>
          </string-name>
          <article-title>Browser with a Declarative Configuration Language</article-title>
          .
          <source>In Practical Aspects of Declarative Languages, 8th International Symposium</source>
          . Springer.
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [15]
          <string-name>
            <surname>B. de Alwis</surname>
          </string-name>
          , G. C Murphy.
          <article-title>Ferret: A Tool Supporting Software Exploration</article-title>
          . The University of British Columbia Vancouver, Canada. http://www.cs.ubc.ca/~bsd/research/ferret/
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [16]
          <string-name>
            <surname>B. de Alwis</surname>
          </string-name>
          .
          <article-title>Supporting Conceptual Queries Over Integrated Sources of Program Information</article-title>
          .
          <source>PHD Thesis</source>
          . University of British Columbia, Vancouver Canada. 2008
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J.-H.</given-names>
            <surname>Pfeiffer</surname>
          </string-name>
          .
          <article-title>Complex code querying and navigation for AspectJ</article-title>
          .
          <source>OOPSLA '05. ACM</source>
          .
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Robillard</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Weigand-Warr</surname>
          </string-name>
          .
          <article-title>ConcernMapper: simple view-based separation of scattered concerns</article-title>
          .
          <source>In Proceedings of the 2005 OOPSLA Workshop on Eclipse technology eXchange, ACM</source>
          ,
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>C. R.</given-names>
            <surname>Pandian</surname>
          </string-name>
          .
          <article-title>Software metrics: a guide to planning, analysis and application</article-title>
          .
          <source>Auerbach Publications</source>
          .
          <year>2003</year>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Mining</surname>
            <given-names>Software</given-names>
          </string-name>
          <string-name>
            <surname>Archives</surname>
          </string-name>
          .
          <article-title>Lehrstuhl für Softwaretechnik Universität des Saarlandes - Informatik</article-title>
          . Prof. Zeller. http://www.st.cs.uni-saarland.de/softevo/.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>T.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zeller</surname>
          </string-name>
          .
          <article-title>When do changes induce fixes?</article-title>
          .
          <source>ICSE 05</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          .
          <year>2005</year>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hassan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Xie</surname>
          </string-name>
          .Software Intelligence:
          <article-title>Future of Mining Software Engineering Data</article-title>
          .
          <source>In Proceedings of FSE/SDP Workshop on the Future of Software Engineering Research .Santa Fe. ACM</source>
          .
          <year>2010</year>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Sushil</surname>
            <given-names>Bajracharya</given-names>
          </string-name>
          , Trung Ngo,
          <article-title>Erik Linstead et</article-title>
          . al.
          <article-title>Sourcerer: A Search Engine for Open Source Code Supporting Structure-Based Search</article-title>
          , OOPSLA'
          <fpage>06</fpage>
          . USA. ACM.
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Sushil</surname>
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Bajracharya</surname>
          </string-name>
          , Joel Ossher, Cristina V.
          <article-title>Lopes, Sourcerer - An Infrastructure for Large-scale Collection and Analysis of Open-source Code</article-title>
          ,
          <source>Third International Workshop on Academic Software Development Tools and Techniques</source>
          , Belgium,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2010</year>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Otavio</surname>
            <given-names>Lemos</given-names>
          </string-name>
          , Sushil Bajracharya et al..
          <article-title>CodeGenie: Using Test-Cases to Search and ReuseSource Code</article-title>
          ,
          <source>ASE'07</source>
          ,
          <year>2007</year>
          , Atlanta, Georgia, USA. ACM
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>Otávio</given-names>
            <surname>Augusto Lazzarini Lemos</surname>
          </string-name>
          ,
          <article-title>Sushil Bajracharya and Joel Ossher , CodeGenie: a Tool for Test-Driven Source Code Search</article-title>
          , OOPSLA'07,
          <string-name>
            <surname>Canada</surname>
          </string-name>
          . ACM,
          <year>2007</year>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>O.</given-names>
            <surname>Hummel</surname>
          </string-name>
          , “Semantic Component Retrieval in Software Engineering”,
          <source>Ph.D. dissertation, Faculty of Mathematics and Computer Science</source>
          , University of Mannheim,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>C.</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Stoll</surname>
          </string-name>
          :
          <article-title>"Orthographic Modelling Environment"</article-title>
          ,
          <source>in Proceedings of Fundamental Approaches to Software Engineering (FASE'08)</source>
          , Hungary, Spring,
          <year>2008</year>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>C.</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Stoll</surname>
          </string-name>
          <article-title>: "An Environment for the Orthographic Modeling of Workflow Components"</article-title>
          ,
          <source>in Proceedings of the Prozessinnovationen mit Unternehmenssoftware (PRIMIUM)</source>
          , Germany,
          <year>2008</year>
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>C.</given-names>
            <surname>Atkinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Brenner</surname>
          </string-name>
          , et al..
          <article-title>Modeling Components and Component-Based Systems in KobrA, in</article-title>
          <string-name>
            <surname>A</surname>
          </string-name>
          . Rausch,
          <string-name>
            <given-names>R.</given-names>
            <surname>Reussner</surname>
          </string-name>
          et al.
          <source>The Common Component Modeling Example: Comparing Software Component Models</source>
          , Springer,
          <year>2008</year>
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>R.</given-names>
            <surname>Kimball</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ross</surname>
          </string-name>
          .
          <article-title>The data warehouse toolkit: the complete guide to dimensional modeling</article-title>
          .
          <source>John Wiley and Sons. 2002</source>
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>F.</given-names>
            <surname>Navrade</surname>
          </string-name>
          .
          <article-title>Strategische Planung mit Data-warehousesystemen</article-title>
          . Gabler Verlag.
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>