als PDF-Dokument - Informationssysteme

Transcription

als PDF-Dokument - Informationssysteme
Ableitung einer spezifischen Architektur aus
der Konzeption eines Ausführungsmodelles
für ReKlaMe-DDM-Analysen:
ReDi-CAt
ReKlaMe Distributed Classification Architecture
Diplomarbeit
Ralph Stuber
Carl von Ossietzky
Universität Oldenburg
FAKULT ÄT 2
D EPARTMENT
F ÜR I NFORMATIK
A BTEILUNG I NFORMATIONSSYSTEME
Diplomarbeit
Ableitung einer spezifischen Architektur aus
der Konzeption eines Ausführungsmodelles
für ReKlaMe-DDM-Analysen
vorgelegt von:
Ralph Stuber
Erstgutachter: Prof. Dr. H.-J. Appelrath
Zweitgutachter: Dr. Frank Köster
Betreuer: Dipl.-Inform. Heiko Tapken
Oldenburg, den 25. Februar 2005
Danksagung
Mein Dank gilt allen Menschen, die mit dazu beigetragen haben, dass ich diese Arbeit erstellen
konnte.
Allen voran danke ich zunächst meinen Eltern Christiane und Lothar Stuber, die mir das Studium ermöglicht haben, indem sie mir über die Jahre des Studiums die notwendige finanzielle
Grundlage geschaffen haben.
Weiter danke ich Aletta Kuper für das Verständnis und die Unterstützung in für mich arbeitsreichen Perioden sowie für den unermüdlichen Einsatz im Rahmen des Korrekturlesens.
Bezüglich der inhaltlichen Aspekte danke ich Matthias Pretzer, der trotz eigener Belastung
durch seine Diplomarbeit immer ein offenes Ohr für inhaltliche Belange meiner Arbeit hatte
und sinnvolle Ratschläge bezüglich aufkommender Fragestellungen beisteuern konnte.
Ich danke Michael Onken für seinen Einsatz im Hinblick auf ein sehr konstruktives, inhaltliches
Korrekturlesen.
Mein großer Dank gilt Heiko Tapken, der sowohl im Rahmen von Lehrveranstaltungen als auch
in Bezug auf diese Arbeit großen Einfluss auf mein Hauptstudium nahm. Das Thema dieser
Arbeit wurde gemeinsam mit ihm entwickelt und ist in sein Dissertationsvorhaben eingebettet.
Die Betreuung der Arbeit durch ihn war stets als ausgezeichnet zu bezeichnen.
Schließlich danke ich allen Personen, mit denen ich während meines Studiums zusammenarbeiten durfte, sei es im Rahmen von Übungsgruppen oder Klausur- und Prüfungsvorbereitungen.
Besonders seien hier Christian Lüpkes und Carsten Saathoff, und erneut Matthias Pretzer und
Michael Onken genannt.
Inhaltsverzeichnis
1. Einführung und Gliederung
1.1. Überblick ReKlaMe . . . . . . . .
1.2. Einführung in ein Beispielszenario
1.3. Ziele dieser Arbeit . . . . . . . .
1.4. Gliederung dieser Arbeit . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
4
5
5
2. Einführung in Distributed Data Mining (DDM)
2.1. Grundlagen des Distributed Data Mining . . . . . . . . . . . . . . .
2.1.1. Knowledge Discovery in Databases (KDD) . . . . . . . . .
2.1.2. Data Mining . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3. Klassifikation und Entscheidungsbäume . . . . . . . . . . .
2.1.4. Komponenten einer einfachen Data Mining-Architektur . .
2.2. Distributed Data Mining . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Was ist DDM? . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2. Task-Parallelisierung als Herangehensweise an DDM . . . .
2.2.3. Daten-Parallelisierung als Herangehensweise an DDM . . .
2.2.4. Entscheidungsbauminduktion auf verteilten Datenbeständen
2.3. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
10
11
15
16
16
17
18
19
20
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Architekturen
23
3.1. Was ist eine Software-Architektur? . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1. Vorteile der Verwendung eines Architektur-Ansatzes . . . . . . . . . . 24
3.1.2. Der Design-Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2. Überblick über verschiedene komponentenbasierte Architekturen . . . . . . . . 26
3.2.1. Architektur-Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.2. Architektur-Ansätze . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3. Bewertungen der vorgestellten Architektur-Konzepte und -Ansätze im Kontext dieser Arbeit 33
3.3.1. Agentenbasierte Architekturen . . . . . . . . . . . . . . . . . . . . . . 33
3.3.2. Mediator-Wrapper-Architekturen . . . . . . . . . . . . . . . . . . . . 34
3.3.3. Web-Service-Architekturen . . . . . . . . . . . . . . . . . . . . . . . 35
3.4. Fazit der Bewertungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5. J2EE und EJB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5.1. Grundlegende Begriffsklärungen . . . . . . . . . . . . . . . . . . . . . 37
3.5.2. Die EJB-Architektur: Einordnung und Übersicht . . . . . . . . . . . . 38
3.5.3. Komponenten der EJB-Architektur . . . . . . . . . . . . . . . . . . . 39
3.5.4. Implementierung und Verwendung einer Bean . . . . . . . . . . . . . . 44
3.6. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4. Ein Ausführungsmodell für ReKlaMe-Analysen
4.1. ReKlaMe revisited - Zielsetzungen, Umgebung, Rahmenbedingungen
4.2. Abläufe und Phasen einer ReKlaMe-Analyse . . . . . . . . . . . . .
4.2.1. Grundsätzliche Betrachtungen . . . . . . . . . . . . . . . . .
4.2.2. Identifikation der Abläufe und Phasen . . . . . . . . . . . . .
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
47
48
48
50
ii
I NHALTSVERZEICHNIS
4.3. Beschreibung der Operatoren und Signaturen . . . . . . . . . . . . . . . . . . 54
4.3.1. Operatoren für die Induktion eines Klassifikators auf verteilten Datenquellen 56
4.3.2. Operatoren für die Anwendung eines Klassifikators auf verteilten Datenquellen 58
4.3.3. Operatoren für die Wartung von Klassifikatoren . . . . . . . . . . . . . 60
4.4. Operationalisierte Beschreibung der einzelnen Abläufe und Phasen . . . . . . . 62
4.4.1. Operationalisierte Beschreibung der Klassifikator-Induktion . . . . . . 62
4.4.2. Operationalisierte Beschreibung der Klassifikator-Anwendung . . . . . 66
4.4.3. Operationalisierte Beschreibung der Klassifikator-Wartung . . . . . . . 68
4.5. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5. Architekturentwurf
73
5.1. Ableitung einer Architektur aus dem Ausführungsmodell . . . . . . . . . . . . 73
5.1.1. Architektur zur Induktion von Klassifikatoren . . . . . . . . . . . . . . 76
5.1.2. Architektur zur Anwendung von Klassifikatoren . . . . . . . . . . . . 79
5.1.3. Architektur zur Wartung von Klassifikatoren . . . . . . . . . . . . . . 82
5.1.4. Zusammenführung der Architekturen zur Induktion, Anwendung und Wartung 84
5.2. Erweiterung der Gesamt-Architektur um den Aspekt der Verteiltheit der Komponenten 85
5.3. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6. Softwaretechnischer Entwurf des ReDiCAt Systemes
87
6.1. Objektorientiertes Design der Metadatenformate . . . . . . . . . . . . . . . . . 87
6.1.1. Interfaces und prototypische Implementierungen der abstrakten Datentypen 88
6.1.2. Interfaces und prototypische Implementierungen zur Repräsentation der Kontrollflüsse112
6.1.3. Interfaces und prototypische Implementierungen zur Parametrisierung der Analyse-Algorithm
6.2. Objektorientiertes Design der Komponenten der Architektur . . . . . . . . . . 134
6.3. Beschreibung der Methodenaufrufe zur Durchführung der Analyse-Abläufe . . 140
6.3.1. Ablauf der einfachen und inkrementellen Klassifikator-Induktion . . . . 140
6.3.2. Ablauf des Meta-Lernens . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.3.3. Ablauf der naiven Klassifikator-Anwendung . . . . . . . . . . . . . . . 146
6.3.4. Ablauf der Klassifikation mittels Selection Graphs . . . . . . . . . . . 149
6.3.5. Ablauf der Wartung eines inkrementell induzierten Klassifikators . . . 152
6.4. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7. Implementierung und Test
157
7.1. Beschreibung des Referenzsystemes der Implementierung und des Tests . . . . 157
7.2. Prototypische Implementierung der Architektur . . . . . . . . . . . . . . . . . 157
7.3. Testszenarien und Testläufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.3.1. Test der Abläufe der einfachen und inkrementellen Klassifikator-Induktion 160
7.3.2. Test des Ablaufes eines Meta-Lern-Vorganges . . . . . . . . . . . . . . 164
7.3.3. Test der Abläufe der Klassifikator-Anwendungen . . . . . . . . . . . . 165
7.3.4. Test des Ablaufes der Klassifikator-Wartung . . . . . . . . . . . . . . . 167
7.3.5. Zusammenfassung der Testläufe . . . . . . . . . . . . . . . . . . . . . 168
7.4. Vorzüge und Einschränkungen der prototypischen Implementierung . . . . . . 168
7.5. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8. Zusammenfassung und Ausblick
171
8.1. Ergebnisse der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
8.2. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Anhang
175
ii
I NHALTSVERZEICHNIS
III
A. Detaillierte Darstellung der Bestandteile von Enterprise-Beans
177
A.1. Interfaces und Klassen zur Definition der GU-SB . . . . . . . . . . . . . . . . 177
A.2. Interfaces und Klassen zur Definition der MVSK-MDB . . . . . . . . . . . . . 181
A.3. Interfaces und Klassen zur Definition der MetadataRepository-EB . . . . 185
B. Installation und Nutzung von Enterprise-Beans
193
B.1. Packen und Installieren der Enterprise-Beans . . . . . . . . . . . . . . . . . . 193
B.2. Nutzung einer Bean durch einen Client . . . . . . . . . . . . . . . . . . . . . . 194
C. Ausgaben der Testläufe
C.1. Ausgaben des Analyse-Testlaufes zur einfachen Klassifikator-Induktion . . .
C.2. Ausgaben des Analyse-Testlaufes zur inkrementellen Klassifikator-Induktion
C.3. Ausgaben des Analyse-Testlaufes eines Meta-Lern-Vorganges . . . . . . . .
C.4. Ausgaben des Analyse-Testlaufes einer naiven Klassifikator-Anwendung . . .
C.5. Ausgaben des Analyse-Testlaufes der SG-Klassifikation . . . . . . . . . . . .
C.6. Ausgaben des Analyse-Testlaufes einer Klassifikator-Wartung . . . . . . . .
.
.
.
.
.
.
195
195
197
199
201
204
206
Glossar
209
Tabellenverzeichnis
212
Abbildungsverzeichnis
214
Symbolverzeichnis
217
Abkürzungsverzeichnis
219
Listing-Verzeichnis
222
Index
225
Literaturverzeichnis
228
iii
1. Einführung und Gliederung
Die von Unternehmen gespeicherten Datenvolumina steigen kontinuierlich an, da heutzutage
in fast allen Bereichen der Geschäftsabläufe eines Unternehmens Daten anfallen. Dabei ist ein
Trend zu beobachten, demzufolge die Datenmengen in den letzten Jahren um ein Vielfaches
gestiegen sind [FPSS96b, TG00]. Und auch für die Zukunft wird diesbezüglich ein ähnliches
Verhalten vorhergesagt [FPSS96b].
Derartige Daten können zu Analysezwecken gespeichert werden, um Wissen aus den Daten der
Geschäftsvorgänge generieren zu können. Dabei ist es einerseits wünschenswert, viele Daten
zu sammeln, um im Prozess der Wissensgewinnung möglichst genaue Ergebnisse zu erzielen.
So ist zu beobachten, dass Ergebnisse, die auf größeren Mengen von Trainingsdaten basieren,
auch genauer sind als solche, die aus geringeren Mengen von Daten erzeugt wurden [JC99].
Andererseits bedeutet eine Steigerung der Menge der Eingabedaten auch eine Erhöhung der
Kosten und der Ausführungszeiten der Analysen. Zudem existieren für die Analysealgorithmen Grenzen bezüglich der Menge der Eingabedaten, mittels derer Wissen aus Daten von
Geschäftsprozessen generiert werden kann. Die Menge der Eingabedaten, die ein Analysealgorithmus verarbeiten kann, hängt unter anderem von der Rechnerarchitektur ab, auf der die
Berechnungen ausgeführt werden. Einschränkende Kriterien sind hier der Arbeits- und der
Festspeicher sowie die Rechenleistung der Prozessoren.
Weiterhin ist zu beobachten, dass große Unternehmen oftmals nicht regional, sondern überregional oder global agieren, so dass die durch Geschäftsprozesse erzeugten Daten an verschiedenen Orten anfallen und auch getrennt voneinander gespeichert werden. Somit sind viele Datenbestände über mehrere, voneinander zu unterscheidende Datenbanken an mehreren
Orten verteilt. Durch potentiell unterschiedliche Geschäftsprozesse an unterschiedlichen Orten können die anfallenden Daten auch bezüglich ihrer Domäne differieren. Somit können sich
auch die Schemata, in denen die Daten gespeichert werden, voneinander unterscheiden, so dass
man von heterogenen Datenbeständen innerhalb eines Unternehmens sprechen kann.
Eine weitere Motivation für verteilte, voneinander getrennte und heterogene Datenbestände ist
in Datenschutzrichtlinien zu finden. So kann eine getrennte Datenhaltung eingesetzt werden,
die es Mitarbeitern unterschiedlicher Filialen eines Unternehmens unmöglich macht, Daten von
Geschäftsprozessen anderer Filialen einzusehen. Auch geschäftliche oder gesetzliche Gründe
können die Verteilung der Datenbestände auf verschiedene Orte motivieren [PCS00].
Ein Ansatz zur Lösung des Problems der verteilten Datenbestände liegt in der Zusammenführung dieser zu einem homogenen, einheitlichen Datenbestand. Es kann jedoch unter
Umständen undurchführbar sein, getrennt voneinander gehaltene, verteilte Datenbestände in
einen zentralen Datenbestand zu integrieren. Gründe hierfür liegen einerseits in datenschutzrechtlichen Aspekten, andererseits jedoch auch im Rechen-, Kosten- und Speicherungsaufwand
für die Zusammenführung der Daten in ein zentrales, homogenes Schema. Datentransfer von
verschiedenen, verteilten Datenbeständen beinhaltet finanziellen und zeitlichen Aufwand. Zudem entstehen Redundanzen im Bestand der gespeicherten Daten [TG00]. Letztlich kann es
einzig aufgrund des hohen Datenvolumens undurchführbar sein, verschiedene Datenbestände
zu homogenisieren und in einem zentralen Bestand zu speichern. Man stelle sich hier beispielsweise die Zusammenführung aller Daten des World Wide Web (WWW), welches den größten
1
2
K APITEL 1 - E INF ÜHRUNG UND G LIEDERUNG
existierenden, verteilten Datenbestand darstellt, als nahezu unerschöpflichen Eingabedatenbestand einer Analyse vor.
Sowohl die Durchführung von Analysen auf sehr großen Datenbeständen als auch die
Durchführung von Analysen auf heterogenen, verteilten Datenbeständen motivieren das sog.
Distributed Data Mining (DDM) (siehe Kapitel 2). Die Analyseprozesse, die während der Data Mining (DM) -Phase im Prozess des Knowledge Discovery in Databases (KDD) ausgeführt
werden, sind leicht parallelisierbar. Somit ließen sich Analyseschritte unter Nutzung monolithischer Basisdaten parallel durchführen, was größere Mengen von Eingabedatensätzen zuließe
und zudem auf verteilten Datenbanken ausgeführt werden könnte [Pro00]. Um dies zu ermöglichen, lassen sich Partitionierungsverfahren anwenden, die monolithische Datenbestände in
kleinere Partitionen aufteilen, die ihrerseits dann von verschiedenen Systemen gegebenenfalls
parallel analysiert werden können [GS00]. Im Falle einer gegebenen Verteilung der Eingabedaten ist dieser Partitionierungsschritt nicht notwendig, da die Basisdaten schon im Vorfeld
partitioniert an unterschiedlichen Orten vorliegen.
Distributed Data Mining eignet sich also zur Analyse von verteilten, großen Datenbeständen
aufgrund der Parallelisierung der Analyseschritte, die einerseits eine Geschwindigkeitssteigerung der Analyseläufe im Vergleich zum sequentiellen Berechnen der Analysen darstellt und
andererseits keine Kommunikation großer Datenbestände erfordert, da die Analysen auf den
verteilten Datenbeständen vor Ort parallel durchgeführt werden. Deren Ergebnisse können anschließend an eine zentrale Instanz, einen sog. Meta-Lerner, kommuniziert werden, der die einzelnen Teilergebnisse dann zu einem Gesamtmuster zusammenführt [Dit97], [GS00]. Um auf
das Beispiel der automatisierten Wissensgenerierung aus Datenbeständen des WWW zurückzukommen, könnten Software-Agenten in Zukunft auf diese Weise die verschiedenen Datenbestände des WWW analysieren und lediglich ihre Ergebnisse anstelle der zur Analyse notwendigen Basisdaten an einen Meta-Lerner kommunizieren, der diese dann in ein globales Muster
einpflegt. Somit wäre ein Schritt in Richtung der automatisierten Gewinnung von Wissen aus
den Datenbeständen des WWW getan.
Bei beiden vorgestellten Möglichkeiten der Verteiltheit von Daten (Verteiltheit durch Partitionierung, Verteiltheit aufgrund der Gegebenheiten) sind zwei Charakteristika erkennbar:
1. Es werden Informationen aus Teilen des gesamten Eingabedatenbestandes generiert.
2. Es wird aus den partiell erzeugten Ergebnissen ein globales Modell erzeugt.
Ein solches Vorgehen motiviert die Verfügbarkeit eines Systems, welches Analysealgorithmen
direkt auf den relationalen, verteilten Datenstrukturen anwenden und deren Analyseergebnisse
an einen Meta-Lerner weitergeben kann, der dann ein globales Modell erzeugt. Zudem sind
Anpassungen von vorhandenen Analyseverfahren an ein solches verteiltes Szenario notwendig.
1.1. Überblick ReKlaMe
Hier ansetzend wird das ReKlaMe-Projekt im Rahmen des Dissertationsvorhabens von Herrn
Heiko Tapken entwickelt. ReKlaMe steht für Klassifikation relationaler und verteilter Daten
am Beispiel des KundenmanageMents. Das Ziel des ReKlaMe-Projektes ist es, die erwähnten Einschränkungen der Verwendung verfügbarer Technologien bei direkter Anwendung auf
relationale Datensätze zu umgehen und somit die Induktion sowie die Anwendung dieser (beispielsweise Klassifikatoren) direkt auf den relationalen Teildaten zu ermöglichen [Tap04]. Somit bezieht ReKlaMe sich auf ein verteiltes Szenario, wie es im folgenden Abschnitt eingeführt
wird, jedoch im Speziellen auf Analyseverfahren der Klassifikation. In Abbildung 1.1 ist der
2
1.1 Ü BERBLICK R E K LA M E
3
Abbildung 1.1.: Analyse-Prozess im ReKlaMe-Ansatz [Tap04]
Analyse-Prozess im ReKlaMe-Projekt schematisch dargestellt. Daten können aus verteilten
Data Warehouses (DWH) (zu DWH siehe Abschnitt 2.1.4) extrahiert werden. Initiale lokale
Klassifikations-Algorithmen erlauben es, auf den relationalen Daten an den verteilten Standorten erste, nicht anonymisierte Wälder von Entscheidungsbäumen (siehe Abschnitt 2.1.3) auf
datenschutzrechtlich geschützter, privater Ebene zu generieren. In weiteren Schritten können
diese Entscheidungsbaumwälder durch Algorithmen zur Anonymisierung und durch Boostingalgorithmen aufgearbeitet und anschließend durch weitere, initiale Klassifikationsalgorithmen
auf datenschutzrechtlich ungeschützter, öffentlicher Ebene zu lokalen Modellen aufgearbeitet
werden. Als Ergebnis liegen anonymisierte und nicht anonymisierte, zu schützende Modelle lokal vor. Um die nichtanonymisierten Entscheidungsbaumwälder miteinander zu kombinieren,
werden auf datenschutzrechtlich geschützter, privater Ebene Kombinationsalgorithmen für homogene Modelle angewandt. Für die datenschutzrechtlich ungeschützten, öffentlichen Daten
kommen ebenfalls solche Kombinationsalgorithmen für homogene Modelle zur Anwendung.
So entstehen Entscheidungsbaum-Zwischenmodelle. Parallel dazu erzeugen sog. Grobkonzeptlerner Arbitrierungsregeln direkt aus den Daten der DWH. Über Arbitrierungsalgorithmen werden mittels dieser direkt gelernten Regeln und den erzeugten Zwischenmodellen globale Entscheidungsbäume generiert.
Um Entscheidungsbäume auf individuellen Datenwürfeln aus den DWH unter Berücksichtigung der Datenschutzaspekte induzieren zu können, wird ein modellgeführter InstanzauswahlAnsatz verfolgt. Dieser basiert auf der Hypothese, die vereinfacht besagt, dass im Falle, dass
3
4
K APITEL 1 - E INF ÜHRUNG UND G LIEDERUNG
eine Subdimension keinen besseren multivariaten Split liefert, keine Dimension besser geeignet ist. Dies gilt nur dann, wenn dass das Zielattribut aus Fakten zusammengesetzt ist.
Dieser Ansatz führt zu einer schnellen Restriktion des Suchraumes. So ist in jedem Schritt der
Entscheidungsbauminduktion eine optimale Splitfunktion erwünscht. Für jeden Datenwürfel
werden mehrere Hypothesen gelernt und dann unter Nutzung von Boosting-Techniken kombiniert.
1.2. Einführung in ein Beispielszenario
Anwendung finden diese Ansätze im Rahmen des ReKlaMe-Projektes in einem eigens dafür
aufgesetzten, exemplarischen Szenario aus der Domäne der Telekommunikationsbranche. Anhand dieses Szenarios soll eine verteilte Analyse umgesetzt und evaluiert werden.
Kern des Szenarios bildet ein überregional anbietender Telekommunikationsdienstleister, der
verschiedene Produkte zur Verfügung stellt. Ein solches Produkt besteht aus mehreren Komponenten; immer enthalten ist ein physischer Zugang zum Telekommunikationsnetz. Daran
gebunden können ein oder mehrere Tarife auf diesen Zugang gebucht werden. Die dazu notwendige Infrastruktur ist Eigentum des Telekommunikationsdienstleisters, jedoch kann dieser
auch Kapazitäten von anderen Dienstleistern hinzu mieten. Der überregionale Markt ist dem
Anbieter also bekannt, so dass dieser, je nach Bedarf, in speziellen Regionen Kapazitäten hinzu
mieten kann, um sein Angebot individuell auf regionale Bedürfnisse anzupassen.
Bezüglich der Kunden sind grundlegende demographische Daten bekannt, die bei Vertragsabschluss erhoben werden. Der Telekommunikationsdienstleister tritt bezüglich der erbrachten
Dienstleistung in Vorleistung, so werden die angebotenen Dienstleistungen erst im Nachhinein
in Rechnung gestellt, wie dies bei Telekommunikationsdienstleistungen üblich ist. Weitere Daten, die über den Kunden gespeichert werden, sind die Verbindungen, die dieser anwählt. Auf
Basis dieser Daten und der gewählten Tarifoptionen wird eine monatliche Rechnung erstellt.
Um sinnvolle Analysen und eine persistente, zeitbezogene Speicherung der Daten zu erreichen,
entschied die Geschäftsleitung, ein Data Warehouse einzurichten. Neben den verbindungsbezogenen Daten wird auch die überregionale Verteilung der Anschlüsse und speziell der Wandel
dieser Verteilung über die Zeit im Data Warehouse gespeichert.
Als Klassifikationsziel kann nun die Buchung bestimmter Produkte in bestimmten Regionen
gewählt werden. Hierbei könnten die Kundendaten mit berücksichtigt werden, um ein mögliches Profil darüber zu erstellen, welche Kundengruppe welche Produkte in welcher Region
bevorzugt. Anhand solcher Ergebnisse könnte dann eine gezielte Marketingkampagne gestartet und der Produktabsatz optimiert werden. Mittels dieser Analysen könnten auch Entscheidungen unterstützt werden, in welchen Regionen ein infrastruktureller Ausbau kommerziellen
Erfolg versprechen würde. Da ein Data Warehouse (siehe Abschnitt 2.1.4) die Daten zeitbezogen speichert, und auch Daten über beantragte, aktive, aktivierte, deaktivierte und gekündigte
Tarife und Tarifoptionen verfügbar sind, ließen sich auch Veränderungen in den Produktverbreitungen bezogen auf die Regionen durch Analysen erkennen, so dass auf Trends reagiert
werden könnte und Kunden gezielt beeinflusst werden könnten.
Ein weiteres Ziel einer möglichen Analyse könnte die Produktnutzung darstellen. Die Speicherung dieser Daten ist zur Rechnungsstellung ohnehin notwendig, so dass diese in das Data
Warehouse eingepflegt werden müssen. Wegen der Abrechnung und der daraus resultierenden
Notwendigkeit der genauen Erfassung haben diese Daten eine hohe Qualität und stellen eine sehr gute Grundlage für Analysen dar. Gespeichert werden die Dauer aller Verbindungen
pro Anschluss und die damit verbundenen Kosten, die sich aus Dauer und Art der Verbindung
4
1.3 Z IELE DIESER A RBEIT
5
berechnen lassen. Weiterhin werden die durchschnittliche Dauer eines Gespräches sowie der
durchschnittliche Umsatz pro Gespräch berechnet. Bezugspunkt für diese Werte ist eine festgelegte Zeitspanne, z.B. ein Kalendertag. Diese Gesprächsdaten können in Bezug zu Produkten,
Kunden oder Regionen gestellt werden. Die Kosten für die Nutzung eines Produktes hängen
auch von der Tageszeit ab, zu der dieses genutzt wird. So sind beispielsweise Gespräche nach
18 Uhr günstiger als in der Zeit von 8 bis 18 Uhr. Durch die Erfassung dieser Daten erhofft sich
die Geschäftsleitung, ein umfassendes Bild der Produktnutzung gewinnen zu können. So könnte festgestellt werden, welche Kundengruppe welche Produkte in welcher Region zu welcher
Zeit nutzt. Diese Erkenntnisse können eine Grundlage für Entscheidungen darstellen, welche
Produkte vermehrt beworben werden sollen bzw. in welchen Regionen sich ein Ausbau welcher
Produkte kommerziell lohnen könnte.
1.3. Ziele dieser Arbeit
Im Rahmen dieser Arbeit soll nach Schaffung der Wissensgrundlagen zunächst ein
Ausführungsmodell für Analysen im ReKlaMe-Kontext geschaffen werden. Das Ausführungsmodell soll umfassend spezifizieren, wie eine Analyse im ReKlaMe-Kontext genau verläuft
bzw. welche Alternativen sich bezüglich des Analyseverlaufes bieten. Dabei soll ein verteiltes
Szenario berücksichtigt werden, in dem die Datenbestände an unterschiedlichen Orten vorliegen und dort lokal analysiert werden sollen. Die Teilergebnisse der Analysen sollen dann an
zentraler Stelle von einem Meta-Lerner zu einem globalen Modell zusammengefügt werden.
Basierend auf dem Ausführungsmodell soll dann ein Architekturentwurf durchgeführt werden. Dieser Entwurf soll im Verlauf der Arbeit bezüglich noch zu identifizierender Kriterien
genau untersucht werden. Mögliche Kriterien für die genaue Untersuchung des ArchitekturKonzeptes sind hier z.B. Datenschutz-Aspekte oder die Unterstützung von Verteiltheit der
Komponenten. Auch der Aufwand der Einarbeitung in eine Technologie und die Komplexität
der Implementation ist bei der Untersuchung des Architektur-Konzeptes zu berücksichtigen.
Auf Basis der durchgeführten Arbeiten kann dann ein Softwaretechnischer Entwurf von ausgewählten Architekturaspekten erstellt werden, wobei die Komponenten der Architektur ebenfalls prototypisch implementiert werden. Auszuwählen sind in diesem Schritt mindestens die
Komponenten, die für das Ausführungsmodell bzw. dessen Steuerung benötigt werden.
Anschließend wird die Eignung der entworfenen Architektur anhand von verschiedenen Tests
validiert. Die Tests sollen die Funktionalität der im Ausführungsmodell beschriebenen Komponenten nachweisen und die möglichen Analyse-Vorgänge simulierbar implementieren.
Abschließend folgen eine kritische Untersuchung unter anderen Aspekten und eine genaue
Einschätzung der Eignung der ausgewählten Architektur.
1.4. Gliederung dieser Arbeit
In Kapitel 2 werden zunächst die Grundlagen des Distributed Data Mining (DDM) erläutert.
Anschließend gibt Kapitel 3 eine grobe Einführung in unterschiedliche Architektur-Ansätze.
Hierbei wird ein Architektur-Ansatz speziell betrachtet. Darauf folgend wird in Kapitel
4 ein Ausführungsmodell für das ReKlaMe-Szenario entworfen. Nach Entwicklung des
Ausführungsmodelles folgt in Kapitel 5 der Entwurf einer Architektur entsprechend der Anforderungen des Ausführungsmodelles anhand einer objektrientierten Analyse. Diese wird in
Kapitel 6 im Rahmen eines softwaretechnischen Entwurfes umgesetzt. In Kapitel 7 wird die
5
6
K APITEL 1 - E INF ÜHRUNG UND G LIEDERUNG
auf dem Entwurf basierende Implementierung detailliert vorgestellt. Schließlich werden in Kapitel 8 eine Zusammenfassung und ein Ausblick gegeben. Dabei werden die formulierten Ziele
dieser Arbeit aufgegriffen und anhand der durchgeführten Arbeiten und der dadurch gewonnenen Erkenntnisse auf korrekte Umsetzung bzw. Erreichung hin untersucht. Zudem werden
Ansatzpunkte für die weitere Entwicklung der im Rahmen dieser Arbeit entworfenen Architektur aufgeführt.
6
2. Einführung in Distributed Data Mining
(DDM)
Distributed Data Mining (DDM) bezeichnet einen Prozess, bei dem Data Mining auf verteilten
Datenquellen betrieben wird. Um diesen Prozess nachvollziehen zu können, bedarf es einiger
grundlegender Kenntnisse in den Bereichen Knowledge Discovery in Databases (KDD) und
Data Mining (DM). Daher werden in diesem Kapitel zunächst die Grundlagen erläutert, bevor
im Anschluss eine nähere Untersuchung des Distributed Data Mining durchgeführt wird.
Zunächst wird in Abschnitt 2.1.1 der Prozess des KDD eingeführt und erläutert. Anschließend
beschäftigt sich dieses Kapitel in Abschnitt 2.1.2 mit dem Data Mining, einem essentiellen
Schritt des KDD-Prozesses. Darauf folgend werden die Begriffe Klassifikation und Entscheidungsbaum in Abschnitt 2.1.3 eingeführt und anhand eines Beispieles veranschaulicht. Weiter wird ein Algorithmus zur Induktion eines Entscheidungsbaumes vorgestellt. Im Anschluss
wird in Abschnitt 2.1.4 ein Überblick über die typischen Komponenten einer Data MiningArchitektur gegeben.
Nachfolgend wird der Begriff des DDM in Abschnitt 2.2.1 eingeführt. In den Abschnitten
2.2.2 und 2.2.3 werden verschiedene Herangehensweisen an den Prozess des DDM diskutiert.
Schließlich wird im Abschnitt 2.2.4 die Erweiterung der Entscheidungsbauminduktion auf verteilte Szenarien betrachtet.
2.1. Grundlagen des Distributed Data Mining
Durch die großen Mengen an Daten, die heutzutage verfügbar sind, werden neben den Daten
über verwertbare, nützliche Informationen auch solche Daten gespeichert, deren Informationen
für eine weitere Verarbeitung nicht von Interesse sind. So ist es wünschenswert, einen automatisierten Prozess nutzen zu können, der die gehaltvollen, für potentielle Analysen notwendigen
und interessanten Daten von den uninteressanten Daten separiert und somit neues Wissen generiert. Dies ist der Ansatz des KDD.
2.1.1. Knowledge Discovery in Databases (KDD)
Der Begriff KDD steht für Knowledge Discovery in Databases und wird nach [FPSS96a] wie
folgt definiert:
Definition 2.1 Knowledge Discovery in Databases ist der nicht triviale Prozess der Identifikation valider, neuartiger, potentiell nützlicher und klar verständlicher Muster in Daten.
2
KDD ist als Prozess aufzufassen, der in verschiedene Schritte aufgeteilt ist. Es gibt viele unterschiedliche Modellvorschläge für den KDD-Prozess, die, bis auf eines, hier lediglich kurz
Erwähnung finden sollen. So zählen die Modelle nach Fayyad [FPSS96b], nach Brachman und
Anand [BA96] und nach Hippner und Wilde [HW01] sowie die Modelle SEMMA [SAS04]
7
8
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
und CRISP-DM [CRI04] zu den am weitesten verbreiteten Modellen für den KDD-Prozess.
Für weitere Informationen über die aufgezählten KDD-Prozessmodelle sei hier auf [Zen03]
verwiesen.
Die einzelnen Modelle sind einander ähnlich, so dass es ausreichend ist, ein exemplarisches
Modell vertiefend vorzustellen. Zu diesem Zweck wird das Modell des KDD-Prozesses nach
Han und Kamber [HK00] gewählt, welches in Anlehnung an Fayyad [FPSS96b] aufgebaut ist
und in Abbildung 2.1 dargestellt wird. Dieses Modell wurde von Han und Kamber im Vergleich
zum Modell von Fayyad um ein Data Warehouse (DWH, siehe dazu Abschnitt 2.1.4) erweitert
und wird im Folgenden erläutert.
Abbildung 2.1.: Der KDD-Prozess (nach [HK00])
Im ersten Schritt des KDD-Prozesses nach [HK00] werden die Daten, die für die nachfolgenden Analysen von Interesse sind, aus verschiedenen Quelldatenbanken selektiert, extrahiert
und anschließend bereinigt. Dabei werden verschiedene Schritte zur Datenbereinigung, einem
Aspekt der Datenvorverarbeitung, durchgeführt, die in [Stu03], [Böh01] und [Zho02] näher
erläutert sind. An dieser Stelle soll nur kurz auf die Datenbereinigung eingegangen werden.
Damit Daten sich für die Verarbeitung im KDD-Prozess eignen, müssen diese bereinigt werden, da heterogene Daten Konfusionen verursachen, die zu unzuverlässigen und ungenauen Ergebnissen führen. Die folgenden Schritte werden während der Datenbereinigung durchgeführt:
• Fehlende Werte einzelner Attribute werden durch Standardbelegungen ersetzt oder mittels spezieller Werte als fehlend markiert
• Verrauschte Daten werden geglättet, um Ausreißer zu entfernen
• Inkonsistente Datensätze werden gelöscht, als inkonsistent markiert oder durch Anlegen
eines künstlichen Schlüsselattributes korrigiert
Der zweite Schritt des KDD-Prozesses ist die Datenintegration, ebenfalls ein Aspekt der Datenvorverarbeitung. Da die Daten aus den unterschiedlichen Datenquellen, wie z.B. Datenbanken oder flat files, in verschiedenen Schemata vorliegen, die oftmals heterogen sind, müssen
die Daten in ein gemeinsames, homogenes Schema integriert werden. So ist gewährleistet, dass
die Daten aus verschiedenen Quellen bei nachfolgenden Analysen in gleichem Aggregationszustand und in identischen Domänen vorliegen und somit die Qualität der Analysen steigt.
Die Datenintegration erfordert oftmals die Anpassung einzelner Daten, sei es, weil der Wertebereich differiert oder weil einfach syntaktische Unterschiede zwischen den zu vereinheitlichenden Datensätzen vorherrschen. Ein Beispiel für differierende Wertebereiche kann die
8
2.1 G RUNDLAGEN DES D ISTRIBUTED D ATA M INING
9
Angabe von Zeit in Stunden oder Minuten darstellen. So können beispielsweise in einem Datenbestand 2 Stunden als Dauer für eine Veranstaltung angegeben sein, wohingegen ein anderer
Datenbestand 120 Minuten für die identische Veranstaltung angeben kann. Unterschiedliche
syntaktische Darstellungen wie z.B. das Datum 2004-08-25 nach amerikanischer Norm, welches dem Datum 25. August 2004 nach deutscher Norm entspricht, sind hier ebenfalls denkbar.
Die vorverarbeiteten Daten werden anschließend in ein Data Warehouse geladen (zum Begriff
Data Warehouse siehe Abschnitt 2.1.4). Der Grund für die Durchführung einer Datenvorverarbeitung liegt darin, dass mit vorverarbeiteten Daten qualitativ hochwertigere Analyseergebnisse erzielt werden können. Kritisch zu betrachten ist bei der Datenvorverarbeitung und Datenbereinigung jedoch der Umstand, dass durch Datenbereinigung auch wertvolle Informationen
verloren gehen können. So deuten Ausreißerwerte (Werte, die weit außerhalb des durchschnittlichen Wertebereiches liegen) oftmals auf relevante Entwicklungen wie z.B. Kreditkartenbetrug
hin. Ausgehend von einem Kreditkartenkonto, von dem über einen langen Zeitraum nur kleine
Beträge transferiert wurden, kann die starke Nutzung innerhalb eines sehr kurzen Zeitraumes,
die als Ausreißer zu erkennen wäre, einen Betrugsverdacht nahe legen. Die Bereinigung solcher
Datensätze hätte ähnliche Folgen wie ein Datenverlust, da durch eine Bereinigung derartige
Entwicklungen in den Datensätzen verloren gingen.
Der dritte Schritt des KDD-Prozessmodelles nach [HK00] ist die Selektion. Hier werden die
Daten aus dem Data Warehouse selektiert, die den folgenden Analysen als Basis dienen. Der
Einsatz eines Data Warehouses wird von [HK00] vorgeschlagen, da die Daten dort bereits
bereinigt, aggregiert und integriert vorliegen. Dies erhöht einerseits die Qualität der Ergebnisse
einer Analyse, da diese von der Qualität der Eingabedaten abhängt, und reduziert andererseits
die Datenmenge, die der Analyse zugrunde liegt, da sie deren Kosten bestimmt und somit bei
der Kostenkalkulation mit zu berücksichtigen ist.
Nach der Selektion besteht der vierte Schritt in der Datentransformation, die dazu dient, die
Quelldaten in ein syntaktisch und semantisch korrektes Eingabeformat für die Analysealgorithmen zu bringen. Die Transformationsschritte beinhalten beispielsweise eine weitere Aggregation oder Summation einzelner Attribute, um diese auf die von den Algorithmen vorgegebenen
Wertebereiche zu transformieren oder weitere Datenreduktion zu betreiben. Für nähere Informationen sei hier auf [Stu03] verwiesen.
Im fünften Schritt des KDD-Prozesses wird Data Mining auf den vorverarbeiteten und selektierten Daten betrieben. Der Schritt des Data Mining wird in Abschnitt 2.1.2 ausführlicher
betrachtet. Vereinfacht dargestellt handelt es sich bei Data Mining um einen Analyseschritt,
der auf Basis einer Eingabedatenmenge Muster in den Daten findet und somit Information aus
Basisdaten generiert.
Die durch das Data Mining gefundenen Muster müssen anschließend im sechsten Schritt noch
evaluiert werden. Hier werden die tatsächlich interessanten, neu entdeckten Muster von denen
separiert, die für weitere Analysen oder Entscheidungen nicht von Interesse sind. Um dies
umzusetzen, ist Expertenwissen notwendig.
Abschließend wird das neu entdeckte bzw. generierte Wissen im siebten Schritt präsentiert,
indem Visualisierungs- und Wissensrepräsentationstechniken genutzt werden.
In allen Schritten des KDD-Prozesses hat der Anwender die Möglichkeit, interaktiv auf den
weiteren Verlauf der Analyseschritte Einfluss zu nehmen. So kann er bestimmen, welche Vorverarbeitungsschritte angewandt werden sollen. Auch bei der Integration der Datenbestände in
ein homogenes Schema kann der Anwender bestimmen, welche Attribute von einem Quell- in
ein Zielschema integriert werden. Bei der Selektion wählt der Anwender die für die nachfolgenden Analyseschritte notwendigen und wertvollen Daten aus. Der Anwender kann dahingehend
mit dem Schritt des Data Mining interagieren, indem er bestimmt, welche gefundenen Muster
9
10
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
von Interesse sind und als Wissen in die Wissensbasis eingehen sollen. Weiter kann er Einfluss
auf die Wahl geeigneter Analyseverfahren und deren Parametrisierung nehmen.
2.1.2. Data Mining
Nachdem die Daten im Prozess des KDD vorverarbeitet, selektiert und transformiert wurden,
wird, wie in Abschnitt 2.1.1 beschrieben, im fünften Schritt des KDD-Prozesses das Data
Mining durchgeführt. Das Data Mining ist ein essentieller Schritt im Prozess des KDD und ist
wie folgt definiert:
Definition 2.2 Data Mining umfasst die automatische Generierung von Modellen, die
maßgebliche Entwicklungen und Muster in Quelldaten beschreiben, durch intelligente Analysealgorithmen.
2
Die Aufgabe des Data Mining besteht darin, Informationen aus großen Mengen von Eingabedaten zu extrahieren. Durch Data Mining können Muster in Daten entdeckt werden, die zuvor
verborgen waren. Dabei kann der Schritt des Data Mining mit einem Benutzer oder einer Wissensbasis interagieren. So kann anhand dieser Interaktion eine Bewertung gefundener Muster
stattfinden, und davon abhängig eine Speicherung der gefundenen Muster als Wissen oder deren Verwerfung initiiert werden [HK00].
Typische Algorithmen, die während des Data Mining-Schrittes zum Einsatz kommen, sind
Algorithmen zum Clustering, zur Assoziationsanalyse und zur Klassifikation. Clustering und
Assoziationsanalyse werden im Anschluss definiert. Die Klassifikation wird in Abschnitt 2.1.3
ausführlich betrachtet, da sie im Kontext dieser Arbeit eine zentrale Bedeutung hat. Die Definition von Clustering nach [ES00] lautet wie folgt:
Definition 2.3 Clustering befasst sich mit dem Zusammenfassen von gleichartigen Daten zu Gruppen, indem Eingabedaten in Gruppen sich ähnelnder Objekte eingeteilt werden.
Dabei zeichnet einen Cluster aus, dass die darin enthaltenen Objekte zueinander eine hohe
und gegenüber Objekten anderer Cluster eine geringe Ähnlichkeit aufweisen.
2
Die Definition der Assoziationsanalyse ist an [HK00] angelehnt:
Definition 2.4 Die Assoziationsanalyse befasst sich mit der Identifikation von Objekten
innerhalb eines Datenbestandes, die in speziellen Beziehungen zueinander stehen.
2
Dabei wird unter einer speziellen Beziehung beispielsweise das ausschließlich paarweise Auftreten zweier Objekte innerhalb eines Datenbestandes verstanden. So könnte nach
Durchführung einer Assoziationsanalyse auf Datenbeständen eines Telekommunikationsunternehmens eine Assoziationsregel entdeckt werden, die besagt, dass ISDN-Kunden zu 80% auch
ein Produkt aus dem Portfolio der Internet-Produkte bestellen.
Weiterführende Informationen zum Thema Data Mining sowie nähere Informationen zu den
aufgeführten und zu weiteren Analysealgorithmen finden sich in [HK00].
Im folgenden Abschnitt erfolgt zunächst eine Definition der Begriffe Klassifikation und Entscheidungsbaum, dann folgt die Einordnung des Entscheidungsbaumkonzeptes in den Klassifikationskontext. Anschließend wird die Induktion eines Entscheidungsbaumes betrachtet.
10
2.1 G RUNDLAGEN DES D ISTRIBUTED D ATA M INING
11
2.1.3. Klassifikation und Entscheidungsbäume
Eine wichtige Technik der Analyse von Datenbeständen und der Generierung von Wissen aus
diesen ist die Klassifikation. Mittels der Klassifikation können Modelle induziert werden, die
wichtige Klassen von Daten beschreiben oder mittels derer Trends in Daten entdeckt werden
können. Anhand dieser Modelle ist es möglich, Daten bestimmten Klassen zuzuordnen.
Definition 2.5 Die Klassifikation ist ein Prozess, der aus zwei Schritten besteht. Im ersten
Schritt wird durch Analyse von Datentupeln, den Trainingsdaten, ein Modell induziert, das
eine vorgegebene Menge von Datenklassen oder Konzepten beschreibt. Im zweiten Schritt
wird das Modell genutzt, um Daten einer der gefundenen Klassen zuzuordnen.
2
Eine Methode der Klassifikation basiert auf Entscheidungsbäumen und wird im Folgenden
näher vorgestellt. Entscheidungsbäume eignen sich aufgrund ihrer hohen Klassifikationsgenauigkeit und aufgrund des Umstandes, dass sie bezüglich ihrer Semantik vergleichsweise leicht
zu interpretieren sind, gut für die Anwendung in der Klassifikation [MST94].
Definition Entscheidungsbaum
Ein Entscheidungsbaum ist eine Struktur zur Darstellung eines Klassifikators, die für eine spezielle Ausprägung einer Data Mining-Analyse, die Klassifikation, eingesetzt werden kann.
Definition 2.6 Ein Entscheidungsbaum ist eine azyklische, flußgraphähnliche Baumstruktur, die in ihren Knoten Attribute beinhaltet. Die von einem Knoten ausgehenden Kanten
beschreiben die möglichen alternativen Ergebnisse eines Tests auf diese Attributwerte. Die
Blätter stellen Zielklassen dar. Der in der Hierarchie am höchsten stehende Knoten wird als
Wurzel bezeichnet.
2
Ein Entscheidungsbaum kann zur Klassifizierung genutzt werden, indem die Attribute der zu
analysierenden Daten (Basisdaten) mit den in den einzelnen Knoten vorgehaltenen Attributen
verglichen und entsprechend dem Ergebnis des Vergleichs in eine Kindklasse dieser Knoten
eingeteilt werden.
Abbildung 2.2.: Ein beispielhafter Entscheidungsbaum (nach [HK00])
Beispielhafte Anwendung eines Entscheidungsbaumes
Ein Beispiel für einen Entscheidungsbaum ist in Abbildung 2.2 dargestellt. Dieser Entscheidungsbaum teilt Probanden in Abhängigkeit der Attribute Student mit den Ausprägungen
ja, nein und Bonität mit den Ausprägungen gut und mäßig in zwei Klassen ein, von
11
12
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
denen die eine Klasse die der potentiellen Kunden (mit dem Klassifikationsergebnis ja) und
die andere Klasse die der potentiellen Nichtkunden für einen DSL-Tarif eines Telekommunikationsanbieters (mit dem Klassifikationsergebnis nein) abbildet. Er repräsentiert somit das
Konzept DSL-Kunde. Jeder Knoten steht für den Test auf ein Attribut, jede Kante beschreibt
eines der möglichen Ergebnisse eines Testes und jedes Blatt repräsentiert eine Zielklasse, in
diesem Beispiel die Klasse der Käufer oder die der Nichtkäufer.
Eine beispielhafte Anwendung des Entscheidungsbaumes aus Abbildung 2.2 sei im Folgenden
aufgezeigt. Ein Proband, Student des Alters von 28 Jahren, soll anhand des Entscheidungsbaumes als potentieller Kunde oder als Nichtkunde für einen DSL-Tarif identifiziert werden.
Hierzu wird zunächst das Alter des Probanden getestet. Da dieser ein Alter von 28 Jahren
aufweist, wird als nächstes der Test auf Studentenstatus durchgeführt. Es wird also die Kante
des Baumes verfolgt, die mit dem Attributwert ≤30 beschriftet ist. Da der Status des Käufers
dem Attributwert Student entspricht, wird die mit ja beschriftete Kante verfolgt und der
Proband somit als potentieller Kunde für einen DSL-Tarif (mit der Klassenbezeichnung Ja)
klassifiziert.
In diesem Beispiel werden Studenten, deren Alter unter 30 Jahren liegt, Menschen des Alters
zwischen 31 und 40 Jahren sowie Menschen mit mäßiger Bonität, die zusätzlich nicht studieren
und ein Alter von über 40 Jahren aufweisen, als potentielle Kunden eines DSL-Tarifes klassifiziert. Alle anderen Menschen hingegen werden in die Klasse der potentiellen Nichtkunden
eingeordnet.
Anhand eines Entscheidungsbaumes können also unbekannte Entitäten anhand ihrer Attributwerte, die gegen den Entscheidungsbaum getestet werden, in Klassen mit spezifischen Eigenschaften eingeteilt werden. Ein von den Attributwerten der Entität abhängiger Weg durch den
Entscheidungsbaum bestimmt deren Klassenzugehörigkeit. Weiterhin können aus Entscheidungsbäumen auf einfache Art und Weise Klassifikationsregeln abgeleitet werden.
Um einen Entscheidungsbaum generieren zu können, bedarf es eines Induktionsalgorithmus.
Dieser wird im folgenden Abschnitt für nicht-verteilte und im Abschnitt 2.2.4 für verteilte
Szenarien näher betrachtet.
Nichtverteilte Induktion von Entscheidungsbäumen
In diesem Abschnitt wird der Entscheidungsbaum-Induktionsalgorithmus ID3 vorgestellt.
Dieser Algorithmus induziert einen Entscheidungsbaum in einer rekursiven top-downVorgehensweise. Die Induktion basiert auf gegebenen Trainingsdaten, deren Besonderheit darin besteht, dass sie bereits ein feststehendes Klassifikationsergebnis darstellen. Die Eingabe des
ID3-Algorithmus besteht aus diesen Trainingsdaten, die in Form von diskreten Attributen, den
Eingabedaten, vorliegen, und aus einer Menge von Attributen, die zu klassifizieren sind, der Attributliste. Als Ausgabe produziert ID3 einen Entscheidungsbaum. Die Strategie, nach der ein
Entscheidungsbaum induziert wird, ist in Algorithmus 1 grob skizziert und wird im Folgenden
ausführlich erläutert. Der Algorithmus ist an die Ausführungen aus [HK00] angelehnt.
Algorithmus zur Induktion eines Entscheidungsbaumes
Zur Verdeutlichung der Funktionalität des ID3-Algorithmus zur Entscheidungsbauminduktion
sind die Erläuterungen an die einzelnen Schritte des Algorithmus angelehnt. Diese Version des
ID3-Algorithmus erlaubt lediglich diskrete Eingabedatensätze.
Der Entscheidungsbaum startet als einzelner Knoten, der alle Eingabedaten repräsentiert (entsprechend Schritt 1 des Algorithmus). Wenn die Eingabedatensätze alle aus der selben Klasse
12
2.1 G RUNDLAGEN DES D ISTRIBUTED D ATA M INING
13
Algorithmus 1: ID3-Entscheidungsbaum-Induktionsalgorithmus
Algorithmus: Generate decision tree(Eingabedaten,Attributliste)
1. Erzeuge einen Knoten N ;
2. if (Eingabedaten gehören alle zu der selben Klasse C)
Gib N als Blatt zurück, welches mit der Klassenbezeichnung C versehen ist;
3. if (Liste der Attribute ist leer)
Gib N als Blatt zurück, welches mit der Klassenbezeichnung der Klasse aus den
Eingabedaten versehen wird, die am meisten Ähnlichkeiten in ihren
Eigenschaften aufweist;
4. Wähle Testattribute aus der Liste aller Attribute so, dass sie den höchsten Informationsgehalt aufweisen;
5. Benenne Knoten N mit Testattribut;
6. for each bekannten Wert aus den Testattributen;
a) Erzeuge für die Bedingung Testattribut = ai einen Ast von Knoten N ;
b) Sei Si die Menge der Datensätze in den Eingabedaten mit Testattribut = ai ;
c) if (Si ist leer)
Erzeuge ein Blatt mit Bezeichnung der ähnlichsten Klasse aus den
Eingabedaten und füge es an die Kante an;
d) else
Füge den durch den Aufruf von
Generate decision tree(Si ,{Attributliste −Testattribut})
erzeugten Knoten an die Kante an;
stammen, so wird aus dem Knoten ein Blatt, welches mit dem Namen der Klasse bezeichnet
wird (Schritt 2). Andernfalls nutzt der Algorithmus ein entropiebasiertes Maß, den information gain (engl. für Informationsgewinn“), als Heuristik, um zu entscheiden, welches Attribut
”
am besten dazu geeignet ist, die Eingabedatensätze voneinander in individuelle Klassen zu
separieren (Schritt 4). Dieses Attribut wird dann zum Testattribut, anhand dessen jedes Eingabedatum in diesem Knoten auf Wertausprägung getestet wird (Schritt 5). Für jeden Wert, den
dieses Attribut annehmen kann, wird eine Kante erzeugt, und die Eingabedatensätze werden
entsprechend partitioniert (Schritte 6a und 6b). Auf die selbe Weise nutzt der Algorithmus nun
die bereits beschriebenen Schritte, um für die neu erzeugten Partitionen von Eingabedaten rekursiv wiederum Entscheidungsbäume zu generieren, die an die erzeugten Kanten angehängt
werden. Ein Attribut, welches in einem Knoten auftritt, wird bei fortführenden Iterationen nicht
weiter betrachtet (Schritt 6d). Die rekursive Entscheidungsbauminduktion stoppt nur, falls eine
der folgenden Bedingungen wahr ist:
• Alle Eingabedaten für einen gegebenen Knoten gehören zur selben Klasse.
• Es gibt keine weiteren Attribute mehr, nach denen die Testdaten partitioniert werden
können. In diesem Fall wird aus dem Knoten ein Blatt, welches mit dem Namen der
13
14
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
Klasse bezeichnet wird, zu der die meisten Datensätze der Eingabedaten zugeordnet werden können (Schritt 3). Alternativ kann der Name der Klasse des Knotens als Name des
Blattes zugeordnet werden.
• Es gibt keine Datensätze in den Eingabedaten mehr, die auf ein Attribut getestet werden können. In diesem Fall wird ein Blatt erzeugt, welches mit dem Namen der Klasse
bezeichnet wird, zu der die meisten Datensätze der Eingabedaten zugeordnet werden
können (Schritt 6c).
Um entscheiden zu können, welches Attribut zur Basis der Attributwert-Untersuchungen in
einem Knoten herangezogen werden soll, wird ein Maß zur Attributauswahl benötigt.
Maß zur Attributselektion: Der information gain
Der information gain, der durch die Wahl eines Attributes erzielt werden kann, ist für die
Entscheidung, welches Attribut zur weiteren Attributwert-Untersuchung an einem Knoten herangezogen werden soll, von Interesse. Das Attribut, welches den höchsten Informationsgewinn
erbringt, wird als Testattribut für den aktuellen Knoten gewählt. Auf diese Weise soll erreicht
werden, dass die Anzahl von Attributtests minimiert und ein einfacher, aussagekräftiger Entscheidungsbaum generiert werden kann. Die Bestimmung eines Maßes zur Auswahl eines Attributes als Testattribut (nach [HK00]) sei im Folgenden formal aufgezeigt.
Sei S eine Menge, die aus Datensätzen s = {s1 , s2 , . . . , sn } besteht. Man nehme an, m sei
die Anzahl unterschiedlicher Werte, die m unterschiedliche Klassen Ci = {c1 , c2 , . . . , cm }
definiere. Sei Si die Menge der Datensätze aus S, die in der Klasse Ci enthalten sind. Die zu
erwartende Information I aus der Partitionierung der Trainingsdaten nach einem Attribut ergibt
sich aus folgender Gleichung:
I(s1 , s2 , . . . , sm ) =
m
X
pi log2 (pi ),
(2.1)
i=1
wobei pi die Wahrscheinlichkeit darstellt, dass ein willkürlicher Datensatz zur Klasse Ci gehört
und durch Ssi abgeschätzt wird. Je geringer der Wert von I ausfällt, umso besser ist die Partitionierung zu bewerten. Weiterhin zeigt ein geringer Wert von I, dass die Klassen besser voneinander getrennt sind, und somit lassen sich umso einfacher weitere Datensätze klassifizieren,
da zur Klassifizierung weniger Informationen benötigt werden.
Ein Attribut A weise nun v verschiedene Werte {a1 , a2 , . . . , av } auf. So kann A genutzt werden, um die Menge S in v Untermengen {S1 , S2 , . . . , Sv } zu partitionieren, wobei Sj die Eingabedatensätze aus S enthält, die den Wert aj aus A aufzeigen. Falls A als Testattribut bestimmt
wurde, dann entsprechen diese Untermengen den Kanten, die vom Knoten, der die Menge S
repräsentiert, ausgehend erzeugt werden. Sei dann Sij die Anzahl der Datensätze aus der Klasse Ci , die in einer Partition Sj von S enthalten sind. Die Entropie E, die benötigte Information
für eine Klassifikation eines Datensatzes anhand eines Entscheidungsbaumes, wird berechnet
durch
v
X
S1j + . . . + Smj
E(A) =
I(S1j , . . . , Smj ).
(2.2)
s
j=1
Je kleiner der Wert der Entropie, umso eindeutiger verläuft die Trennung zwischen den Klassen.
Die Auswahl des Attributes, welches den höchsten Informationsgewinn erbringt, basiert auf
dem information gain, der mittels folgender Gleichung ermittelt wird:
Gain(A) = I(s1 , s2 , . . . , sm ) − E(A).
14
(2.3)
2.1 G RUNDLAGEN DES D ISTRIBUTED D ATA M INING
15
Der information gain ist die Menge an Informationen, die durch die Partitionierung gewonnen wurde. Zurückkommend auf die Entscheidungsbauminduktion wird das Attribut mit dem
höchsten information gain als Testattribut für die Elemente der Klasse S gewählt. Nach Auswahl dieses Attributes wird ein Knoten generiert und mit dem Attribut beschriftet. Für jede
Ausprägung eines Wertes für das erwählte Attribut wird von dem neu generierten Knoten eine Kante erzeugt, die mit dem jeweiligen Attributwert beschriftet wird. Entsprechend dieser
Attributwerte werden die Trainingsdaten partitioniert.
Pruning von Entscheidungsbäumen
Wenn ein Entscheidungsbaum induziert wird, so erzeugen Ausreißer und Rauschen in den Trainingsdaten (engl. outliers und noisy data) Anomalien im Baum. Es kann beobachtet werden,
dass komplexere Entscheidungsbaumstrukturen häufig schlechtere Klassifikationsergebnisse
erzeugen als weniger komplexe Bäume. Dieses Phänomen wird mit dem Begriff overfitting
bezeichnet [Pre03]. Sog. pruning-Methoden wirken dem Problem des overfitting entgegen,
indem sie unter Nutzung von statistischen Methoden die wenig verlässlichen Äste des Entscheidungsbaumes entfernen, um so Klassifikationen zu beschleunigen und die Qualität der
Klassifikationsergebnisse zu verbessern.
2.1.4. Komponenten einer einfachen Data Mining-Architektur
Um Data Mining-Analysen durchführen zu können, wird eine Architektur benötigt, die die dazu notwendigen Komponenten bereitstellt. Die Komponenten einer solchen Architektur werden in diesem Abschnitt vorgestellt. In Anlehnung an [BG01] zählen zu einer einfachen Data
Mining-Architektur in der Regel verschiedene Komponenten. Die bedeutendsten seien im folgenden aufgeführt:
Data Warehouse Systeme (DWS) DWS stellen Data Warehouses bereit, um Daten für das
Data Mining in vorverarbeiteter Form zur Verfügung zu stellen. Ein Data Warehouse
(DWH) bezeichnet eine Sammlung von themenorientierten, integrierten, nichtflüchtigen
und zeitbeständigen Daten zur Unterstützung von Management-Entscheidungen in einem Unternehmen [BG01]. Ein Data Warehouse System (DWS) ist ein Informationssystem, welches alle für den DWH-Prozess benötigten Komponenten bereitstellt. Zu
diesen Komponenten zählen Datenbeschaffungsbereich und Analyse, Metadatenmanagement, DWH-Management und die Basisdatenbank, das eigentliche Data Warehouse
und das Repository. Die Gründe für das Betreiben eines DWS sind vielfältig, so zählen
u.a. ein besseres Antwortverhalten als das einer herkömmlichen Datenhaltung und eine
langfristige, zeitbehaftete Datenspeicherung, die die Durchführung von Analysen unter
Berücksichtigung zeitlicher Aspekte ermöglicht, zu den Vorteilen des Einsatzes eines
DWS. Weiter ist der Datenzugriff für die Analyse unabhängig von operativen Systemen,
da die Daten in einem DWH nicht die direkten Datenbestände der operativen Systeme,
sondern davon angefertigte Kopien darstellen. Die Repräsentation der Daten in einem
DWH ist homogen, und schließlich ist die Datenqualität bzgl. der Vorverarbeitungen
[Stu03] gewährleistet. Welche Daten als Grundlage der späteren Analyse dienen, wird
von dem Benutzer festgelegt, der die Analyse durchführt.
Wissensbasis Die Wissensbasis beinhaltet das Domänenwissen, welches auf vielfältige
Weise genutzt werden kann. So kann der Suche nach neuen Mustern oder der Evaluation
des Wertes gefundener Muster eine Metrik der Bedeutung zugrunde gelegt werden. Eine
Wissensbasis kann Konzepthierarchien beinhalten, um einzelne Attribute in verschiedenen Abstraktionsebenen einordnen zu können.
15
16
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
Data Mining Engine Die Data Mining Engine stellt verschiedene Komponenten zur
Verfügung, die die Analysefunktionalität bereitstellen. Typische Analyseverfahren des
Data Mining stellen die Charakterisierung, die Assoziationsanalyse, die Clusteranalyse
sowie die Entwicklungs- und Abweichungsanalyse dar.
Musterevaluationskomponente Die Musterevaluationskomponente stellt eine Metrik der
Interessantheit für die Bewertung gefundener Muster dar.
Benutzungsschnittstelle Eine Benutzungsschnittstelle soll die Kommunikation zwischen
den einzelnen Komponenten der Architektur und dem Benutzer, der eine Analyse
durchführen möchte, ermöglichen.
Mit Kenntnis über den Prozess des KDD, den Schritt des Data Mining, der Analysemethode
der Klassifikation unter Nutzung von Entscheidungsbäumen sowie deren Induktion auf nichtverteilten Datenquellen, sind die Grundlagen für die Einführung des Distributed Data Mining
geschaffen. Im folgenden Abschnitt werden nun die zuvor vorgestellten Konzepte erweitert auf
verteilte Szenarien betrachtet.
2.2. Distributed Data Mining
Aufgrund des Umstandes, dass Daten verteilt an unterschiedlichen Orten anfallen oder gehalten
werden, und mit Hinblick auf die Möglichkeiten, die eine Parallelisierung der Durchführung
von Analysen zur schnelleren Erzeugung von Ergebnissen bieten, entsteht der Bedarf nach
Technologien, um verteilte Analysen durchführen zu können. Jedoch sind die meisten Analysealgorithmen auf zentralisiert gehaltene Daten ausgelegt, so dass im Falle einer verteilten
Analyse eine Anpassung dieser erforderlich ist [KKC00].
In diesem Abschnitt findet zunächst eine nähere Untersuchung des DDM statt. So erfolgt eine
Klärung des Begriffes DDM. Anschließend werden zwei Herangehensweisen an DDM aufgezeigt: die der Task-Parallelisierung und die der Daten-Parallelisierung am Beispiel der Anwendung von Entscheidungsbäumen zur Klassifikation. Abschließend wird die Entscheidungsbauminduktion auf verteilte Szenarien erweitert.
2.2.1. Was ist DDM?
Zusammenfassend lassen sich die Hauptziele des DDM wie folgt formulieren:
Definition 2.7 Distributed Data Mining (DDM) umfasst die Entwicklung von Algorithmen, Systemen und Architekturen für eine Datenanalyse, die auf verteilten Systemen und auf
verteilten Datenquellen eingesetzt werden können.
2
Verschiedene Algorithmen sollen auf den verteilten Systemen ausführbar sein. Dabei spielen
auch Aspekte der Skalierbarkeit bezüglich großer Datenbestände und Anzahl der Datenquellen eine wichtige Rolle [KKC00]. DDM ist als Schritt des Distributed Knowledge Discovery
(DKD) aufzufassen [KC00].
Definition 2.8 Distributed Knowledge Discovery (DKD) befasst sich mit dem Ausführen
des KDD-Prozesses auf nicht zentralisierten Daten.
2
16
2.2 D ISTRIBUTED D ATA M INING
17
DDM basiert nicht mehr nur auf Berechnungen der Analysealgorithmen, wie es bei konventionellem Data Mining der Fall ist. Viel mehr umfasst DDM zusätzlich die Kommunikation, sei
es die der verteilt erzeugten Ergebnisse oder die zur Beschaffung gegebenenfalls heterogener
Daten aus verteilten Quellen. Eine Anforderung ist es hierbei, die Kommunikation möglichst
gering zu halten, um den Zeitbedarf der Durchführung von Analysen und damit deren Kosten
zu minimieren.
Auf einem herkömmlichen, nicht verteilten Data Mining-System kann eine parallele Analyse
wie in Abbildung 2.3 dargestellt ablaufen. Verschiedene Algorithmen arbeiten parallel innerhalb eines Systemkontextes auf potentiell allen verfügbaren Datenquellen.
Algorithmus 1
Daten 1
Algorithmus 2
Daten 2
Algorithmus 3
Daten 3
Abbildung 2.3.: Paralleles Data Mining auf einem einzelnen System (nach [Tal03])
In den beiden folgenden Abschnitten seien alternativ zum nicht verteilten Ansatz der Parallelausführung einer Analyse zwei Herangehensweisen an eine Parallelausführung einer Analyse
auf verteilten Systemen, einer Form von DDM, aufgezeigt: die Task-Parallelisierung und die
Daten-Parallelisierung. Anhand eines Beispieles werden die beiden Herangehensweisen genauer illustriert. Die Ausführungen lehnen sich dabei an [Tal03] an.
2.2.2. Task-Parallelisierung als Herangehensweise an DDM
Bei der Task-Parallelisierung wird der Ansatz verfolgt, dass verschiedene Prozesse auf (gegebenenfalls verschiedenen) Daten (eingeschränkt) zur selben Zeit Analysen ausführen. Diese
Prozesse seien in Abbildung 2.4 dargestellt und können auf verschiedene Systeme verteilt werden.
Algorithmus 1
Algorithmus 2
Daten 1
Daten 2
Daten 3
Prozess 1
Prozess 2
Prozess 0
Algorithmus 3
Abbildung 2.4.: Task-parallelisiertes DDM (nach [Tal03])
Es werden also die Analyseaufgaben verteilt, so dass unterschiedliche Systeme jeweils eine
spezielle Analyse ausführen können. Die Ergebnisse dieser Analysen können später wieder
zentral vereinigt und weiterverarbeitet werden.
Bezogen auf eine Analyse zur Klassifikation könnte eine beispielhafte Anwendung dieses Konzeptes wie folgt aussehen: in Abbildung 2.5 ist ein Entscheidungsbaum dargestellt, anhand
dessen eine Klassifikation durchgeführt werden kann. Jedem der drei dargestellten Teilbäume
(in Abbildung 2.5 durch eine farbige Fläche gekennzeichnet) kann nun ein Prozess zugeordnet
werden, der parallel zu den anderen Prozessen eine Klassifikation anhand seines Teilbaumes
17
18
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
Prozess 1
Prozess 3
Prozess 2
Abbildung 2.5.: Task-parallelisierte Klassifikation (nach [Tal03])
durchführen kann. Dazu benötigt er jedoch die erforderlichen Eingabedaten. In dem in Abbildung 2.5 dargestellten Fall kann beispielsweise Prozess 3 erst mit der Klassifizierung eines
Datensatzes starten, sobald Prozess 1 die Klassifizierung dieses Datensatzes abgeschlossen hat,
da erst dann dessen Zugehörigkeit zu einer Zielklasse von Prozess 1 identifiziert und somit als
mögliche Eingabe für Prozess 3 verfügbar ist, da dessen Wurzelknoten eine Zielklasse von Prozess 1 ist. Ein solcher Aufbau weist Parallelen zum sog. Pipelining (siehe dazu [Neb95]) auf,
auf das in dieser Arbeit nicht weiter eingegangen wird.
2.2.3. Daten-Parallelisierung als Herangehensweise an DDM
Bei der Daten-Parallelisierung werden die Daten partitioniert und auf verschiedene Systeme
verteilt. Dort arbeiten jeweils identische Prozesse auf disjunkten Teilpartitionen der Daten.
Dieses Vorgehen ist in Abbildung 2.6 beispielhaft dargestellt.
Algorithmus 1
Algorithmus 1
Algorithmus 1
Daten 11
Daten
Daten 11
Daten
Daten 1
Abbildung 2.6.: Daten-parallelisiertes DDM (nach [Tal03])
Die Prozesse können die partiell erzeugten Ergebnisse ebenfalls an zentraler Stelle vereinigen und weiterverarbeiten. Aufgrund der durch dieses Vorgehen ermöglichten Skalierbarkeit
der Analyseausführung können massive Performancegewinne erzielt werden. Zur Vereinigung
der Ergebnisse kommen sog. Metalerner zum Einsatz, deren Funktionalität in Abschnitt 2.2.4
erläutert wird.
Prozess 1
Prozess 2
Prozess 3
Abbildung 2.7.: Daten-parallelisierte Klassifikation (nach [Tal03])
In Abbildung 2.7 ist der Ansatz der Daten-Parallelisierung anhand des bereits zuvor verwendeten Beispieles für eine verteilte Klassifkation dargestellt. Die Menge der Eingabedaten wird
18
2.2 D ISTRIBUTED D ATA M INING
19
in n Untermengen aufgeteilt, wobei n der Anzahl der Prozesse entspricht, die parallel klassifizieren (dargestellt durch unterschiedlich eingefärbte Entscheidungsbäume, die je einem Prozess entsprechen). Jeder der drei im Beispiel aufgeführten Prozesse klassifziert die Daten einer
dieser Untermengen. Dabei können die Prozesse wieder verteilt auf verschiedenen Systemen
ausgeführt werden. Nachdem alle Prozesse alle Daten der von ihnen zu bearbeitenden Untermengen klassifziert haben, können die Ergebnisklassen vereinigt werden, um ein globales
Ergebnis zu erzielen (in der Abbildung durch die gestrichelten Bögen visualisiert).
Die zuvor dargestellten Ausführungen beziehen sich auf die Anwendung von Analysealgorithmen. Da die Klassifikation, wie bereits in Abschnitt 2.1.3 angeführt, zusätzlich zur Anwendung
auch die Erzeugung eines Klassifikators erfordert, wird im folgenden Abschnitt die Induktion
von Entscheidungsbäumen auf verteilte Szenarien erweitert.
2.2.4. Entscheidungsbauminduktion auf verteilten Datenbeständen
Soll ein Entscheidungsbaum nicht auf einem lokalen Datenbestand, sondern auf Daten in verschiedenen, auf mehrere Systeme verteilten Datenbeständen induziert werden, so können unterschiedliche Strategien verfolgt werden. In Abhängigkeit von dem gegebenen Anwendungsszenario sollte individuell die am besten geeignete Strategie verfolgt werden. Im Folgenden
sind mögliche Vorgehensweisen für verschiedene Einsatzgebiete aufgeführt.
Einfacher Ansatz: Zusammenführung der Datenbestände
Eine nahe liegende, bei geringen Datenbeständen effektive Methode sieht die Integration aller
verteilten Daten in einen Datenbestand vor, auf dem dann, wie in Abschnitt 2.1.3 beschrieben,
eine nichtverteilte Entscheidungsbauminduktion lokal durchgeführt werden kann. Durch die
Vereinigung zu einem Datenbestand werden die Daten redundant gehalten. Zudem müssen
sie kommuniziert werden, was zeitlichen und finanziellen Aufwand bringt sowie bezüglich
datenschutzrechtlicher Aspekte ein Risikopotential mit sich bringt. Weiterhin ist das Vorhaben,
Daten aus verschiedenen Quellen in ein gemeinsames Schema zu integrieren, nicht trivial und
möglicherweise mit viel zeitlichem und finanziellen Aufwand verbunden. Daher ist in einem
Szenario, welches große Datenmengen an verteilten Orten vorhält, eine alternative Lösung
wünschenswert, da diese Vorgehensweise mit steigenden Datenmengen stetig ineffektiver wird.
Alternativer Ansatz: Verteilung der Analysen
Eine Alternative für Szenarien, in denen große Datenbestände analysiert werden sollen, kann
in der Verteilung der Analysen bestehen. Ausgehend von einem Szenario, in dem verschiedene
Datenquellen an verteilten Orten analysiert werden sollen, können sog. Basisklassifikatoren
eingesetzt werden [PCS00].
Definition 2.9 Ein Basisklassifikator erzeugt auf den verteilten Datenbeständen nach
herkömmlichen Verfahren Entscheidungsbäume oder Klassifikatoren, die lediglich für den
dort lokalen Datenbestand Bedeutung haben.
2
So entstehen an den verteilten Orten mehrere Entscheidungsbäume oder Klassifikatoren.
Wünscht man einen globalen Klassifikator, so muss dieser aus den verteilt vorliegenden Klassifikatoren ein globales Modell generieren. Diese Aufgabe wird von so genannten meta-learningAlgorithmen übernommen. Die Definition folgt den Ausführungen von [PCS00].
19
20
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
Definition 2.10 Ein Meta-Lerner erzeugt, basierend auf verteilt vorliegenden Klassifikatoren, einen globalen Klassifikator.
2
Dabei können die verteilten Klassifikatoren mit unterschiedlichen Gewichtungen in die Modellgenerierung eingehen. So kann beispielsweise der Ansatz verfolgt werden, Klassifikatoren
aus Datenquellen mit wenigen oder bekanntermaßen qualitativ ungenauen Datensätzen bei der
globalen Modellgenerierung weniger zu berücksichtigen als solche, die unter Zuhilfenahme
großer oder bekanntermaßen qualitativ hochwertiger Basisdatensätze entstanden sind. Detailliertere Informationen zum Thema Meta-Lerner sind in [Pre05] nachzulesen.
Durch die Verteilung der Analysen kann auf die Zusammenführung der verteilten Datenbestände verzichtet werden, so dass finanzieller und zeitlicher Aufwand minimiert und die angesprochenen, datenschutzrechtlichen Gefährdungen umgangen werden. Somit eignet sich diese Vorgehensweise für verteilte Analysen auf großen Datenbeständen. Jedoch entsteht zusätzlicher Aufwand durch das Zusammenführen der verteilt erzeugten Klassifikatoren zu einem
globalen Klassifikator.
Mischformen von Verteilung und Zusammenführung
Weiterhin ist auch denkbar, eine Mischform der beiden vorgestellten Ansätze umzusetzen. Dazu muss zunächst eine Analyse der verteilten Datenbestände durchgeführt werden. Datenquellen, deren Schemata zueinander Ähnlichkeit aufweisen, sind potentielle Kandidaten für eine
Zusammenführung und Integration in eine gemeinsame Datenquelle. Auch Datenquellen, die
nur geringe Datenmengen vorhalten, können an einem Ort zusammengeführt und dort lokal
analysiert werden. Die Datenquellen, die große Datenmengen vorhalten, oder die, deren Datensätze sich schematisch stark voneinander unterscheiden, sind potentielle Kandidaten für eine
verteilte Analyse.
Nach Durchführung der Integration der Zusammenführungskandidaten und der Analyse auf
den zusammengeführten Daten sowie nach der verteilten Analyse der Quellen, die nicht zusammengeführt wurden, muss ein Meta-Lerner die durch die Analyseläufe entstandenen Basisklassifikatoren zusammenführen.
Ein erhoffter Nutzen einer derartigen Mischform ist, die Anzahl der Basisklassifikatoren zu
verringern und somit den Prozess des Generierens eines globalen Klassifikators zu vereinfachen. Dies gelingt nur, wenn die zu Grunde liegenden Datenquellen für eine solche Mischform
geeignet sind, d.h. wenn sich tatsächlich Datenquellen finden, die sich zusammenführen lassen. Letztlich kann erst nach Durchführung der Analyse tatsächlich festgestellt werden, ob das
Verfolgen der Durchführung einer Mischform der Analysen einen Vorteil erbracht hat, da sowohl für die Durchführung einer Voruntersuchung der Datenquellen als auch für die Integration der Zusammenführungskandidaten ein Aufwand betrieben werden muss, der den Aufwand,
der zur Durchführung einer verteilten Analyse auf allen Datenquellen betrieben werden muss,
nicht übersteigen darf. Interessant könnte dieser Ansatz für Szenarien sein, in denen periodisch
die selben Datenquellen analysiert werden sollen, wobei diese statische Schemata mit stetig
veränderten Attributbelegungen aufweisen.
2.3. Zusammenfassung
In diesem Kapitel wurden grundlegende Technologien vorgestellt, die im weiteren Verlauf dieser Arbeit Verwendung finden werden. So wurden in Abschnitt 2.1 die Grundlagen des Distributed Data Mining erläutert. Dazu zählen u.a. der Prozess des KDD, der in Abschnitt 2.1.1
20
2.3 Z USAMMENFASSUNG
21
vorgestellt wurde, und der KDD-Schritt des Data Mining, der in Abschnitt 2.1.2 erläutert wurde. Anschließend wurde in Abschnitt 2.1.3 eine Analyse des Data Mining, die Klassifikation, genauer erläutert. In diesem Zusammenhang wurde der Begriff des Entscheidungsbaumes
eingeführt und anhand eines Beispieles veranschaulicht. Es folgte eine Einführung in die Entscheidungsbauminduktion. Im Anschluss wurden in Abschnitt 2.1.4 die Komponenten einer
typischen Data Mining-Architektur vorgestellt. Darauf folgend wurde in Abschnitt 2.2 der Begriff des DDM erläutert. Nach einer Definition des Begriffes, die in Abschnitt 2.2.1 zusammen mit weiteren Begriffsklärungen durchgeführt wurde, wurden zwei Herangehensweisen
an DDM in der Anwendung von Entscheidungsbäumen anhand eines Beispieles näher vorgestellt. Eine Herangehensweise ist die in Abschnitt 2.2.2 erläuterte Task-Parallelisierung; bei
der anderen Herangehensweise handelt es sich um die in Abschnitt 2.2.3 beschriebene DatenParallelisierung. Im letzten Abschnitt dieses Kapitels, Abschnitt 2.2.4, wurde die Entscheidungsbauminduktion auf verteilte Anwendungsgebiete erweitert.
21
22
K APITEL 2 - E INF ÜHRUNG IN D ISTRIBUTED D ATA M INING (DDM)
22
3. Architekturen
Das Thema dieser Arbeit umfasst die Ableitung eines Architektur-Konzeptes für ReKlaMeDDM-Analysen aus einem zu konzeptionierenden Ausführungsmodell. Daher werden im Abschnitt 3.1 zunächst einige Begriffsklärungen vorgenommen. Anschließend werden in Abschnitt 3.2 verschiedene komponentenbasierte Architektur-Ansätze und Architektur-Konzepte
vorgestellt und in Abschnitt 3.3 bewertet. In Abschnitt 3.4 wird dann aufgrund der Bewertungen ein Fazit gezogen und es werden verschiedene Implementierungen vorhandener komponentenbasierter Architekturen vorgestellt und bewertet. Eine Architektur wird ausgewählt und
anschließend in Abschnitt 3.5 ausführlich vorgestellt. Schließlich erfolgt in Abschnitt 3.6 eine
Zusammenfassung dieses Kapitels.
3.1. Was ist eine Software-Architektur?
In diesem Abschnitt wird zunächst der Begriff der Architektur definiert und erläutert. Anschließend erfolgt eine Klärung des Begriffes der Software-Komponente. Schließlich werden Vorteile
der Nutzung einer Software-Architektur aufgezeigt und der zugehörige Design-Prozess dargestellt.
Die Definition einer Architektur nach IEEE-Standard 1471-2000 [MEH01] lautet:
Definition 3.1 Eine Architektur ist die fundamentale Organisation eines Systemes, die
durch dessen Komponenten, deren Beziehungen zueinander und deren Umgebung festgelegt
wird.
2
Eine andere Definition mit stärkerem Bezug zum Gebiet der Softwareentwicklung ist [BCK03]
entnommen:
Definition 3.2 Die Software-Architektur eines Programmes oder eines Rechensystemes
ist die Struktur des Systems, die aus Software-Elementen, ihren sichtbaren Eigenschaften
und ihren Beziehungen untereinander bestehen.
2
Extern sichtbare Eigenschaften können in diesem Zusammenhang Annahmen sein, die Elemente über ein anderes Element machen können. Dazu zählen beispielsweise die von einem
Element angebotenen Dienste, deren Performance-Eigenschaften, die Fehlerbehandlung, die
Ressourcenausnutzung und weitere.
In beiden Definitionen werden die Begriffe Komponenten bzw. Elemente aufgeführt. Eine
Software-Komponente ist wie folgt definiert [Com04]:
Definition 3.3 Eine Software-Komponente ist ein Software-Objekt, welches darauf ausgelegt ist, mit anderen Komponenten zu interagieren oder eine Menge von spezifischen Funktionalitäten zu kapseln. Eine Komponente hat ein fest definiertes Interface und entspricht
einem vorgegebenen Verhalten gegenüber allen anderen Komponenten einer SoftwareArchitektur. Mehrere Komponenten können zusammengefügt werden, um neue Komponenten
zu implementieren.
2
23
24
K APITEL 3 - A RCHITEKTUREN
Komponenten sind in der Lage, mit anderen Komponenten zu kommunizieren, Daten auszutauschen oder Funktionalitäten anderer Komponenten zu nutzen. Eine komponentenbasierte Software-Architektur, im Folgenden nur als Architektur bezeichnet, umfasst die einzelnen
Komponenten, aus denen das System besteht, das Zusammenspiel dieser Komponenten untereinander sowie deren Schnittstellen zu Komponenten anderer Systeme.
In einer Architektur sind Kontroll- und Datenkommunikationsaufgaben umzusetzen. Erstere
dienen der Kontrolle anderer Komponenten. So kann eine Komponente einer Architektur einen
Dienst einer anderen Komponente aufrufen und ihn über Parameter konfigurieren, d.h. Einstellungen für den Ablauf des Dienstes vornehmen. Datenkommunikationsaufgaben dienen dem
Transport von Ein- und Ausgabedaten.
Abbildung 3.1.: Beispiel einer Architektur für eine Klassifikationsanalyse
Abbildung 3.1 zeigt das im Folgenden aufgezeigte Beispiel, anhand dessen die Kontroll- und
Datenkommunikationsaufgaben näher erläutert werden sollen. Die Komponente K, ein Klassifikationsalgorithmus, kann Eingabedaten über eine hier nicht näher spezifizierte Funktion
in Ausgabedaten wandeln. Um die Funktionalität zu ermöglichen, ist es die Aufgabe der
Architektur-Komponenten, die Eingabedaten für Komponente K zur Verfügung zu stellen und
die erzeugten Ausgabedaten an eine Visualisierungskomponente V weiterzureichen. Weiterhin
ist es die Aufgabe der Architektur, mögliche Konfigurationen, die über die Benutzungsschnittstellenkomponente B eingegeben wurden, an K weiterzuleiten. Datenflüsse sind in der Abbildung als gestrichelte Pfeile dargestellt, Kontrollflüsse als durchgezogene Pfeile.
Ein Anwender initiiert einen Analyselauf über die Nutzung der Benutzungsschnittstelle, die
Kontrolldaten an die Klassifikationskomponente sendet. Die Klassifikationskomponente sendet ihrerseits Kontrolldaten an die Datenhaltungskomponente DB, um an die Basisdaten für
einen Analyselauf zu gelangen. Daraufhin sendet die Datenhaltungskomponente die angeforderten Daten an die Klassifikationskomponente, die diese verarbeitet und die resultierenden
Ergebnisdaten an die Visualisierungskomponente weiterreicht.
3.1.1. Vorteile der Verwendung eines Architektur-Ansatzes
Soll ein Software-Projekt realisiert werden, muss eine Entscheidung bezüglich der Strukturierung der zu erstellenden Software getroffen werden. So kann die Software monolithisch, d.h.
in einem großen Block, entwickelt werden, oder es kann eine Implementierung unter Berücksichtigung eines Architektur-Konzeptes durchgeführt werden. Der Vorteil der Verwendung eines Architektur-Konzeptes anstelle eines monolithischen Programmes liegt in verschiedenen
Aspekten begründet, die in diesem Abschnitt erörtert werden. Dabei lehnt dieser Abschnitt an
die Ausführungen von [HR03] an.
Die Verwendung einer Architektur kann dabei helfen, ein System besser verstehen zu können,
indem durch die Architektur ein Vokabular für die Struktur und die Einschränkungen eines
24
3.1 WAS
IST EINE
S OFTWARE -A RCHITEKTUR ?
25
Systemes gegeben ist. Namen von Komponenten, ihre angebotenen Funktionalitäten, Schnittstellen sowie Kommunikationsverbindungen zählen zu diesem Vokabular. Dieses Vokabular
erleichtert auch die Planung größerer Projekte, an denen mehrere Entwickler beteiligt sind, da
es ihnen erleichtert wird, über einzelne Komponenten zu sprechen.
Weiter ermöglicht die Nutzung einer Architektur der Wiederverwendbarkeit der Komponenten.
Auch ganze Strukturen einer Architektur, die aus mehreren Komponenten bestehen, können
wiederverwendet werden. Die Wiederverwendbarkeit von Komponenten kann Vorteile in der
Entwicklung anderer Komponenten bieten, da Entwicklungsaufwand eingespart werden kann,
sofern sich eine einsetzbare Komponente findet, die die Entwicklung einer neuen Komponente
oder neuer Funktionalitäten für eine neue Komponente obsolet werden lässt.
Bei der Planung und Umsetzung einer Architektur können dank geplanter Schnittstellen und
Komponenten Teile einer Architektur oder ganze Subsysteme parallel von verschiedenen
Entwickler-Teams implementiert werden. Dies kann einerseits Zeit einsparen, andererseits
auch die Entwicklung sehr großer, komplexer Projekte ermöglichen, da die zu überblickenden
Bereiche in kleinere, von mehreren Entwicklern zu wartende Bereiche aufgeteilt werden.
Weiterhin wird die Analyse auf Systemebene erleichtert, da die Komponenten die Funktionalität in kleinen, strukturierten Einheiten kapseln und es somit erleichtert wird, einen Überblick
über ein System zu erhalten. Auch eine Aufwands- und Kosteneinschätzung für die Entwicklung eines Systemes wird durch die strukturierten Einheiten vereinfacht.
Schließlich kann die Erstellung eines evaluierbaren Meilenstein-Releases vereinfacht werden,
indem nicht alle Komponenten ausprogrammiert, sondern manche lediglich prototypisch implementiert werden. Somit ist es möglich, die bereits funktionsfähigen Komponenten zu testen,
ohne das Gesamtsystem in seiner vollen Funktionalität implementieren zu müssen.
Die zuvor aufgeführten Vorteile lassen sich durch Verwendung eines Architektur-Ansatzes
im Kontext dieser Arbeit nutzen. Gerade die Erleichterung der Erstellung eines evaluierbaren Meilenstein-Releases bietet im Rahmen dieser Arbeit Vorteile, da es aufgrund der Vielzahl
der zu implementierenden Komponenten und im Hinblick auf die zeitlichen Vorgaben nicht
möglich sein wird, alle Komponenten auszuprogrammieren. So werden einige Komponenten,
die nicht direkt zur Architektur des Szenarios gehören, nur prototypisch implementiert werden,
so dass der beschriebene Vorteil der Verwendung eines Architektur-Ansatzes hier zum Tragen
kommt.
Die Umsetzung eines Architektur-Ansatzes wird in einem Design-Prozess beschrieben, der im
folgenden Abschnitt stufenweise erläutert wird.
3.1.2. Der Design-Prozess
Der Design-Prozess befasst sich mit der Entwicklung einer Architektur für ein spezifisches Einsatzgebiet. Als Ausgangssituation liegen verschiedene Anforderungen an die Funktionalität des
zu entwerfenden Systemes vor. Auch Vorgaben bezüglich der Ein- und Ausgabeschnittstellen
bzw. der Einbettung des zu entwerfenden Systemes in eine vorgegebene Umwelt können vorliegen. Die Konzeption der in dieser Arbeit zu erstellenden Architektur lehnt sich an den im
Folgenden vorgestellten Prozess an.
In einem ersten Schritt wird auf einem sehr niedrigen Abstraktionsniveau ein statisches Strukturmodell entworfen, welches die Anforderungen an Funktionalität eines Systemes und dessen
Einbettung in andere Umgebungen abbildet und die Haupt-Systemkomponenten enthält.
Anschließend wird das System strukturiert, indem es in einzelne Subsysteme unterteilt wird.
Die Kommunikation zwischen diesen Subsytemkomponenten wird analysiert und identifiziert.
25
26
K APITEL 3 - A RCHITEKTUREN
Dann werden die entstandenen Subsysteme in Module unterteilt. Ein Modul bezeichnet dabei ein durch Komposition mehrerer Komponenten entstehendes Subsystem mit spezifischer
Funktionalität und spezifischen Schnittstellen.
Darauf folgend wird der Entwurf eines dynamischen Prozess-Modelles durchgeführt. Das
Prozess-Modell beschreibt die Kontrollbeziehungen der verschiedenen Systeme und zeigt die
Kontroll-Datenflüsse auf.
Schließlich werden die Module auf vorhandene Ressourcen wie z.B. Prozessoren, Netzwerke und Datenspeicher abgebildet oder alternativ in Hardware implementiert. Es entsteht ein
Datenfluss-Modell, welches die Informationsflüsse im System abbildet.
Abschließend werden die Schnittstellen zu den Komponenten der Umgebung festgelegt. Das
Interface-Modell beschreibt die Modellierung dieser Schnittstellen.
Nicht-funktionale Anforderungen an eine Architektur umfassen verschiedene Aspekte, beispielsweise die Steigerung der Performance eines Systemes. Dazu wird versucht, die Kommunikation der Module untereinander zu minimieren. Auch Sicherheitsaspekte können bei
der Konzeption einer Architektur berücksichtigt werden. So können spezielle Strukturen erzeugt werden, die den Datenzugriff auf schützenswerte Daten kapseln. Schließlich besteht
die Möglichkeit, die Verfügbarkeit von Komponenten durch redundanten Einsatz dieser zu
erhöhen. Letztlich erleichtert das Aufteilen des Systemes in feingranulare Komponenten die
Wartbarkeit dieser.
Basierend auf diesem Design-Prozess können nun unterschiedliche Architektur-Ansätze implementiert werden, die wiederum mehrere Architektur-Konzepte umsetzen können. Der nächste
Abschnitt befasst sich mit diesen unterschiedlichen Architektur-Konzepten und -Ansätzen.
3.2. Überblick über verschiedene komponentenbasierte
Architekturen
In diesem Abschnitt erfolgt eine Untersuchung verschiedener Konzepte und Ansätze komponentenbasierter Architekturen, sowie der Grundlagen, auf denen sie basieren. Dabei wird
ausführlich auf die einzelnen Konzepte und Ansätze eingegangen.
Dem Einsatz einer komponentenbasierten Architektur liegt vor allem der Gedanke zugrunde,
bereits vorhandene Softwarekomponenten wiederverwenden zu können. Dabei sollen die Vorteile von Individual- und Standardsoftware vereint werden. Individual- und Standardsoftware
werden nach [Tes03] wie folgt definiert:
Definition 3.4 Mit dem Begriff der Individualsoftware bezeichnet man eine Software, die
direkt an den Anforderungen eines Kunden orientiert und für diesen implementiert ist. Standardsoftware bezeichnet eine Art Software, die eine allgemein verwendbare Lösung für ein
Problem anbietet.
2
Die Vereinigung der Vorteile von Individual- und Standardsoftware kommt zustande, indem
eine Auswahl standardisierter Komponenten nach kundenspezifischen Vorgaben erfolgt. Die
Standard-Komponenten werden anschließend bei Bedarf noch an die individuellen Vorgaben
des Kunden angepasst. Vorteile eines solchen Vorgehens ergeben sich durch eine verkürzte
Entwicklungszeit dank Rückgriffes auf vorhandene Komponenten. Weiterhin erlaubt die Wiederverwendung standardisierter Lösungen eine verbesserte Interoperabilität, höhere Qualität
und bessere Kontrolle von (finanziellen) Risiken [Tes03].
26
3.2 Ü BERBLICK ÜBER
VERSCHIEDENE KOMPONENTENBASIERTE A RCHITEKTUREN
Ein weiterer Vorteil des Einsatzes einer komponentenbasierten Architektur liegt in der Wiederverwendbarkeit der Komponenten. Sowohl an anderen Stellen des selben Projektes als auch in
anderen Projekten können durch die Wiederverwendung Entwicklungskosten eingespart werden. Durch eine zusätzliche Vermarktung der Komponenten ließen sich die Entwicklungskosten gegebenenfalls sogar kompensieren oder gar Gewinne erzielen.
Beispiele für Komponenten-Architekturen sind das Component Object Model (COM) [Mic04a]
und .NET [Mic04b], Enterprise Java Beans (EJB) [Sun04b] sowie das CORBA Component
Model (CCM) [OMG02]. Eine dieser Architekturen wird in Abschnitt 3.4 für die weitere Anwendung im Kontext dieser Arbeit ausgewählt und daran anschließend ausführlich untersucht.
Bezüglich der Umsetzung der Komponenten, die Bausteine innerhalb eines dieser Beispiele für Komponenten-Architekturen sind, existieren verschiedene Konzepte und Ansätze. Im
Folgenden werden zunächst grundlegende Konzepte vorgestellt, auf denen KomponentenArchitekturen basieren können. Anschließend werden verschiedene Ansätze zur Umsetzung der Komponenten aufgezeigt, die im Rahmen der Implementierung der ausgewählten
Komponenten-Architektur Anwendung finden können.
Der Umsetzung einzelner Komponenten einer Komponenten-Architektur können unterschiedliche Konzepte zu Grunde liegen. Drei Architektur-Konzepte können dabei unterschieden werden:
1. Konzept der Container-Architektur
2. Konzept der Client-Server-Architektur
3. Konzept der Multi-Layer-Architektur
In Abbildung 3.2 sind diese drei Konzepte als Ellipsen dargestellt. Jeder der im Folgenden
vorgestellten Architektur-Ansätze basiert auf mindestens einem der drei Konzepte und wird
in Abbildung 3.2 durch ein Rechteck visualisiert. Die vorgestellten Ansätze können optional auf verschiedenen Konzepten basieren, wobei die Konzepte durchaus kombiniert werden
können. Beispielsweise kann eine agentenbasierte Architektur einige oder alle Eigenschaften
einer Container-, Client-Server- und einer Multi-Layer-Architektur miteinander vereinen. Diese Konzepte werden im folgenden Abschnitt genauer untersucht. Daran anschließend werden
die Architektur-Ansätze erläutert.
Abbildung 3.2.: Überblick über verschiedene komponentenbasierte Architektur-Ansätze und
deren Beziehungen untereinander
27
27
28
K APITEL 3 - A RCHITEKTUREN
3.2.1. Architektur-Konzepte
Ein grundlegendes Konzept, auf dem verschiedene Architektur-Ansätze basieren können, ist
das der Container-Architektur. Dieses Konzept zeichnet sich dadurch aus, dass die Architektur
eine Art Behälter“ (Container) zur Ausführung von Software-Komponenten zur Verfügung
”
stellt, der als Laufzeitumgebung fungiert und eine Menge von speziellen Diensten anbietet.
Diese Dienste können von einer Software-Komponente genutzt werden, welche innerhalb des
Containers gehalten wird [HSS+ 03].
Ein Beispiel für das Container-Konzept in Verbindung mit einer Komponenten-Architektur
ist das J2EE-Konzept [Sun04a], das einen EJB-Container im Rahmen der EJB-Architektur
[Sun04b] bereitstellt. Beispielhafte Dienste, die dieser Container anbietet, umfassen u.a. Dienste zur Schaffung von Persistenz oder Referenzierbarkeit von Komponenten im Container,
Dienste zur Organisation der Kommunikation einzelner Komponenten untereinander oder
Dienste, die den Komponenten die Nutzung der Dienste anderer Komponenten ermöglicht.
Nähere Informationen zu J2EE und EJB finden sich unter [Sun04a], [DP02] sowie in Kapitel
3.5.
Ein weiteres, grundlegendes Konzept, welches Anwendung in verschiedenen ArchitekturAnsätzen finden kann, ist das Client-Server-Konzept. Das Client-Server-Konzept basiert auf
einem verteilten Modell, in welchem festgelegt wird, wie eine Menge von Daten und deren
Verarbeitung auf eine Menge verteilter Komponenten aufgeteilt werden kann [HR03]. Es existiert eine Menge von Servern, die spezifische Dienste für andere Komponenten anbieten. Genutzt werden diese Dienste von den Clients, die über ein Netzwerk mit den Servern verbunden
sind.
Die Vorteile des Einsatzes des Client-Server-Konzeptes liegen in der einfachen Realisierbarkeit
von Verteiltheit. Weiter können vorhandene Systeme, die an eine Netzwerk-Struktur angebunden sind, unter Umständen effektiver ausgelastet werden, da die Möglichkeit besteht, in eventuell auftretenden Idle-Phasen die Daten anderer Clients zu bearbeiten. Schließlich ist es einfach
möglich, neue Server mit neuen Diensten in ein bestehendes System einzubinden [HR03].
Der Einsatz des Client-Server-Konzeptes kann auch Nachteile mit sich bringen. So existiert
kein gemeinsames Datenmodell der Komponenten, d.h. die Komponenten nutzen unterschiedliche Daten-Organisationsstrukturen. Auch der Austausch von Daten kann sich als ineffizient
darstellen. Jeder Server muss eine eigene Verwaltungskomponente aufweisen, was u.U. Redundanzen zur Folge haben kann. Zuletzt existiert kein zentrales Register, in dem Namen oder
Dienste vorgehalten werden, so dass es in der Regel nicht trivial ist, einen Überblick über
Server und Dienste zu gewinnen.
Das Multi-Layer-Konzept kann ebenfalls als Grundlage der im Folgenden vorgestellten
Architektur-Ansätze dienen. Dieses Konzept zeichnet sich dadurch aus, dass unterschiedliche
Abstraktionsebenen einer Komponente in verschiedenen, hierarchisch geordneten Schichten
organisiert werden.
Das klassische Beispiel für eine Multi-Layer-Architektur ist das OSI-Referenzmodell [KB94].
Abbildung 3.3 zeigt die einzelnen Schichten des OSI-Referenzmodelles und ihre hierarchische Anordnung. Jede Schicht bietet eine Menge von Schnittstellen, und die Elemente einer
Schicht sind auf unterschiedlichen Abstraktionsebenen ausgeführt. Der Grad der Abstraktion
verringert sich von der Stufe der Anwendungsschicht bis zur Stufe der Bitübertragung. Nähere
Informationen zum OSI-Referenzmodell sind [KB94] zu entnehmen.
Mit Kenntnis dieser drei Architektur-Konzepte können nun im folgenden Abschnitt drei
Architektur-Ansätze vorgestellt werden. Sie beruhen auf den zuvor beschriebenen Konzepten.
28
3.2 Ü BERBLICK ÜBER
VERSCHIEDENE KOMPONENTENBASIERTE A RCHITEKTUREN
29
Abbildung 3.3.: Das ISO-OSI-Referenzmodell als Beispiel für eine Multi-Layer-Architektur
(nach [KB94])
3.2.2. Architektur-Ansätze
In diesem Abschnitt werden drei unterschiedliche Architektur-Ansätze vorgestellt und näher
untersucht. Dabei werden die Charakteristika der unterschiedlichen Ansätze aufgezeigt und
gegenübergestellt.
Agentenbasierter Ansatz
Zur Erläuterung eines agentenbasierten Architektur-Ansatzes bedarf es zunächst der Klärung
des Begriffes Agent. Die folgende Definition entstammt den Ausführungen von [Fer01], an die
auch der gesamte Abschnitt über den agentenbasierten Ansatz angelehnt ist.
Definition 3.5 Ein Agent ist eine physische oder virtuelle Entität,
• die selbständig in einer Umwelt agieren kann
• die direkt mit anderen Agenten kommunizieren kann
• die durch eine Menge von Absichten angetrieben wird (in Form von individuellen Zielen, Befriedigungs- und Überlebensfunktionen, die sie zu optimieren versucht)
• die eigene Ressourcen besitzt
• die fähig ist, ihre Umwelt wahrzunehmen (jedoch nur in einem bestimmten Ausmaß)
• die nur eine partielle Repräsentation ihrer Umwelt besitzt
• die bestimmte Fähigkeiten besitzt und Dienste offerieren kann
• die sich gegebenenfalls selbst reproduzieren kann
• deren Verhalten darauf ausgerichtet ist, ihre Ziele unter Berücksichtigung der ihr zur
Verfügung stehenden Ressourcen und Fähigkeiten zu befriedigen und die dabei auf ihre
Wahrnehmung, ihre internen Modelle und ihre Kommunikation mit anderen Agenten
(oder den Menschen) angewiesen ist und
• die die Eigenschaft der Mobilität aufweist.
2
29
30
K APITEL 3 - A RCHITEKTUREN
Als physische Entität sei in diesem Zusammenhang ein Objekt bezeichnet, welches in der realen Welt agiert. Eine virtuelle Entität bezeichnet eine Software-Komponente oder ein Rechenmodul.
Der Begriff der Mobilität ist eine der Kerneigenschaften eines Agenten und sei wie folgt definiert:
Definition 3.6 Mobilität bezeichnet die Fähigkeit eines Agenten, innerhalb der Umwelt
eines Multiagentensystemes mit verschiedenen Agenten an verschiedenen Positionen zu interagieren. Dies beinhaltet die Fähigkeit, von einer Plattform auf eine andere zu migrieren.
2
Ein weiterer Begriff im Zusammenhang mit Agenten ist der Begriff der Intelligenz, der definiert
sei durch:
Definition 3.7 Der Begriff der Intelligenz eines Agenten steht für dessen Eigenschaften der Selbständigkeit, Wahrnehmung der Umwelt sowie der Proaktivität, die aus der eigenständigen Erstellung und dem Streben nach Erfüllung selbst gesteckter Ziele resultiert.
2
Zur Klärung der Begriffe Multiagentensystem und Umwelt sei folgende Definition angeführt:
Definition 3.8 Ein Multiagentensystem (MAS) bezeichnet ein System, das aus folgenden
Elementen besteht:
• Eine Umwelt U . U ist ein Raum, der im Allgemeinen ein Volumen hat.
• Eine Menge von Objekten O. Diese sind situiert, das bedeutet, dass zu einem beliebigen
Zeitpunkt jedem Objekt eine Position in U zugewiesen werden kann. Objekte können
von Agenten wahrgenommen, erzeugt, modifiziert und gelöscht werden.
• Eine Menge von Agenten A. Diese repräsentieren die aktiven Objekte (A ⊆ O) des
Systems.
• Eine Menge von Beziehungen, B, die Objekte miteinander verbinden.
• Eine Menge von Operationen Op, damit Agenten Objekte empfangen, erzeugen, konsumieren, verändern und löschen können.
• Operatoren mit der Aufgabe, die Anwendung dieser Operationen und die Reaktion der
Umwelt auf die entsprechenden Veränderungsversuche darzustellen.
2
Auf Grundlage dieser Definitionen kann nun die eigentliche Definition eines Software-Agenten
erfolgen:
Definition 3.9 Ein Software-Agent (SWA) ist eine Software-Komponente, die in einem
Netz von anderen Komponenten existiert, mit diesen kommunizieren kann und durch eine
Menge an eigenen Zielen angetrieben wird. Ein SWA besitzt eigene Ressourcen und bietet
anderen Komponenten eigene Dienste an. Er zeigt zielorientiertes Verhalten, welches sich an
seinen verfügbaren Ressourcen und Fähigkeiten orientiert. Ein SWA weist die Eigenschaft
der Mobilität auf, d.h. er kann innerhalb eines MAS mit verschiedenen SWA an verschiedenen Positionen interagieren.
2
30
3.2 Ü BERBLICK ÜBER
VERSCHIEDENE KOMPONENTENBASIERTE A RCHITEKTUREN
Durch die Mobilitäts-Eigenschaft ergeben sich neue Möglichkeiten in Hinblick auf verteilte
Architekturen. So kann ein Agent zu verschiedenen Datenbeständen migrieren und vor Ort
beispielsweise Analysen abarbeiten, was bei großen Datenmengen von Vorteil ist, da in einem
solchen Fall die Daten nicht kommuniziert werden müssen. Allerdings existieren auch Nachteile: so muss ein erhöhter Management-Aufwand bedacht werden, der für die Verwaltung der
Agenten, deren Lokalisierung und Steuerung aufgebracht werden muss. Auch Datenschutzbestimmungen und Sicherheitsaspekte können den Einsatz von Agenten verbieten, da Daten,
die unter Umständen vertrauliche Informationen beinhalten und von einem Agenten analysiert
werden, durch dessen Kommunikationsmöglichkeiten mit anderen Agenten diese gegebenenfalls preisgegeben werden könnten.
Der agentenbasierte Architektur-Ansatz verfolgt nun die Intention, die Komponenten, die in
einer Architektur zusammengefasst werden sollen, als Software-Agenten umzusetzen. Dabei
können die Vorteile von Software-Agenten, wie z.B. die Mobilität, genutzt werden, um beispielsweise in verteilten Szenarien die Bearbeitung von Aufgaben zu erleichtern, indem Datenflüsse minimiert werden.
Mediator-Wrapper-Ansatz
Der Ansatz der Mediator-Wrapper-Architektur vereinigt die Software-Entwicklungsmuster
Mediator und Wrapper, die im Folgenden zunächst definiert werden. Die Definitionen orientieren sich an den Ausführungen von [GHJV95].
Definition 3.10 Ein Mediator ist für die Koordination der Interaktionen einer Gruppe
von Objekten verantwortlich. Er dient als Vermittler, der die Objekte einer Gruppe davon
abhält, explizit aufeinander zu verweisen. Die Objekte sehen nur den Mediator und verweisen über ihn auf andere Objekte der Gruppe, wodurch die Anzahl der Verbindungen reduziert
wird.
2
Ein Mediator lässt sich sinnvoll anwenden, wenn eine Menge von Objekten in wohldefinierten, aber komplexen Protokollen miteinander kommunizieren, da in diesem Fall ohne Anwendung eines Mediators unstrukturierte und schwer verständliche Abhängigkeiten zwischen den
Komponenten entstehen können. Auch die Wiederverwendbarkeit einer Komponente, die nicht
über einen Mediator mit anderen Komponenten verbunden ist, kann komplexer sein, da die
Kommunikationsverbindungen unter Umständen spezifischer Art sind und somit bei Wiederverwendung in einem anderen Kontext reimplementiert werden müssten [GHJV95]. Die Verwendung von vorgegebenen Standards bezüglich der Kommunikationsverbindungen entspricht
vom Prinzip her dem Konzept eines Mediators, da hier anstelle einer Mediator-Komponente
bereits auf konzeptioneller Ebene eine Art Mediation durchgeführt wird.
Definition 3.11 Ein Wrapper ist ein Objekt, welches eine andere Komponente umhüllt,
um diese um zusätzliche Funktionalität zu erweitern. Die Schnittstelle zum Wrapper-Objekt
ist identisch zur Schnittstelle der umhüllten Komponente, um Transparenz gegenüber potentiellen Clients zu gewährleisten. Der Wrapper leitet Anforderungen an die Komponente weiter,
kann dabei vor oder nach Weiterleitung zusätzliche Aktionen ausführen. Durch die Transparenz können mehrere Wrapper übereinander gelegt werden und somit uneingeschränkte
Erweiterungsmöglichkeiten bieten .
2
Die Anwendung von Wrappern ist zu empfehlen, um Verantwortlichkeiten an individuelle Objekte transparent und dynamisch weiterzugeben, ohne andere Objekte dabei zu beeinflussen.
Ebenso wird die Aufhebung von Verantwortlichkeiten für individuelle Objekte ermöglicht.
31
31
32
K APITEL 3 - A RCHITEKTUREN
Schließlich sind Wrapper sinnvoll einzusetzen, wenn die Erweiterung von Objekten um Unterklassen nicht praktikabel ist [GHJV95].
Bezüglich einer Architektur lassen sich die beiden Konzepte Mediator und Wrapper miteinander verbinden, indem um die Dienste eines Servers ein Wrapper konstruiert wird, der den
Server um die Eigenschaften eines Mediators erweitert. So können beispielsweise Mediatoren
als Wrapper um einen Bestand von Datenquellen mit unterschiedlichen Schnittstellen konstruiert werden, um einen einheitlichen Zugriff auf die Datenquellen für Clients zu ermöglichen.
Web-Service-basierter Ansatz
Web-Services stellen eine aktuelle Entwicklung im Bereich des Software Engineering dar. Die
Definition von Web-Services lautet nach [W3C04]:
Definition 3.12 Ein Web-Service ist ein Software-System, welches zur Unterstützung von
interoperabler Interaktion von Maschine zu Maschine über ein Netzwerk konzeptioniert ist.
Ein Web-Service hat eine Schnittstelle, die in einem von Maschinen verarbeitbaren Format,
in der Sprache WSDL, umgesetzt ist. Andere Systeme können mittels SOAP-Nachrichten mit
einem Web Service in einer durch seine Beschreibung vorgegebenen Art interagieren.
2
In der Definition treten zudem die Begriffe WSDL und SOAP auf, die nach [W3C04] bzw.
[W3C03] wie folgt definiert werden:
Definition 3.13 WSDL steht für den Begriff Web Service Description Language und bezeichnet eine Sprache zur Beschreibung der Dienste, die ein Web-Service anbietet. Sie ist
von Maschinen verarbeitbar und definiert Nachrichtenformat, Datentypen, Transportprotokolle und Transport-Serialisierungsformate für die Kommunikation zwischen einem Client
und einem dienstanbietenden Web-Service. WSDL ist ein XML-Dialekt.
2
Definition 3.14 SOAP steht für den Begriff Simple Object Access Protocol und bezeichnet ein Protokoll zum Austausch von strukturierten Informationen in einer dezentralisierten, verteilten Umgebung. SOAP nutzt XML-Technologie zur Definition eines erweiterbaren
Nachrichten-Frameworks, welches Nachrichten-Konstrukte bereitstellt, die über eine Reihe
verschiedener Protokolle ausgetauscht werden können. Das Framework ist auf Unabhängigkeit von speziellen Programmierungsmodellen oder anderen implementationsspezifischen
Semantiken ausgerichtet.
2
Die Web Service Architecture des W3C [W3C04], eine Referenz-Architektur für Web-Services,
besteht aus drei Komponenten, die jeweils miteinander interagieren können. Es existieren Anbieter, die Dienste zur Verfügung stellen und Beschreibungen dieser in der Service Registry
hinterlegen, und Nutzer, die die Service Registry durchsuchen und gefundene Dienste in ihre
Anwendungen einbinden.
Ein Vorteil des Einsatzes von Web-Services liegt unter anderem darin, dass verschiedene Komponenten unabhängig von der Sprache, in der sie implementiert wurden, miteinander interagieren können. Zudem können die Komponenten über ein Netzwerk verteilt auf unterschiedlichen
Maschinen vorliegen, sie können aber auch innerhalb eines Systemkontextes gehalten werden.
Nutzer der Dienste von Web-Services können Web-Services, die Dienste anbieten, über die
Service Registry entdecken und zur Laufzeit auf die Dienste zugreifen. Die Wiederverwendbarkeit der Web-Service-Komponenten steht bei diesem Ansatz im Vordergrund. Die strikte
32
3.3 B EWERTUNGEN DER
VORGESTELLTEN
A RCHITEKTUR -KONZEPTE UND -A NS ÄTZE IM KONTEXT
DIESER
A RBEIT
Einbindung der Web-Services in ihren Ausführungskontext verhindert jedoch auch, dass WebServices spezifisch an eigene Bedürfnisse angepasst werden können. Sie können lediglich in
dem für sie vorgesehenen Kontext tätig sein. Somit ist eine Rekonfiguration der Web-Services
für den Einsatz in einem anderen Kontext, beispielsweise mit leicht abgeänderter Funktionalität, nicht ohne weiteres möglich [Tes03].
3.3. Bewertungen der vorgestellten Architektur-Konzepte
und -Ansätze im Kontext dieser Arbeit
In diesem Abschnitt erfolgt eine Bewertung der vorgestellten Architektur-Konzepte und
Architektur-Ansätze im Kontext der Verwendung für diese Arbeit. Ein in diesem Zusammenhang interessantes Anwendungsgebiet stellt die Bearbeitung verteilter Aufgaben dar. In dem
in dieser Arbeit behandelten Szenario soll die Klassifikation von verteilten Datenbeständen
jeweils an dem Ort stattfinden, an dem die Datenquelle lokalisiert ist. Die Komponenten der
zu konzeptionierenden Architektur müssen somit die Anbindung unterschiedlicher, verteilter
Datenquellen ermöglichen. Somit ist es erforderlich, dass die zu verwendenden ArchitekturAnsätze und Architektur-Konzepte verteilte Szenarien umfassend unterstützen. Dieser Aspekt
wird ausschlaggebend bei der Entscheidung für den Einsatz einer Architektur berücksichtigt.
Daher werden in diesem Abschnitt die vorgestellten Architektur-Konzepte und ArchitekturAnsätze neben anderen Eigenschaften auch speziell unter diesem Aspekt genauer untersucht.
3.3.1. Agentenbasierte Architekturen
Bezüglich der umsetzbaren Konzepte in einer agentenbasierten Architektur lassen sich viele
Ansatzpunkte aufzeigen. So kann die Umwelt des MAS als eine Art Container umgesetzt werden, die den Rahmen für den Lebenszyklus der darin befindlichen SWA bietet. Das MAS kann
Dienste z.B. zur Lokalisierung oder Instantiierung von Agenten zur Verfügung stellen. Somit könnten die Eigenschaften einer Container-Architektur umgesetzt werden. Innerhalb des
MAS können Agenten wiederum Eigenschaften des Konzeptes der Client-Server-Architektur
aufweisen, wobei dies durch die Definition eines SWA bereits in Teilen implizit vorgegeben
ist. SWA können als Client fungieren, indem sie Dienste anderer SWA nutzen, oder aber als
Server, indem sie Dienste für andere SWA zur Verfügung stellen. Auch das Konzept der MultiLayer-Architektur kann bei der Implementierung eines SWA einfließen. Wie bereits definiert,
ist ein SWA eine Softwarekomponente, die unter Berücksichtigung des Multi-Layer-Konzeptes
in mehreren Schichten, die jeweils eigene Abstraktionsebenen darstellen, umgesetzt werden
kann.
Die Mobilität eines Agenten bietet in verteilten Szenarien Vorteile bezüglich der Einsparung
von Kosten im Bereich der Datenkommunikation. Diese Eigenschaft ist in verteilten Szenarien
als positive Eigenschaft zu verzeichnen, so dass agentenbasierte Architektur-Ansätze für die
Verwendung im Kontext dieser Arbeit als geeignet erscheinen.
Abgebildet auf das Szenario dieser Arbeit kann ein SWA zu den unterschiedlichen, verteilten Datenbeständen migrieren und dort lokal Entscheidungsbäume induzieren. Anschließend
kann der SWA die entstandenen Basisklassifikatoren an einen anderen SWA kommunizieren,
der die Funktionalität eines Meta-Lerners implementiert und einen globalen Klassifikator erzeugt. Daraufhin kann der meta-lernende SWA die Ergebnisse an einen visualisierenden SWA
kommunizieren, der die Visualisierung umsetzt. Es können multiple Instanzen von Agenten
eingesetzt werden, um parallel auf unterschiedlichen Datenquellen mobil und verteilt Entscheidungsbäume zu induzieren. Dies kann zusätzlich einen Geschwindigkeitsvorteil erbringen.
33
33
34
K APITEL 3 - A RCHITEKTUREN
Die Intelligenz eines Agenten ist im Kontext dieser Arbeit jedoch nicht von zusätzlichem
Nutzen. Die Art der Schnittstellen zu den einzelnen Datenquellen ist fest vorgegeben. Auch
die Induktion der Klassifikatoren kann einem statischen Schema folgen, so dass die Entwicklung der Intelligenz vom Agenten auf die Konzeption der Komponenten zur Anbindung
der Datenquellen und zur Umsetzung der Algorithmen zur Induzierung der Klassifikatoren
vorverlagert werden kann. Ein solches Vorgehen vermeidet den Bedarf der Umsetzung der
Intelligenz-Eigenschaften, die einen hohen Implementierungsaufwand erfordern und in komplexeren Ausführungsumgebungen resultieren. Unter dem Aspekt der Minimierung von Kosten
und Komplexität der Entwicklung eines Architektur-Ansatzes kann daher auf die Eigenschaft
der Intelligenz der Komponenten verzichtet werden. Zudem resultiert aus der Verringerung der
Komplexität eine leichtere Wartbarkeit und bessere Übersichtlichkeit des Projektes.
Zusammengefasst eignet sich der Ansatz einer agentenbasierten Architektur nur im metaphorischen Sinne, d.h. ausschließlich spezifische Einzelaspekte des agentenbasierten Ansatzes sind
für die Konzeption der Architektur im Kontext dieser Arbeit von Interesse. Der Aspekt der Mobilität kann als hilfreich und sinnvoll für die zu konzipierende Architektur vermerkt werden.
Auch die Kommunikationsfähigkeiten, die aus der Vernetzung der Agenten resultieren, können
in eingeschränkter Form von Vorteil für die Koordination der verschiedenen Komponenten
sein. Die Möglichkeit, dass Agenten spezifische Dienste anbieten, die von anderen Agenten
genutzt werden können, lässt sich auf Eigenschaften von generischen Software-Komponenten
abbilden und stellt somit keinen spezifischen Vorteil dieses Architektur-Ansatzes dar. Diese
Eigenschaft ist jedoch essentiell für die Konzeption einer Architektur im Kontext dieser Arbeit. Durch die Eigenschaften der Proaktivität und Intelligenz von Agenten, die keinen Vorteil,
sondern ausschließlich Nachteile mit sich bringen, wird im Kontext dieser Arbeit jedoch von
der Implementierung einer agentenbasierten Architektur in ihrer ursprünglichen Definition Abstand genommen.
3.3.2. Mediator-Wrapper-Architekturen
Mediator-Wrapper-Architekturen können, wie bereits in 3.2.2 beschrieben, dann sinnvoll eingesetzt werden, wenn die Elemente einer Menge von Komponenten in wohldefinierten, aber
komplexen Protokollen miteinander kommunizieren. Ein verteiltes Szenario erfordert Komponenten, die miteinander kommunizieren können, um Daten oder Kontrollanweisungen auszutauschen. Der Einsatz eines Mediators hilft dabei, diese Kommunikationsverbindungen zu
strukturieren und übersichtlich zu gestalten. Im Kontext dieser Arbeit werden Kommunikationsverbindungen zwischen den Klassifikations-Komponenten, den steuernden Komponenten
sowie der Meta-Lern-Komponente unumgänglich umzusetzen sein. Da verschiedene Klassifikationskomponenten auf unterschiedlichen Datenquellen arbeiten könnten, empfiehlt sich der
Einsatz von Mediatoren aus den zuvor genannten Gründen.
Die Implementierung der Mediatoren kann am Konzept des Wrappers orientiert werden, um eine Transparenz der Schnittstellen der Komponenten nach außen zu garantieren. Zudem können
bei Einsatz des Wrapper-Konzeptes individuelle Eigenschaften für individuelle Komponenten
festgelegt werden, ohne dass andere Komponenten beeinflusst werden.
Das Konzept der Client-Server-Architektur fließt dabei mit in die Architektur ein, indem die
per Mediator verbundenen Komponenten die Rolle von Client und Server übernehmen. Das
Konzept der Multi-Layer-Architektur kann bei der Einbettung des Wrapper-Konzeptes einfließen, indem dieser als zusätzliche Abstraktionsebene in einer äußeren Schicht die jeweilige
Komponente umhüllt.
Insgesamt eignet sich der Ansatz der Mediator-Wrapper-Architektur für die Verwendung im
34
3.4 FAZIT DER B EWERTUNGEN
35
Kontext dieser Arbeit bei der Konzeption der Architektur und wird diesbezüglich Berücksichtigung finden.
3.3.3. Web-Service-Architekturen
Der größte Vorteil, den Web-Services bieten, die Auswahl und Nutzung bereits vorhandener
Komponenten, ist im Kontext dieser Arbeit schwer zu nutzen. Es werden sich keine bereits fertig implementierten Web-Services finden lassen, die die sehr spezifischen Anforderungen, die
in der Architektur dieser Arbeit zu erfüllen sind, umsetzen können. Zu diesen Anforderungen
zählt beispielsweise unter anderem die Anbindung unterschiedlicher Datenquellen an mögliche
Klassifikationskomponenten. Aufgrund der fehlenden Möglichkeit, Web-Services nachträglich
zu rekonfigurieren, also auf die spezifischen Bedürfnisse zuschneiden zu können, entfällt dieser
Vorteil des Web-Service-Konzeptes also.
Da der Aufwand sehr hoch ist, die Eigenschaften zu implementieren, die die Wiederverwendbarkeit selbst erstellter Komponenten ermöglichen, würden die Kosten für die Konzeption der
Architektur erheblich steigen, ohne einen Mehrwert zu bringen. Daher wird auf die Verwendung des Web-Service-Ansatzes im Rahmen dieser Arbeit verzichtet.
Der Ansatz der Service-Registry ist hingegen im Kontext dieser Arbeit von Interesse, um eine
Art Verzeichnis über die Dienste, die von unterschiedlichen Komponenten angeboten werden,
zu erstellen. Anhand eines solchen Verzeichnisses ist es einfacher möglich, Dienste zu lokalisieren und zu verwenden.
3.4. Fazit der Bewertungen
In diesem Abschnitt wird eine Zusammenfassung der im vorigen Abschnitt vorgestellten
Konzepte und Ansätze gegeben. Anschließend werden verschiedene Implementierungen von
Komponenten-Architekturen auf Grundlage der Bewertungen untersucht und es wird die Auswahl einer speziellen Komponenten-Architektur getroffen.
Unter Berücksichtigung der Anforderungen, die der Konzeption einer Architektur für den
Kontext dieser Arbeit zugrunde liegen, lässt sich keiner der untersuchten Architektur-Ansätze
ohne Kompromisse einsetzen. Daher wird bei der weiteren Konzeption versucht, die positiven Komponenten-Eigenschaften der untersuchten Architektur-Ansätze und -Konzepte sinnvoll miteinander zu verbinden und in die zu entwerfende Architektur einfließen zu lassen.
Aus dem agentenbasierten Ansatz könnte dabei die Eigenschaft der Mobilität übernommen
werden. Die Eigenschaft der Mobilität würde eine optimierte Datenkommunikation der verteilten Komponenten untereinander ermöglichen. Auch die Option einer Vernetzung der Komponenten ist eine Eigenschaft, die in der zu konzipierenden Architektur erwünscht ist.
Der Mediator-Wrapper-Ansatz bietet die Vorteile einer strukturierten Kommunikation durch
Verwendung eines Mediators. Ein Wrapper ermöglicht die individuelle Erweiterung einzelner
Komponenten bei transparentem Erscheinungsbild. Daher könnten Mediatoren und Wrapper
Berücksichtigung bei der Konzeption der Architektur finden.
Der Web-Service-Ansatz bietet als einzige, verwertbare Eigenschaft die Service Registry, über
die sich Dienste von Komponenten lokalisieren lassen. Die Implementierung dieser Eigenschaft könnte daher bei der Konzeption der Architektur Berücksichtigung finden.
Um den Komponenten verschiedene Basisfunktionen zur Hand zu geben, ist das Konzept des
Containers von Interesse. So könnte beispielsweise die Kommunikation der Komponenten über
35
36
K APITEL 3 - A RCHITEKTUREN
Container-Funktionen abgewickelt werden. Hier ließen sich verschiedene Anwendungen im
Laufe der Konzeption der Architektur finden.
Das Client-Server-Konzept wird aufgrund der bereits aufgeführten KomponentenEigenschaften Anwendung finden. Über die Verwendung des Multi-Layer-Konzeptes kann
beim Entwurf der einzelnen Komponenten entschieden werden. Einige Komponenten können
von einem Mehrschichtenaufbau profitieren, bei anderen wird dieses Konzept keinen Vorteil
erbringen.
Die wichtigste Eigenschaft, die der Auswahl für den Einsatz einer spezifischen Architektur zugrunde liegt, ist die Unterstützung von Verteiltheit der Komponenten. Somit muss diese Eigenschaft von der auszuwählenden Architektur umfangreich unterstützt werden. Eine zusätzliche
Vorgabe ist die Implementierung der Architektur und ihrer Komponenten in der Sprache Java.
Auf Basis dieser Eigenschaften können nun vorhandene Architektur-Implementierungen auf
ihre Eignung für den Einsatz im Kontext dieser Arbeit hin untersucht werden.
COM und .NET als verbreitete Architektur-Implementierungen scheiden somit bereits aufgrund der Vorgabe der Implementierungssprache aus, da sie in erster Linie C/C++ bzw. C#
unterstützen bzw. für den Einsatz von Java (derzeit noch) nicht geeignet erscheinen.
Im Rahmen des Habilitationsprojektes von Dr. Frank Köster wurde eine agentenbasierte Architektur (siehe [Bär03], [Meh03] und [Rob04]) entworfen, die die bereits beschriebenen Vorteile
einer agentenbasierten Architektur aufweist. Ein weiterer Vorteil des Einsatzes dieser Architektur bestünde in der direkten Greifbarkeit der Autoren, um bei Nachfragen Hilfestellung geben
zu können, da sie im Umfeld der Einrichtung, an der diese Arbeit bearbeitet wird, tätig sind. Die
Implementierung dieser Architektur bietet jedoch zu viele Eigenschaften, die im Rahmen des
Einsatzes in dieser Arbeit nicht von zusätzlichem Nutzen sind bzw. deren Implementierungsoder Adaptationsaufwand nicht im Verhältnis zum gewonnenen Nutzen steht und daher nicht
vertretbar erscheint. Zu diesen Eigenschaften zählt beispielsweise eine Konfigurierbarkeit von
Agenten zur Laufzeit, die im Kontext der Architektur, die in dieser Arbeit konzeptioniert werden soll, keinen Mehrwert bietet. Daher wird vom Einsatz dieser Implementierung einer agentenbasierten Architektur ebenfalls abgesehen.
Das J2EE-Konzept [Sun04a], und im Speziellen die EJB-Architektur [Sun04b] erscheinen
demgegenüber geeignet, um die Anforderungen an eine Architektur im Kontext dieser Arbeit
zu erfüllen. Sie bieten eine umfangreiche Unterstützung bezüglich der Verteiltheit von Komponenten und weisen zudem viele der im Vorfeld als wünschenswert identifizierten Eigenschaften auf. Zusätzlich sehen [DP02] die EJB-Architektur als die Standard-KomponentenArchitektur für die Erstellung verteilter Geschäftsanwendungen in der Programmiersprache Java an. Schließlich lassen sich, je nach Bedarf, die als wünschenswert identifizierten
Architektur-Eigenschaften flexibel abbilden. Daher fällt die Wahl der im Kontext dieser Arbeit
zu implementierenden Architektur auf die im J2EE-Konzept eingebettete EJB-Architektur.
3.5. J2EE und EJB
Dieser Abschnitt gibt eine Einführung in den Aufbau, die Bestandteile und die Eigenschaften
der EJB-Architektur, die für die Implementierung der Architektur im Kontext dieser Arbeit
ausgewählt wurde. Die einzelnen Komponenten und Konzepte, die dieser Architektur zugrunde
liegen, werden ausführlich vorgestellt. Grundlage dieses Abschnittes bilden die Ausführungen
von [DP02].
Zunächst werden in Abschnitt 3.5.1 einige Begriffe geklärt, deren Kenntnis zum Verständnis
der EJB-Architektur vorausgesetzt wird. Dann erfolgt in Abschnitt 3.5.2 die Einordnung der
36
3.5 J2EE UND EJB
37
EJB-Architektur in den Kontext des J2EE-Konzeptes. Anschließend wird die EJB-Architektur
in Abschnitt 3.5.3 ausführlich betrachtet und ihre Komponenten werden einzeln vorgestellt.
Schließlich werden in Abschnitt 3.5.4 die zur Implementierung und Nutzung einer Bean notwendigen Schritte vorgestellt.
3.5.1. Grundlegende Begriffsklärungen
Im Zusammenhang mit der Programmiersprache Java existieren die Begriffe JavaBean, Enterprise JavaBeans und Enterprise-Bean, die voneinander zu unterscheiden sind. Oftmals wird der
Begriff der JavaBean mit dem der Enterprise-Bean verwechselt, so dass eine genaue Abgrenzung der Begriffe erfolgen muss. Im Rahmen dieser Arbeit sind JavaBeans nicht weiter von
Interesse, sollen aber der Deutlichkeit halber an dieser Stelle aufgeführt sein, um Verwechslungen mit Enterprise-Beans vorzubeugen. Eine JavaBean ist nach [DP02] wie folgt definiert:
Definition 3.15 Eine JavaBean ist eine Java-Klasse, die folgende Eigenschaften unterstützt:
• Introspektion, d.h. eine JavaBean kann auf ihre Beschaffenheit hin analysiert werden
• Anpassbarkeit, d.h. ein Nutzer kann Aussehen und Verhalten der JavaBean beeinflussen
und anpassen
• Events als einfache Metapher zur Kommunikation von JavaBeans untereinander
• Persistenz, d.h. eine JavaBean kann angepasst, anschließend gesichert und wiederhergestellt werden
Die Schnittstelle zu einer JavaBean wird durch ihre Attribute, Methoden und Events beschrieben.
2
Die Methoden einer JavaBean folgen dabei einer spezifischen Namenskonvention. So existieren beispielsweise zu jedem Attribut der JavaBean eine getAttributname()- und eine setAttributname()-Methode zum Setzen bzw. Auslesen des Attributwertes. Die JavaBeans-Spezifikation
beschreibt die Programmierschnittstellen für das Erkennen und Nutzen von Eigenschaften der
Java Beans, die Anpassung dieser an individuelle Gegebenheiten, das Registrieren für und Senden von Events zwischen einzelnen JavaBeans und ihre Persistenz. Weitere Informationen zu
JavaBeans finden sich in [Sun97].
Demgegenüber steht der Begriff der Enterprise JavaBeans (EJB). EJB bezeichnet eine Komponenten-Architektur und ist Bestandteil des Java-2-Plattform, Enterprise Edition
(J2EE)-Konzeptes. Die Spezifikation der Enterprise JavaBeans zielt auf die Abbildung verteilter und transaktionsorientierter Geschäftsprozesse ab. Dabei beinhaltet die EJB-Architektur
den Teil der serverseitigen Anwendungslogik, die in Form von Komponenten, den EnterpriseBeans, ausgeführt ist. Die EJB-Architektur beschreibt zusätzlich die Schnittstellenspezifikationen, über die die Komponenten der Architektur, die Enterprise-Beans, referenziert werden
können.
Die Komponenten, die sog. Enterprise-Beans, lassen sich in Anlehnung an [DP02] wie folgt
definieren:
Definition 3.16 Enterprise-Beans, im Folgenden auch Beans genannt, sind in einem verteilten Szenario serverseitige Komponenten, die in der Komponenten-Architektur der Enterprise JavaBeans (EJB) zum Einsatz kommen. Enterprise-Beans definieren die Anwendungslogik, auf die die Client-Programme zugreifen.
2
37
38
K APITEL 3 - A RCHITEKTUREN
Um eine Verbindung zwischen Beans, Enterprise JavaBeans und dem J2EE-Konzept zu schaffen, soll nun eine Einordnung der Beans und der EJB-Architektur in den Kontext des J2EEKonzeptes durchgeführt werden. Im Anschluss daran wird die EJB-Architektur vertieft betrachtet.
3.5.2. Die EJB-Architektur: Einordnung und Übersicht
Die Einordnung der EJB-Architektur in den Kontext des J2EE-Konzeptes ist in Abbildung 3.4
dargestellt. Der J2EE-Server stellt die Basis der EJB-Architektur dar. Er beinhaltet einen oder
mehrere EJB- oder Web-Container (siehe Glossar) und stellt verschiedene Basisdienste und
-Komponenten für die Container zur Verfügung.
Abbildung 3.4.: Einordnung der EJB-Architektur in den J2EE-Kontext (nach [DP02])
Der J2EE-Server muss dabei die folgenden Dienste, Funktionalitäten und Komponenten bereitstellen:
• Thread- und Prozessmanagement, um Parallelausführung mehrerer Container zu
ermöglichen
• Unterstützung von Clustering und Lastverteilung zur Skalierung der Rechenleistung über
mehrere Server
• Ausfallsicherheit
• Namens- und Verzeichnisdienst zur Lokalisierung von Komponenten
• Zugriffsmöglichkeit auf Betriebssystemkomponenten und deren Verwaltung
Angemerkt sei, dass J2EE und EJB keine fertigen Produkte, sondern lediglich Spezifikationen
darstellen. Es existieren daher diverse Umsetzungen dieser Spezifikationen, die sich voneinander unterscheiden. Somit gibt es beispielsweise keine einheitlichen Schnittstellen zwischen
Server und Container.
Nach Einordnung in den Kontext des J2EE-Konzeptes kann nun die genauere Betrachtung der
EJB-Architektur folgen. Abbildung 3.5 stellt diese mit allen dazugehörigen Komponenten dar.
Die unterschiedlichen Komponenten werden im Folgenden einzeln betrachtet und erläutert.
38
3.5 J2EE UND EJB
39
Abbildung 3.5.: Gesamtüberblick über die EJB-Architektur (nach [DP02])
3.5.3. Komponenten der EJB-Architektur
Wie in Abbildung 3.5 zu erkennen, basiert die EJB-Architektur auf verschiedenen Komponenten. Die Grundlage stellt der J2EE-Server dar, der den EJB-Container sowie verschiedene
Dienste und Schnittstellen zur Verfügung stellt. Diese Dienste und Schnittstellen können von
den Komponenten innerhalb des EJB-Containers genutzt werden und werden im nächsten Abschnitt aufgeführt und in ihrer Funktionalität beschrieben.
Dienste, Schnittstellen und Aufgaben des EJB-Containers
Zu den grundlegenden Schnittstellen, die der EJB-Container den darin enthaltenen Komponenten anbietet, zählen:
• API der J2SE (Java 2 Platform, Standard Edition: Beinhaltet eine vollständige Umgebung zur Anwendungsentwicklung auf dem Desktop und auf Servern. Näheres dazu
siehe [Sun04c].)
• API der Enterprise JavaBeans
• API des JNDI (Java Naming and Directory Interface: Bietet eine einheitliche Schnittstelle zu verschiedenen Namens- und Verzeichnisdiensten basierend auf Java. Näheres
dazu siehe [Sun04d].)
• API der JTA (Java Transaction API: Spezifiziert eine Standard-Schnittstelle zwischen
einem Transaktionsmanager und den Komponenten eines verteilten Systemes. Näheres
dazu siehe [Sun04e].)
• API der JDBC (Java Database Connectivity: Bietet Zugriff auf verschiedene SQLDatenbanken. Näheres dazu siehe [Sun04f].)
• API des JMS (Java Message Service: Erlaubt J2EE-Komponenten das Erzeugen, Versenden, Empfangen und Lesen von Nachrichten. Näheres dazu siehe [Sun04g].)
39
40
K APITEL 3 - A RCHITEKTUREN
• API von JavaMail (JavaMail: Bietet ein plattform- und protokollunabhängiges Framework zur Erzeugung von Email- und Messaging-Anwendungen. Näheres dazu siehe
[Sun04h]).
• API von JAXP (Java API for XML Processing: Erlaubt es Anwendungen, XMLDokumente unabhängig von einer speziellen Implementierung eines XML-Prozessors
zu parsen und zu transformieren. Näheres dazu siehe [Sun04i].)
Der EJB-Container stellt eine Laufzeitumgebung für Enterprise-Beans dar und ermöglicht ihnen den Zugriff auf Applikationsserver-Komponenten. Diese stellen spezielle Dienste über
die soeben genannten Schnittstellen zur Verfügung. Zu den von diesen Komponenten zur
Verfügung gestellten Diensten zählen:
Namens- und Verzeichnisdienst Der Namensdienst wird verwendet, um es einem Client zu ermöglichen, eine Bean anhand von Metadaten aufzufinden. Es werden Referenzen auf entfernte Objekte unter einem frei definierbaren Namen an einem festgelegten
Platz im Namensdienst derart hinterlegt (Binding), dass sie über diesen Namen aufzufinden sind (Lookup). Ein Verzeichnisdienst erweitert die Funktionalitäten eines Namensdienstes dahingehend, dass die verwalteten Objekte in hierarchischen Strukturen
verwaltet und administriert sowie mit zusätzlichen Metadaten versehen werden können.
Durch den Umstand, dass auch Beans Informationen aus dem Namens- und Verzeichnisdienst beziehen können, wird über Parametrisierung eine Beeinflussung der Beans
von außen möglich. Zudem kann die Bean so auf Dienste wie z.B. Datenbankverbindungen oder Messaging-Dienste zugreifen. In dieser Komponente findet sich der Ansatz der Service-Registry eines Web-Services wieder, der zuvor bereits als vorteilhafte
Architektur-Eigenschaft identifiziert wurde. Der Zugriff auf den Namens- und Verzeichnisdienst erfolgt über die JNDI-Schnittstelle.
Transaktions-Monitor Der EJB-Container beinhaltet eine Dienstkomponente, die sich um
die Abwicklung von Transaktionen kümmert. Der sog. Transaktions-Monitor überwacht
alle Vorgänge, die Teil einer Transaktion sind, und sorgt bei Fehlschlagen dieser für das
Zurücknehmen der Teile der Transaktion, die bereits ausgeführt wurden. Der Container
zeichnet für die Verfügbarkeit transaktionaler Protokolle wie z.B. dem Zwei-PhasenSperr-Protokoll (siehe Glossar) verantwortlich. Die EJB-Spezifikation sieht dabei lediglich die Implementierung von flachen Transaktionen vor, die nicht ineinander geschachtelt werden können. Eine Bean kann Transaktionen explizit benutzen, indem sie direkt
mit dem Transaktionsdienst des EJB-Containers kommuniziert, oder aber deklarativ, indem bereits bei Installation der Bean im EJB-Container angegeben wird, welche Methoden innerhalb welcher Transaktion ablaufen sollen. Letzterer Fall erfordert bei der
Entwicklung der Bean keine Transaktionsimplementation, da der Container für die transaktionale Ausführung sorgt. Der Zugriff auf den Transaktions-Monitor erfolgt über die
JTA-Schnittstelle.
Datenbanken Datenbanken, die im Umfeld des J2EE-Servers vorhanden sind, lassen sich
über die JDBC-Schnittstelle ebenfalls ansprechen. Durch die Standardisierung des Zugriffes per JDBC wird der Zugriff auch auf heterogene Datenbanksysteme ermöglicht.
Messaging-Service Durch die Integration eines Messaging-Dienstes im EJB-Container
wird die Kommunikation zwischen Beans und damit die Parallelausführung ermöglicht.
Die Nachrichten können anonym und asynchron ausgetauscht werden, was den Vorteil
erbringt, dass keine Bean nach Versenden einer Nachricht blockiert wird, bis eine Antwort erfolgt. Zudem können so beliebige Partner miteinander kommunizieren. Zusätzlich
40
3.5 J2EE UND EJB
41
wird eine Möglichkeit geschaffen, Schnittstellen zu einzelnen Komponenten umzusetzen. Der Zugriff auf den Messaging-Service erfolgt über die JMS-Schnittstelle bzw. die
JavaMail-API.
Weitere Dienste Im Rahmen der Laufzeitumgebung werden zusätzlich weitere Dienste vom
Anbieter eines Java-Applikationsservers zur Verfügung gestellt:
• Kontrolle des Lebenszyklus einer Bean: Die Erzeugung, Zustandsüberführung
und das Löschen einer Bean ist Aufgabe des EJB-Containers.
• Instanzenpooling, Aktivierung und Passivierung von Beans: Diese Aufgaben
dienen der Steigerung der Performanz des Applikationsservers. Da in großen Umgebungen unter Umständen viele Beans zu verwalten sind, ist es von Vorteil, nur
aktive Beans im Speicher des Applikationsservers zu halten und inaktive Beans so
zu sichern, dass sie bei Inaktivität passiviert und auf Sekundärspeicher ausgelagert
und bei Bedarf wieder reinstantiiert werden können. Die Möglichkeit der Aktivierung und Passivierung von Beans ist jedoch vom Typ der Bean abhängig.
• Verteilung der Beans auf verschiedene Applikationsserver: Der EJB-Container
macht Enterprise-Beans für Clientprogramme verfügbar und kümmert sich zusätzlich um die Verteilung der Beans auf verschiedene Applikationsserver. Somit
können Eigenschaften wie z.B. Lastverteilung umgesetzt werden, indem Beans von
einem stark frequentierten auf einen weniger belasteten Applikationsserver verlagert werden können. Dabei kommen Technologien wie z.B. das Internet Inter-ORB
Protocol (IIOP) (siehe Glossar), oder Java Remote Method Invocation (Java RMI)
(siehe Glossar) zum Einsatz, auf die hier nicht weiter eingegangen wird.
• Persistenz: Um die Portierbarkeit von persistenten Komponenten zu verbessern,
wurde ein Persistenz-Dienst eingeführt, der eine automatische Persistenz bestimmter Komponenten ermöglicht. Der EJB-Container bestimmt dabei, wann eine Komponente geladen bzw. gespeichert wird. Eine bessere Portabilität resultiert aus dem
Umstand, dass die Durchführung der Speicherung sowie die Festlegung, an welchem Ort und wie eine Komponente gespeichert wird, vom Persistenz-Dienst, und
nicht von der Bean selbst übernommen wird. Somit kann eine Komponente ohne
Bedarf zur Anpassung von etwaigen Persistenzmethoden in ein anderes System mit
Persistence Manager portiert werden. Der Persistenz-Dienst kommuniziert mit dem
Speichermedium, auf das die Komponenten persistent ausgelagert werden. Die Abbildung einer Komponente auf ein vom Speichermedium zu verarbeitendes Format
erfolgt zum Zeitpunkt der Installation der Komponente (zur Installation einer Komponente siehe Abschnitt 3.5.4).
Eine zusätzliche Funktionalität des Persistenz-Dienstes besteht darin, Suchanfragen nach gespeicherten Komponenten zu formulieren. Dazu sieht die EJBSpezifikation die Abfragesprache EJB-QL (Enterprise JavaBeans Query Language) vor, mit Hilfe derer ein Auffinden von persistenten Komponenten ermöglicht
wird.
• Sicherheit: Der EJB-Container bietet ein Sicherheitsmanagement im Rahmen der
Laufzeitumgebung von Komponenten. Durch Ansiedlung des Konzeptes in der
Laufzeitumgebung und nicht in der Komponente wird eine einfache Wiederverwendbarkeit der Komponenten und Anpassbarkeit des Sicherheitskonzeptes von
außen erreicht. Das Sicherheitsmanagement erlaubt die Definition von Benutzerrollen und entsprechenden Rechten zum Aufruf von speziellen Methoden im Rahmen des Deployment-Deskriptors. Zugeteilt werden diese Rechte zum Zeitpunkt
der Bean-Installation. Weiterhin sieht die EJB-Spezifikation die Möglichkeit der
Authentifizierung eines Benutzers mit Benutzerkennung und Passwort sowie eine
41
42
K APITEL 3 - A RCHITEKTUREN
gesicherte Kommunikation durch den Einsatz von SSL, einem Verschlüsselungsprotokoll, vor.
Komponenten innerhalb des EJB-Containers
Innerhalb des EJB-Containers existieren verschiedene Komponenten, die über die zuvor vorgestellten Schnittstellen auf die Dienste des EJB-Containers zugreifen können. Zu diesen Komponenten zählen:
Persistence Manager: Der Persistence Manager ist die Komponente, die für die Umsetzung der im Persistenz-Dienst formulierten Eigenschaften verantwortlich zeichnet. Über
die Implementierung eines Persistence Managers für eine Entity-Bean werden dieser alle
Eigenschaften des Persistenz-Dienstes zur Verfügung gestellt.
Enterprise-Beans: Die serverseitigen Komponenten der EJB-Architektur werden, wie in
Abschnitt 3.5.1 bereits erwähnt, als Enterprise-Beans bezeichnet. In ihnen ist die Anwendungslogik implementiert, auf die ein Client zugreifen kann. Eine Enterprise-Bean
wird in einem EJB-Container installiert, der eine Laufzeitumgebung für sie bereitstellt.
Dabei können Enterprise-Beans implizit und explizit auf die vom EJB-Container angebotenen Dienste zugreifen. Ein impliziter Zugriff erfolgt bei containergesteuerter Persistenz, bei deklarativen Transaktionen, beim Empfang asynchroner Nachrichten sowie in
den Aspekten des Sicherheitsmanagements. Explizite Zugriffe erfolgen bei Verwendung
expliziter Transaktionen, Bean-gesteuerter Persistenz sowie beim Versand asynchroner
Nachrichten.
Es lassen sich drei Ausprägungen von Enterprise Beans unterscheiden, die im Folgenden
als Bean-Typen bezeichnet werden.
• Session-Beans: Session-Beans dienen der Modellierung von Abläufen oder
Vorgängen. Ein Client kann auf die Methoden, die eine Session-Bean anbietet, zugreifen und deren Funktionalität nutzen. Dabei lassen sich zustandsbehaftete (stateful) und zustandslose (stateless) Session-Beans unterscheiden.
Zustandslose Session-Beans können keine Daten speichern, die in einem nachfolgenden Methodenaufruf zur Verfügung stehen würden. Daher stehen ihnen lediglich die Daten zur Verfügung, die als Parameter übergeben wurden. Aus der
Zustandslosigkeit resultiert, dass sich zustandslose Session-Beans gleichen Typs
nicht voneinander unterscheiden lassen, und dass dazu auch keine Notwendigkeit
besteht.
Zustandsbehaftete Session-Beans können im Unterschied zu zustandslosen Session Beans Daten über mehrere Methodenaufrufe hinweg speichern. Somit können
Aufrufe solcher Beans deren Zustand verändern, weshalb sie sich auch voneinander unterscheiden lassen. Die gespeicherten Daten gehen verloren, wenn ein Client
die Verbindung zur Bean trennt oder der sie beherbergende Server terminiert wird.
• Message-Driven-Beans: Message-Driven-Beans sind Empfänger von asynchronen Nachrichten, die von einer anderen Komponente über den Messaging-Dienst
versendet wurden. Im Gegensatz zu Session-Beans und Entity-Beans, die per
Remote- oder Local-Interface (näheres zu den Bestandteilen einer Bean siehe Abschnitt 3.5.3) synchron angesprochen werden können, können Message-DrivenBeans ausschließlich asynchron und direkt über einen bestimmten Kanal per
Messaging-Dienst angesprochen werden. Die Asynchronität hat den Vorteil, dass
der Client, der die Kommunikation aufgenommen hat, nicht auf Zustellung und
Abarbeitung der Nachricht warten muss, sondern direkt weiterarbeiten kann. Der
42
3.5 J2EE UND EJB
43
Container kann nun für verschiedene Kanäle jeweils eine Message-Driven-Bean
einsetzen, die alle Nachrichten auf dem jeweilig entsprechenden Kanal abarbeitet.
Message-Driven Beans sind zustands- und identitätslos.
• Entity-Beans: Entity-Beans dienen zur Abbildung von Entitäten der realen Welt,
also als eine Art Datentyp. Sie sind die Repräsentation der Daten, auf denen
Session-Beans arbeiten. Dabei ist die Mehrfachnutzung einer Entity-Bean-Instanz
durch verschiedene Clients möglich.
Es lassen sich zwei Arten von Persistenz bei Entity-Beans unterscheiden: man
spricht von einer bean-managed Persistence, wenn die Bean selbst für die persistente Sicherung der Daten verantwortlich zeichnet. Im Falle, dass der EJBContainer die persistente Sicherung einer Entity-Bean organisiert, spricht man von
einer container-managed Persistence.
Da von Entity-Beans zur Laufzeit unterschiedliche Instanzen existieren können,
lassen diese sich über einen eindeutigen Identifikator, einen Primärschlüssel, referenzieren. Dieser wird ihnen vom EJB-Container zugewiesen und ist von außen
einsehbar.
Die Schnittstelle zwischen einer Entity-Bean und dem EJB-Container
ist der sog. Kontext (javax.ejb.EJBContext). Dabei handelt es
sich um ein Interface, welches für den jeweiligen Bean-Typ spezialisiert wird (im Falle der Entity-Bean zu javax.ejb.EntityContext,
in den anderen Fällen zu javax.ejb.MessageDrivenContext bzw.
javax.ejb.SessionContext). Ein solcher Kontext bleibt mit einer Bean
während ihrer gesamten Lebensdauer assoziiert.
In Tabelle 3.1 werden die drei Bean-Typen noch einmal bezüglich verschiedener Eigenschaften
gegenübergestellt.
Bestandteile einer Enterprise-Bean
Die Komponenten, aus denen Beans bestehen, seien im Folgenden aufgeführt:
• Remote- und (Remote-)Home-Interface oder
• Local- und Local-Home-Interface (Entity- und Session-Beans)
• Bean-Klasse (alle Bean-Typen)
• Primärschlüssel oder Primärschlüsselklasse (Entity-Beans)
• Deployment-Deskriptor (alle Bean-Typen)
Ausführliche Beispiele für die Implementierung dieser Bestandteile werden in Anhang A anhand von Sourcecode-Ausschnitten aufgeführt.
Je nachdem, ob eine Entity- oder Session-Bean mit einer anderen Bean innerhalb des selben
oder eines anderen EJB-Containers kommuniziert, wird das Local- oder Remote-Interface genutzt. Man spricht im ersten Fall unter Nutzung des Local-Interfaces von einem Local-ClientView, im zweiten Fall unter Nutzung des Remote-Interfaces vom Remote-Client-View. Da EJB
eine Architektur für verteilte Komponenten darstellt, wird meistens eine Kommunikation über
das Remote-Interface durchgeführt.
43
44
K APITEL 3 - A RCHITEKTUREN
S ESSION -B EAN
M ESSAGE -D RIVEN B EAN
E NTITY-B EAN
Aufgabe
der Bean
Nutzung
für
einen
Dienst, der Aufgaben für einen Client
ausführen soll.
Nutzung für serverseitige Verarbeitung asynchroner Nachrichten.
Nutzung zur dauerhaften Speicherung eines
Objektes.
Zugriff
auf die
Bean
Private Ressource, die
dem Client exklusiv zur
Verfügung steht.
Kein
direkter
Zugriff durch den Client
möglich. Einzige Kommunikationsmöglichkeit
mit dem Client über
den Messaging-Dienst
durch Verschicken von
Nachrichten auf einem
bestimmten Kanal.
Zentrale Instanz, die
von mehreren Clients
genutzt werden kann
und deren Daten allen
Clients zur Verfügung
stehen.
Persistenz Nicht persistent.
der Bean Datenverlust bei Terminierung von verbundenem Client oder hostendem Server.
Nicht persistent.
Datenverlust bei Terminierung des hostenden
Servers. Noch nicht
zugestellte
Nachrichten können hingegen
persistent sein.
Persistent.
Bei Terminierung der
verbundenen
Clients
oder des hostenden
Servers befindet sich
der Zustand der Bean
auf einem persistenten
Speichermedium,
so
dass die Bean zu einem
späteren Zeitpunkt wiederhergestellt werden
kann.
Tabelle 3.1.: Gegenüberstellung der drei Bean-Typen (nach [DP02])
3.5.4. Implementierung und Verwendung einer Bean
Die Implementierung einer Bean bedarf mehrerer Schritte, die sich je nach Bean-Typ voneinander unterscheiden. Die Implementierung einer Session- oder Entity-Bean erfordert zunächst
die Implementierung der Remote- und Home- bzw. Local- und Local-Home-Interfaces. Bei
allen drei Bean-Typen bedarf es zusätzlich der Implementierung der Bean-Klasse und des
Deployment-Deskriptors. Soll eine Entity-Bean implementiert werden, muss zusätzlich die
Primärschlüsselklasse umgesetzt werden. Beispiele für konkrete Implementierungen der Interfaces und Klassen sind in Kapitel 7 einzusehen.
Nach Implementierung dieser Klassen, Interfaces und Deskriptoren werden diese in einem jarArchiv verpackt, welches sich mit Hilfe der Werkzeuge, die der Hersteller des EJB-Containers
zur Verfügung stellt, im EJB-Container installieren lässt. Aussehen und Funktionalität dieser
Werkzeuge differieren von Hersteller zu Hersteller und sind nicht standardisiert. Erforderlich
ist jedoch, dass nach Installation des Bean-jar-Archives alle zur Ausführung der Bean fehlenden Komponenten vorhanden sind. Zu diesen Komponenten zählen die Implementierung des
Home- und Remote- bzw. des Local-Home- und Local-Interfaces und die Implementierung
der konkreten Bean-Klasse. Weiterhin wird die Bean anhand der im Deployment-Deskriptor
angegebenen Informationen im Container registriert. Dies beinhaltet unter Anderem das Eintragen der Bean und ihrer spezifischen Eigenschaften in den Namens- und Verzeichnisdienst
44
3.6 Z USAMMENFASSUNG
45
des Containers.
Wenn nun ein Client eine Bean verwenden möchte, kann er diese über die JNDI-Schnittstelle
des Namens- und Verzeichnisdienstes auffinden und so Zugriff auf sie erlangen. Der Container
stellt dem Client anschließend einen Client-Stub der Implementierung des Home-Interfaces zur
Verfügung. Über diesen Client-Stub kann der Client eine Bean erzeugen. Daraufhin wird dem
Client ein Stub des Remote-Interfaces zur Verfügung gestellt, über den er auf alle Methoden
der Bean zugreifen kann. Somit ist die Nutzung der Bean für den Client in vollem Umfang
ermöglicht.
3.6. Zusammenfassung
In diesem Kapitel erfolgte in Abschnitt 3.1 zunächst die Klärung der Grundlagen zum Thema Architekturen. Anschließend wurden in Abschnitt 3.2 verschiedene Ansätze und Konzepte
von Software-Architekturen vorgestellt und bezüglich ihrer Eigenschaften miteinander verglichen. Die Ergebnisse dieser Untersuchungen, die in Abschnitt 3.3 formuliert wurden, wurden
in Hinblick auf die Eignung der verschiedenen Ansätze und Konzepte für die Architektur betrachtet, die im Kontext dieser Arbeit konzeptioniert und implementiert werden soll. Dabei
wurden verschiedene Konzepte und Ansätze identifiziert, die in die zu konzeptionierende Architektur einfließen können. Es stellte sich heraus, dass lediglich einzelne Aspekte der vorgestellten Konzepte und Ansätze sinnvoll Verwendung finden können. Die Entscheidung zur
umfassenden Implementierung ausschließlich eines Konzeptes oder Ansatzes konnte nicht getroffen werden. Die als wünschenswert identifizierten Eigenschaften der Konzepte und Ansätze
seien im Folgenden aufgeführt.
So ist eine umfassende Vernetzung von Komponenten und Operatoren mit- und untereinander
vonnöten, da in einem verteilten Szenario an unterschiedlichen Orten gehaltene Daten für entfernt lokalisierte Komponenten und Operatoren verfügbar sein müssen. Im Hinblick darauf ist
es vorteilhaft, eine strukturierte, standardisierte Kommmunikation zu ermöglichen, um einheitliche Zugriffsschnittstellen auf die verteilten Komponenten der Datenhaltung und -verarbeitung
zu schaffen und die Vernetzung der Komponenten sowie die Erweiterung um zusätzliche Komponenten somit zu erleichtern. Dadurch ist gewährleistet, dass sämtliche im Gesamtsystem
vorhandenen Informationen für alle Komponenten und Operatoren verfügbar sind.
Auch die Implementierung einer Service-Registry, die einen Überblick über die durch die Komponenten angebotenen Dienste bietet, ist als wünschenswerte Eigenschaft des Gesamtsystemes
identifiziert worden. Durch einen Überblick über die angebotenen Dienste wird ein zusätzlicher Grad an Übersichtlichkeit geschaffen, der bei der Konzeption neuer Analysen von Nutzen
sein kann.
Schließlich ist der Einsatz des Container-Konzeptes als vorteilhaft identifiziert worden, da potentiell vom Container angebotene Dienste für verschiedene Zwecke genutzt werden können,
ohne sie neu implementieren zu müssen. Ein Beispiel für einen Dienst, der von einem Container angeboten werden könnte, ist ein Dienst, der die Kommunikation zwischen verteilten
Komponenten ermöglicht. Diese könnte beispielsweise über eine vorgegebene Kommunikationsschnittstelle beherbergender Container realisiert werden. Somit wäre eine standardisierte, strukturierte Kommunikationsschnittstelle, die zuvor bereits als wünschenswert identifiziert
wurde, mit wenig Implementierungsaufwand verfügbar. Weitere Dienste, die von einem Container angeboten werden könnten, sind ebenfalls denkbar und vorteilhaft einsetzbar.
Folgend auf die Identifikation wünschenswerter Konzepte, Ansätze und Eigenschaften fand
in Abschnitt 3.4 eine Untersuchung bereits verfügbarer Implementierungen von Architekturen bezüglich der Kompatibilität zu den als verwendenswert identifizierten Konzepten und
45
46
K APITEL 3 - A RCHITEKTUREN
Ansätzen sowie bezüglich ihrer Eignung im Hinblick auf die Vorgaben des ReKlaMe-Projektes
statt. Die EJB-Architektur aus dem J2EE-Konzept wurde auf Basis dieser Untersuchungen als
zu verwendende Architektur ausgewählt. Ihr Aufbau wurde anschließend in Abschnitt 3.5 detailliert beschrieben.
Gründe für den Einsatz der EJB-Architektur liegen hauptsächlich in der umfangreichen Unterstützung der Verteiltheit von Komponenten und Operatoren. Auch der Umstand, dass die
EJB-Architektur als die Standard-Architektur für die Erstellung verteilter Geschäftsanwendungen auf Basis der Programmiersprache Java angesehen wird [DP02] und zahlreiche der
zuvor als wünschenswert identifizierten Eigenschaften, Konzepte und Ansätze umsetzt bzw.
ermöglicht, führte zur Entscheidung für den Einsatz der EJB-Architektur.
Durch die in Kapitel 2 und 3 vorgestellten Konzepte, Ansätze und Technologien wurden somit
die Grundlagen für den konzeptionellen Teil dieser Arbeit geschaffen, so dass im folgenden
Kapitel mit der Konzeptionierung des Ausführungsmodelles begonnen werden kann, aus welchem anschließend die zu implementierende Architektur abgeleitet wird.
46
4. Ein Ausführungsmodell für
ReKlaMe-Analysen
Nachdem in den vorherigen Kapiteln die Klärung grundlegender Begriffe stattgefunden hat,
folgt nun der konzeptionelle Teil dieser Arbeit. Zunächst muss ein Ausführungsmodell konzeptioniert werden, welches die im ReKlaMe-Szenario zu identifizierenden Operatoren beinhaltet
und die Daten- und Kontrollflüsse zwischen ihren Operatoren festlegt.
In diesem Kapitel werden in Abschnitt 4.1 zunächst erneut die Zielsetzungen des ReKlaMeProjektes aufgegriffen. Die Rahmenbedingungen des Szenarios im Kontext des ReKlaMeAnsatzes werden identifiziert. Anschließend erfolgt in Abschnitt 4.2 die Identifikation aller
Abläufe und Phasen der Analysen, die im Rahmen des ReKlaMe-Ansatzes durchgeführt werden können. In Abschnitt 4.3 werden dann die Operatoren, die den Abläufen zugrunde liegen,
identifiziert und formal spezifiziert. Schließlich wird in Abschnitt 4.4 eine Verbindung zwischen den Operatoren geschaffen, so dass die in 4.2 identifizierten Abläufe unter Berücksichtigung der in 4.3 formalisierten Operatoren formal beschrieben und in Form von Abbildungen
formuliert werden können.
4.1. ReKlaMe revisited - Zielsetzungen, Umgebung,
Rahmenbedingungen
Die Intention des Dissertationsprojektes ReKlaMe von Herrn Heiko Tapken [Tap04] wurde
bereits in Abschnitt 1.1 grob skizziert. Diese soll an dieser Stelle noch einmal aufgegriffen und
anhand weiterer Rahmenbedingungen und möglicher Einsatzszenarien näher motiviert werden.
Für viele betriebswirtschaftliche Fragestellungen erweisen sich manuelle Datenanalysen u.a.
aufgrund der Größe der zur Entscheidungsfindung heranzuziehenden Datenmengen als nicht
adäquat. Aus diesem Grund werden in der Praxis zunehmend automatisierte Verfahren aus
dem Bereich des KDD zur Entdeckung von Informationen in Form von Mustern mit Erfolg
eingesetzt. Der ReKlaMe-Ansatz verfolgt das Ziel, Analysten mit Datenbank-Kenntnissen bei
der Durchführung komplexer Analysen zu unterstützen.
Zwischen der Repräsentation unternehmerischer Daten (oftmals in Form relationaler DataWarehouse-Schemata) und den von traditionellen Data Mining-Verfahren benötigten Formate (CSV-, ARFF-Dateien u.ä.) existiert ein Bruch. Durch replikationsbasierte Transformationen sowie durch Techniken der Propositionalisierung, wie sie z.B. im Kontext der induktiven
Logik-Programmierung zur Anwendung kommen, werden Qualitätsaussagen (z.B. bzgl. Data
Lineage) erschwert, und ein Semantikverlust entsteht. Jede wiederkehrende Datenanalyse erfordert eine erneute Datentransformation, so dass iterative Datenanalysen erschwert und auf
temporalen Datenbanken basierende Datenanalysen nahezu unmöglich gemacht werden. Im
Falle iterativer Analysen betrifft dies im schlechtesten Fall sogar jeden Datenanalyseschritt.
Ferner geht die für Datenbank-Spezialisten gewohnte strukturierte Repräsentation von Daten (in diesem Falle die der Muster) verloren. Der ReKlaMe-Ansatz ermöglicht es, komplexe
Klassifikationsaufgaben direkt auf temporalen relationalen Data Warehouses ansetzend itera-
47
48
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
tiv durchzuführen und Muster auf Grundlage des multirelationalen Data Mining-Frameworks
[KBSvdW99] in Form von Entscheidungsbäumen zu repräsentieren.
Bei vielen Fragestellungen, deren Lösungen durch die Anwendung von Data Mining Verfahren unterstützt werden könnten, bietet sich eine firmenübergreifende, kooperierende Analyse
von Daten an. So sind z.B. Banken daran interessiert, Scheck- oder Kreditkartenbetrüger ausfindig zu machen. Um dieses Ziel zu erreichen, bietet sich das Erlernen eines gemeinsamen
Klassifikators z.B. in Form eines Entscheidungsbaumverfahrens an. Während bei klassischen
kooperativen Datenanalysen oftmals eine a priori-Integration der Daten durchgeführt wird, ist
dies hier aufgrund von Datenschutzbestimmungen nicht möglich. Ferner wird jedes Kreditinstitut darauf bedacht sein, zusätzlich für das jeweilige Einzelunternehmen verfeinerte Modelle
abzuleiten, um daraus Wettbewerbsvorteile zu erlangen. Ziel des ReKlaMe-Ansatzes ist es,
auch derart gestaltete, verteilte temporale Datenanalysen zu unterstützen.
Auf Grundlage dieser Zielsetzungen und Rahmenbedingungen sollen nun mögliche AnalyseAbläufe des ReKlaMe-Ansatzes anhand von noch zu identifizierenden Operatoren und den zugehörigen Kontroll- und Datenflüssen konzeptioniert und in Form eines Ausführungsmodelles
umgesetzt werden.
4.2. Abläufe und Phasen einer ReKlaMe-Analyse
In diesem Abschnitt wird die Beschreibung des Funktionsumfanges des ReKlaMe-Projektes
aus analytischer Sicht betrachtet. Dabei werden verschiedene Operatoren identifiziert und
drei alternative Analyse-Abläufe aufgezeigt. Es erfolgt die Beschreibung aller Komponenten, Operatoren, Kontroll- und Datenflüsse, die zur Durchführung eines Analyse-Ablaufes im
ReKlaMe-Kontext benötigt werden.
4.2.1. Grundsätzliche Betrachtungen
ReKlaMe ermöglicht die Durchführung von Analysen aus dem Bereich der Klassifikation
direkt auf verteilten oder nicht verteilten multirelationalen Datenquellen, ohne diese zuvor
physisch oder virtuell in einen zentralen Datenbestand integrieren zu müssen. Physische Integration sieht hier die Zusammenführung der zugrunde liegenden Tupel in einer Relation
vor. Virtuelle Integration bezeichnet demgegenüber die Vereinigung der Daten ohne physische
Zusammenführung, also beispielsweise in der Ausführung einer Methode oder Funktion eines Software-Programmes. Um die Durchführung verteilter Analysen direkt auf den verteilten
Datenquellen zu ermöglichen, bedarf es einer Modularisierung der zentralen Analyseaufgabe.
Diese Modularisierung kann semi-automatisch erfolgen. Zudem muss untersucht werden, ob
die Modularisierung an zentraler oder dezentraler Stelle durchgeführt werden soll oder ob eine
Mischform beider Ansätze zu bevorzugen ist. Die Grundlage der Durchführung von Analysen
stellen Metadaten dar, anhand derer Analysen modularisiert und ausgeführt werden können.
Analysen werden von einer zentralen Stelle aus initiiert. Zu den Datenquellen, auf denen sie
ausgeführt werden können, zählen temporale relationale Datenbanken und Data Warehouses.
Bezüglich der Ausführung von Analyse-Abläufen muss zwischen synchronen und asynchronen Analysen unterschieden werden. Eine Entscheidung für eine der beiden Alternativen kann
anhand des Zeitbedarfes mehrerer parallel auszuführender Analysen getroffen werden. Zu
berücksichtigen ist hier, dass eine möglichst optimale Ausnutzung der vorhandenen AnalyseOperatoren gewährleistet werden sollte. Asynchrone Analysen belegen eine Ressource nur für
die Analysezeit, die sie selbst für eine lokale Teilanalyse auf einer Datenquelle benötigen. Im
Falle von synchronen Analysen wird die Analysezeit hingegen im schlechtesten Fall durch den
48
4.2 A BL ÄUFE UND P HASEN EINER R E K LA M E -A NALYSE
49
Zeitbedarf der langsamsten Analyse bestimmt, so dass Quellen, die schnell zum Analyseziel
gelangt sind, trotzdem bis zu dem Zeitpunkt, zu dem die langsamste Analyse durchgeführt
wurde, blockiert sind. Hier kann eine Steuerung konzeptioniert werden, die eine entsprechende Entscheidung für eine synchrone oder asynchrone Analyseausführung treffen und umsetzen
kann. Sollten sich die Analyse-Module in ihrer Ausführungszeit hingegen kaum unterscheiden,
so kann kaum Nutzen aus der asynchronen Ausführung von Analysen gezogen werden. Als Ansatz für asynchrone Analysen lassen sich daten- oder ereignisgetriebene Ansätze verwenden,
und auch eine Mischform dieser beiden Ansätze ist denkbar.
Ein weiterer, nicht zu unterschätzender Aspekt liegt in der Rechtebehandlung bezüglich des
Zugriffes auf die Daten in den verteilten Datenquellen. Es existieren grundsätzlich drei unterschiedliche Arten von Datenquellen. Die Daten, die in diesen Datenquellen gehalten werden,
unterscheiden sich bezüglich ihrer Datenschutzrichtlinien voneinander, wobei drei Richtlinien
zu identifizieren sind:
1. Öffentliche Daten: Alle Daten einer öffentlichen Datenquelle sind für jedermann einsehbar, es existieren keine Einschränkungen bezüglich der Leserechte auf der Datenquelle. Die Ergebnisse einer Analyse auf Basis der Daten einer solchen Datenquelle sind im
Allgemeinen öffentlich verfügbar und uneingeschränkt einsehbar, es können jedoch auch
Restriktionen auferlegt werden, um Analyseergebnisse beispielsweise aus kommerziellen Gründen zu schützen.
2. Partiell geschützte Daten: Teile der Daten einer Quelle dieser Art sind für jedermann
einsehbar, es existieren jedoch Einschränkungen bezüglich der Leserechte bestimmter
Attribute, Tupel oder ganzer Relationen. Die Ergebnisse einer Analyse auf Basis der
Daten einer solchen Datenquelle können selektiv eingesehen werden.
3. Geschützte Daten: Die Daten dieser Quelle sind ausschließlich mit Authentifizierung
oder gar nicht einsehbar. Die Ergebnisse einer Analyse auf Basis einer solchen Datenquelle sind hingegen selektiv einsehbar.
Schreibender Zugriff auf die Datenquellen wird vorerst nicht erlaubt. Denkbar ist, Analyseergebnisse als Attribut in den Quellrelationen zu speichern, jedoch müssen dazu abhängig von
den Analyseergebnissen die Quellrelationen verändert werden. Alternativ zu einem solchen
Ansatz kann die Speicherung der Analyseergebnisse an anderer Stelle erfolgen. Aufgrund der
zeitlichen Vorgaben und der nicht erheblichen Relevanz für den Kontext dieser Arbeit wird von
einer Speicherung der Ergebnisse in den Quellrelationen abgesehen.
Es können beliebig viele Datenquellen existieren, die einer der drei oben beschriebenen
Ausführungen entsprechen. Bezüglich der selektiven Einsicht in die Analyseergebnisse von
partiell oder vollständig geschützten Datenquellen müssen Strukturen geschaffen werden,
die eine Freigabe oder eine Sperrung der Einsicht in die Ergebnisse ermöglichen. Mögliche
Ansätze sind in Authentifikationsmechanismen, Anonymisierung oder in der manuellen Freigabe spezifischer Analyseergebnisse durch den Besitzer der der Analyse zugrunde liegenden
Daten zu finden. Der Ansatz der Anonymisierung kann beliebig komplex betrachtet werden
und ist im Rahmen dieser Arbeit daher nicht umsetzbar.
Eine Grundlage der Analysen bilden die Metadaten, die auf verschiedene Arten verwaltet werden können. So existieren die Möglichkeiten der zentralen oder dezentralen Metadatenverwaltung. Auch eine Mischform beider Ansätze ist denkbar. Zudem stellt sich die Frage, wie ein Anwender an die Metadaten gelangen kann, um eine Analyse zu planen und ausführen zu können.
Auch hier ist die exakte Umsetzung einer Metadaten-Verwaltung nicht Gegenstand dieser Arbeit, sondern die Funktionalität ist lediglich als exemplarische Komponente zu berücksichtigen
und in den Kontext der Architektur einzubetten.
49
50
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Ein weiterer Aspekt ist die Beachtung temporaler Versionierung von Ressourcen. Eine minimale zeitliche Versionierung der Datenquellen, der erzeugten Modelle sowie der Metadaten
ist hier denkbar. Dazu kann eine attributbasierte Zeitstempelung eingeführt werden, bei der
zwischen Transaktions- und Gültigkeitszeit unterschieden werden kann. Für jede Art der Zeitbetrachtung werden zwei Zeitstempel vorgesehen: einer zur Speicherung des Anfangs- und
einer zur Speicherung des Endzeitpunktes. Der Transaktionszeitanfang (TZA) repräsentiert den
Zeitpunkt, zu dem ein Datensatz erzeugt wird. Das Transaktionszeitende (TZE) steht für den
Zeitpunkt, an dem ein Datensatz gelöscht werden soll. Der Unterschied zum normalen Vorgehen der Datenhaltung ohne temporale Zeitstempelung besteht bei der Verwendung von Transaktionszeitstempeln darin, dass anstelle der Löschung eines Datensatzes dieser lediglich als
gelöscht markiert wird, indem das Attribut TZE mit einem Wert belegt wird. Den bezüglich der
Transaktionszeit aktuellen Datensatz kann man anhand eines leeren TZE-Attributes identifizieren. Die zuvor vorhandenen Datensätze sind jedoch zusätzlich noch verfügbar. Zu beachten ist
hier, dass die Transaktionszeiten mit in den Primärschlüssel einzubeziehen sind, um eine Unterscheidung der Datensätze unterschiedlicher Zeitpunkte gewährleisten zu können, da sie sich
mit Ausnahme der Werte der Zeitstempel nicht voneinander unterscheiden. Die Gültigkeitszeit
repräsentiert das Zeitintervall, in dem ein Datensatz in der realen Welt Gültigkeit besitzt. Ein
Beispiel für Gültigkeitszeitstempel wäre der Zeitraum eines Zeitschriften-Abonnements, der
unabhängig vom Zeitpunkt des Anlegens des Datensatzes durch die Attribute Gültigkeitszeitanfang (GZA) und Gültigkeitszeitende (GZE) bestimmt werden kann. Durch Einführung dieser
Zeitstempel könnten Analysen im ReKlaMe-Kontext bezüglich temporaler Aspekte versioniert
werden. Grundlage einer derartigen Zeitstempelung ist jedoch eine Datensenke, die diese Attribute gemeinsam mit den Analyseergebnissen speichern kann.
4.2.2. Identifikation der Abläufe und Phasen
Bei näherer Betrachtung lassen sich die Analysen, die im Rahmen des ReKlaMe-Ansatzes
ermöglicht werden sollen, grob in drei Abläufe kategorisieren. So sollen Klassifikatoren auf
Basis verteilter Datenquellen induziert werden können. Weiterhin sollen sich die erzeugten
Klassifikatoren auf verteilten Datenquellen zur Klassifikation anwenden lassen. Schließlich ist
eine Art Wartung der erzeugten Klassifikatoren vorgesehen. Im Rahmen einer Wartung können
Klassifikatoren auf Basis neuer Trainingsdaten erweitert oder komplett durch neue ersetzt werden. Die identifizierten Abläufe sind in Abbildung 4.1 dargestellt. Im Folgenden sollen die
verschiedenen Phasen der drei Analyse-Abläufe näher betrachtet werden.
Abbildung 4.1.: Identifizierte Abläufe im Rahmen von ReKlaMe: Induktion, Klassifikation und
Wartung
50
4.2 A BL ÄUFE UND P HASEN EINER R E K LA M E -A NALYSE
51
Induktion von Klassifikatoren
Zunächst wird die Klassifikator-Induktion untersucht. Es lassen sich unterschiedliche AnalysePhasen identifizieren. So können Klassifikatoren lokal induziert werden. Eine Menge von Operatoren, die in diesem Kontext im Vordergrund stehen, ist die der Klassifikator-InduktionsOperatoren. Sie dienen der Ermittlung von Basisklassifikatoren und werden im Folgenden auch
als Lerner bezeichnet. Der Vorgang der Induktion eines Klassifikators sei folgend als Lernen
bezeichnet. Es können zwei Ausprägungen von Lernern unterschieden werden:
1. Lerner, die einen Klassifikator auf Basis einer Menge von Daten aus einer Quelle erzeugen. Das Vorgehen eines solchen Lerners ist in Abbildung 4.2a) schematisch dargestellt.
2. Lerner, die auf Basis einer Menge von Daten einer Quelle und einem Basisklassifikator inkrementell einen neuen Basisklassifikator erzeugen. Das Vorgehen eines solchen
Lerners zeigt Abbildung 4.2b).
Abbildung 4.2.: Lerner auf a) einer Datenquelle und b) inkrementell auf einer Datenquelle und
einem Basisklassifikator
Das Meta-Lernen ist eine weitere Phase des Lernens. Abbildung 4.3 skizziert diesen Ablauf. Dabei erzeugt der Meta-Lerner aus der Eingabe von Basisklassifikatoren einen MetaKlassifikator, der auf den Ergebnissen der Anwendung der Basisklassifikatoren beruht. Im Rahmen des ReKlaMe-Ansatzes sollen alle gängigen Meta-Lern-Verfahren zum Einsatz kommen.
Dazu zählen u.a. Kombinierer auf Basis der Verfahren Bagging (zu Bagging siehe [Bre96]),
Boosting (zu Boosting siehe [Sch90]), Arbiting (zu Arbiting siehe [CS93]) und sog. Statistical Combiner. Es soll also zusammenfassend eine Unterstützung von Daten- und ModellKombinierern im Rahmen dieser Arbeit realisiert werden. Meta-Lernen kann entweder auf einem physisch oder virtuell integrierten Datenbestand ausgeführt werden, oder aber verteilt auf
verschiedenen Datenquellen. Dazu wird der Vorgang des Meta-Lernens nicht zentral, sondern
an verschiedenen Orten durchgeführt. Grundlage eines derartig verteilten Meta-Lern-Prozesses
ist die Mobilität des Meta-Lerners oder die Kommunikation der Basisklassifikatoren zwischen
redundant vorgehaltenen Meta-Lernern an den jeweiligen Datenquellen. Weitere Meta-LernVerfahren werden in [Pre05] vorgestellt. Da sich die Ein- und Ausgabedaten dieser Verfahren
nicht voneinander unterscheiden, wird an dieser Stelle nicht weiter darauf eingegangen.
51
52
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Abbildung 4.3.: Meta-Lerner
Im Rahmen der Grundlagen wurden in den Abschnitten 2.2.2 und 2.2.3 zwei Herangehensweisen an die Klassifikator-Induktion vorgestellt: die Task-Parallelisierung und die DatenParallelisierung. Die Analysen im ReKlaMe-Kontext werden auf verteilten Datenquellen ausgeführt, so dass sich beide Herangehensweisen sowohl beim Lernen als auch in der Anwendung
von Klassifikatoren nutzen lassen. Auch eine Kombination wäre denkbar. Die Integration der
verteilten Daten und Analyseergebnisse kann physisch oder virtuell erfolgen. Im Rahmen dieser Arbeit werden die Ansätze zur Parallelisierung der Induktion und Anwendung vom Klassifikatoren prototypisch betrachtet.
Die erzeugten Basisklassifikatoren können alternativ zu den bisher vorgestellten Lern- und
Meta-Lernverfahren in einer weiteren Phase dem ausführenden Benutzer an zentraler Stelle
präsentiert werden. Somit könnte der Benutzer diese zur weiteren Anwendung für Klassifikationen nutzen oder die Weiterverarbeitung dieser nach manueller Prüfung der Güte initiieren.
Anwendung von Klassifikatoren
Abbildung 4.4.: Verteilte Klassifikation ohne virtuelle oder physische Integration der Instanzen
Bezüglich der zweiten Art eines möglichen Ablaufes der Analysen im ReKlaMe-Ansatz, der
Anwendung der erzeugten Klassifikatoren, soll es ermöglicht werden, Klassifikatoren direkt
auf verteilten Datenbeständen anzuwenden, ohne dass eine virtuelle oder physische Integration
dieser Datenbestände im Vorfeld vonnöten ist. Dabei sollen auch komplexe Klassifikationen
52
4.2 A BL ÄUFE UND P HASEN EINER R E K LA M E -A NALYSE
53
unterstützt werden. Dieser Ablauf ist in Abbildung 4.4 dargestellt. Analog zu den Lernverfahren sind hier verschiedene Ansätze des verteilten Anwendens der Klassifikatoren zu unterscheiden. So können identische Analyseprozesse auf den verschiedenen Datenquellen zeitgleich Analysen durchführen und ihre Ergebnisse an eine zentrale Instanz senden, die diese
Klassifikationsergebnisse vereinigt. Ein solches Vorgehen entspricht dem Ansatz der DatenParallelisierung, die in Abschnitt 2.2.3 eingeführt wurde. Auch die serialisierte Anwendung
eines mobilen Klassifikators ist denkbar, der die Quellen der Reihe nach einzeln besucht, um
dort eine Klassifikation der Eingabeinstanzen durchzuführen.
Abbildung 4.5.: Verteilte Klassifikation ohne virtuelle oder physische Integration der Instanzen
für Klassifikatoren, die auf mehreren Quellen induziert wurden
Wurde ein Klassifikator auf Basis der Trainingsdaten mehrerer Quellen induziert, so ist die
Verfügbarkeit der Daten der bei der Induktion beteiligten Quellen für die Anwendung unabdingbar. So können Attribute, die im Klassifikator getestet werden, nur in den Instanzen einzelner Quellen auftreten, so dass zur Anwendung eines solchen Klassifikators die Daten all dieser
Quellen verfügbar sein müssen, um eine entsprechende Klassifikation durchführen zu können.
Würden diese Daten nicht vorliegen, so könnten die zu klassifizierenden Instanzen nicht weiter
in Klassen eingeteilt werden, und die Klassifikation würde frühzeitig ein Ende finden. Abbildung 4.5 zeigt dieses Vorgehen exemplarisch anhand der Durchführung einer Klassifikation an
einer Datenquelle, wobei der anzuwendende Klassifikator auf Basis der Daten der Quellen 1
bis n induziert wurde.
Alternativ ist ein ganz anderer Weg denkbar: Aus den Modellen der Klassifikatoren können
Selection Graphs abgeleitet werden. Diese können, sofern die Daten in relationalen Quellen
liegen, in Datenbankabfragen (beispielsweise SQL-Statements) gewandelt werden. Mit Hilfe
dieser Datenbankabfragen können dann die Instanzen einer Zielklasse direkt aus den verteilten
Datenbanken angefordert werden. Somit wird die Anwendung eines Klassifikators umgangen,
und die zu klassifizierenden Instanzen lassen sich sehr performant in ihre Zielklassen einteilen.
Dieser Ablauf ist in Abbildung 4.6 dargestellt. Auch hier ist die Vereinigung der Teilergebnisse
der Datenbankabfragen denkbar, um ein Gesamtergebnis zu erhalten. Für nähere Informationen bezüglich Selection Graphs, den Prozessen zur Wandlung von Entscheidungsbäumen in
Mengen von Selection Graphs sowie die Ableitung von SQL-Statements aus Selection Graphs
sei auf [Saa04] verwiesen. Dieser Ansatz wird prototypisch Unterstützung finden.
Wartung von Klassifikatoren
Im Rahmen der dritten Art eines möglichen Ablaufes der Analysen im ReKlaMe-Ansatz, der
Wartung, ist die Invalidierung von Klassifikatoren sowie die Initiierung der Neugenerierung
53
54
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Abbildung 4.6.: Verteilte Klassifikation durch Erzeugung von Selection Graphs und Wandeln
in Datenbankabfragen
oder Erweiterung von Klassifikatoren vorgesehen. Es sei vorgegeben, dass der zu wartende
Klassifikator vorliegt und bezüglich des Meta-Lern-Vorganges jedesmal eine vollständige Neuberechnung des globalen Klassifikators durchgeführt wird. Diesbezüglich kann auf Basis von
neuen Daten oder zusätzlichen Attributen eine erneute Klassifikator-Induktion durchgeführt
werden, wobei die vorhandenen, und auf alten Daten basierenden Klassifikatoren zu invalidieren oder zu versionieren und als gelöscht zu markieren sind. Erforderliche Schritte bestehen im
Auffinden des zu wartenden Klassifikators, dessen Erweiterung, Aktualisierung oder Löschung
und Neuerzeugung sowie dessen Speicherung. Der Weg der Erweiterung, Aktualisierung oder
Neuerzeugung eines Klassifikators kann analog zu den zuvor beschriebenen Phasen stattfinden.
Der Ablauf der Wartung ist in Abbildung 4.7 dargestellt.
Im folgenden Abschnitt werden die identifizierten Komponenten näher betrachtet. Es werden
formal funktionale Operatoren für die einzelnen Phasen und Abläufe definiert und bezüglich
ihrer Signaturen beschrieben.
4.3. Beschreibung der Operatoren und Signaturen
Es wurden drei unterschiedliche Analyse-Abläufe im Kontext von ReKlaMe identifiziert:
1. die Induktion von Klassifikatoren auf verteilten Datenquellen (siehe Abbildungen 4.2
und 4.3)
2. die Anwendung von Klassifikatoren auf verteilten Datenquellen (siehe Abbildungen 4.4
und 4.6)
3. die Wartung induzierter Klassifikatoren (siehe Abbildung 4.2.2)
54
4.3 B ESCHREIBUNG DER O PERATOREN UND S IGNATUREN
55
Abbildung 4.7.: Wartung von Basisklassifikatoren: Invalidierung, Aktualisierung und Neugenerierung
Jeder dieser Abläufe basiert auf einer Menge von Operatoren, die in diesem Abschnitt genauer
beschrieben und deren Signaturen konzeptioniert werden sollen. Dazu werden in den folgenden
Abschnitten die Abläufe einzeln betrachtet. Für die nachfolgenden Abschnitte sei vorgegeben:
• MDSO die Metadatenmenge zur Selektion von Trainings- oder Instanzen-Daten,
• MBSO die Metadatenmenge zur Selektion eines Basisklassifikators,
• MIO die Metadatenmenge zur Parametrisierung des Induktions-Operators,
• MIIO die Metadatenmenge zur Parametrisierung des inkrementellen InduktionsOperators,
• MKO die Metadatenmenge zur Parametrisierung eines Klassifikations-Operators,
• MSGO die Metadatenmenge zur Parametrisierung des Operators zur Selection-GraphAbleitung,
• MM LO die Metadatenmenge zur Parametrisierung eines Meta-Lern-Operators,
• MIN O die Metadatenmenge zur Parametrisierung eines Invalidierungs-Operators und
• m ∈ {MDSO |MBSO |MIO |MIIO |MM LO |MIN O } ein Metadatum.
Weiter seien vorgegeben:
• T die Menge der Trainingsdatenmengen und t ∈ T eine Trainingsdatenmenge,
• C die Menge der Klassen von Datensätzen und z ∈ C eine Datensatz-Klasse,
• D die Menge der Instanzen-Datensätze und i ∈ D eine zu klassifizierende Instanz,
• ϕ die Menge der Basisklassifikatoren und k, k1 , k2 , . . . , kn ∈ ϕ Basisklassifikatoren,
• kinv ∈ ϕ ein invalidierter Basisklassifikator,
• kT ∈ ϕ ein Basisklassifikator erweitert durch die Trainingsdatenmenge T,
55
56
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
• Φ die Menge der globalen Klassifikatoren und kϕ ∈ Φ ein globaler Klassifikator, der von
einem Meta-Lerner auf Basis der Basisklassifikatoren k1 , k2 , . . . , kn ∈ ϕ erzeugt wurde,
• Q die Menge von Datenbankabfragen sowie
• S die Menge von Selection Graphs.
4.3.1. Operatoren für die Induktion eines Klassifikators auf verteilten
Datenquellen
Die in Abbildung 4.2 dargestellten Analyseabläufe der Induktion und Erweiterung von Klassifikatoren auf Basis verteilter Datenquellen sowie die Anwendung eines Meta-Lern-Prozesses,
wie in Abbildung 4.3 dargestellt, erfordern die Konzeption von mehreren Operatoren. Diese
seien im Folgenden vorgestellt.
Daten-Selektions-Operator DSO: Die Erzeugung der Basisklassifikatoren auf den verteilten Datenquellen basiert auf der Interpretation von Metadaten, die die Datenquellen
beschreiben und die Induktion von Basisklassifikatoren und globalen Modellen steuern.
So sind zur Induktion eines Klassifikators auf einer Datenquelle Metadaten über die zu
Grunde liegenden Instanzen, also beispielsweise über Tupel und Attribute einer Relation
in der Datenquelle, die als Eingabedatenmenge dienen sollen, vonnöten. Diese Informationen stehen einem Daten-Selektions-Operator zur Verfügung. Anhand der Metainformationen kann dieser die Tupel von Attributwerten aus der Datenquelle extrahieren, die
die für die Induktion interessanten Trainingsdaten darstellen, und diese einem nachfolgenden Operator zur weiteren Verarbeitung übergeben.
Bezüglich der Signatur des Daten-Selektions-Operators ist die Möglichkeit der Entgegennahme von Metadaten m ∈ MDSO zu berücksichtigen. Diese Metadaten müssen
Informationen beinhalten, die zur Extraktion der benötigten Daten und gegebenenfalls
zur Parametrisierung des nachfolgenden Operators vonnöten sind. Es muss weiterhin eine ausgehende Schnittstelle existieren, die eine Anfrage an die Datenquelle stellt, um die
erwünschten Instanzen zu selektieren. Eine zusätzliche eingehende Schnittstelle muss
die von der Datenquelle gelieferten Daten entgegennehmen können. Schließlich muss
die entgegengenommene Trainingsdatenmenge t ∈ T über eine ausgehende Schnittstelle
an einen nachfolgenden Operator weitergegeben werden können.
Die Signatur dieses Operators ist durch eine Abbildung
DSO : MDSO → T.
(4.1)
darstellbar.
Induktions-Operator (Lerner) IO: Der Induktions-Operator, im Folgenden auch Lerner
genannt, erzeugt auf Basis von Eingabedaten, den Trainingsdaten, einen Basisklassifikator. Die Trainingsdatenmenge besteht aus Instanzen i ∈ t, die ihrerseits aus Tupeln
von Attributwerten bestehen. Zusätzlich sind Metadaten notwendig, um das Lernverfahren parametrisieren zu können. Durch Anwendung eines Klassifikator-InduktionsVerfahrens erzeugt der Lerner dann einen Basisklassifikator und stellt ihn einer nachfolgenden Komponente zur Verfügung.
Die Signatur des Lerners muss zunächst eine Schnittstelle zur Annahme einer Menge von
Trainingsdaten t ∈ T vorsehen. Weiter muss eine Menge von Metadaten m ∈ MIO zur
Parametrisierung der Induktions-Algorithmen angenommen werden können. Die Ausgabe des Lerners sieht die Bereitstellung des erzeugten Basisklassifikators k ∈ ϕ in einer
entsprechenden Datenrepräsentation vor.
56
4.3 B ESCHREIBUNG DER O PERATOREN UND S IGNATUREN
57
Die Signatur dieses Operators ist durch eine Abbildung
IO : T × MIO → ϕ.
(4.2)
darstellbar.
Basisklassifikator-Selektions-Operator BSO: In Abbildung 4.2b) ist ein inkrementeller Lerner dargestellt. Dieser benötigt neben neuen Trainingsdaten, die durch einen
Daten-Selektions-Operator DSO zur Verfügung gestellt werden, einen Basisklassifikator, der auf Basis der neuen Trainingsdaten erweitert wird. Der BasisklassifikatorSelektions-Operator BSO selektiert den zu erweiternden Basisklassifikator k aus einer
Menge von Klassifikatoren und stellt ihn einem nachfolgenden Operator, in diesem Falle
dem inkrementellen Lern-Operator IIO, zur Erweiterung zur Verfügung.
Die Signatur des BSO erfordert eine Schnittstelle für die Annahme einer Menge von
Metadaten m ∈ MBSO , die zur Selektion des gewünschten Basisklassifikators k aus
einer Menge von Basisklassifikatoren ϕ benötigt werden. Es müssen Schnittstellen zur
Selektion und zur Entgegennahme eines Basisklassifikators k ∈ ϕ umgesetzt werden.
Schließlich muss der selektierte Basisklassifikator k ∈ ϕ über eine ausgehende Schnittstelle an einen nachfolgenden Operator in einem entsprechenden Datenformat weitergegeben werden können.
Die Signatur dieses Operators ist durch eine Abbildung
BSO : MBSO → ϕ.
(4.3)
darstellbar.
Inkrementeller Lern-Operator IIO: Der Inkrementelle Lern-Operator kann einen Basisklassifikator anhand von zusätzlichen Trainingsdaten erweitern bzw. aktualisieren.
Dazu bedient er sich inkrementeller Lern-Methoden wie beispielsweise dem BOATAlgorithmus [GGRL99], die hier nicht weiter betrachtet werden.
Die Signatur dieses Operators sieht eine eingehende Schnittstelle für die Trainingsdatenmenge t ∈ T entsprechend der des Daten-Selektions-Operators DSO sowie für einen
Basisklassifikator k ∈ ϕ in einem entsprechenden Datenformat vor. Zudem muss eine
eingehende Schnittstelle für zusätzliche Metainformationen m ∈ MIIO existieren, anhand derer ein inkrementeller Lern-Algorithmus konfiguriert und parametrisiert werden
kann. Eine ausgehende Schnittstelle zur Übermittlung des erweiterten Basisklassifikators
kT ∈ ϕ an einen nachfolgenden Operator ist ebenfalls vorzusehen.
Die Signatur dieses Operators ist durch eine Abbildung
IIO : T × ϕ × MIIO → ϕ.
(4.4)
darstellbar.
Meta-Lern-Operator M LO: Der Meta-Lern-Operator erstellt anhand mehrerer Basisklassifikatoren ein globales Modell.
Die Signatur dieses Operators sieht eine eingehende Schnittstelle für mehrere Basisklassifikatoren k1 , k2 , . . . , kn ∈ ϕ vor. Weiterhin ist auch hier eine Schnittstelle zur
Annahme von Metainformationen MM LO vorzusehen, um den Meta-Lern-Algorithmus
parametrisieren zu können. Zur Ausgabe des globalen Modelles ist eine Schnittstelle
zu konzeptionieren, die nachfolgenden Operatoren das erzeugte Modell kϕ ∈ Φ zur
Verfügung stellen kann. Spezielle Meta-Lern-Methoden wie beispielsweise EnsembleLerner (siehe dazu [Pre05]) benötigen zusätzlich noch eine Menge von Trainingsdaten
t ∈ T, um ein globales Modell zu erzeugen.
57
58
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Die Signatur dieses Operators ist durch eine Abbildung
M LO : ϕ × . . . × ϕ × MM LO → Φ.
(4.5)
M LO : ϕ × . . . × ϕ × MM LO × T → Φ.
(4.6)
bzw.
für Meta-Lern-Operatoren, die zusätzlich Trainingsdaten als Eingabe benötigen, darstellbar.
Basierend auf diesen Operatoren können die in den Abbildungen 4.2 und 4.3 abgebildeten
Abläufe bezüglich des Daten- und Kontrollflusses dargestellt werden. Eine Verbindung der
Operatoren untereinander und zum Gesamtsystem ist bisher jedoch noch nicht geschaffen. Dies
wird in Abschnitt 4.4.1 bzw. in Kapitel 5 geschehen.
4.3.2. Operatoren für die Anwendung eines Klassifikators auf verteilten
Datenquellen
Die Abläufe zur Anwendung eines Klassifikators auf verteilten Datenquellen im Kontext des
ReKlaMe-Szenarios sind in den Abbildungen 4.4 und 4.6 dargestellt. Die dazu notwendigen
Operatoren seien folgend vorgestellt.
Daten-Selektions-Operator DSO: Der Daten-Selektions-Operator selektiert die Instanzen aus der Datenquelle, die klassifiziert werden sollen. Dazu bedient er sich Metainformationen, anhand derer er die Attribute und Attributwerte identifizieren und selektieren
kann, die für die Durchführung der Klassifikation von Interesse sind.
Die Signatur des Selektions-Operators ist der Signatur des Daten-Selektions-Operators
DSO ähnlich, der in Abschnitt 4.3.1 ausführlich beschrieben wurde. So werden Metadaten m ∈ MDSO benötigt, anhand derer die zu klassifizierenden Instanzen i ∈ D
aus der Datenquelle selektiert werden können. Der Unterschied besteht darin, dass die
aus der Datenquelle selektierten Daten in diesem Fall nicht Trainingsdaten, sondern zu
klassifizierende Instanzen sind. Eine eingehende Schnittstelle zur Entgegennahme von
Metadaten m ∈ MDSO ist dazu erforderlich. Zudem erfordert die Funktionalität dieses Operators eine eingehende Schnittstelle für die selektierten Instanzen i ∈ D aus
der Datenquelle. Eine ausgehende Schnittstelle für die selektierten Daten D ist ebenfalls
vonnöten, um diese an einen nachfolgenden Operator weiterreichen zu können.
Die Signatur dieses Operators ist durch eine Abbildung
DSO : MDSO → D.
(4.7)
darstellbar.
Klassifikations-Operator KO: Der Klassifikations-Operator nimmt Instanzen der zu klassifizierenden Daten entgegen. Ein Algorithmus zur Anwendung des Klassifikators teilt
diese Instanzen in eine durch den Klassifikator bestimmte Anzahl von Zielmengen auf.
Die Signatur des Klassifikations-Operators erfordert eine eingehende Schnittstelle zur
Annahme der zu klassifizierenden Instanzen D und der dazu notwendigen Metadaten
m ∈ MKO . Eine ausgehende Schnittstelle muss die erzeugten Zielklassen z ∈ C an
einen weiteren Operator übergeben können, der diese weiterverarbeitet.
Die Signatur dieses Operators ist durch eine Abbildung
KO : MKO × D × ϕ → C.
darstellbar.
58
(4.8)
4.3 B ESCHREIBUNG DER O PERATOREN UND S IGNATUREN
59
Operator zur Selection-Graph-Ableitung SGO: Der Operator zur Selection-GraphAbleitung erzeugt auf Basis eines Klassifikators eine Menge von Selection Graphs (SG).
Für jeden Weg durch den Baum zu einem Blatt (also zu einer Zielklasse) wird ein SG
erzeugt. Auf die genaue Erzeugung eines Selection Graphs soll hier nicht weiter eingegangen werden. Dazu sei auf [Saa04] verwiesen.
Die Signatur dieses Operators erfordert eine eingehende Schnittstelle für Metadaten m ∈
MSGO zur Parametrisierung des Operators zur Selection-Graph-Ableitung sowie eine
eingehende Schnittstelle für den anzuwendenden Klassifikator k ∈ ϕ. Eine ausgehende
Schnittstelle für die erzeugten SG S ist ebenfalls vorzusehen.
Die Signatur dieses Operators ist durch eine Abbildung
SGO : MSGO × ϕ → S.
(4.9)
darstellbar.
Basisklassifikator-Selektions-Operator BSO: Um aus einem Klassifikator eine Menge von Selection Graphs ableiten zu können, muss der Klassifikator dem SGO zur
Verfügung stehen. Dazu wird ein Basisklassifikator-Selektions-Operator BSO benötigt,
der sich analog zu dem in Abschnitt 4.3.2 beschriebenen BSO verhält.
Die Signatur des Basisklassifikator-Selektions-Operators erfordert demnach ebenfalls eine Schnittstelle für die Annahme einer Menge von Metadaten m ∈ MBSO , die zur Selektion des gewünschten Basisklassifikators k aus einer Menge von Basisklassifikatoren
ϕ benötigt werden. Es müssen Schnittstellen zur Selektion und zur Entgegennahme eines
Basisklassifikators k ∈ ϕ umgesetzt werden. Schließlich muss der selektierte Basisklassifikator k ∈ ϕ über eine ausgehende Schnittstelle an einen nachfolgenden Operator in
einem entsprechenden Datenformat weitergegeben werden können.
Die Signatur dieses Operators ist durch eine Abbildung
BSO : MBSO → ϕ.
(4.10)
darstellbar.
Selection Graph-Transformations-Operator SGT O: Dieser Operator transformiert die
vom Operator zur Selection-Graph-Ableitung erzeugten SG in ein Format zur Abfrage
der relationalen Datenbank, die diesem Ansatz zu Grunde liegen muss. Anhand der erzeugten Datenbankabfragen können die Instanzen der verteilten Datenquellen nun durch
Anwendung der Anfrage an die Datenbank von der Datenbanklogik selektiert und ausgegeben werden.
Bezüglich der Signatur dieses Operators sind eine eingehende Schnittstelle zur Entgegennahme der SG S sowie eine ausgehende Schnittstelle zur Weitergabe der erzeugten
Abfragemenge Q an die relationalen Datenbanken vorzusehen.
Die Signatur dieses Operators ist durch eine Abbildung
SGT O : S → Q.
(4.11)
darstellbar.
Wrapping-Operator zur relationalen Datenbank W O: Ein Operator zum Wrapping
der Datenbank-Funktionalität ist erforderlich, um Datenbankabfragen auf einer Datenquelle ausführen und die Ergebnisse einem nachfolgenden Operator zur Verfügung stellen zu können.
Die Signatur des Wrappers erfordert eine eingehende Schnittstelle für die Datenbankabfragen Q, die an die relationale Datenbank weitergegeben werden. Eine ausgehende
59
60
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Schnittstelle mit den Ergebnissen der Datenbankabfragen, den Klassen von Instanzen
z ∈ C ist ebenfalls vorzusehen, und gegebenenfalls sind weitere Metadaten bezüglich
der Ergebnisse über eine zusätzliche ausgehende Schnittstelle bereitzustellen.
Die Signatur dieses Operators ist durch eine Abbildung
W O : Q → C.
(4.12)
darstellbar.
Die in diesem Abschnitt vorgestellten Operatoren erlauben die Umsetzung der in den Abbildungen 4.4 und 4.6 dargestellten Vorgänge zur Anwendung von Klassifikatoren auf verteilten
Datenquellen. Auch hier wird die Verbindung der Operatoren untereinander im Detail erst in
Abschnitt 4.4.2 durchgeführt.
4.3.3. Operatoren für die Wartung von Klassifikatoren
Die Abläufe, die zum Prozess des Wartens von Klassifikatoren identifiziert wurden, sind in Abbildung 4.2.2 aufgezeigt. Im Ablauf der Wartung sind zwei unterschiedliche Phasen zu identifizieren: die Neugenerierung und die Erweiterung von vorhandenen Basisklassifikatoren. Die
für diese Phasen erforderlichen Operatoren werden im Folgenden näher betrachtet.
Basisklassifikator-Selektions-Operator BSO: Für beide Phasen der Wartung ist
zunächst der zu wartende Basisklassifikator aus der Menge der Basisklassifikatoren
zu selektieren. Dazu bedarf es eines Operators, der mit dem in Abschnitt 4.3.1 beschriebenen Basisklassifikator-Selektions-Operator aus dem Induktions-Ablauf zu vergleichen
ist.
Die Signatur dieses Operators erfordert demnach eine Schnittstelle für die Annahme von
Metainformationen MBSO , die zur Selektion des gewünschten Basisklassifikators k aus
einer Menge von Basisklassifikatoren ϕ benötigt werden. Auch hier müssen Schnittstellen zur Selektion und zur Entgegennahme eines Basisklassifikators umgesetzt werden.
Schließlich muss der selektierte Basisklassifikator k ∈ ϕ ebenfalls über eine ausgehende Schnittstelle an einen nachfolgenden Operator in einem entsprechenden Datenformat
weitergegeben werden können.
Die Signatur dieses Operators ist durch eine Abbildung
BSO : MBSO → ϕ.
(4.13)
darstellbar.
Meta-Lern-Operator M LO: Der Meta-Lern-Operator entspricht dem in Abschnitt 4.3.1
beschriebenen Meta-Lern-Operator. Er generiert ein globales Modell unter Verwendung
mehrerer Basisklassifikatoren.
Die Signatur dieses Operators sieht analog zu dem in Abschnitt 4.3.1 beschriebenen Operator eine eingehende Schnittstelle für Basisklassifikatoren k ∈ ϕ und eine zur Annahme
von Metainformationen m ∈ MM LO vor, um den Meta-Lern-Algorithmus parametrisieren zu können. Zur Ausgabe des globalen Modelles kϕ ∈ Φ ist eine Schnittstelle zu konzeptionieren, die nachfolgenden Operatoren das erzeugte Modell kϕ ∈ Φ zur Verfügung
stellen kann. Auch hier können Meta-Lern-Verfahren wie z.B. Ensemble-Lerner zum
Einsatz kommen, die zusätzlich die Eingabe einer Trainingsdatenmenge t ∈ T benötigen.
60
4.3 B ESCHREIBUNG DER O PERATOREN UND S IGNATUREN
61
Die Signatur dieses Operators ist durch eine Abbildung
M LO : ϕ × . . . × ϕ × MM LO → Φ.
(4.14)
M LO : ϕ × . . . × ϕ × MM LO × T → Φ.
(4.15)
bzw.
für Meta-Lern-Operatoren, die zusätzlich Trainingsdaten als Eingabe benötigen, darstellbar.
Invalidierungs-Operator IN O: Der Invalidierungs-Operator extrahiert zunächst Metainformationen aus dem eingehenden Klassifikator. Bei Umsetzung einer temporalen Versionierung kann der Operator dann den Klassifikator mit einem Zeitstempel versehen
und somit seine Invalidierung ausführen.
Im Hinblick auf die Signatur dieses Operators lassen sich zwei eingehende und zwei ausgehende Schnittstellen identifizieren. Ein Basisklassifikator k ∈ ϕ und eine Menge von
Metadaten m ∈ MIN O müssen vom Invalidierungs-Operator eingelesen werden. Der
zeitgestempelte, invalidierte Klassifikator kinv und die extrahierten und eingegebenen
Metadaten m ∈ M müssen an nachfolgende Operatoren weitergegeben werden können.
Die Signatur dieses Operators ist durch eine Abbildung
IN O : MIN O × ϕ → M × ϕ.
(4.16)
darstellbar.
Induktions-Operator (Lerner) IO: Der Induktions-Operator (Lerner) induziert analog zu
dem in Abschnitt 4.3.1 beschriebenen Lerner einen Basisklassifikator auf Basis von Metadaten und Trainingsdaten, den Instanzen. Anhand der eingegebenen Metadaten fordert
er die erwünschten Instanzen an und erzeugt durch Anwendung von Lern-Algorithmen
einen Basisklassifikator.
Die Signatur dieses Operators sieht eine eingehende Schnittstelle für Metadaten m ∈
MIO sowie eine eingehende Schnittstelle für angeforderte Trainingsdaten t ∈ T vor.
Über eine Ausgabeschnittstelle gibt der Operator den erzeugten Basisklassifikator k ∈ ϕ
an nachfolgende Operatoren weiter. Zusätzlich muss eine ausgehende Schnittstelle zu
einem Operator geschaffen werden, über die Metadaten m ∈ MIO zur Parametrisierung
des IO übergeben werden können.
Die Signatur dieses Operators ist durch eine Abbildung
IO : T × MIO → ϕ.
(4.17)
darstellbar.
Inkrementeller Lern-Operator IIO: Der Inkrementelle Lern-Operator kann analog zu
dem in 4.3.1 beschriebenen inkrementellen Lerner einen Basisklassifikator anhand von
zusätzlichen Trainingsdaten erweitern bzw. aktualisieren. Dazu bedient er sich ebenfalls
inkrementeller Lern-Methoden wie beispielsweise dem BOAT-Algorithmus [GGRL99],
die hier nicht weiter betrachtet werden.
Die Signatur dieses Operators sieht eine eingehende Schnittstelle für die Trainingsdatenmenge t ∈ T entsprechend der des Daten-Selektions-Operators DSO sowie für einen
Basisklassifikator k ∈ ϕ in einem entsprechenden Datenformat vor. Zudem muss eine
eingehende Schnittstelle für zusätzliche Metainformationen m ∈ MIIO existieren, anhand derer ein inkrementeller Lern-Algorithmus konfiguriert und parametrisiert werden
kann. Eine ausgehende Schnittstelle zur Übermittlung des erweiterten Basisklassifikators
kT ∈ ϕ an einen nachfolgenden Operator ist ebenfalls vorzusehen.
61
62
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Die Signatur dieses Operators ist durch eine Abbildung
IIO : T × ϕ × MIIO → ϕ.
(4.18)
darstellbar.
Daten-Selektions-Operator DSO: Der Daten-Selektions-Operator extrahiert analog zu
dem Selektions-Operator aus Abschnitt 4.3.1 auf Basis von eingehenden Metadaten eine Menge von Tupeln, die Trainingsdaten, aus einer Datenquelle. Diese gibt er an den
anfragenden Operator zurück.
Die Signatur dieses Operators umfasst eine eingehende Schnittstelle für die Metadaten
m ∈ MDSO und eine ausgehende Schnittstelle für die selektierten Trainingsdaten t ∈ T.
Die Signatur dieses Operators ist durch eine Abbildung
DSO : MDSO → T.
(4.19)
darstellbar.
Die in diesem Abschnitt vorgestellten Operatoren erlauben die Umsetzung der in der Abbildung 4.2.2 dargestellten Vorgänge zur Wartung von Klassifikatoren im ReKlaMe-Kontext.
Analog zu den Abschnitten 4.3.1 und 4.3.2 wird die Verbindung der Operatoren untereinander ebenfalls nicht hier, sondern erst in Kapitel 4.4.3 im Detail durchgeführt.
4.4. Operationalisierte Beschreibung der einzelnen Abläufe
und Phasen
In diesem Abschnitt werden die in Abschnitt 4.2 beschriebenen Abläufe und Phasen unter
Berücksichtigung der Verbindungen der in Abschnitt 4.3 beschriebenen Operatoren untereinander aufgezeigt. Dazu werden die Abläufe der Reihe nach betrachtet und die identifizierten
Operatoren untereinander in Beziehung gesetzt.
4.4.1. Operationalisierte Beschreibung der Klassifikator-Induktion
Zunächst sei der Ablauf der einfachen Klassifikator-Induktion auf verteilten Datenquellen
betrachtet. Abbildung 4.8 zeigt den Ablauf unter Berücksichtigung der Operatoren, Datenund Metadatenflüsse. Anschließend wird die inkrementelle Klassifikator-Induktion erläutert.
Schließlich befasst dieser Abschnitt sich mit dem Erzeugen eines globalen Klassifikators durch
einen Meta-Lerner.
Induktion eines Klassifikators
Der Ablauf sei im Folgenden anhand einer Datenquelle beschrieben. Die Abläufe bezüglich der
anderen Datenquellen verlaufen analog. Nach Anstoßen der Klassifikator-Induktion werden die
Metadaten, auf Grundlage derer die Induktion durchgeführt werden soll, an den InduktionsOperator an der Datenquelle übergeben. Diese Metadaten dienen der Parametrisierung der
Induktions-Algorithmen. Weiter werden Metadaten an den Daten-Selektions-Operator übergeben, der die entsprechenden Instanzen der Trainingsdaten aus der Datenquelle selektiert und
an den Induktions-Operator zurückgibt. Der auf Basis dieser Trainingsdaten induzierte Basisklassifikator wird schließlich der Menge aller Basisklassifikatoren hinzugefügt.
62
4.4 O PERATIONALISIERTE B ESCHREIBUNG DER
EINZELNEN
A BL ÄUFE UND P HASEN
63
Abbildung 4.8.: Ablauf einer einfachen Klassifikator-Induktion
Auf Basis der in Abschnitt 4.3.1 formalisierten Abläufe an den einzelnen Operatoren lässt sich
der Ablauf der einfachen Induktion eines Basisklassifikators, im Folgenden als IN D bezeichnet, wie folgt formalisieren:
IN D
:
DSO ◦ IO
= (MDSO → T) ◦ (T × MIO → ϕ)
= MDSO × MIO → ϕ
(4.20)
Die Verknüpfung ◦ einer Abbildung f ◦ g sei aufgrund der strikt sequentiellen Ausführung
der Operatoren DSO und IO hier als einfache Nacheinanderausführung der Abbildungen f
und g definiert. Dabei werden die Ausgaben der Abbildung f als Eingaben der Abbildung g
vorgesehen. Sollten die Signaturen der Ausgabe von f mit denen der Eingabe von g nicht übereinstimmen, so werden die zusätzlich benötigten Eingaben für g den Eingaben der Abbildung
f ◦ g hinzugefügt. Diese Definition gelte auch für die folgenden Formalisierungen.
Somit ist die Abbildung IN D eine Abbildung aus der Menge der Metadatenmengen zur Steuerung des BSO und der Menge der Metadatenmengen zur Parametrisierung des IO in die Menge der Basisklassifikatoren.
Inkrementelle Induktion eines Klassifikators
In Abbildung 4.9 ist der Ablauf der inkrementellen Klassifikator-Induktion unter Berücksichtigung der Operatoren, Daten- und Metadatenflüsse aufgeführt. Ein Benutzer initiiert die inkrementelle Induktion durch Übergabe mehrerer Metadatenmengen an verschiedene Operatoren. Zunächst werden Metadaten an den DSO und den BSO übergeben. Diese selektieren
entsprechend der Metadaten die angeforderten Trainingsdaten bzw. den angeforderten Basisklassifikator. Die Trainingsdatenmenge und der Basisklassifikator werden an den IIO, den
inkrementellen Induktions-Operator übergeben. Anhand von zusätzlichen Metadaten zur Parametrisierung des inkrementellen Lern-Algorithmus wird nun der Basisklassifikator auf Basis
der Trainingsdaten erweitert und der Menge aller Basisklassifikatoren hinzugefügt.
63
64
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Abbildung 4.9.: Ablauf einer inkrementellen Klassifikator-Induktion
Eine Formalisierung des Ablaufes der Inkrementellen Induktion, die im Folgenden mit IIN D
bezeichnet wird, lautet:
IIN D
:
(DSO|BSO) ◦ IIO
DSO
BSO
IIO
z
}|
{ z
}|
{
z
}|
{
= ((MDSO → T)|(MBSO → ϕ)) ◦ (T × ϕ × MIIO → ϕ)
= MDSO × MBSO × MIIO → ϕ.
(4.21)
Der Operator f |g sei in diesem Zusammenhang als Parallelausführung zweier Abbildungen f
und g definiert. Insbesondere gilt für die Abbildung (f |g) ◦ h, dass die Bilder der Abbildungen
f und g als Urbild der Abbildung h fungieren.
Die Abbildung IIN D ist also eine Abbildung aus der Menge der Metadatenmengen zur Steuerung des DSO und der Menge der Metadatenmengen zur Steuerung des BSO und der Menge
der Metadatenmengen zur Parametrisierung des IO in die Menge der Basisklassifikatoren.
Erzeugen eines globalen Klassifikators durch einen Meta-Lerner
Abbildung 4.10 zeigt den Ablauf der Induktions-Phase des Meta-Lernens. Ein Benutzer sendet die Metadaten, die zur Analyse notwendig sind, an die Basisklassifikator-SelektionsOperatoren der verteilten Datenquellen. Die angeforderten Basisklassifikatoren werden anschließend an den Meta-Lern-Operator weitergeleitet. Eine sequentielle Wiederholung der Anforderung verschiedener Basisklassifikatoren aus einer Quelle ist ebenfalls umsetzbar. In diesem Fall muss der Meta-Lern-Operator auf die Eingabe von Metadaten durch den Benutzer
warten, die dem Meta-Lern-Operator genaue Informationen über die Eingabedaten liefern. Der
Meta-Lern-Operator erzeugt aus den eingegangenen Basisklassifikatoren entsprechend der Metadaten, die ihm vom Benutzer übermittelt wurden, einen globalen Klassifikator, der der Menge
aller globalen Klassifikatoren hinzugefügt wird.
64
4.4 O PERATIONALISIERTE B ESCHREIBUNG DER
EINZELNEN
A BL ÄUFE UND P HASEN
65
Abbildung 4.10.: Ablauf des Meta-Lernens
Die Formalisierung des Ablaufes des Meta-Lernens, im Folgenden mit M L bezeichnet, sei nun
gegeben durch:
Datenquelle 1
ML
:
Datenquelle n
}|
{
z
}|
{
z
((BSO ◦ · · · ◦ BSO)| · · · |(BSO ◦ · · · ◦ BSO)) ◦ M LO
Datenquelle 1
Datenquelle n
}|
{
}|
{
z
z
= ((MBSO → ϕ) ◦ · · · ◦ (MBSO → ϕ)| · · · |((MBSO → ϕ) ◦ · · · ◦ (MBSO → ϕ)) ×
M LO
z
}|
{
(ϕ × · · · × ϕ × MM LO → Φ)
= (MBSO × · · · × MBSO ) × MM LO → Φ
(4.22)
bzw.
Datenquelle 1
ML
:
Datenquelle n
Datenq. 1
Datenq. n
z
}|
{
z
}|
{
z }| {
z }| {
((BSO ◦ · · · ◦ BSO)| · · · |(BSO ◦ · · · ◦ BSO)) ◦ ( DSO | · · · | DSO ) ◦ M LO
Datenquelle 1
Datenquelle n
z
}|
{
z
}|
{
= ((MBSO → ϕ) ◦ · · · ◦ (MBSO → ϕ)| · · · |((MBSO → ϕ) ◦ · · · ◦ (MBSO → ϕ)) ×
Datenquelle 1
Datenquelle n
M LO
z
}|
{
z
}|
{
z
}|
{
((MDSO → T)| · · · |(MDSO → T)) × (ϕ × · · · × ϕ × MM LO → Φ)
= (MBSO × · · · × MBSO ) × (MDSO × · · · × MDSO ) × MM LO → Φ
(4.23)
Insgesamt lässt sich der Ablauf des Meta-Lernens als eine Abbildung aus dem Kreuzprodukt
der Mengen der Metadatenmengen zur Steuerung der BSO und der Menge der Metadatenmengen zur Steuerung des Meta-Lerners in die Menge der globalen Klassifikatoren darstellen. Im
Falle eines Meta-Lern-Verfahrens, welches zusätzlich auf der Eingabe von Trainingsdaten beruht, muss die Abbildung auf Seiten der Urbilder zusätzlich um das Kreuzprodukt der Mengen
der Metadatenmengen zur Steuerung der DSO erweitert werden.
65
66
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
Alle in Abschnitt 4.3.1 aufgeführten Phasen des Induktions-Analyse-Ablaufes sind somit
bezüglich der zugrunde liegenden Operatoren beschrieben. Für die einzelnen Abläufe wurden
Formalisierungen gefunden und sie wurden in Form von Abbildungen beschrieben.
4.4.2. Operationalisierte Beschreibung der Klassifikator-Anwendung
In diesem Abschnitt wird zunächst der naive Ansatz der Anwendung eines Klassifikators zur
Klassifikation von Daten einer Datenquelle betrachtet, bei dem der Entscheidungsbaum auf
jede zu klassifizierende Instanz der Datenmenge angewendet wird. Die zum Ablauf dieser
ReKlaMe-Analyse benötigten Operatoren und deren Signaturen wurden bereits in Abschnitt
4.3.2 aufgeführt. Anschließend wird ein alternativer Ansatz der Klassifikation durch Erzeugen
von Selection-Graphs aus Klassifikatoren, Transformation der Selection Graphs in DatenbankAbfragen und Anwendung dieser Abfragen auf verteilten relationalen Datenquellen dargestellt.
Dieser Ansatz stellt eine performantere Alternative zum naiven Ansatz dar.
Naiver Klassifikations-Ansatz
Abbildung 4.11 stellt die Verbindungen der Operatoren zur naiven Klassifikator-Anwendung
dar.
Abbildung 4.11.: Ablauf einer Klassifikator-Anwendung
Wird die Klassifikation von einem Benutzer initiiert, so werden Metadaten zur Selektion des
anzuwendenden Klassifikators, Metadaten zur Selektion der zu klassifizierenden Instanzen sowie Metadaten zur Parametrisierung des Klassifikations-Operators an die jeweiligen Operatoren übergeben. Der DSO führt die Selektion der Instanzen, der BSO die Selektion des Klassifikators aus, und der KO kann auf Basis der Instanzen und des Klassifikators sowie der Metadaten zur Parametrisierung die Klassifikation durchführen. Jede Instanz wird entsprechend der
Anwendung des Klassifikators einer Zielklasse zugewiesen und in den Klassifikationsergebnissen gesammelt. Diese können über eine Ausgabeschnittstelle einem weiterverarbeitenden
Operator zur Verfügung gestellt werden.
66
4.4 O PERATIONALISIERTE B ESCHREIBUNG DER
EINZELNEN
A BL ÄUFE UND P HASEN
Formal kann die Durchführung einer solchen Klassifikation durch die Abbildung
Datenquelle 1
KLA
Datenquelle n
:
z
z
}|
{
}|
{
((DSO|BSO) ◦ KO)| · · · |((DSO|BSO) ◦ KO)
=
z
}|
{
(((MDSO → D)|(MBSO M → ϕ)) ◦ (MKO × D × ϕ → C))| · · · |
Datenquelle 1
Datenquelle n
z
}|
{ (((MDSO → D)|(MBSO → ϕ)) ◦ (MKO × D × ϕ → C))
Datenq. 1
Datenq. n
Datenq. n
Datenq. 1
z }| {
z }| {
z }| {
z }| {
= (MDSO × · · · × MDSO ) × (MBSO × · · · × MBSO ) × MKO → C (4.24)
|
|
{z
}
{z
}
Instanzenselektion
Klassifikatorselektion
dargestellt werden.
Dieser Ablauf lässt sich also als Abbildung des Kreuzproduktes der Mengen der Metadatenmengen zur Instanzenselektion, der Mengen der Metadatenmengen zur Instanzenselektion sowie der Menge der Metadatenmengen zur Klassifikator-Parametrisierung in die Menge der
Zielklassenmengen darstellen.
Klassifikation durch Selection-Graph-Ableitung
Die Klassifikation durch Ableitung von Selection Graphs aus Klassifikatoren und Wandlung der Selection Graphs in relationale Datenbankabfragen wurde bereits in Abschnitt 4.3.2
bezüglich der Operatoren beschrieben. Nun folgt die Beschreibung des Zusammenspieles dieser Operatoren, welches in Abbildung 4.12 dargestellt ist. Ein Benutzer initiiert die Klassifikation, indem er Metadaten an den SGO und an einen BSO sendet. Durch die an den BSO
gesendeten Metadaten wird die Klassifikator-Extraktion initiiert. Der SGO nimmt den selektierten Klassifikator entgegen und wandelt ihn in eine Menge von Selection Graphs. Die Selection Graphs werden an den SGT O weitergegeben, der sie zu Datenbank-Abfragen konvertiert.
Diese Abfragen werden den W O der verteilten Datenquellen übergeben, die die Anfragen auf
den relationalen Datenquellen ausführen. Jede Abfrage selektiert die Instanzen einer Zielklasse.
Abbildung 4.12.: Ablauf einer verteilten Klassifikation durch Ableitung von Selection Graphs
und deren Wandlung in Datenbankabfragen
Der Ablauf der Klassifikation durch Ableitung von Selection Graphs lässt sich formal durch
67
67
68
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
folgende Abbildung SGK beschreiben:
SGK
:
BSO ◦ SGO ◦ SGT O ◦ (W O| · · · |W O)
BSO
SGO
SGTO
WO Datenq. 1
WO Datenq. n
z
z
z }| {
}|
{
}|
{
z }| {
z }| {
= (MBSO → ϕ) ◦ (MSGO × ϕ → S) ◦ (S → Q) ◦ (( Q → C )| · · · |( Q → C ))
= MBSO × MSGO → C
(4.25)
Der Ablauf dieser Klassifikationsmethode lässt sich also durch eine Abbildung aus dem Kreuzprodukt der Mengen der Metadatenmengen zur Selektion eines Klassifikators und der Menge
der Metadatenmengen zur Parametrisierung des SGO in die Menge der Zielklassenmengen
darstellen.
Somit sind die Phasen des Anwendungs-Ablaufes einer ReKlaMe-Analyse, die in Abschnitt
4.3.2 beschrieben sind, ebenfalls darstellbar.
4.4.3. Operationalisierte Beschreibung der Klassifikator-Wartung
In diesem Abschnitt werden die verschiedenen Phasen und Abläufe der Wartung von Klassifikatoren operational formal beschrieben. Zunächst wird die gegebenenfalls inkrementelle
Aktualisierung oder Neugenerierung eines Klassifikators betrachtet. Anschließend erfolgt die
Betrachtung der Erweiterung von Klassifikatoren durch Meta-Lerner (beispielsweise Kombinierer).
(Inkrementelle) Aktualisierung und Neugenerierung von Klassifikatoren
Abbildung 4.13.: Phase der (inkrementellen) Aktualisierung/Neugenerierung eines Klassifikators im Ablauf der Wartung
Der Ablauf der (inkrementellen) Aktualisierung bzw. Neugenerierung eines Basisklassifikators
ist in Abbildung 4.13 dargestellt. Anhand von Metadaten wird der zu aktualisierende Klassifikator über einen BSO selektiert und dem IN O übergeben. Dieser markiert die Löschung
des Klassifikators in der Menge aller Basisklassifikatoren anhand von Zeitstempeln. Metadaten werden anschließend an einen weiteren BSO übergeben, der den zu aktualisierenden oder
68
4.4 O PERATIONALISIERTE B ESCHREIBUNG DER
EINZELNEN
A BL ÄUFE UND P HASEN
69
neu zu generierenden Klassifikator selektieren und dem IIO übergeben kann. Dieser fordert
anhand der ihm übergebenen Metadaten die benötigten Trainingsdaten aus einer Datenquelle
mittels eines DSO an. Auf Basis der Trainings- und Metadaten kann ein neuer oder aktualisierter Klassifikator induziert werden. Dieser wird der Menge aller Klassifikatoren hinzugefügt.
Formal kann der Ablauf der Aktualisierung bzw. Neugenerierung eines Klassifikators als eine
Abbildung AN K:
AN K
:
BSO ◦ IN O ◦ (BSO ◦ · · · ◦ BSO) ◦ DSO ◦ IIO
BSO
INO
z
}|
{
}|
{
z
= (MBSO → ϕ) ◦ (MIN O × ϕ → M × ϕ) ◦
BSO
BSO
DSO
IIO
z
}|
{
}|
{
}|
{
}|
{
z
z
z
((MBSO → ϕ) ◦ · · · ◦ (MBSO → ϕ)) ◦ (MDSO → T) ◦ (T × ϕ × MIIO → ϕ)
= MBSO × MIN O × (MBSO × · · · × MBSO ) × MDSO × MIIO → ϕ × ϕ (4.26)
definiert werden.
Die Abbildung AN K lässt sich also als eine Abbildung aus dem Kreuzprodukt der Menge der
Metadatenmengen zur Basisklassifikatorselektion, der Menge der Metadatenmengen zur Parametrisierung des IN O, der Menge der Metadatenmengen zur Selektion der dem IIO zugrunde
liegenden Klassifikatoren, der Menge der Metadatenmengen zur Selektion der Trainingsdaten
und der Menge der Metadatenmengen zur Parametrisierung des IIO in das Kreuzprodukt der
Menge der invalidierten Basisklassifikatorenmengen und der Menge der Basisklassifikatorenmengen darstellen.
Erweiterung von Klassifikatoren durch Meta-Lerner
Abbildung 4.14.: Phase der Erweiterung eines Klassifikators durch einen Meta-Lerner im Ablauf der Wartung
Abbildung 4.14 zeigt den Ablauf der Erweiterung eines Klassifikators durch einen MetaLerner. Über Metadaten wird die Selektion des zu erweiternden Basisklassifikators von einem
69
70
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
BSO durchgeführt. Dieser wird dem IN O übergeben, der anhand zusätzlicher Metadaten eine Invalidierung durch Zeitstempelung durchführt. Der invalidierte Basisklassifikator wird der
Menge aller Basisklassifikatoren zugeführt. Anhand von durch den IN O erzeugten Metadaten über den zu erweiternden Klassifikator wird dieser über einen weiteren BSO selektiert
und einem M LO zugeführt. Anhand von zusätzlichen Metadaten zur weiteren Klassifikatorselektion können zusätzlich noch die Klassifikatoren selektiert werden, die für die Erweiterung
genutzt werden sollen. Der Meta-Lerner kann anhand des zu erweiternden Klassifikators, der
Klassifikatoren, die für die Erweiterung genutzt werden sollen sowie anhand von parametrisierenden Metadaten nun ein globales Modell erzeugen. Dieses wird ebenfalls der Menge aller
Basisklassifikatoren zugeführt.
Formal lässt sich die Erweiterung eines Klassifikators als eine Abbildung KE
:
KE
BSO ◦ IN O ◦ BSO ◦ (BSO ◦ · · · ◦ BSO) ◦ M LO
IN O
BSO
BSO
z
z
}|
{
}|
{
}|
{
z
= (MBSO → ϕ) ◦ (MIN O × ϕ → M × ϕ) ◦ (MBSO → ϕ) ◦
BSO 1
BSO n
MLO
}|
{
}|
{
z
z }| {
z
((MBSO → ϕ) ◦ · · · ◦ (MBSO × ϕ)) ◦ (ϕ × · · · × ϕ × MM LO → Φ)
= MBSO × MIN O × (MBSO × · · · × MBSO ) × MM LO → ϕ × Φ
(4.27)
bzw.
KE
:
BSO ◦ IN O ◦ BSO ◦ (BSO ◦ · · · ◦ BSO) ◦ M LO
IN O
BSO
BSO
z
z
}|
{
}|
{
}|
{
z
= (MBSO → ϕ) ◦ (MIN O × ϕ → M × ϕ) ◦ (MBSO → ϕ) ◦
BSO 1
BSO n
MLO
z
}|
{
z }| {
z
}|
{
((MBSO → ϕ) ◦ · · · ◦ (MBSO × ϕ)) ◦ (ϕ × · · · × ϕ × MM LO × T → Φ)
= MBSO × MIN O × (MBSO × · · · × MBSO ) × MM LO × T → ϕ × Φ
(4.28)
für MLO, die zusätzlich Trainingsdaten benötigen, darstellen.
Der Ablauf der Klassifikator-Erweiterung ist also eine Abbildung aus dem Kreuzprodukt der
Menge der Metadatenmengen zur Selektion des zu erweiternden Klassifikators, der Menge der
Metadatenmengen zur Parametrisierung des IN O, der Menge der Metadatenmengen zur Selektion der Klassifikatoren, die der Erweiterung des zu erweiternden Klassifikators zugrunde
liegen sowie der Menge der Metadatenmengen zur Parametrisierung des M LO und gegebenenfalls der Menge der Trainingsdatenmengen für den zu erweiternden Klassifikator in das Kreuzprodukt der Menge der invalidierten Basisklassifikatorenmengen und der Menge der globalen
Klassifikatormengen.
Durch diese Abläufe können die Phasen des Wartungs-Ablaufes einer ReKlaMe-Analyse, die
in Abschnitt 4.3.3 beschrieben sind, auch dargestellt werden.
Insgesamt wurden die Abläufe und Phasen, die im Rahmen des ReKlaMe-Ansatzes identifiziert wurden, durch Operatoren und deren Verbindungen untereinander beschrieben und formal
durch Abbildungen spezifiziert. Das Ausführungsmodell beinhaltet alle formal spezifizierten
Abläufe und Phasen und wird durch sie definiert. Im folgenden Kapitel wird die Ableitung einer
Architektur aus dem Ausführungsmodell durchgeführt. Dabei werden Komponenten definiert,
Daten- und Kontrollflüsse spezifiziert und Datenformate konzeptioniert. Auch Schnittstellen
werden konkret spezifiziert.
70
4.5 Z USAMMENFASSUNG
71
4.5. Zusammenfassung
In diesem Kapitel wurden in Abschnitt 4.1 die Zielsetzungen des ReKlaMe-Projektes ausführlich beleuchtet, um auf dieser Basis ein Ausführungsmodell für die im Rahmen des ReKlaMeProjektes zu ermöglichenden Analysen zu konzeptionieren. Dazu wurde zunächst ein Überblick über die Ziele des Ansatzes, die zugrunde liegende Umgebung sowie die Rahmenbedingungen geschaffen, die das Projekt umschließen. Anschließend wurden in Abschnitt 4.2
verschiedene Abläufe und Phasen der Analyseschritte identifiziert. Zu den drei identifizierten
Abläufen zählen die Induktion von Klassifikatoren auf Basis verteilter Datenquellen, die Anwendung dieser auf verteilten Datenquellen sowie die Wartung, und darin eingeschlossen, die
Aktualisierung der induzierten Klassifikatoren.
Folgend wurden in Abschnitt 4.3 die drei Abläufe ausführlich betrachtet und für jede Art von
Ablauf im Rahmen des ReKlaMe-Projektes Kontroll- und Datenflüsse sowie Funktionalität
in Form von Operatoren zur Umsetzung der Abläufe konzeptioniert. Anschließend erfolgte
eine ausführliche Betrachtung dieser Operatoren bezüglich ihrer Signaturen. So wurde jeder
Operator durch eine Abbildung formalisiert.
Auf Basis dieser Formalisierungen konnte dann in Abschnitt 4.4 eine operationalisierte Beschreibung der identifizierten Abläufe durchgeführt werden. Diesbezüglich wurde jeder Ablauf
durch eine formale Abbildung beschrieben, die aus der Verknüpfung von Nacheinander- oder
Parallelausführung der Abbildungen besteht, die die am jeweiligen Ablauf beteiligten Operatoren beschreiben.
Schließlich ließ sich das Ausführungsmodell durch die identifizierten Abläufe und die formalisierten Beschreibungen der einzelnen Abläufe spezifizieren.
71
72
K APITEL 4 - E IN AUSF ÜHRUNGSMODELL F ÜR R E K LA M E -A NALYSEN
72
5. Architekturentwurf
Im vorhergehenden Kapitel wurden die identifizierten Analyse-Abläufe im ReKlaMe-Projekt
formal durch Abbildungen dargestellt. Diese Abbildungen und die Operatoren, aus denen sie
bestehen, müssen in diesem Kapitel nun in eine Architektur umgesetzt werden.
Neben dieser Umsetzung besteht eine weitere Aufgabe in der Konzeptionierung und Umsetzung von Hilfskomponenten, die die Abläufe unterstützen und globale Dienste zur Verfügung
stellen. So ist beispielsweise für die Zeitstempelung eine globale Uhr vonnöten. Auch Veränderungen an bestehenden oder die Induktion neuer Klassifikatoren muss einer globalen Instanz mitgeteilt werden, damit diese Veränderungen bei Analyseläufen berücksichtigt werden
können. Letztlich ist die Schaffung einer Schnittstelle zwischen Benutzer und Architektur zu
entwerfen und umzusetzen.
Die Ideen zur Umsetzung der Abläufe in eine Architektur erfolgen zunächst noch in Form
eines Grobkonzeptes. Die konkrete Planung und Durchführung der Implementation mit allen
implementationsspezifischen Details erfolgt in Kapitel 6. Auch die Formate und Datentypen,
die zum Nutz- und Kontrolldatentausch verwendet werden sollen, werden in Kapitel 6 konkret
entworfen. Dazu zählen sowohl abstrakte Metadatentypen zur Steuerung von Komponenten
als auch Nachrichten, die zur Bestätigung der erfolgreichen Abarbeitung von durchgeführten
Aufträgen zwischen Komponenten übergeben werden können.
Das Vorgehen in diesem Kapitel stellt sich daher wie folgt dar: Zunächst wird in Abschnitt
5.1 die Ableitung einer Architektur aus dem in Kapitel 4 konzeptionierten Ausführungsmodell
durchgeführt, wobei die Analyse-Abläufe abstrakt dargestellt werden. Dann erfolgt die Verfeinerung der abgeleiteten Architektur, indem zunächst in Abschnitt 5.1.1 eine Architektur für
den Analyse-Ablauf der Klassifikator-Induktion, in Abschnitt 5.1.2 eine Architektur für die
Anwendung von Klassifikatoren und in Abschnitt 5.1.3 eine Architektur für die Wartung von
Klassifikatoren auf niedriger Abstraktionsebene abgeleitet wird. In Abschnitt 5.1.4 erfolgt danach die Zusammenführung der zuvor abgeleiteten Architekturen. Anschließend befasst sich
Abschnitt 5.2 mit den Aspekten zur Erweiterung der abgeleiteten und zusammengeführten Architektur auf verteilte Szenarien, bevor in Abschnitt 5.3 eine Zusammenfassung der in diesem
Kapitel durchgeführten Arbeiten gegeben wird.
5.1. Ableitung einer Architektur aus dem
Ausführungsmodell
In diesem Abschnitt erfolgt die Ableitung einer Architektur aus dem in Kapitel 4 konzeptionierten Ausführungsmodell, welches die identifizierten Abläufe und Phasen der ReKlaMeAnalysen beschreibt. Dazu ist die Identifikation und Konzeptionierung zusätzlicher Module
und der darin enthaltenen Komponenten vonnöten. Mit dem Begriff Modul wird im Folgenden
eine Menge von Komponenten bezeichnet.
In Abbildung 5.1 ist die aus dem in Kapitel 4 konzeptionierten Ausführungsmodell abgeleitete
Architektur auf hoher Abstraktionsebene abgebildet. Es lassen sich drei große Module erkennen. Eine Verfeinerung der Abstraktionsebene wird in den Abschnitten 5.1.1, 5.1.2 und 5.1.3
73
74
K APITEL 5 - A RCHITEKTURENTWURF
Abbildung 5.1.: Architektur des ReKlaMe-Projektes auf hoher Abstraktionsebene
erfolgen. Zusätzlich zu den Komponenten, die aus den Operatoren des Ausführungsmodelles abgeleitet wurden, sind neue Komponenten hinzugekommen. Diese bieten Hilfsfunktionalitäten an, die für den Ablauf der Analyse-Vorgänge vonnöten sind und werden in den jeweiligen Abschnitten, die die Architektur auf niedriger Abstraktionsebene darstellen, aufgeführt
und beschrieben. Zu diesen Hilfskomponenten zählen beispielsweise eine globale Uhr, die im
Gesamtsystem eine einheitliche Zeitbasis darstellt, oder eine Aktualisierungs-Komponente, um
Analyseergebnisse im System verfügbar zu machen. Die nähere Beschreibung dieser Hilfskomponenten erfolgt in den Abschnitten 5.1.1 bzw. 5.1.3. Im Folgenden werden die drei erkennbaren Module der abgeleiteten Architektur auf hoher Abstraktionsebene beschrieben.
Benutzung/Steuerung/Interaktion (BSI) Über dieses Modul werden die Benutzereingaben und die System-Ausgaben verwaltet. Es handelt sich somit um die Schnittstelle des
ReKlaMe-Systemes zur Benutzerwelt. Die durch die Benutzereingaben vorgegebenen
statischen Anteile der Steuerung werden von diesem Modul übernommen. Es besteht
aus zwei Unter-Modulen, dem Eingabe- und dem Ausgabe-Modul.
Das Eingabe-Modul beinhaltet die Benutzungs-Schnittstelle und die Task-Analyse.
Zunächst wird der durchzuführende Analyse-Ablauf vom Benutzer spezifiziert. Zu den
durchführbaren Abläufen zählen die Induktion, die Anwendung und die Wartung von
Klassifikatoren. Dabei können in Abhängigkeit des gewählten Ablaufes verschiedene Alternativ-Abläufe durchgeführt werden, beispielsweise eine inkrementelle oder eine nicht-inkrementelle Klassifikator-Induktion. Der vom Benutzer gewählte AnalyseAblauf wird der Task-Analyse übergeben. Diese erfragt auf Basis dieser Informationen
die Metadaten, die bezüglich des gewählten Analyse-Ablaufes bereits im System vorliegen und für eine potentielle Analyse genutzt werden können. Dazu zählen beispielsweise die verfügbaren Datenquellen oder bereits im System vorhandene, zuvor induzierte Klassifikatoren oder Analyse-Ergebnisse. Die so selektierten Metadaten werden an
die Benutzungs-Schnittstelle zurückgegeben, die dem Benutzer in einem zweiten Schritt
nun die gefundenen Informationen präsentiert. Aus diesen Informationen können daraufhin die Metadaten zur Selektion von Daten und Klassifikatoren sowie die Metadaten
zur Parametrisierung von Prozessen ausgewählt und spezifiziert werden, die dann an die
Metadaten-Verwaltung und Steuerung übergeben werden.
74
5.1 A BLEITUNG EINER A RCHITEKTUR AUS
DEM
AUSF ÜHRUNGSMODELL
Die im Eingabe-Modul umgesetzte Steuerung kann auf drei unterschiedliche Arten umgesetzt werden:
• statisch
• dynamisch
• in einer Mischform von statisch und dynamisch
Ein großer Unterschied zwischen den dynamisch und den statisch gesteuerten Komponenten besteht vor allem darin, dass die Verbindung der Komponenten untereinander
unterschiedlich ist: Bei statisch gesteuerten Vorgängen sind immer zwei Komponenten
fest miteinander verbunden, und es besteht keine Möglichkeit der Nutzung alternativer
Komponenten. Dahingegen ist bei dynamisch gesteuerten Abläufen nicht fest vorgegeben, welche Komponente die Daten einer Vorgänger-Komponente weiter bearbeiten soll.
Eine durchgängig statische Steuerung hätte den Nachteil, dass die Erweiterbarkeit eingeschränkt wird und es somit nur erschwert möglich ist, neue Analyse-Abläufe in das
System zu integrieren. Da die Erweiterbarkeit jedoch bei der Konzeption der Architektur
für das ReKlaMe-Projekt mit im Vordergrund steht, scheidet diese Art der Steuerung aus.
Die Umsetzung der Steuerung in komplett dynamischer Weise hätte den Nachteil, dass
an den Stellen, an denen die abzuarbeitenden Vorgänge statisch vorgegeben sind, durch
die Dynamisierung ein erhöhter Aufwand zu betreiben ist, sowohl konzeptionell als auch
im Ablauf. Daher wird auch von der Umsetzung einer durchweg dynamischen Steuerung
abgesehen. In dieser Arbeit fällt die Wahl der Form der Steuerung auf eine Mischform
der beiden zuvor erwähnten Ansätze. An den Stellen innerhalb der Architektur, an denen
statische Vorgänge abzubilden sind, wird die Steuerung statisch geschehen. Dort, wo alternative Abläufe durchgeführt werden können, kommt eine dynamische Steuerung zum
Einsatz.
Das zweite Unter-Modul, die Ausgabe, zeichnet für die Verarbeitung der innerhalb des
ReKlaMe-Prozesses angefallenen Ergebnisdaten verantwortlich. Diese Daten können
zur internen Nutzung vorgesehen oder einem Benutzer über ein Visualisierungs-Modul
präsentiert werden. Zudem werden die Analyse-Ergebnisse für das System verfügbar
gemacht, indem Metadaten über die erzeugten Ergebnisse über eine AktualisierungsKomponente in ein entsprechendes Metadaten-Verwaltungs-System eingetragen werden.
Metadaten-Verwaltung/Steuerung (MVS) Das Modul zur Metadaten-Verwaltung und
Steuerung übernimmt die dynamische Steuerung der einzelnen Abläufe innerhalb von
ReKlaMe-Analysen sowie die Speicherung und Anlieferung verschiedener Daten, die
an unterschiedlichen Stellen während einer ReKlaMe-Analyse anfallen oder benötigt
werden. Dazu existieren drei Unter-Module, je eines für jeden identifizierten AnalyseAblauf. Die Eingaben werden vom BSI-Modul an eines der drei Module zur Steuerung des durchzuführenden Ablaufes übergeben, dann durch das entsprechende Modul
verarbeitet und an das korrespondierende Unter-Modul des Moduls zur Steuerung der
Analyse-Abläufe übergeben.
Zusätzlich beherbergt dieses Modul weitere Hilfs-Komponenten, die AktualisierungsKomponente und die globale Uhr. Die Aktualisierungs-Komponente wird vom AusgabeModul über neu erzeugte, erweiterte oder gewartete Klassifikatoren, globale Modelle
und neu generierte Klassifikationsergebnisse informiert. Bekommt sie die Nachricht über
die Generierung neuer Daten durch das System, so fügt sie die zugehörigen Metadaten,
die vom Ausgabe-Modul übergeben werden, zu den einzelnen Metadaten-Verwaltungs/Steuerungs-Komponenten hinzu. Somit stehen diese Datensätze, Klassifikatoren und
globalen Modelle für spätere Analysen zur Verfügung. Die globale Uhr dient der einheitlichen Zeitgebung für das Gesamt-System.
75
75
76
K APITEL 5 - A RCHITEKTURENTWURF
Analyse-Abläufe (AA) Dieses Modul beinhaltet Module zur Ausführung der identifizierten
Analyse-Abläufe sowie ein Modul zur Verwaltung der verfügbaren Datenquellen. Jedes
der drei Module zur Induktion, Anwendung oder Wartung ist mit dem Modul zur Verwaltung der Datenquellen verbunden und kann mit ihm durch die dynamische Steuerung
Daten austauschen. Das Modul zur Verwaltung der verfügbaren Datenquellen beinhaltet
drei Unter-Module: ein Repository für Klassifikatoren, eine Datensenke zur Speicherung von Klassifikationsergebnissen (die später auch als Datenquelle zum Auslesen von
Klassifikatoren dienen wird) sowie ein Modul zur Verwaltung der Datenquellen für Trainingsdaten oder Instanzdaten.
Auf dieser Abstraktionsebene können die drei Phasen der Induktion, Anwendung und Wartung
von Klassifikatoren auf die Module der Metadaten-Verwaltung/Steuerung sowie der AnalyseAbläufe analog zum Ausführungsmodell abgebildet werden. Daher folgt im nächsten Abschnitt
die nähere Betrachtung der einzelnen zur Durchführung der Analyseschritte notwendigen TeilArchitekturen. Der Aspekt der Verteiltheit der Komponenten, so wie sie im Ausführungsmodell
vorgesehen ist, findet zunächst keine Beachtung. Es wird vorerst davon ausgegangen, dass
alle Komponenten lokal an einem Ort vorliegen. Nach Zusammenführung der Architekturen
aller drei Analyse-Abläufe in Abschnitt 5.1.4 folgt dann die Erweiterung der Architektur auf
verteilte Szenarien in Abschnitt 5.2.
5.1.1. Architektur zur Induktion von Klassifikatoren
Die Basis für die Architektur zur Induktion von Klassifikatoren bilden die in Abschnitt 4.4.1
ausgeführten Überlegungen. Abbildung 5.2 zeigt die Architektur zur Induktion von Klassifikatoren.
Abbildung 5.2.: Architektur der Klassifikator-Induktion
Die hierarchische Schachtelung der Komponenten und deren Zugehörigkeit zu einem der drei
Haupt-Module sei durch den Namen der Komponenten spezifiziert. So gelte im Folgenden,
dass die Komponente AA:BB:CC den Namen CC trägt und im Unter-Modul BB lokalisiert ist,
welches Modul AA zugehörig ist.
Zusätzlich zu den aus dem Ausführungsmodell abgeleiteten Komponenten werden weitere
Komponenten benötigt. Ein Überblick über alle Komponenten, die am Analyse-Ablauf der
Klassifikator-Induktion beteiligt sind, sei im Folgenden gegeben.
76
5.1 A BLEITUNG EINER A RCHITEKTUR AUS
DEM
AUSF ÜHRUNGSMODELL
BSI:Eingabe:BS Die Benutzungs-Schnittstellen-Komponente BS ist eine statisch gesteuerte und statisch angebundene Komponente. Sie nimmt in einem ersten Schritt Informationen vom Benutzer über den durchzuführenden Analyse-Ablauf entgegen. Diese übergibt sie an die Komponente zur Task-Analyse TA, die entsprechend der durchzuführenden Analyse korrespondierende Metadaten über die zur Verfügung stehenden Klassifikatoren, Datenquellen und Klassifikationsergebnisse zurück gibt. In einem zweiten
Schritt werden diese Informationen dem Benutzer präsentiert, der anhand dieser Daten
anschließend einen genauen Analyse-Auftrag erteilen kann. Der Benutzer wählt dazu
die zu verwendenden Klassifikatoren und Datenquellen, die zu verwendenden AnalyseVerfahren und deren Parameter. Diese Informationen werden anschließend an die nachfolgende Metadaten-Verwaltungs-/Steuerungs-Komponente weitergegeben, um die Analyse durchzuführen.
BSI:Eingabe:TA Die Komponente zur Task-Analyse TA analysiert die Eingaben des Benutzers im Hinblick auf die durchzuführende Analyse. Auf Basis dieser Informationen wird nun in der Metadaten-Verwaltungs-/Steuerungs-Komponente nach verfügbaren Ressourcen gesucht, die dieser Analyse als Grundlage dienen können. Dazu zählen
Datenquellen, bereits induzierte Klassifikatoren oder bereits erzeugte Klassifikationsergebnisse. Wenn alle Informationen zusammengetragen wurden, so werden diese an
BSI:Eingabe:BS zurückgegeben. Die Abläufe dieser Komponente sowie deren Anbindung an andere Komponenten ist ebenfalls statisch ausgeführt, wobei jedoch die Wahl
der korrespondierenden Metadaten-Verwaltungs-/Steuerungs-Komponente von dem zur
Durchführung identifizierten Analyse-Ablauf vorgegeben wird.
MVS:IMVK Die Induktions-Metadaten-Verwaltungs-Komponente IMVK extrahiert die verschiedenen Metadatensätze zur dynamischen Steuerung des Analysevorganges. Zu diesen Metadatensätzen zählen Informationen zur Selektion von Klassifikatoren und Trainingsdaten sowie zur Parametrisierung von Induktions-Algorithmen. Die Metadaten
stammen aus dem eigenen Metadatenrepository und wurden vom Benutzer für die durchzuführende Analyse ausgewählt. Anhand der Benutzerangaben wird zudem der durchzuführende Induktions-Schritt ((inkrementelle) Induktion oder Meta-Lernen) festgelegt.
Folgend besteht die Aufgabe dieser Komponente in der Steuerung der Abläufe, die zur
Durchführung des Analyse-Ablaufes der Induktion vonnöten sind. Dies geschieht, indem
steuernde Metadaten an die entsprechenden Komponenten versendet werden.
Das Verhalten dieser Komponente hängt vom durchzuführenden Induktions-Schritt ab,
wobei folgende Schritte unterstützt werden sollen:
• (Inkrementelle) Klassifikator-Induktion: Die Metadaten zur Selektion der Trainingsdaten werden (im Falle der inkrementellen Induktion parallel mit den Metadaten zur Basisklassifikator-Selektion) an die jeweilige Komponente, die die entsprechende Selektion durchführt, weitergereicht. Es wird auf eine Antwort zur Bestätigung gewartet, dass die entsprechend selektierten Daten an der Komponente vorliegen, die die Induktion durchführt. Nach Empfang der Bestätigungen wird der Metadatensatz zur Parametrisierung des Induktions-Algorithmus an die entsprechende
Komponente weitergegeben.
Im Falle der Induktion ist dies AA:(I)IK.
• Meta-Lernen: Der erste Metadatensatz zur Basisklassifikator-Selektion wird BSK
übergeben. Nach Empfang der Bestätigung von BSK, den zu selektierenden Klassifikator an AA:MLK erfolgreich ausgeliefert zu haben, wiederholt sich dieses Vorgehen, bis alle Basisklassifikatoren an den Meta-Lerner ausgeliefert wurden, die für
den aktuell durchzuführenden Meta-Lern-Vorgang benötigt werden. Diese werden
durch die Eingaben des Benutzers spezifiziert. Sind alle Basisklassifikatoren an den
77
77
78
K APITEL 5 - A RCHITEKTURENTWURF
Meta-Lerner übergeben, so kann eine Nachricht an diesen übermittelt werden, die
den Meta-Lern-Vorgang initiiert und steuert.
Die für den Meta-Lern-Vorgang verantwortliche Komponente ist in diesem Falle
AA:MLK.
MVS:AK Die Aktualisierungs-Komponente AK dient der Aktualisierung der in MVS:IMVK
vorgehaltenen Metadaten über Klassifikatoren, Analyse-Ergebnisse und Datenquellen.
Auch hier handelt es sich um eine statisch angebundene und gesteuerte Komponente. Sobald ein neues Analyse-Ergebnis an die Verwertungs-Komponente BSI:VK übergeben
wurde, übermittelt diese die zugehörigen Metadaten an MVS:AK. Die AktualisierungsKomponente fügt diese Metadaten dann in den von MVS:IMVK gehaltenen Datenbestand
ein.
AA:DSK Die Daten-Selektions-Komponente DSK selektiert auf Basis von Metadaten eine
Menge von Trainingsdaten und übergibt diese an eine nachfolgende Komponente. Die
erfolgreiche Übergabe wird mit einer Nachricht an eine steuernde Komponente quittiert.
Die Metadaten bestimmen dabei die zu selektierenden Daten, die Adresse und Zugangsdaten der dazu notwendigen Quelle sowie die Adresse, an die die selektierten Daten
und die Quittung übersendet werden sollen. Die Steuerung dieser Komponente erfolgt
dynamisch. So können zur Laufzeit anhand von steuernden Metadaten verschiedene Datenquellen und -senken festgelegt werden.
Im Falle der Klassifikator-Induktion erhält diese Komponente von MVS:IMVK die Metadaten zur Selektion der Trainingsdaten, die der Induktion zugrunde liegen sollen. Sie
führt die Selektion durch, indem sie die entsprechende Selektion mittels AA:DQ:TD delegiert. Dann übergibt sie die selektierten Daten in einem entsprechenden Datenformat
an AA:(I)IK und sendet eine Bestätigung der erfolgreichen Übergabe der Trainingsdaten an MVS:IMVK.
AA:DQ:TD Die Komponente zur Selektion von Trainingsdaten TD nimmt die Metadaten entgegen, die zur Selektion benötigt werden, und selektiert die angeforderten Daten. Anschließend gibt sie die selektierten Daten an eine nachfolgende Komponente, die durch
die Metadaten spezifiziert wird, zurück. Durch die zur Laufzeit mögliche Konfigurierbarkeit der Komponente, an die die selektierten Daten zurückgegeben werden sollen, ist
die Steuerung dieser Komponente ebenfalls dynamisch.
Im Falle der Induktion stammen die Metadaten von MVS:IMVK, die Ergebnisse werden
an AA:DSK übergeben.
AA:BSK Die Basisklassifikator-Selektions-Komponente BSK nimmt im Falle einer inkrementellen Klassifikator-Induktion einen Metadatensatz zur Selektion des zu erweiternden Klassifikators entgegen. Die Selektion wird durch Übergabe des entsprechenden Metadatensatzes an eine Klassifikator-Quelle initiiert. Der empfangene Klassifikator wird
dann an eine durch die übergebenen Metadaten spezifizierte, nachfolgende Komponente
weitergegeben. Die erfolgreiche Übergabe des Klassifikators wird durch Senden einer
quittierenden Nachricht an die initiierende Komponente signalisiert. Auch hier findet
dynamische Steuerung statt.
Während des Ablaufes der Induktion stammen die Metadaten von MVS:IMVK. Die Anfrage nach einem Klassifikator wird an AA:DQ:KR gestellt. Der selektierte Klassifikator
wird dann an AA:(I)IK übergeben, und nach erfolgreicher Übergabe wird eine Bestätigung an MVS:IMVK gesendet.
AA:DQ:KR Die Komponente des Basisklassifikator-Repositories KR nimmt einen Metadatensatz entgegen, selektiert auf dessen Basis einen Klassifikator und gibt diesen an eine
dynamisch durch die Metadaten spezifizierte Komponente zurück.
78
5.1 A BLEITUNG EINER A RCHITEKTUR AUS
DEM
AUSF ÜHRUNGSMODELL
Während des Ablaufes der Induktion stammt die Anfrage von AA:BSK, an die auch der
Klassifikator zurückgegeben wird.
AA:(I)IK Die (Inkrementelle) Induktions-Komponente (I)IK wartet, sofern der auszuführende Ablauf eine Induktion ist, auf die Eingabe eines Metadatensatzes, der die
Induktion eines Klassifikators initiiert und den anzuwendenden Algorithmus parametrisiert. Die zur Induktion benötigten Trainingsdaten und im Falle der inkrementellen
Induktion der zu erweiternde Klassifikator werden ebenfalls von (I)IK entgegengenommen. Der induzierte oder erweiterte Klassifikator wird schließlich an eine nachfolgende Komponente übergeben. Die Steuerung erfolgt dynamisch zur Laufzeit durch die
übergebenen Metadaten, die den Algorithmus parametrisieren und die Datenquellen und
-senken festlegen.
Während des Ablaufes der Klassifikator-Induktion stammen die Metadaten zur Steuerung des Induktions-Prozesses von MVS:IMVK. Die Trainingsdaten wurden von
AA:DSK übergeben. Im Falle einer inkrementellen Induktion wurde zudem durch
AA:BSK ein Basisklassifikator bereitgestellt. Der induzierte Klassifikator wird an
BSI:Ausgabe:VK übergeben.
AA:MLK Die Meta-Lern-Komponente MLK nimmt eine Reihe von Klassifikatoren auf und
speichert diese für den Meta-Lern-Vorgang zwischen. Sind alle Klassifikatoren übergeben, wartet sie auf einen Metadatensatz zur Initiierung des Meta-Lern-Vorganges.
Das erzeugte globale Modell wird einer nachfolgenden Komponente nach Abschluss
des Meta-Lern-Vorganges zur Verfügung gestellt. Die Steuerung erfolgt analog zu den
vorigen Analyse-Komponenten dynamisch.
Im Falle des Ablaufes des Meta-Lernens werden die Klassifikatoren von AA:BSK übergeben und von AA:MLK zwischengespeichert. Nach Empfang der parametrisierenden
Metadaten von MVS:IMVK wird der Meta-Lern-Vorgang initiiert. Das erzeugte globale
Modell wird BSI:Ausgabe:VK zur weiteren Verarbeitung übergeben.
BSI:Ausgabe:VK Die Verwertungs-Komponente VK nimmt den induzierten, erweiterten
Klassifikator oder das globale Modell des Meta-Lerners sowie einen Metadatensatz entgegen. Auf Basis der steuernden Metadaten wird anschließend die Visualisierung oder
die Speicherung des Klassifikators oder globalen Modelles initiiert, indem der Klassifikator oder das globale Modell an eine der beiden nachfolgenden Komponenten weitergereicht wird. Zusätzlich werden Metadaten über die Analyse-Ergebnisse und deren
Verwertung erhoben. Diese können an eine nachfolgende Komponente übergeben werden. Auch hier findet also dynamische Steuerung statt.
Während des Induktions-Ablaufes wird der induzierte bzw. erweiterte Klassifikator oder das globale Modell von AA:(I)IK oder AA:MLK entgegengenommen.
Die von MVS:IMVK entgegen genommenen Metadaten bestimmen nun, ob der
Klassifikator oder das globale Modell an BSI:Ausgabe:Speicherung oder
BSI:Ausgabe:Visualisierung übergeben werden. Die erhobenen Metadaten über den erzeugten oder erweiterten Klassifikator werden der AktualisierungsKomponente MVS:AK übergeben, damit diese in den Datenbestand der jeweiligen
Metadaten-Verwaltungs-/Steuerungs-Komponente eingepflegt werden können und somit für nachfolgende Analysen zur Verfügung stehen.
5.1.2. Architektur zur Anwendung von Klassifikatoren
Die Basis für die Architektur zur Anwendung von Klassifikatoren bilden die in Abschnitt 4.4.2
ausgeführten Überlegungen. Abbildung 5.3 zeigt die Architektur zur Anwendung von Klassifikatoren auf niedriger Abstraktionsebene. Die nachfolgenden Komponenten sind am Ablauf der
79
79
80
K APITEL 5 - A RCHITEKTURENTWURF
Abbildung 5.3.: Architektur der Klassifikator-Anwendung
Klassifikator-Anwendung beteiligt und werden bezüglich ihrer Funktionalität vorgestellt. Sofern eine Komponente bereits in Abschnitt 5.1.1 mit identischer Funktionalität vorkommt, wird
hier auf die erneute Beschreibung der Funktionalität verzichtet und die Komponente lediglich
in ihren Verbindungen zu anderen Komponenten beschrieben.
BSI:Eingabe:BS Verhalten analog zu BSI:Eingabe:BS in Abschnitt 5.1.1.
Während des Ablaufes der Klassifikator-Anwendung werden die vom Benutzer ausgewählten Eingaben und Metadaten zur Ausführung der Analyse an MVS:AMVK übergeben.
BSI:Eingabe:TA Verhalten analog zu BSI:Eingabe:TA in Abschnitt 5.1.1.
Im Falle der Klassifikator-Anwendung werden die Metadaten aus MVS:AMVK selektiert.
MVS:AMVK Die Anwendungs-Metadaten-Verwaltungs-Komponente AMVK extrahiert die
verschiedenen Metadatensätze zur dynamischen Steuerung des Analyse-Ablaufes der
Klassifikator-Anwendung. Der vom Benutzer aus den beiden möglichen AnwendungsAbläufen ausgewählte Ablauf bestimmt folgend die weiteren Schritte der Durchführung
der Analyse.
• Naive Klassifikator-Anwendung: Der Datensatz zur Selektion der zu klassifizierenden Instanzen wird parallel mit dem Datensatz zur Selektion des anzuwendenden Klassifikators an die jeweilige Selektions-Komponente übergeben. Sobald die Instanz-Daten bzw. der Klassifikator an der Klassifikations-Komponente
AA:KK anliegen, senden die jeweilig verantwortlichen Selektions-Komponenten
eine Bestätigung an MVS:AMVK. Darauf folgend kann dann der Datensatz zur Parametrisierung des Klassifikations-Algorithmus an AA:KK übergeben und somit
die Klassifikation initiiert werden.
• Klassifikation durch Selection-Graph-Ableitung: Der Datensatz zur Selektion
des anzuwendenden Klassifikators wird zusammen mit der Information, den selektierten Klassifikator an AA:SGAK zu senden, an AA:BSK übergeben. Nach Emp-
80
5.1 A BLEITUNG EINER A RCHITEKTUR AUS
DEM
AUSF ÜHRUNGSMODELL
fang der Bestätigung von AA:BSK, den Klassifikator erfolgreich an AA:SGAK ausgeliefert zu haben, wird die Methode der Selection-Graph-Ableitungs-Komponente
AA:SGAK zur Wandlung des Klassifikators aufgerufen.
MVS:AK Verhalten analog zu MVS:AK in Abschnitt 5.1.1.
Bei der Klassifikator-Anwendung werden die Metadaten, die von BSI:Ausgabe:VK
übermittelt wurden, in den Datenbestand von MVS:AMVK eingepflegt.
AA:DSK Verhalten analog zu AA:DSK in Abschnitt 5.1.1.
Während des Ablaufes der Anwendung eines Klassifikators werden anstelle der Trainingsdaten hier die zu klassifizierenden Instanzen selektiert und an AA:KK übergeben.
Die Bestätigung der erfolgreichen Auslieferung der Instanz-Daten wird an MVS:AMVK
gesandt, von wo auch die Metadaten zur Selektion kamen.
AA:DQ:ID Verhalten analog zu AA:DQ:TD in Abschnitt 5.1.1.
Im Falle der Anwendung eines Klassifikators werden hier die zu klassifizierenden Instanzen und nicht Trainingsdaten selektiert. Zusätzlich ist hier das Verhalten in Abhängigkeit
des durchzuführenden Ablaufes zu unterscheiden:
• Naive Klassifikator-Anwendung: Die selektierten Instanzen werden an AA:DSK
zurückgegeben.
• Klassifikation durch Selection-Graph-Ableitung: Die selektierte InstanzenMenge, die eine Zielklasse der Klassifikation darstellt, wird an AA:DBAGK zurückgegeben.
AA:BSK Verhalten analog zu AA:BSK in Abschnitt 5.1.1.
Während des Ablaufes der Anwendung eines Klassifikators wird der anzuwendende
Klassifikator selektiert und in Abhängigkeit des auszuführenden Tasks weitergegeben:
• Naive Klassifikator-Anwendung: Der selektierte Basisklassifikator wird an
AA:KK übergeben.
• Klassifikation durch Selection-Graph-Ableitung: Der selektierte Basisklassifikator wird an AA:SGAK übergeben.
Die Bestätigung der erfolgreichen Auslieferung des anzuwendenden Klassifikators an
eine der beiden nachfolgenden Komponenten wird anschließend an MVS:AMVK gesandt.
AA:DQ:KR Verhalten analog zu AA:DQ:KR in Abschnitt 5.1.1.
Im Falle der Anwendung eines Klassifikators stammen die Metadaten zur Selektion eines Klassifikators ebenfalls von AA:BSK, und der Klassifikator wird ebenfalls an diese
Komponente zurückgegeben.
AA:KK Die Klassifikations-Komponente KK nimmt einen Klassifikator, eine Menge zu klassifizierender Instanz-Daten und eine parametrisierende Metadatenmenge entgegen. Die
Klassifikation wird ausgeführt, und die Ergebnisklassen werden an eine nachfolgende
Komponente zur weiteren Verarbeitung übergeben. Die Steuerung erfolgt dynamisch.
Während des Ablaufes der Klassifikator-Anwendung stammen die Instanz-Daten von
AA:DSK, der Klassifikator von AA:BSK und die erzeugten Ergebnisdatenmengen werden an BSI:VK zur weiteren Verarbeitung übergeben.
AA:SGAK Die Selection-Graph-Ableitungs-Komponente SGAK nimmt einen Basisklassifikator, aus dem der Selection Graph abgeleitet werden soll, entgegen. Die abgeleiteten
81
81
82
K APITEL 5 - A RCHITEKTURENTWURF
Selection Graphs werden an eine nachfolgende Komponente weitergegeben, die diese
weiterverarbeiten kann. Die Steuerung dieser Komponente erfolgt statisch.
Im Falle der Anwendung eines Klassifikators wird der Aufruf zur Ableitung der Selection Graphs von MVS:AMVK entgegengenommen. Der Basisklassifikator stammt von
AA:BSK und die erzeugte Selection-Graph-Menge wird an AA:DBAGK weitergegeben,
die daraus Datenbankabfragen generieren kann.
AA:DBAGK Die Datenbank-Abfrage-Generierungs-Komponente DBAGK nimmt einen Metadatensatz zur Steuerung des Ablaufes sowie eine Menge von Selection Graphs entgegen.
Sie wandelt die Selection Graphs in Datenbank-Abfragen. Diese Abfragen können dann
auf eine relationale Datenbank angewendet werden, um eine Klassifikation der darin enthaltenen Instanz-Datensätze durchzuführen. Die Lokalisierung der Datenbank, auf der
die Abfragen ausgeführt werden sollen, erfolgt mittels des entgegengenommenen Metadatensatzes. Dieser Ablauf ist in einen dynamischen Rahmen eingebettet.
Im Falle der Anwendung eines Klassifikators werden die Selection Graphs von
AA:SGAK entgegengenommen. Die erzeugten Datenbankabfragen werden auf
AA:DQ:ID angewandt. Nach erfolgreicher Anfrage an AA:DQ:ID und Empfang der
Ergebnisse der Abfrage wird eine Bestätigung an MVS:AMVK übergeben. Sind alle
Abfragen erfolgreich gestellt worden, so sendet DBAGK eine spezielle Bestätigung, die
MVS:AMVK signalisiert, dass alle Zielklassen selektiert wurden. Diese werden dann als
Klassifikationsergebnis an BSI:Ausgabe:VK übergeben.
BSI:Ausgabe:VK Die Verwertungs-Komponente VK nimmt eine Menge von Klassifikationsergebnissen entgegen. Anschließend werden die Ergebnisse an eine nachfolgende
Komponente zur Weiterverarbeitung übergeben. Die Steuerung erfolgt dynamisch über
einen von MVS:AMVK übergebenen Metadatensatz, der die weitere Verarbeitung der
übergebenen Ergebnisse steuert.
Im Falle der Anwendung eines Klassifikators verhält sich diese Komponente in
Abhängigkeit des durchzuführenden Ablaufes wie folgt:
• Naive Klassifikator-Anwendung: Die Verwertungs-Komponente VK nimmt die
Klassifikationsergebnisse von AA:KK sowie einen Metadatensatz zur Bestimmung
der weiteren Verarbeitung der Ergebnisse entgegen. Entsprechend der dynamisch
steuernden Metadaten werden die Ergebnisse einer nachfolgenden Komponente zur
Visualisierung oder Speicherung übergeben.
• Klassifikation durch Selection-Graph-Ableitung: Die Verwertungs-Komponente
VK nimmt die Ergebnismengen der Klassifikator-Anwendung von AA:DBAGK sowie einen Metadatensatz von MVS:AMVK entgegen. Der Metadatensatz bestimmt
die Weiterverarbeitung der Zielklassen, die von einer nachfolgenden Komponente
visualisiert oder der Speicherung zugeführt werden können.
Unabhängig vom durchzuführenden Ablauf werden noch Metadaten über die AnalyseErgebnisse erzeugt und an MVS:AK übergeben. Dieser Vorgang unterliegt statischer
Steuerung.
5.1.3. Architektur zur Wartung von Klassifikatoren
Die Basis für die Architektur zur Wartung von Klassifikatoren bilden die in Abschnitt 4.4.3
ausgeführten Überlegungen. Abbildung 5.4 zeigt die Architektur zur Wartung von Klassifikatoren auf niedriger Abstraktionsebene. Die Klassifikator-Wartung unterscheidet sich von der
Induktion nur in zwei zusätzlich vorhandenen Komponenten:
82
5.1 A BLEITUNG EINER A RCHITEKTUR AUS
DEM
AUSF ÜHRUNGSMODELL
Abbildung 5.4.: Architektur der Klassifikator-Wartung
MVS:GU Die Globale Uhr GU dient der einheitlichen Zeitgebung für das gesamte ReKlaMeSystem. Auf Basis einer globalen Uhr soll allen Komponenten an allen verteilten Stellen
im ReKlaMe-System eine einheitliche Zeit zur Verfügung stehen, anhand derer eine Zeitstempelung erfolgen kann. Diese globale Zeit wird beispielsweise von AA:IVK benötigt,
um einen zu wartenden Klassifikator mit einem Zeitstempel als ungültig zu markieren.
Der Zugriff erfolgt über den Aufruf einer Methode zur Abfrage der Zeit. Die Methode sendet dann eine Nachricht zurück, die die aktuelle Zeit in einem entsprechenden
Format beinhaltet. Aufgrund der Komplexität der Schaffung einer exakten Zeitübergabe über ein asynchrones Netzwerk wird hier nicht gefordert, dass die Zeitübergabe in
Realzeitbedingungen erfolgt. Vielmehr wird diese Komponente prototypisch entworfen
und implementiert, da die Schaffung einer genauen Zeitübergabe innerhalb eines asynchronen Netzwerkes den Rahmen dieser Arbeit übersteigt. Für den weiteren Verlauf wird
angenommen, dass GU über eine Methode verfügt, die in der Lage ist, ohne Zeitverlust
die aktuelle Zeit an anfragende Komponenten zu übergeben.
AA:IVK Die Invalidierungs-Komponente AA:IVK dient der Invalidierung von Klassifikatoren
oder globalen Modellen, die im Ablauf der Wartung neu erzeugt oder erweitert werden.
Vor der erneuten Induktion eines Klassifikators anhand von neuen Trainingsdatensätzen
oder der erneuten Ableitung eines globalen Modelles aus einer Menge von Basisklassifikatoren durch einen Meta-Lerner wird der aktuelle Klassifikator durch einen Zeitstempel von AA:IVK ungültig gestempelt. Den dazu benötigten Zeitstempel kann AA:IVK
anhand der Daten der Abfrage der globalen Zeit von MVS:GU erzeugen. Der anschließend neu generierte Klassifikator wird ins Klassifikator-Repository eingefügt und kann
anhand seines fehlenden Transaktionszeitende-Stempels (TZE) als aktuell identifiziert
werden.
Sonstige Abläufe und Komponenten verlaufen analog zur Klassifikator-Induktion, die in Abschnitt 5.1.1 ausführlich beschrieben wurde.
83
83
84
K APITEL 5 - A RCHITEKTURENTWURF
5.1.4. Zusammenführung der Architekturen zur Induktion, Anwendung
und Wartung
Nachdem in den vorigen Abschnitten die Architekturen für die Induktion, die Anwendung und
die Wartung von Klassifikatoren aus dem in Kapitel 4 konzeptionierten Ausführungsmodell
abgeleitet wurden, erfolgt nun deren Zusammenführung zu einer Gesamt-Architektur, die das
ReKlaMe-Projekt beschreiben wird.
Abbildung 5.5.: Gesamt-Architektur des ReKlaMe-Projektes
Die zusammengeführte Architektur ist in Abbildung 5.5 dargestellt. Komponenten, die in mehr
als einem der vorhergehenden Architekturen der einzelnen Analyse-Abläufe auftreten, oder
solche, die Spezialisierungen einer abstrakten Komponente sind, werden in abstrakten Komponenten zusammengefasst. Weiterhin ergibt sich im Bereich der abstrakten Komponenten die
Möglichkeit der Erweiterbarkeit der gesamten Architektur, indem einer abstrakten Komponente neue Implementationen mit anderer oder erweiterter Funktionalität hinzugefügt werden.
So ist die Gesamt-Architektur durch Implementation entsprechender Komponenten um neue
Analyse-Abläufe erweiterbar. Folgende Komponenten können als abstrakt identifiziert werden:
Metadaten-Verwaltungs-/Steuerungs-Komponente MVS:MVSK Die
Komponente zur Metadatenverwaltung und Steuerung beinhaltet die jeweiligen MetadatenVerwaltungs-/Steuerungs-Komponenten (MVSK) der drei Analyse-Abläufe. Jede dieser
drei MVSK erhält von der Task-Analyse BSI:Eingabe:TA die aus den Benutzereingaben extrahierten Metadaten zur Steuerung des jeweiligen Analyse-Ablaufes und
isoliert diese voneinander. Zu dem Zeitpunkt, zu dem sie dann an einer Komponente
zur Durchführung der Analyse benötigt werden, werden sie dann an die entsprechende
Komponente übermittelt. Zusätzlich übernimmt diese Komponente die Steuerung der
Abläufe der Analyse-Komponenten.
Klassifikator-Verarbeitung AA:KV In dieser abstrakten Komponente werden die Komponenten zur Implementierung der Analyse-Algorithmen zur Induktion und Anwendung
von Klassifikatoren zusammengefasst, da die angebundenen Komponenten identisch
sind. Sie unterscheiden sich in der Übergabe von Trainingsdaten an die Induktions- und
84
5.2 E RWEITERUNG DER G ESAMT-A RCHITEKTUR UM
DEN
A SPEKT
DER
V ERTEILTHEIT DER KOMPONENTEN
Instanzdaten an die Klassifikations-Komponente sowie in dem die Analyse steuernden
Metadatensatz. Bezüglich der Ausgabe werden im Falle der Induktion Klassifikatoren,
im Falle der Klassifikation Zielklassen an BSI:Ausgabe:VK übergeben.
Ergebnis-Verarbeitung BSI:Ausgabe:EV Die Ergebnis-Verarbeitung beinhaltet zwei
implementierende Komponenten zur Ergebnis-Verarbeitung: eine Komponente dient
der Speicherung von Ergebnisdaten, eine weitere der Visualisierung und Präsentation
gegenüber einem Benutzer. Hier sind die angebundenen Komponenten sowie die Signaturen identisch, und eine Erweiterung der Gesamt-Architektur ist durch Implementation
weiterer Komponenten mit anderer oder erweiterter Funktionalität möglich.
Neben den abstrakten Komponenten sind die in den vorhergehenden Architekturen beschriebenen Komponenten übernommen worden. Ihre Funktionalität gleicht den in den Abschnitten
5.1.1, 5.1.2 und 5.1.3 beschriebenen Funktionalitäten.
5.2. Erweiterung der Gesamt-Architektur um den Aspekt der
Verteiltheit der Komponenten
Aufgrund der gewählten J2EE-EJB-Technologie bedarf es zur Erweiterung der abgeleiteten
Gesamt-Architektur auf ein verteiltes Szenario keiner zusätzlichen Komponenten. Die Funktionalität zur Unterstützung von Verteiltheit muss vielmehr bei der Konzeptionierung der bereits vorhandenen Komponenten und deren Verbindungen untereinander berücksichtigt werden. Die EJB-Architektur ermöglicht die Schaffung von verteilten Komponenten, die untereinander Zugriff auf ihre Methoden, Zustände und Daten erlauben. Dazu stehen Stubs in Form von
Home- und Remote-Interface Verfügung, die es einer Komponente ermöglichen, die Dienste einer anderen Komponente zu nutzen. Um die Schaffung und Umsetzung der KommunikationsInfrastruktur muss sich der Entwickler dabei nicht kümmern, da diese durch die Dienste des
EJB-Containers (siehe dazu Abschnitt 3.5.3) bereits gegeben ist. Ausführliche Informationen
über die EJB-Architektur und deren Kommunikationsstrukturen finden sich in [MH02] sowie
in Abschnitt 3.5 und in Anhang B.2.
Um eine Induktion, Anwendung oder Wartung eines Klassifikators auf Grundlage verteilter
Datenquellen durchführen zu können, bedarf es der Zugriffsmöglichkeit auf verschiedene, verteilte Datenquellen durch die Komponenten DSK und BSK. Auch die an der Analyse beteiligten
Komponenten müssen es ermöglichen, von verteilt vorliegenden MVK zugreifbar zu sein und
Daten von verteilt vorliegenden DSK oder BSK entgegen nehmen zu können. Zusätzlich können
Datenbankabfragen von DBAGK auf Basis von Selection Graphs von SGAK eines anderen Systemes erzeugt und auf die Datenquelle eines dritten Systemes angewandt werden.
Die Erweiterung der Architektur für ein verteiltes Szenario bedarf somit sowohl der Schaffung
einer Kommunikation zwischen den Komponenten als auch der Ermöglichung des Zugriffes
auf die Methoden der verteilten Komponenten durch entfernte Komponenten. Da der Einsatz
der EJB-Architektur in Abschnitt 3.4 beschlossen wurde, kann die Unterstützung von Verteiltheit durch die Implementation der Komponenten als EJBs erreicht werden, die die eingangs
erwähnten Möglichkeiten des Zugriffes auf Dienste verteilter Komponenten ermöglichen. Die
Steuerung und Lokalisierung der anzusprechenden, verteilten Komponenten muss anhand der
Metadaten durchführbar sein. Die Aufteilung der an einer Analyse beteiligten Komponenten
muss über die Metadaten durch den Benutzer oder das System bestimmt werden können. Durch
eine entsprechende Modellierung der Metadatenformate ist dieses Ziel umsetzbar. Die Konzeptionierung dieser Metadaten-Formate wird in Kapitel 6 durchgeführt werden.
85
85
86
K APITEL 5 - A RCHITEKTURENTWURF
Z ENTRALE KOMPONENTE
D EZENTRALE KOMPONENTE
• BSI:Eingabe:TA
• AA:BSK
• MVS:MVSK(={AMVK,IMVK,WMVK})
• AA:DSK
• AA:IVK
• AA:KV(={(I)IK,KK})
• BSI:Ausgabe:VK
• AA:ML
• BSI:Ausgabe:EV(={S,V})
• AA:SGAK
• MVS:GU
• AA:DBAGK
• AA:DQ:{ID,KE,KR,TD}
Tabelle 5.1.: Einteilung der Komponenten der ReKlaMe-Gesamt-Architektur in zentral und dezentral angebundene Komponenten
Die Aufteilung der Komponenten der ReKlaMe-Gesamt-Architektur in zentral und dezentral
angebundene Komponenten innerhalb der ReKlaMe-Analyse-Abläufe ist in Tabelle 5.1 aufgezeigt. Sie richtet sich nach der geforderten Funktionalität der Architektur. Dabei werden
dezentrale Komponenten mehrfach innerhalb der Gesamt-Architektur an jedem Ort in einer Instanz vorgehalten. Somit wird es an jedem Ort ermöglicht, autonom Analysen durchführen zu
können. Zentral angebundene Komponenten liegen zusätzlich zu den verteilten Orten noch zentral vor. Somit ist es auch möglich, Analyse-Abläufe auf verteilten Datenquellen mit verteilten
Analyse-Komponenten durchzuführen, die zentral gesteuert werden können.
5.3. Zusammenfassung
Nachdem in Kapitel 4 ein Ausführungsmodell für Analysen im ReKlaMe-Kontext entworfen
wurde, erfolgte in Abschnitt 5.1 daraus die Ableitung einer Architektur, zunächst auf hoher
Abstraktionsebene. Anschließend wurde in Abschnitt 5.1.1 die Architektur für den AnalyseAblauf der Klassifikator-Induktion auf niedriger Abstraktionsebene aus der in Abschnitt 4.4.1
konzeptionierten operationalisierten Beschreibung des Ablaufes der Klassifikator-Induktion
abgeleitet. Analog zu diesem Vorgehen wurden in den Abschnitten 5.1.2 und 5.1.3 partielle Architekturen zur Anwendung und Wartung von Klassifikatoren auf niedriger Abstraktionsebene
aus den in den Abschnitten 4.4.2 und 4.4.3 konzeptionierten operationalisierten Beschreibungen der Abläufe der Anwendung und Wartung von Klassifikatoren abgeleitet. Dabei wurden
eine Globale Uhr und eine Aktualisierungs-Komponente als zusätzlich benötigte Hilfskomponenten entworfen und in der Architektur positioniert.
Diese drei abgeleiteten Architekturen wurden anschließend zu einer Gesamt-Architektur auf
niedriger Abstraktions-Ebene zusammengefügt. Diese Gesamt-Architektur beschreibt alle drei
in ReKlaMe durchführbaren Analyse-Abläufe zur Induktion, Anwendung und Wartung von
Klassifikatoren, jedoch ohne den Aspekt der Verteiltheit zu berücksichtigen. Diese Erweiterung
um den Aspekt der Verteiltheit von Datenquellen und Analyseschritten wurde abschließend in
Abschnitt 5.2 durchgeführt.
Insgesamt wurden damit die Schritte der objektorientierten Analyse (OOA), die ObjektBeschreibungen, durchgeführt und in Form der aus dem Ausführungsmodell abgeleiteten
Gesamt-Architektur umgesetzt, so dass im folgenden Kapitel das objektorientierte Design
(OOD) der ReKlaMe-Architektur erfolgen kann.
86
6. Softwaretechnischer Entwurf des
ReDiCAt Systemes
Durch den Entwurf der Architektur und der darin enthaltenen Komponenten in Kapitel 5 wurde der Schritt der objektorientierten Analyse abgeschlossen. Es folgt das objektorientierte Design der Architektur. Dazu bedarf es der konkreten Konzeptionierung der Metadaten-Formate
zur Steuerung, Parametrisierung und zur Repräsentation der Daten der ReKlaMe-Architektur.
Dies umfasst die Metadaten, die beispielsweise die Basisklassifikator- oder die TrainingsdatenSelektion steuern oder die Parametrisierung der verwendeten Algorithmen übernehmen. Nach
der Konzeptionierung der Metadaten-Formate folgt das objektorientierte Design der Komponenten, aus denen die Architektur besteht. Die zu implementierende Software wird den Namen
ReDiCAt tragen. Das Akronym steht für ReKlaMe Distributed Classification Architecture.
Dieses Kapitel gliedert sich in vier Abschnitte: Abschnitt 6.1 befasst sich mit der Konzeptionierung und dem Design der Metadaten, die den Kontroll- und Datenfluss innerhalb der
Architektur umsetzen. Die verschiedenen Metadaten-Formate, die zur Durchführung der durch
die Architektur ermöglichten Analysen benötigt werden, werden der Reihe nach betrachtet und
konzeptioniert. Diese Betrachtungen erfolgen detailliert, um die Korrelation zwischen den in
Kapitel 4 dargestellten Formalisierungen der Analyse-Abläufe und den geplanten MetadatenFormaten in der Implementierung verdeutlichen zu können. Darauf folgend findet in Abschnitt
6.2 das objektorientierte Design der Komponenten statt, aus denen die Architektur besteht.
Die Komponenten werden unter Berücksichtigung ihrer Attribute und Methoden als Klassen
in Klassendiagrammen dargestellt. Eine detaillierte Beschreibung der Methoden und Attribute
der Komponentenklassen erfolgt nicht, hier sei auf das Javadoc verwiesen, welches unter
http://www.miaundpeppi.de/ReDiCAt/ einzusehen ist. Vielmehr erfolgt in diesem
Abschnitt die Beschreibung der Abbildung des Problemes auf die ausgewählte Architektur.
In Abschnitt 6.3 folgt schließlich die Beschreibung der Methodenaufrufe zur Durchführung
der Analyse-Abläufe in Form von Sequenz-Diagrammen. So befasst sich dieser Abschnitt mit
der Beschreibung des Zusammenspieles der verteilten Komponenten sowie der Kontroll- und
Datenflüsse zwischen den Komponenten. Abschließend wird in Abschnitt 6.4 eine Zusammenfassung der in diesem Kapitel erarbeiteten Ergebnisse gegeben.
6.1. Objektorientiertes Design der Metadatenformate
Die in Abbildung 5.5 dargestellte Architektur besteht aus verschiedenen Komponenten, die
miteinander kommunizieren müssen, um die abgebildeten Analyse-Abläufe umsetzen zu
können. Verschiedene Metadaten sind für die Steuerung der Selektion von Klassifikatoren
und Datensätzen vonnöten. Auch die Analyse-Algorithmen, die durch die Komponenten des
Analyse-Ablaufes umgesetzt werden, können durch Metadaten parametrisiert werden. Daher
werden diese im Folgenden im Rahmen des objektorientierten Designs entworfen und umgesetzt. Metadaten werden in dieser Art als abstrakte Datentypen (im Folgenden nur ADT
genannt) in Form von Java-Interfaces umgesetzt, zu denen jeweils eine prototypische Implementierung durchgeführt wird. Dazu werden die Metadaten in atomare Metadatenmengen aufgeteilt, für die dann jeweils ein Interface als abstrakter Datentyp entworfen wird. Aus
87
88
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
diesen Datentypen werden dann die für die einzelnen Komponenten benötigten MetadatenPakete zusammengesetzt. Daher folgt der weitere Verlauf dieses Abschnittes dieser Gliederung: zunächst werden in Abschnitt 6.1.1 die atomaren ADT-Interfaces und deren prototypische
Implementierungen vorgestellt. Anschließend werden in Abschnitt 6.1.2 die Interfaces sowie
deren prototypische Implementierungen zur Repräsentation der Kontrollflüsse der ArchitekturKomponenten aufgeführt, bevor in Abschnitt 6.1.3 die Interfaces und deren prototypische Implementierungen zur Repräsentation der parametrisierenden Metadatenmengen für die eingesetzten Analyse-Algorithmen entworfen werden. Für alle nachfolgenden Abschnitte gelte, dass
get<Attribut>()- und set<Attribut>()-Methoden nicht aufgeführt werden. Für jedes Attribut sei vorgegeben, dass eine get<Attribut>()- und eine set<Attribut>()Methode existiert. Im Falle der Interface-Beschreibungen werden die get<Attribut>()und set<Attribut>()-Methoden hingegen aufgeführt, da sie durch die Implementierungen umgesetzt werden müssen. Weiter gelte, dass alle Interfaces und Klassen, die ADT implementieren, vom Interface java.io.Serializable abgeleitet werden. Dies hat den Grund,
dass sie somit als serialisierte Objekte über Nachrichtenkanäle der EJB-Architektur kommuniziert werden können, um an verteilt vorliegende Komponenten übergeben werden zu können.
6.1.1. Interfaces und prototypische Implementierungen der abstrakten
Datentypen
Um die atomaren Daten-Entitäten beschreiben zu können, werden diese in Form von ADT
in Interfaces definiert. Zur Demonstration der Funktionalität der ReDiCAt-Architektur erfolgt
anschließend eine prototypische Implementierung dieser Interfaces. Folgend werden die zu
den identifizierten ADT entworfenen Interfaces und deren prototypische Implementierungen
im Rahmen eines Feinentwurfes dargestellt.
ClassificationTask (Interface)
Beschreibung Modelliert die Metadatenmenge zur Kontrolle des Ablaufes einer
Klassifikator-Anwendung.
Superinterfaces Task.java
Subinterfaces Implementierungen SimpleClassificationTask.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getAlgorithmComponentAddress(): gibt
die Adresse der Komponente zurück, die den Analyse-Algorithmus implementiert, der die Klassifikation durchführt.
• void setAlgorithmComponentAddress(ComponentAddress
algorithmComponentAddress): setzt die Adresse der Komponente,
die den Analyse-Algorithmus implementiert, der die Klassifikation durchführt,
auf den Parameter algorithmComponentAddress.
• ComponentAddress getBSKAddress(): gibt die Adresse der Komponente zurück, die die Basisklassifikator-Selektion durchführt.
• void setBSKAddress(ComponentAddress BSKAddress): setzt
die Adresse der Komponente, die die Basisklassifikator-Selektion durchführt,
auf den Parameter BSKAddress.
• ClassificationMetadata
getClassificationMetadataSet(): gibt die Metadaten
zurück, die die Komponente zur Klassifikator-Anwendung parametrisieren.
88
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
89
• void setClassificationMetadataSet(
ClassificationMetadata
classificationMetadataSet): setzt die Metadaten, die die Komponente zur Klassifikator-Anwendung parametrisieren, auf
den Parameter classificationMetadataSet.
• Classifier getClassifier(): gibt den bei der Klassifikation auf die
Instanzdaten anzuwendenden Klassifikator zurück.
• void setClassifier(Classifier classifier): setzt den bei
der Klassifikation auf die Instanzdaten anzuwendenden Klassifikator auf den
Parameter classifier.
• DBAGKMetadata getControlDBAGK(): gibt die Metadaten zur
Kontrolle der Komponente DBAGK der ReDiCAt-Architektur zur
Datenbankabfrage-Generierung aus Selection Graphs zurück.
• void setControlDBAGK(DBAGKMetadata controlDBAGK):
setzt die Metadatenmenge zur Kontrolle der Komponente DBAGK der
ReDiCAt-Architektur zur Generierung von Datenbank-Abfragen aus Selection Graphs auf den Parameter controlDBAGK.
• ComponentAddress getDSKAddress(): gibt die Adresse der Komponente zurück, die die Instanzdaten-Selektion durchführt.
• void setDSKAddress(ComponentAddress DSKAddress): setzt
die Adresse der Komponente, die die Instanzdaten-Selektion durchführt, auf
den Parameter DSKAddress.
• DSKMetadata getInstanceDataSet(): gibt die Metadaten zur Selektion der Instanzdatenmenge durch die DSK-Komponente zurück, die klassifiziert werden soll.
• void setInstanceDataSet(
DSKMetadata instanceDataSet): setzt die Metadaten zur
Selektion der Instanzdatenmenge, die klassifiziert werden soll, auf den Parameter instanceDataSet.
• java.lang.String getTaskName(): gibt eine String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes zurück.
• void setTaskName(java.lang.String taskName): setzt die
String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes auf
den Parameter taskName.
• VKMetadata getUtilisation(): gibt die Metadaten zurück, die die
weitere Verwendung der erzeugten ContentResource-Objekte beschreibt.
• void setUtilisation(VKMetadata utilisation): setzt die
Metadaten, die die weitere Verwendung der erzeugten ContentResourceObjekte beschreibt, auf den Parameter utilisation.
Classifier (Interface)
Beschreibung Modelliert einen Klassifikator.
Superinterfaces ContentResource.java
Subinterfaces Implementierungen SimpleClassifier.java
Methoden Folgende Methoden müssen implementiert werden:
• DataSet getData(): gibt die prototypische Datenmenge, die einen
Klassifikator repräsentiert, zurück.
89
90
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• void setData(DataSet data): setzt die prototypische Datenmenge,
die einen Klassifikator repräsentiert, auf den Parameter data.
• ClassifierLocation getLocation(): gibt die Beschreibung des
Ortes zurück, an dem ein Klassifikator gespeichert ist.
• void setLocation(ClassifierLocation location):
setzt
den Ort, an dem ein Klassifikator gespeichert ist, auf den Parameter
location.
• TimestampMetadata getTimestamps():
→ siehe ContentResource.
• void setTimestamps(TimestampMetadata timestamps):
→ siehe ContentResource.
ClassifierLocation (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung des Zugriffes auf
einen Klassifikator.
Superinterfaces ContentResourceLocation.java
Subinterfaces Implementierungen SimpleClassifierLocation.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getDataSourceMD(): gibt die Adresse der
Komponente zurück, die die Datenquelle beinhaltet, in der der Klassifikator gespeichert ist.
• void setDataSourceMD(ComponentAddress dataSourceMD):
setzt die Adresse der Komponente, die die Datenquelle beinhaltet, die den
Klassifikator speichert, auf den Parameter dataSourceMD.
• java.lang.String getUserName(): gibt den Benutzernamen für
den Zugriff auf die Datenquelle an, in der der Klassifikator gespeichert ist.
• void setUserName(java.lang.String userName): setzt den
Benutzernamen für den Zugriff auf die Datenquelle, in der der Klassifikator
gespeichert ist, auf den Parameter userName.
• java.lang.String getUserPassword(): gibt das Passwort für den
Zugriff auf die Datenquelle an, in der der Klassifikator gespeichert ist.
• void setUserPassword(java.lang.String userPassword):
setzt das Passwort für den Zugriff auf die Datenquelle, in der der Klassifikator
gespeichert ist, auf den Parameter userPassword.
ComponentAddress (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Adressierung einer Komponente
der ReDiCAt-Architektur. Über diese Adresse wird es ermöglicht, eine Komponente in einem EJB-Container aufzufinden.
Superinterfaces Subinterfaces Implementierungen SimpleComponentAddress.java
Methoden Folgende Methoden müssen implementiert werden:
• java.lang.String getComponentName(): gibt den Namen der
Komponente als String zurück.
• void setComponentName(java.lang.String componentName):
setzt den Namen der Komponente auf den Parameter componentName.
90
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
91
ContentResource (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung von inhaltlichen
Ressourcen innerhalb der ReDiCAt-Architektur. Zu diesen Ressourcen zählen
Klassifikatoren, Klassifikationsergebnisse und Datenmengen bestehend aus selektierten Datensätzen.
Superinterfaces
Subinterfaces Classifier.java, ResultDataSet.java, SelectedDataSet.java
Implementierungen SimpleClassifier.java, SimpleResultDataSet.java, SimpleSelectedDataSet.java
Methoden Folgende Methoden müssen implementiert werden:
• TimestampMetadata getTimestamps(): gibt ein Objekt zur Speicherung von Transaktions- und Gültigkeitszeitstempeln zurück.
• void setTimestamps(TimestampMetadata timestamps):
setzt ein Objekt von Transaktions- und Gültigkeitszeitstempeln auf den Parameter timestamps.
ContentResourceLocation (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung des Zugriffes auf
eine Datenquelle/-senke. Um auf eine Datenquelle oder Datensenke zugreifen zu
können, wird die Adresse der Komponente, die die Datenquelle oder Datensenke
beherbergt, benötigt.
Superinterfaces Subinterfaces ClassifierLocation.java, ResultDataSetLocation.java
Implementierungen SimpleClassifierLocation.java, SimpleContentResourceLocation.java, SimpleResultDataSetLocation.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getDataSourceMD(): gibt die Adresse der
Komponente, die die Datenquelle beinhaltet, zurück.
• void setDataSourceMD(ComponentAddress dataSourceMD):
setzt die Adresse der Komponente, die die Datenquelle beinhaltet, auf den Parameter dataSourceMD.
DataSet (Interface)
Beschreibung Modelliert eine abstrakte Entität zur Speicherung von Daten jeglicher
Art.
Superinterfaces Subinterfaces Implementierungen SimpleDataSet.java
Methoden Folgende Methoden müssen implementiert werden:
• java.util.Properties getDescription(): gibt die Beschreibungen eines Datensatzes in Form eines Properties-Objektes mit
Schlüssel-Wert-Paaren zurück. Diese kann genutzt werden, um eine
ContentResource wie einen Klassifikator oder ein Klassifikationsergebnis zu beschreiben und referenzierbar zu machen.
91
92
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• void setDescription(java.util.Properties description):
setzt die Beschreibungen eines Datensatzes in Form eines Properties-Objektes
mit Schlüssel-Wert-Paaren auf den Parameter description. Diese kann
genutzt werden, um eine ContentResource wie einen Klassifikator oder
ein Klassifikationsergebnis zu beschreiben und referenzierbar zu machen.
InductionTask (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Kontrolle des Ablaufes einer
Klassifikator-Induktion.
Superinterfaces Task.java
Subinterfaces Implementierungen SimpleInductionTask.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getAlgorithmComponentAddress(): gibt
die Adresse der Komponente zurück, die den Analyse-Algorithmus implementiert, der die Klassifikator-Induktion durchführt.
• void setAlgorithmComponentAddress(ComponentAddress
algorithmComponentAddress): setzt die Adresse der Komponente,
die den Analyse-Algorithmus implementiert, der die Klassifikator-Induktion
durchführt, auf den Parameter algorithmComponentAddress.
• java.util.Vector getBSKAddresses(): gibt die Adressen der
Komponenten zurück, die die Basisklassifikator-Selektionen durchführen. Die
selektierten Basisklassifikatoren werden für den Analyseschritt der inkrementellen Klassifikator-Induktion oder für den Analyseschritt des Meta-Lernens
benötigt. Das Vector-Objekt beinhaltet ComponentAddress-Objekte zur
Beschreibung der Komponenten, die die Basisklassifikatoren beinhalten.
• void setBSKAddresses(java.util.Vector BSKAddresses):
setzt die Adressen der Komponenten, die die Basisklassifikator-Selektion
durchführen, auf den Parameter BSKAddress. Die selektierten Basisklassifikatoren werden für den Analyseschritt der inkrementellen KlassifikatorInduktion oder für den Analyseschritt des Meta-Lernens benötigt. Das
Vector-Objekt beinhaltet ComponentAddress-Objekte zur Beschreibung der Komponenten, die die Basisklassifikatoren beinhalten.
• Vector getClassifierSet(): gibt die Metadaten zur Selektion
der bei der inkrementellen Klassifikator-Induktion oder beim Meta-Lernen
benötigten Klassifikatoren zurück.
• void setClassifierSet(
java.util.Vector classifierSet): setzt die Metadaten zur Selektion der bei der inkrementellen Klassifikator-Induktion
oder beim Meta-Lernen benötigten Klassifikatoren auf den Parameter
classifierSet.
• ComponentAddress getDSKAddress(): gibt die Adresse der Komponente zurück, die die Trainingsdaten-Selektion durchführt.
• void setDSKAddress(ComponentAddress DSKAddress): setzt
die Adresse der Komponente, die die Trainingsdaten-Selektion durchführt, auf
den Parameter DSKAddress.
• InductionMetadata getInductionMetadataSet(): gibt die
Metadaten zurück, die die Komponente zur Klassifikator-Induktion parametrisieren.
92
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
93
• void setInductionMetadataSet(
InductionMetadata inductionMetadataSet): setzt
die Metadaten, die die Komponente zur Klassifikator-Induktion parametrisieren, auf den Parameter inductionMetadataSet.
• java.lang.String getTaskName(): gibt eine String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes zurück.
• void setTaskName(java.lang.String taskName): setzt die
String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes auf
den Parameter taskName.
• DSKMetadata getTrainingsDataSet(): gibt die Metadaten zur Selektion der Trainingsdaten, auf deren Basis der Klassifikator induziert werden
soll, zurück.
• void setTrainingsDataSet(
DSKMetadata trainingsDataSet): setzt die Metadaten
zur Selektion der Trainingsdaten, auf deren Basis der Klassifikator induziert
werden soll, auf den Parameter trainingsDataSet.
• VKMetadata getUtilisation(): gibt das Objekt zurück, das die weitere Verwendung der erzeugten ContentResource-Objekte beschreibt.
• void setUtilisation(VKMetadata utilisation): setzt das
Objekt, das die weitere Verwendung der erzeugten ContentResource-Objekte
beschreibt, auf den Parameter utilisation.
MaintenanceTask (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Kontrolle des Ablaufes einer
Klassifikator-Wartung
Superinterfaces Task.java
Subinterfaces Implementierungen SimpleMaintenanceTask.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getAlgorithmComponentAddress(): gibt
die Adresse der Komponente zurück, die den Analyse-Algorithmus implementiert, der die Klassifikator-Induktion des neu zu erstellenden Klassifikators,
der gewartet wurde, durchführt.
• void setAlgorithmComponentAddress(ComponentAddress
algorithmComponentAddress): setzt die Adresse der Komponente, die den Analyse-Algorithmus implementiert, der die KlassifikatorInduktion des zu wartenden Klassifikators durchführt, auf den Parameter
algorithmComponentAddress.
• java.util.Vector getBSKAddresses(): gibt die Adressen der
Komponenten zurück, die die Basisklassifikator-Selektionen durchführen. Die
selektierten Basisklassifikatoren werden für den Analyseschritt der inkrementellen Klassifikator-Induktion benötigt. Das Vector-Objekt beinhaltet
ComponentAddress-Objekte zur Beschreibung der Komponenten, die die
Basisklassifikatoren beinhalten. Der zu wartende Klassifikator wird nach dessen Invalidierung neu induziert.
• void setBSKAddresses(java.util.Vector BSKAddresses):
setzt die Adressen der Komponenten, die die Basisklassifikator-Selektion
93
94
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
•
•
•
•
•
•
•
•
•
•
durchführen, auf den Parameter BSKAddress. Die selektierten Basisklassifikatoren werden für den Analyseschritt der inkrementellen KlassifikatorInduktion benötigt. Das Vector-Objekt beinhaltet ComponentAddressObjekte zur Beschreibung der Komponenten, die die Basisklassifikatoren
beinhalten. Der zu wartende Klassifikator wird nach dessen Invalidierung neu
induziert.
Vector getClassifierSet(): gibt die Metadaten zur Selektion der
bei der inkrementellen Klassifikator-Induktion benötigten Klassifikatoren
zurück.
void setClassifierSet(
java.util.Vector classifierSet): setzt die Metadaten
zur Selektion der bei der inkrementellen Klassifikator-Induktion benötigten
Klassifikatoren auf den Parameter classifierSet.
ClassifierLocation
getClassifierToBeMaintainedLocation(): gibt die
Metadaten zum Zugriff auf den Klassifikator zurück, der gewartet werden soll.
Die Wartung umfasst den Schritt der Invalidierung des alten Klassifikators sowie die Induktion eines neuen Klassifikators auf Basis des alten.
void setClassifierToBeMaintainedLocation(
ClassifierLocation cLocation): setzt die Metadaten
zum Zugriff auf den Klassifikator, der gewartet werden soll, auf den Parameter cLocation. Die Wartung umfasst den Schritt der Invalidierung des
alten Klassifikators sowie die Induktion eines neuen Klassifikators auf Basis
des alten.
ComponentAddress getDSKAddress(): gibt die Adresse der Komponente zurück, die die Trainingsdaten-Selektion zur Klassifikator-Induktion
durchführt.
void setDSKAddress(ComponentAddress DSKAddress): setzt
die Adresse der Komponente, die die Trainingsdaten-Selektion zur
Klassifikator-Induktion durchführt, auf den Parameter DSKAddress.
ComponentAddress getIVKAddress(): gibt die Adresse der Komponente zurück, die die Invalidierung des zu wartenden Klassifikators
durchführt. Die Invalidierung erfolgt durch Setzen eines Zeitstempels für
das Attribut des Transaktionszeitendes.
void setIVKAddress(ComponentAddress IVKAddress): setzt
die Adresse der Komponente, die die Invalidierung des zu wartenden Klassifikators durchführt, auf den Parameter DSKAddress. Die Invalidierung erfolgt
durch Setzen eines Zeitstempels für das Attribut des Transaktionszeitendes.
IVKMetadata getIVKMetadata(): gibt die Metadaten zur Parametrisierung der Invalidierungskomponente zurück. Diese Metadaten umfassen die
Adresse der globalen Uhr sowie die Adresse der Datenquelle, in die der zu invalidierende Klassifikator gespeichert werden soll und die Adresse der Komponente, die die Bestätigungsnachricht der erfolgreichen Auslieferung des invalidierten Klassifikators erhalten soll.
void setIVKMetadata(IVKMetadata metadata):setzt die Metadaten zur Parametrisierung der Invalidierungskomponente auf den Parameter
metadata. Diese Metadaten umfassen die Adresse der globalen Uhr sowie
die Adresse der Datenquelle, in die der zu invalidierende Klassifikator gespeichert werden soll und die Adresse der Komponente, die die Bestätigungsnachricht der erfolgreichen Auslieferung des invalidierten Klassifikators erhalten
soll.
94
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
95
• MaintenanceMetadata getMaintenanceMetadataSet(): gibt
die Metadaten zurück, die die Komponente zur Klassifikator-Induktion parametrisieren.
• void setMaintenanceMetadataSet(
MaintenanceMetadata maintenanceMetadataSet):
setzt die Metadaten, die die Komponente zur Klassifikator-Induktion parametrisieren, auf den Parameter maintenanceMetadataSet.
• java.lang.String getTaskName(): gibt eine String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes zurück.
• void setTaskName(java.lang.String taskName): setzt die
String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes auf
den Parameter taskName.
• DSKMetadata getTrainingsDataSet(): gibt die Metadaten zur Selektion der Trainingsdaten, auf deren Basis der Klassifikator neu induziert werden soll, zurück.
• void setTrainingsDataSet(
DSKMetadata trainingsDataSet): setzt die Metadaten
zur Selektion der Trainingsdaten, auf deren Basis der Klassifikator neu induziert werden soll, auf den Parameter trainingsDataSet.
• VKMetadata getUtilisation(): gibt das Objekt zurück, das die weitere Verwendung der erzeugten ContentResource-Objekte beschreibt.
• void setUtilisation(VKMetadata utilisation): setzt das
Objekt, das die weitere Verwendung der erzeugten ContentResource-Objekte
beschreibt, auf den Parameter utilisation.
ParameterSet (Interface)
Beschreibung Modelliert eine Menge von Parametern, anhand derer ein Algorithmus
parametrisiert werden kann, der von einer Komponente der ReDiCAt-Architektur
umgesetzt wird.
Superinterfaces Subinterfaces Implementierungen SimpleParameterSet.java
Methoden Folgende Methoden müssen implementiert werden:
• java.util.Properties getParameters(): gibt ein Objekt vom
Typ java.util.Properties zurück, welches die Parameter zur Parametrisierung eines Algorithmus beinhaltet, den eine Komponente der ReDiCAtArchitektur umsetzt. Diese liegen in Form von Schlüssel-Wert-Paaren vor.
• void setParameters(java.util.Properties params): setzt
das java.util.Properties-Objekt, welches die Parameter zur Parametrisierung eines Algorithmus beinhaltet, den eine Komponente der ReDiCAtArchitektur umsetzt, auf den Parameter params.
QueryMetadata (Interface)
Beschreibung Modelliert eine Datenbankabfrage zur Selektion einer Datenmenge aus
einer Datenquelle.
Superinterfaces Subinterfaces Implementierungen SimpleQueryMetadata.java
95
96
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Methoden Folgende Methoden müssen implementiert werden:
• java.lang.String getQueryString(): gibt einen String zurück,
der die Datenbankabfrage enthält, die ausgeführt werden soll.
• void setQueryString(java.lang.String queryString):
setzt den String, der die Datenbankabfrage enthält, die ausgeführt werden
soll, auf den Parameter queryString.
ResultDataSet (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung eines Ergebnisdatensatzes einer Klassifikator-Anwendung.
Superinterfaces ContentResource.java
Subinterfaces Implementierungen SimpleResultDataSet.java
Methoden Folgende Methoden müssen implementiert werden:
• ClassifierLocation getClassifierLocation(): gibt die Metadaten zum Zugriff auf den Klassifikator zurück, auf dessen Basis die Ergebnisdatenmenge der Klassifikation erzeugt wurde.
• void setClassifierLocation(
ClassifierLocation classifierLocation):
setzt
die Metadaten zum Zugriff auf den Klassifikator, der die Basis der
Ergebnisdatenmenge der Klassifikation darstellt, auf den Parameter
classifierLocation.
• DataSet getData(): gibt die prototypische Datenmenge zurück, die ein
Klassifikationsergebnis repräsentiert.
• void setData(DataSet data): setzt die prototypische Datenmenge,
die ein Klassifikationsergebnis repräsentiert, auf den Parameter data.
• ResultDataSetLocation getDataLocation(): gibt die Beschreibung des Ortes an, an dem die Ergebnismenge der Klassifikation gespeichert wurde.
• void setDataLocation(
ResultDataSetLocation dataLocation): setzt die Beschreibung des Ortes, an dem die Ergebnismenge der Klassifikation gespeichert wurde, auf den Parameter dataLocation.
• TimestampMetadata getTimestamps():
→ siehe ContentResource.
• void setTimestamps(TimestampMetadata timestamps):
→ siehe ContentResource.
ResultDataSetLocation (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung des Zugriffes auf
einen Ergebnisdatensatz einer Klassifikator-Anwendung.
Superinterfaces ContentResourceLocation.java
Subinterfaces Implementierungen SimpleResultDataSetLocation.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getDataSourceMD(): gibt die Metadaten zum
Zugriff auf die Datenquelle zurück, in der die Ergebnisdatenmenge der Klassifikation gespeichert wurde.
96
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
97
• void setDataSourceMD(ComponentAddress dataSourceMD):
setzt die Metadaten zum Zugriff auf die Datenquelle, in der die Ergebnisdatenmenge der Klassifikation gespeichert wurde, auf den Parameter
dataSourceMD.
• java.lang.String getUserName(): gibt eine String-Repräsentation des Benutzernamens zurück, der benötigt wird, um die Ergebnisdatenmenge der Klassifikation aus der Datenquelle, in der sie gespeichert ist, auszulesen.
• void setUserName(java.lang.String userName): setzt die
String-Repräsentation des Benutzernamens, der benötigt wird, um die Ergebnisdatenmenge der Klassifikation aus der Datenquelle, in der sie gespeichert
ist, auszulesen, auf den Parameter userName.
• java.lang.String getUserPasswd(): gibt eine String-Repräsentation des Passwortes zurück, das benötigt wird, um die Ergebnisdatenmenge
der Klassifikation aus der Datenquelle, in der sie gespeichert ist, auszulesen.
• void setUserPasswd(java.lang.String userPasswd): setzt
die String-Repräsentation des Passwortes, das benötigt wird, um die Ergebnisdatenmenge der Klassifikation aus der Datenquelle, in der sie gespeichert
ist, auszulesen, auf den Parameter userPasswd.
SelectedDataSet (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung einer Menge von
Daten, die aus einer Datenquelle selektiert wurden. Dies können Trainingsdaten
oder Instanzdaten sein.
Superinterfaces ContentResource.java
Subinterfaces Implementierungen SimpleSelectedDataSet.java
Methoden Folgende Methoden müssen implementiert werden:
• DataSet getData(): gibt die prototypische Datenmenge zurück, die eine selektierte Datenmenge repräsentiert.
• void setData(DataSet data): setzt die prototypische Datenmenge,
die eine selektierte Datenmenge repräsentiert, auf den Parameter data.
• ContentResourceLocation getLocation(): gibt die Metadaten
zum Zugriff auf die Datenquelle zurück, aus der die selektierten Daten stammen.
• void setLocation(ContentResourceLocation location):
setzt die Metadaten zum Zugriff auf die Datenquelle, aus der die selektierten
Daten stammen, auf den Parameter location.
• TimestampMetadata getTimestamps():
→ siehe ContentResource.
• void setTimestamps(TimestampMetadata timestamps):
→ siehe ContentResource.
Task (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung eines AnalyseAblaufes, der von der ReDiCAt-Architektur durchgeführt werden kann.
Superinterfaces Subinterfaces ClassificationTask.java, InductionTask.java, MaintenanceTask.java
97
98
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Implementierungen SimpleClassificationTask.java, SimpleInductionTask.java, SimpleMaintenanceTask.java
Methoden Folgende Methoden müssen implementiert werden:
• java.lang.String getTaskName(): gibt die String-Repräsentation
des Namens des Tasks zurück, der von der ReDiCAt-Architektur auszuführen
ist.
• void setTaskName(java.lang.String taskName): setzt die
String-Repräsentation des Namens des auszuführenden Analyse-Ablaufes, der
von der ReDiCAt-Architektur auszuführen ist, auf den Parameter taskName.
• VKMetadata getUtilisation(): gibt das Objekt zurück, das die weitere Verwendung der erzeugten ContentResource-Objekte beschreibt.
• void setUtilisation(VKMetadata utilisation): setzt das
Objekt, das die weitere Verwendung der erzeugten ContentResource-Objekte
beschreibt, auf den Parameter utilisation.
TimestampMetadata (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Beschreibung einer Menge von
Zeitstempeln zur Speicherung von Transaktions- und Gültigkeitszeiten. Bei der
Zeitstempelung findet die Intervall-Semantik Anwendung. So werden Zeitstempel
jeweils für das Intervall der Gültigkeit eines Datensatzes in der realen Welt sowie
für die Gültigkeit eines Datensatzes im System vergeben. Das Intervall weist einen
Anfangs- und einen Endpunkt für beide Gültigkeitsdomänen auf.
Superinterfaces Subinterfaces Implementierungen SimpleTimestampMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• java.security.Timestamp getTtb(): gibt den Zeitstempel des
Anfangs der Transaktionszeit zurück. Dieser wird gesetzt, wenn ein Datensatz
erstmalig gespeichert wird.
• void setTtb(java.security.Timestamp ttb): setzt den Zeitstempel des Anfanges der Transaktionszeit auf den Parameter ttb.
• java.security.Timestamp getTte(): gibt den Zeitstempel des
Endes der Transaktionszeit zurück. Dieser wird gesetzt, wenn ein Datensatz
gelöscht werden soll. Anstelle der Löschung erfolgt hier eine Markierung als
gelöscht. Somit ist temporale Versionierung möglich.
• void setTte(java.security.Timestamp tte): setzt den Zeitstempel des Endes der Transaktionszeit auf den Parameter tte.
• java.security.Timestamp getVtb(): gibt den Zeitstempel des
Anfanges der Gültigkeitszeit zurück. Dieser steht für den Zeitpunkt, ab dem
ein Datensatz in der realen Welt als gültig gilt.
• void setVtb(java.security.Timestamp vtb): setzt den Zeitstempel des Anfanges der Gültigkeitszeit auf den Parameter vtb.
• java.security.Timestamp getVte(): gibt den Zeitstempel des
Endes der Gültigkeitszeit zurück. Dieser steht für den Zeitpunkt, ab dem ein
Datensatz in der realen Welt als ungültig markiert wird.
• void setVte(java.security.Timestamp vte): setzt den Zeitstempel des Endes der Gültigkeitszeit auf den Parameter vte.
98
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
99
Die Interfaces zur Umsetzung der ADT, ihre get<Attribut>- und set<Attribut>Methoden sowie die Assoziationen zwischen den einzelnen Interfaces sind in Abbildung 6.1 in
Form eines Klassendiagrammes aufgeführt.
<<interface>>
<<interface>>
ContentResourceLocation
ComponentAddress
<<use>>
getDataSourceMD()
getComponentName()
setDataSourceMD()
setComponentName()
<<use>>
<<interface>>
ResultDataSetLocation
<<interface>>
<<interface>>
ClassifierLocation
TimestampMetadata
getDataSourceMD()
getTtb()
setDataSourceMD()
setTtb()
getUserName()
getTte()
setUserName()
setTte()
getUserPassword()
getVtb()
setUserPassword()
setVtb()
<<interface>>
ContentResource
getDataSourceMD()
<<use>>
setDataSourceMD()
getTimestamps()
getUserName()
setTimestamps()
setUserName()
getUserPasswd()
<<use>>
setUserPasswd()
getVte()
setVte()
<<interface>>
<<interface>>
<<interface>>
ResultDataSet
SelectedDataSet
Classifier
getClassifierLocation()
getData()
getData()
setClassifierLocation()
setData()
setData()
getData()
getLocation()
getLocation()
setData()
setLocation()
setLocation()
<<use>>
<<use>>
getDataLocation()
setDataLocation()
<<interface>>
<<use>>
Task
<<use>>
<<interface>>
DataSet
getTaskName()
<<use>>
setTaskName()
getUtilisation()
getDescription()
setUtilisation()
setDescription()
<<interface>>
QueryMetadata
getQueryString()
<<interface>>
<<interface>>
<<interface>>
setQueryString()
ClassificationTask
InductionTask
MaintenanceTask
<<interface>>
ParameterSet
getClassifier()
getClassifierSet()
getClassifierSet()
setClassifier()
setClassifierSet()
setClassifierSet()
getDSKAddress()
getTaskName()
getTaskName()
setDSKAddress()
setTaskName()
setTaskName()
getParameters()
getBSKAddress()
getDSKAddress()
getDSKAddress()
setParameters()
setBSKAddress()
setDSKAddress()
setDSKAddress()
getAlgorithmComponentAddress()
getBSKAddresses()
getBSKAddresses()
setAlgorithmComponentAddress()
setBSKAddresses()
setBSKAddresses()
getInstanceDataSet()
getAlgorithmComponentAddress()
getAlgorithmComponentAddress()
setInstanceDataSet()
setAlgorithmComponentAddress()
setAlgorithmComponentAddress()
getTaskName()
getTrainingsDataSet()
getIVKAddress()
setTaskName()
setTrainingsDataSet()
setIVKAddress()
getControlDBAGK()
getInductionMetadataSet()
getTrainingsDataSet()
setControlDBAGK()
setInductionMetadataSet()
setTrainingsDataSet()
getClassificationMetadataSet()
getUtilisation()
getMaintenanceMetadataSet()
setClassificationMetadataSet()
setMaintenanceMetadataSet()
getUtilisation()
getUtilisation()
getIVKMetadata()
setIVKMetadata()
getClassifierToBeMaintainedLocation()
setClassifierToBeMaintainedLocation()
Abbildung 6.1.: Klassendiagramm der Interfaces zur Abbildung der ADT
SimpleClassificationTask (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ClassificationTask dar und dient dem Zwecke der Demonstration der
Funktionsfähigkeit der ReDiCAt-Architektur. Alle Metadaten, die zur Konfiguration der Komponenten benötigt werden, die an einem Klassifikations-Ablauf beteiligt sind, sowie zusätzliche Informationen über die Adressen der zu verwendenden Komponenten sowie zu den Kontroll- und Datenflüssen werden in diesem Objekt gespeichert. Es beinhaltet alle Informationen, die die ReDiCAt-Architektur
benötigt, um den Analyse-Ablauf der Klassifikation durchführen zu können.
Implementierte Interfaces ClassificationTask.java, Task.java
Attribute Folgende Attribute wurden implementiert:
• java.lang.String taskName:
zuführenden Analyse-Ablaufes.
String-Repräsentation
99
des
aus-
100
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• ComponentAddress DSKAddress: Adresse der Komponente, die die
Selektion der Instanzdaten durchführt.
• ComponentAddress BSKAddress: Adresse der Komponente, die die
Selektion des Basisklassifikators durchführt, der die Grundlage des Ablaufes
der Klassifikation darstellt.
• ComponentAddress algorithmComponentAddress: Adresse der
Komponente, die den Klassifikations-Algorithmus implementiert und die
Klassifikation auf Basis des selektierten Klassifikators und der selektierten Instanzdaten durchführt.
• BSKMetadata classifier: Metadaten zur Selektion des Klassifikators,
auf Basis dessen die Klassifikation durchgeführt werden soll.
• ClassificationMetadata classificationMetadata: Metadaten zur Parametrisierung des Klassifikations-Algorithmus.
• DBAGKMetadata controlDBAGK: Metadaten zur Kontrolle der Komponente DBAGK. Im Falle der Klassifikation durch Selection Graph-Ableitung
generiert diese Komponente eine Menge von Datenbankabfragen aus einer
Menge von Selection Graphs, die von der Komponente SGAK aus einem Klassifikator generiert wurden.
• VKMetadata utilisation: die Metadaten, die die weitere Verwendung
der erzeugten ContentResource-Objekte festlegen. Diese Metadaten bestehen zum Einen aus einem java.util.String-Objekt, welches die Verwertung des erzeugten ContentResource-Objektes vorgibt. Hier sind folgende Werte erlaubt:
– store zum Speichern des erzeugten ContentResource-Objektes
– visualize zur visuellen Ausgabe des erzeugten ContentResourceObjektes gegenüber einem Benutzer
– both zur Speicherung und visuellen Ausgabe des erzeugten
ContentResource-Objektes gegenüber einem Benutzer
Zum Anderen bestehen die Metadaten aus einem ContentResourceObjekt, welches die Datensenke spezifiziert, in die das erzeugte
ContentResource-Objekt gespeichert werden soll, und die Daten beinhaltet, die zum Zugriff auf diese Datensenke benötigt werden.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
6
7
8
9
10
public SimpleClassificationTask(
java.lang.String taskName,
ComponentAddress BSKAddress,
ComponentAddress DSKAddress,
ComponentAddress algorithmComponentAddress,
DSKMetadata instanceDataSet,
BSKMetadata classifier,
VKMetadata utilisation,
ClassificationMetadata classificationMetadataSet,
DBAGKMetadata controlDBAGK)
Listing 6.1: Konstruktor SimpleClassificationTask.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
100
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
101
SimpleClassifier (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
Classifier dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Da die Implementierung der Architektur lediglich
prototypisch durchgeführt wird, wird auch nur ein prototypischer Klassifikator
benötigt. Diese Implementierung des Classifier-Interfaces besitzt keine direkt auf
einen Klassifikator übertragbare Semantik, sondern soll lediglich als prototypisches Objekt dazu dienen, die Funktionsfähigkeit der Infrastruktur der ReDiCAtArchitektur zu demonstrieren.
Implementierte Interfaces Classifier.java, ContentResource.java
Attribute Folgende Attribute wurden implementiert:
• TimestampMetadata timestamps: Objekt zur Speicherung von
Transaktions- und Gültigkeitszeitstempeln. Über die Zeitstempel wird angegeben, ob ein Klassifikator als gültig in der realen Welt oder im System
geführt wird.
• DataSet data: die prototypische Datenmenge, die einen Klassifikator repräsentiert. Diese trägt keinerlei Semantik, sondern soll ein Platzhalter für potentielle Datenformate darstellen, die einen Klassifikator beschreiben können.
• ClassifierLocation location: die Metadaten, die zum Zugriff auf
einen Klassifikator benötigt werden. Dazu zählen der Ort der Komponente, die
die Datenquelle beherbergt, die den Klassifikator speichert, sowie Benutzername und Passwort zum Zugriff auf diese Datenquelle.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleClassifier(
TimestampMetadata timestamps,
DataSet data,
ClassifierLocation location)
Listing 6.2: Konstruktor SimpleClassifier.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleClassifierLocation (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ClassifierLocation dar und dient dem Zwecke der Demonstration der
Funktionsfähigkeit der ReDiCAt-Architektur. In dieser Klasse werden die Metadaten zusammengefasst, die zum Zugriff auf einen Klassifikator benötigt werden.
Dazu zählen der Ort der Komponente, die die Datenquelle beherbergt, die den Klassifikator speichert, sowie Benutzername und Passwort zum Zugriff auf diese Datenquelle. Bei dieser Klasse handelt es sich um eine prototypische Implementierung.
Implementierte Interfaces ClassifierLocation.java, ContentResourceLocation.java
Attribute Folgende Attribute wurden implementiert:
• ComponentAddress dataSourceMD: die Adresse der Komponente, die
die Datenquelle beinhaltet, in der ein Klassifikator gespeichert ist.
• java.lang.String userName: der Benutzername für den Zugriff auf
die Datenquelle, in der ein Klassifikator gespeichert ist.
• java.lang.String userPassword: das Passwort für den Zugriff auf
die Datenquelle, in der ein Klassifikator gespeichert ist.
101
102
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleClassifierLocation(
ComponentAddress dataSourceMD,
java.lang.String userName,
java.lang.String userPassword)
Listing 6.3: Konstruktor SimpleClassifierLocation.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleComponentAddress (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ComponentAddress dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Sie beinhaltet den Namen einer Komponente in Form einer String-Repräsentation. Dieser Name dient der Lokalisierung
der Komponente innerhalb der ReDiCAt-Architektur.
Implementierte Interfaces ComponentAddress
Attribute Folgende Attribute wurden implementiert:
• java.lang.String componentName: der Name der Komponente als
String-Repräsentation.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleComponentAddress(
java.lang.String componentName)
Listing 6.4: Konstruktor SimpleComponentAddress.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleContentResourceLocation (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces ContentResourceLocation dar und dient dem Zwecke der
Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Sie wird
verwendet, um die Metadaten zusammenzufassen, die benötigt werden,
um auf ein ContentResource-Objekt zugreifen zu können. Diese
Metadaten beinhalten, analog zu SimpleClassifierLocation und
SimpleResultDataSetLocation, den Ort der Komponente, die die Datenquelle beherbergt, die den Klassifikator speichert, sowie den Benutzernamen
und das Passwort zum Zugriff auf diese Datenquelle. Es handelt sich bei dieser
Implementation des ContentResource-Interfaces um eine generisch zu verwendende Klasse, die in den Fällen genutzt werden soll, in denen der Typ des
ContentResource-Objektes nicht bekannt ist.
Implementierte Interfaces ContentResourceLocation.java
Attribute Folgende Attribute wurden implementiert:
• ComponentAddress dataSourceMD: die Adresse der Komponente, die
die Datenquelle beinhaltet, in der sich die ContentResource befindet.
• java.lang.String userName: der Benutzername, der zum Zugriff auf
die Datenquelle benötigt wird, in der sich die ContentResource befindet.
102
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
103
• java.lang.String userPasswd: das Passwort, das zum Zugriff auf
die Datenquelle benötigt wird, in der sich die ContentResource befindet.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleContentResourceLocation(
ComponentAddress dataSourceMD,
java.lang.String userName,
java.lang.String userPasswd)
Listing 6.5: Konstruktor SimpleContentResourceLocation.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleDataSet (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
DataSet dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit
der ReDiCAt-Architektur. Sie stellt eine prototypische Datenmenge dar, die analog
zur Klasse SimpleClassifier keine direkte Semantik aufweist, sondern zur
Demonstration der Funktionsfähigkeit der Infrastruktur der ReDiCAt-Architektur
dient. Sie wird beispielsweise verwendet, um die Datenmengen, die einen Klassifikator oder ein Klassifikationsergebnis beinhalten sollen, prototypisch umzusetzen.
Implementierte Interfaces DataSet.java
Attribute Folgende Attribute wurden implementiert:
• java.util.Properties description: ein Properties-Objekt zur
Speicherung von Schlüssel-Wert-Paaren, die zur Beschreibung eines
ContentResource-Objektes genutzt werden können.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleDataSet(
java.util.Properties description)
Listing 6.6: Konstruktor SimpleDataSet.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleInductionTask (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces InductionTask dar und dient dem Zwecke der Demonstration
der Funktionsfähigkeit der ReDiCAt-Architektur. Analog zu den Klassen
SimpleClassificationTask und SimpleMaintenanceTask werden
in dieser Klasse alle Metadaten, die zur Konfiguration der Komponenten benötigt
werden, die an einem Klassifikator-Induktions-Ablauf beteiligt sind, gespeichert.
Zusätzliche Informationen über die Adressen der zu verwendenden Komponenten sowie zu den Kontroll- und Datenflüssen werden ebenfalls in dieser Klasse
gespeichert. Somit beinhaltet ein Objekt dieser Klasse alle Informationen, die
zur Durchführung einer Klassifikator-Induktion durch die ReDiCAt-Architektur
benötigt werden.
Implementierte Interfaces InductionTask.java, Task.java
Attribute Folgende Attribute wurden implementiert:
103
104
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• java.lang.String taskName: die String-Repräsentation des Namens
des durchzuführenden Analyse-Schrittes. Hier sind folgende Werte erlaubt:
– ci für die einfache Induktion eines Klassifikators. In diesem Fall werden
keine Basisklassifikatoren bei der Induktion berücksichtigt.
– ici für die inkrementelle Induktion eines Klassifikators. Hier fließen neben den Trainingsdaten noch Basisklassifikatoren in die Induktion mit ein.
– ml für einen Meta-Lern-Analyse-Ablauf. Dieser kombiniert aus verschiedenen Basisklassifikatoren ein neues globales Modell.
• ComponentAddress DSKAddress: die Adresse der Komponente, die
die Selektion der Instanzdaten durchführt, auf Basis derer eine KlassifikatorInduktion durchgeführt wird.
• java.util.Vector BSKAddresses: ein Vector-Objekt, welches
die Adressen der Komponenten beinhaltet, die die Selektion von BasisKlassifikatoren durchführen, die für eine inkrementelle KlassifikatorInduktion oder für einen Meta-Lern-Vorgang benötigt werden. Da mehrere Basisklassifikatoren in die zuvor genannten Analyse-Abläufe eingehen
können, und da diese verteilt an verschiedenen Orten vorliegen können, wird
hier ein java.util.Vector-Objekt genutzt.
• ComponentAddress algorithmComponentAddress: die Adresse
der Komponente, die den Algorithmus implementiert, der die KlassifikatorInduktion oder den Meta-Lern-Vorgang durchführt.
• DSKMetadata trainingsDataSet: die Metadaten, die zur Selektion
der Trainingsdaten benötigt werden, auf Basis derer ein Klassifikator induziert
werden soll.
• java.util.Vector classifierSet: ein jave.util.VectorObjekt, welches die Metadaten zur Selektion der Klassifikatoren beinhaltet,
die für eine inkrementelle Klassifikator-Induktion oder einen Meta-LernAnalyse-Ablauf benötigt werden.
• VKMetadata utilisation: die Metadaten, die die weitere Verwendung
der erzeugten ContentResource-Objekte festlegen. Diese Metadaten bestehen zum Einen aus einem java.util.String-Objekt, welches die Verwertung des erzeugten ContentResource-Objektes vorgibt. Hier sind folgende Werte erlaubt:
– store zum Speichern des erzeugten ContentResource-Objektes
– visualize zur visuellen Ausgabe des erzeugten ContentResourceObjektes gegenüber einem Benutzer
– both zur Speicherung und visuellen Ausgabe des erzeugten
ContentResource-Objektes gegenüber einem Benutzer
Zum Anderen bestehen die Metadaten aus einem ContentResourceObjekt, welches die Datensenke spezifiziert, in die das erzeugte
ContentResource-Objekt gespeichert werden soll, und die Daten beinhaltet, die zum Zugriff auf diese Datensenke benötigt werden.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
6
7
public SimpleInductionTask(
java.lang.String taskName,
java.util.Vector BSKAddresses,
ComponentAddress DSKAddress,
ComponentAddress algorithmComponentAddress,
DSKMetadata trainingsDataSet,
java.util.Vector classifierSet,
104
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
8
9
105
VKMetadata utilisation,
InductionMetadata inductionMetadataSet)
Listing 6.7: Konstruktor SimpleInductionTask.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleMaintenanceTask (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces MaintenanceTask dar und dient dem Zwecke der Demonstration
der Funktionsfähigkeit der ReDiCAt-Architektur. Analog zu den Klassen
SimpleClassificationTask und SimpleInductionTask beinhaltet
diese Klasse die für den Analyse-Ablauf der Klassifikator-Wartung notwendigen
Metadaten. Zu diesen Metadaten zählen auch hier die Metadaten zur Konfiguration
der am Analyse-Ablauf beteiligten Komponenten, zusätzliche Informationen über
die Adressen der beteiligten Komponenten sowie Informationen über die Kontrollund Datenflüsse. Somit beinhaltet ein Objekt dieser Klasse alle Informationen, die
zur Durchführung einer Klassifikator-Wartung benötigt werden.
Implementierte Interfaces MaintenanceTask.java, Task.java
Attribute Folgende Attribute wurden implementiert:
• java.lang.String taskName: die String-Repräsentation des Namens
des durchzuführenden Analyse-Schrittes. Im Falle der Klassifikator-Wartung
ist hier ausschließlich folgender Wert erlaubt:
– maintenance für die Wartung eines Klassifikators
• ComponentAddress DSKAddress: die Adresse der Komponente, die
die Selektion der Instanzdaten durchführt, die für die Neugenerierung eines
Klassifikators benötigt werden.
• java.util.Vector BSKAddresses: ein Vector-Objekt, welches die
Adressen der Komponenten beinhaltet, die die Selektion der Basisklassifikatoren durchführen, die im Falle einer inkrementellen Neugenerierung des zu
wartenden Klassifikators benötigt werden.
• ComponentAddress algorithmComponentAddress: die Adresse
der Komponente, die die Neugenerierung des zu wartenden Klassifikators
durchführt.
• ComponentAddress IVKAddress: die Adresse der Komponente, die
die Invalidierung des zu wartenden Klassifikators durchführt.
• DSKMetadata trainingsDataSet: die Metadaten, die zur Selektion
der Trainingsdaten benötigt werden, die bei der Neugenerierung des zu wartenden Klassifikators erforderlich sind.
• java.util.Vector classifierSet: ein Vector-Objekt, welches
die Metadaten beinhaltet, die zur Selektion der (im Falle der inkrementellen
Neugenerierung des zu wartenden Klassifikators benötigten) Basisklassifikatoren benötigt werden.
• MaintenanceMetadata maintenanceMetadataSet: die Metadaten, die zur Parametrisierung der Komponente benötigt werden, die im Falle
der Klassifikator-Wartung die Neugenerierung des zu wartenden Klassifikators
durchführt.
• VKMetadata utilisation: die Metadaten, die die weitere Verwendung
der erzeugten ContentResource-Objekte festlegen. Diese Metadaten be-
105
106
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
stehen zum Einen aus einem java.util.String-Objekt, welches die Verwertung des erzeugten ContentResource-Objektes vorgibt. Hier sind folgende Werte erlaubt:
– store zum Speichern des erzeugten ContentResource-Objektes
– visualize zur visuellen Ausgabe des erzeugten ContentResourceObjektes gegenüber einem Benutzer
– both zur Speicherung und visuellen Ausgabe des erzeugten
ContentResource-Objektes gegenüber einem Benutzer
Zum Anderen bestehen die Metadaten aus einem ContentResourceObjekt, welches die Datensenke spezifiziert, in die das erzeugte
ContentResource-Objekt gespeichert werden soll, und die Daten beinhaltet, die zum Zugriff auf diese Datensenke benötigt werden.
• IVKMetadata IVKMetadata: die Metadaten, die zur Steuerung der
Invalidierungs-Komponente benötigt werden. Diese bestehen aus der Adresse
der globalen Uhr, der Adresse der Komponente, die im Falle der erfolgreichen
Invalidierung eines Klassifikators zu benachrichtigen ist, sowie den Metadaten, die zur Selektion des zu invalidierenden Klassifikators benötigt werden.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
6
7
8
9
10
11
12
public SimpleMaintenanceTask(
java.lang.String taskName,
java.util.Vector BSKAddresses,
ComponentAddress DSKAddress,
ComponentAddress algorithmComponentAddress,
ComponentAddress IVKAddress,
DSKMetadata trainingsDataSet,
java.util.Vector classifierSet,
MaintenanceMetadata analysisMetadataSet,
VKMetadata utilisation,
IVKMetadata IVKMetadata,
ClassifierLocation classifierToBeMaintainedLocation)
Listing 6.8: Konstruktor SimpleMaintenanceTask.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleParameterSet (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ParameterSet dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Sie dient als prototypische Datenmenge, die die Parameter repräsentiert, die einer Komponente der ReDiCAtArchitektur übergeben werden, die einen Analyse-Algorithmus implementiert. Diese Klasse besitzt keine direkte Semantik, sondern stellt durch das
java.util.Properties-Objekt eine Möglichkeit dar, Semantik in Form
von Schlüssel-Wert-Paaren zu transportieren.
Implementierte Interfaces ParameterSet.java
Attribute Folgende Attribute wurden implementiert:
• java.util.Properties parameters: ein Properties-Objekt,
welches die Parameter zur Parametrisierung eines Algorithmus beinhaltet, den
eine Komponente der ReDiCAt-Architektur umsetzt. Die Parameter werden
in Form von Schlüssel-Wert-Paaren dargestellt.
106
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
107
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleParameterSet(
java.util.Properties parameters)
Listing 6.9: Konstruktor SimpleParameterSet.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleQueryMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
QueryMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Sie dient der Repräsentation einer
Datenbank-Abfrage, die beispielsweise benötigt wird, um Trainings- oder Instanzdaten aus einer Datenbank abzufragen. In der prototypischen Implementierung
werden SQL-Statements in Form von java.lang.String-Objekten gespeichert.
Implementierte Interfaces QueryMetadata.java
Attribute Folgende Attribute wurden implementiert:
• java.lang.String queryString: ein String, der die Datenbankabfrage enthält, die ausgeführt werden soll.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleQueryMetadata(
java.lang.String queryString)
Listing 6.10: Konstruktor SimpleQueryMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleResultDataSet (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ResultDataSet dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces ContentResource.java, ResultDataSet.java
Attribute Folgende Attribute wurden implementiert:
• TimestampMetadata timestamps: Objekt zur Speicherung von
Transaktions- und Gültigkeitszeitstempeln.
• DataSet data: ein abstraktes Datenobjekt zur Repräsentation einer Ergebnisdatenmenge einer Klassifikation.
• ClassifierLocation classifierLocation: die Adresse des
Klassifikators, auf Grundlage dessen die Ergebnisdatenmenge der Klassifikation erzeugt wurde.
• ResultDataSetLocation dataLocation: die Beschreibung des Ortes, an dem die Ergebnisdatenmenge der Klassifikation gespeichert ist.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
public SimpleResultDataSet(
TimestampMetadata timestamps,
DataSet data,
107
108
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
4
5
ClassifierLocation classifierLocation,
ResultDataSetLocation dataLocation)
Listing 6.11: Konstruktor SimpleResultDataSet.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleResultDataSetLocation (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ResultDataSetLocation dar und dient dem Zwecke der Demonstration der
Funktionsfähigkeit der ReDiCAt-Architektur. Sie beinhaltet die Metadaten zum
Zugriff auf ein Klassifikationsergebnis. Diese bestehen aus dem Namen der Komponente, die die Datenquelle beinhaltet, in der die Klassifikationsergebnisse gespeichert sind, sowie den Benutzernamen und das Passwort zum Zugriff auf diese
Datenquelle.
Implementierte Interfaces ContentResourceLocation.java,
on.java
ResultDataSetLocati-
Attribute Folgende Attribute wurden implementiert:
• ComponentAddress dataSourceMD: die Adresse der Komponente, die
die Datenquelle beinhaltet, in der die Ergebnisdatenmenge der Klassifikation
gespeichert ist.
• java.lang.String userName: eine String-Repräsentation des Benutzernamens, der benötigt wird, um die Ergebnisdatenmenge der Klassifikation
aus der Datenquelle auszulesen, in der sie gespeichert ist.
• java.lang.String userPasswd: eine String-Repräsentation des
Passwortes, das benötigt wird, um die Ergebnisdatenmenge der Klassifikation aus der Datenquelle auszulesen, in der sie gespeichert ist.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleResultDataSetLocation(
ComponentAddress dataSourceMD,
java.lang.String userName,
java.lang.String userPasswd)
Listing 6.12: Konstruktor SimpleResultDataSetLocation.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleSelectedDataSet (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
SelectedDataSet dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Sie besteht aus einem prototypischen Datensatz, der eine selektierte Datenmenge repräsentiert, sowie aus den Metadaten
zum Zugriff auf die Datenquelle, aus der die Daten selektiert wurden und einem
TimestampMetadata-Objekt, welches die Zeitstempelung dieses Datensatzes
umsetzt.
Implementierte Interfaces ContentResource.java, SelectedDataSet.java
Attribute Folgende Attribute wurden implementiert:
108
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
109
• ComponentAddress dataSourceMD: die Adresse der Komponente, die
die Datenquelle beinhaltet, in der die Ergebnisdatenmenge der Klassifikation
gespeichert ist.
• java.lang.String userName: eine String-Repräsentation des Benutzernamens, der benötigt wird, um die Ergebnisdatenmenge der Klassifikation
aus der Datenquelle auszulesen, in der sie gespeichert ist.
• java.lang.String userPasswd: eine String-Repräsentation des
Passwortes, das benötigt wird, um die Ergebnisdatenmenge der Klassifikation aus der Datenquelle auszulesen, in der sie gespeichert ist.
• TimestampMetadata getTimestamps():
→ siehe ContentResource.
• void setTimestamps(TimestampMetadata timestamps):
→ siehe ContentResource.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleSelectedDataSet(
DataSet dataSet,
ContentResourceLocation dataSource,
TimestampMetadata timestamps)
Listing 6.13: Konstruktor SimpleSelectedDataSet.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
SimpleTimestampMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
TimestampMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Es setzt die intervallbasierte Zeitstempelung mit Transaktions- und Gültigkeitszeitstempeln um. Objekte dieser Klasse werden u.a. dazu verwendet, ContentResource-Objekte zu versionieren.
Implementierte Interfaces TimestampMetadata.java
Attribute Folgende Attribute wurden implementiert:
• java.security.Timestamp
anfanges.
• java.security.Timestamp
tendes.
• java.security.Timestamp
zeitanfanges.
• java.security.Timestamp
zeitendes
vtb: der Zeitstempel des Gültigkeitszeitvte: der Zeitstempel des Gültigkeitszeittb: der Zeitstempel des Transaktionstte: der Zeitstempel des Transaktions-
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
public SimpleTimestampMetadata(
java.security.Timestamp vtb,
java.security.Timestamp vte,
java.security.Timestamp ttb,
java.security.Timestamp tte)
Listing 6.14: Konstruktor SimpleTimestampMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
109
110
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Die Klassen, die eine prototypische Implementierung der zuvor aufgeführten Interfaces darstellen und zur Umsetzung der ReDiCAt-Architektur zu Demonstrationszwecken implementiert
wurden, sind mit ihren get<Attributname>- und set<Attributname>-Methoden sowie den Assoziationen untereinander und zu den Interfaces, die sie implementieren, in Abbildung 6.2 in Form eines Klassendiagrammes aufgeführt.
110
<<interface>>
SimpleTimestampMetadata
TimestampMetadata
111
Abbildung 6.2.: Klassendiagramm der Interfaces und Klassen zur Abbildung der ADT
<<use>>
getTtb()
getTimestamps()
getTtb()
getTte()
setTimestamps()
getTte()
getVtb()
getVtb()
getVte()
getVte()
SimpleTimestampMetadata()
getUtilisation()
setTtb()
setTtb()
setUtilisation()
setTte()
setTte()
getTaskName()
setVtb()
setVtb()
setTaskName()
setVte()
setVte()
<<use>>
<<interface>>
<<interface>>
ResultDataSet
<<use>>
Classifier
<<interface>>
SelectedDataSet
getData()
getData()
setData()
getLocation()
setDataLocation()
setData()
getClassifierLocation()
setLocation()
getLocation()
<<use>>
setData()
setLocation()
<<interface>>
<<interface>>
<<interface>>
setClassifierLocation()
QueryMetadata
<<interface>>
MaintenanceTask
<<interface>>
InductionTask
getClassifier()
getClassifierSet()
getClassifierSet()
getControlDBAGK()
getTrainingsDataSet()
getTrainingsDataSet()
getInstanceDataSet()
getUtilisation()
getUtilisation()
getUtilisation()
setClassifierSet()
setClassifierSet()
setControlDBAGK()
setUtilisation()
setUtilisation()
SimpleClassifier()
setUtilisation()
getTaskName()
getTaskName()
getData()
setClassifier()
setTaskName()
setTaskName()
getDSKAddress()
getDSKAddress()
getDSKAddress()
setDSKAddress()
setDSKAddress()
setDSKAddress()
getQueryString()
getDescription()
setQueryString()
setDescription()
SimpleResultDataSet()
ClassificationTask
DataSet
<<use>>
SimpleResultDataSet
Task
getData()
<<use>>
getDataLocation()
<<interface>>
SimpleSelectedDataSet
SimpleClassifier
SimpleSelectedDataSet()
getData()
getData()
getDataLocation()
getLocation()
SimpleDataSet
getTimestamps()
getTimestamps()
setData()
setData()
SimpleDataSet()
setDataLocation()
setTimestamps()
SimpleQueryMetadata
getLocation()
getTimestamps()
setData()
SimpleQueryMetadata()
getBSKAddress()
getBSKAddresses()
getBSKAddresses()
setLocation()
getDescription()
setLocation()
getQueryString()
setBSKAddress()
setBSKAddresses()
setBSKAddresses()
setTimestamps()
setDescription()
setTimestamps()
setQueryString()
getAlgorithmComponentAddress()
getAlgorithmComponentAddress()
getAlgorithmComponentAddress()
getClassifierLocation()
setAlgorithmComponentAddress()
setAlgorithmComponentAddress()
setAlgorithmComponentAddress()
setClassifierLocation()
setInstanceDataSet()
getIVKAddress()
setTrainingsDataSet()
getTaskName()
setIVKAddress()
getInductionMetadataSet()
setTaskName()
setTrainingsDataSet()
setInductionMetadataSet()
getClassificationMetadataSet()
getMaintenanceMetadataSet()
setClassificationMetadataSet()
setMaintenanceMetadataSet()
<<interface>>
ContentResourceLocation
<<use>>
getDataSourceMD()
setDataSourceMD()
getIVKMetadata()
<<use>>
setIVKMetadata()
<<use>>
<<use>>
ComponentAddress
setClassifierToBeMaintainedLocation()
<<interface>>
ClassifierLocation
<<use>>
getComponentName()
getDataSourceMD()
<<use>>
setComponentName()
getUserName()
SimpleClassificationTask
getDataSourceMD()
getClassifierSet()
getControlDBAGK()
getTrainingsDataSet()
getTrainingsDataSet()
getInstanceDataSet()
getUtilisation()
getUtilisation()
getUtilisation()
setClassifierSet()
setClassifierSet()
setControlDBAGK()
setUtilisation()
setUtilisation()
setUtilisation()
SimpleMaintenanceTask()
SimpleInductionTask()
SimpleClassificationTask()
getTaskName()
getTaskName()
setClassifier()
setTaskName()
setTaskName()
setInstanceDataSet()
setTrainingsDataSet()
setTrainingsDataSet()
getTaskName()
getMaintenanceMetadataSet()
getInductionMetadataSet()
SimpleClassifierLocation()
setTaskName()
setMaintenanceMetadataSet()
setInductionMetadataSet()
getDataSourceMD()
getClassificationMetadataSet()
getIVKMetadata()
getBSKAddresses()
getUserName()
setClassificationMetadataSet()
setIVKMetadata()
setBSKAddresses()
getUserPassword()
getBSKAddress()
getBSKAddresses()
getDSKAddress()
setBSKAddress()
setBSKAddresses()
setDSKAddress()
getDSKAddress()
getDSKAddress()
getAlgorithmComponentAddress()
setDSKAddress()
setDSKAddress()
setAlgorithmComponentAddress()
getAlgorithmComponentAddress()
getAlgorithmComponentAddress()
setAlgorithmComponentAddress()
setAlgorithmComponentAddress()
setDataSourceMD()
setUserName()
setUserName()
setUserPasswd()
setUserPassword()
<<interface>>
ParameterSet
getParameters()
SimpleResultDataSetLocation
SimpleClassifierLocation
<<use>>
SimpleResultDataSetLocation()
<<use>>
getDataSourceMD()
SimpleComponentAddress
getUserPasswd()
SimpleInductionTask
getClassifierSet()
getUserPassword()
setDataSourceMD()
SimpleMaintenanceTask
getClassifier()
<<use>>
getUserName()
getUserPasswd()
getUserName()
<<use>>
getClassifierToBeMaintainedLocation()
<<use>>
<<interface>>
<<interface>>
ResultDataSetLocation
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
<<interface>>
ContentResource
setUserName()
SimpleComponentAddress()
setDataSourceMD()
setUserPasswd()
getComponentName()
setUserName()
setDataSourceMD()
setComponentName()
setUserPassword()
setParameters()
SimpleParameterSet
SimpleParameterSet()
getParameters()
setParameters()
getIVKAddress()
setIVKAddress()
getClassifierToBeMaintainedLocation()
setClassifierToBeMaintainedLocation()
111
112
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
6.1.2. Interfaces und prototypische Implementierungen zur
Repräsentation der Kontrollflüsse
In den Analyse-Abläufen, die im Rahmen des ReKlaMe-Projektes durchführbar sind, besteht
an verschiedenen Stellen der Bedarf nach steuernden Metadaten. Damit die Komponenten der
ReDiCAt-Architektur in der Lage sind, die Analyse-Vorgänge durchzuführen, werden spezielle
Metadaten-Formate konzeptioniert. Diese Metadaten-Formate basieren auf den in Abschnitt
6.1.1 entworfenen Interfaces und Klassen und sollen im Folgenden in Abhängigkeit von der
korrespondierenden Komponente dargestellt werden:
Aktualisierungs-Komponente Die Aktualisierungs-Komponente ist mit der Aufgabe betraut, Informationen über durch die Architektur neu erzeugte ContentResourceObjekte wie Klassifikatoren oder Klassifikationsergebnisse in ein globales
Metadaten-Repository einzupflegen. Die Informationen zu solch einem neuen
ContentResource-Objekt umfassen verschiedene Metadaten, die im Folgenden
nacheinander aufgeführt werden.
Zu diesen Metadaten zählt ein String-Objekt, welches den Typ der neu erzeugten Ressource modelliert. Erlaubte Werte sind hier classifier oder
classificationResult.
Weiter wird ein Objekt des Typs ContentResourceLocation benötigt, um die Daten zu beschreiben, die nötig sind, um auf das ContentResource-Objekt zugreifen zu
können. Dazu zählt die Adresse der Komponente, die die Datenquelle beinhaltet, in der
das Objekt gespeichert ist, sowie der Benutzername und das Passwort zum Zugriff auf
die Datenbank.
Zusätzlich wird ein weiteres String-Objekt gespeichert, welches eine Beschreibung
des ContentResource-Objektes beinhaltet. Diese Beschreibung kann einem Benutzer präsentiert werden, damit dieser eine Grundlage zur Einschätzung erhält, ob er die
Ressource sinnvoll für einen potentiellen Analyse-Ablauf verwenden kann.
Schließlich ist noch ein weiteres Objekt vom Typ ContentResourceLocation
in den Metadaten enthalten. Dieses beherbergt die Informationen zum Zugriff
auf die Datenquelle, die die Grundlage der Erzeugung des zu beschreibenden
ContentResource-Objektes darstellte.
Zur Modellierung dieser Metadaten wird ein Interface AKMetadata konzeptioniert,
und in Form der Klasse SimpleAKMetadata wird eine einfache Implementierung
durchgeführt werden. Abbildung 6.3 zeigt das Interface und die implementierende Klasse samt ihrer Abhängigkeiten zu anderen Interfaces und Klassen.
AKMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes der Komponente AK der ReDiCAt-Architektur zur Generierung eines
Metadaten-Eintrages über ein neu erzeugtes ContentResource-Objekt in
ein globales Repository.
Superinterfaces
Subinterfaces
Implementierungen SimpleAKMetadata
Methoden Folgende Methoden müssen implementiert werden:
• String getContentResourceType(): gibt den Typ der zu
indizierenden Ressource zurück. Dies kann classifier oder
classificationResult sein.
112
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
113
redicat::metadata::SimpleContentResourceLocation
redicat::metadata::SimpleComponentAddress
SimpleContentResourceLocation()
SimpleComponentAddress()
getDataSourceMD()
getComponentName()
getUserName()
setComponentName()
getUserPasswd()
setDataSourceMD()
setUserName()
<<use>>
setUserPasswd()
<<interface>>
<<interface>>
<<interface>>
redicat::metadata::ContentResourceLocation
AKMetadata
redicat::metadata::ComponentAddress
<<use>>
<<use>>
getContentResourceType()
getDataSourceLocation()
getDataSourceMD()
getComponentName()
setDataSourceMD()
setComponentName()
getDescription()
getLocation()
<<use>>
setContentResourceType()
setDataSourceLocation()
setDescription()
setLocation()
SimpleAKMetadata
SimpleAKMetadata()
<<use>>
<<interface>>
<<interface>>
redicat::metadata::ClassifierLocation
redicat::metadata::ResultDataSetLocation
getDataSourceMD()
getDataSourceMD()
getUserName()
getUserName()
getUserPassword()
getUserPasswd()
setDataSourceMD()
setDataSourceMD()
setUserName()
setUserName()
setUserPassword()
setUserPasswd()
<<use>>
getContentResourceType()
getDataSourceLocation()
getDescription()
getLocation()
redicat::metadata::SimpleClassifierLocation
redicat::metadata::SimpleResultDataSetLocation
setDataSourceLocation()
SimpleClassifierLocation()
SimpleResultDataSetLocation()
setDescription()
getDataSourceMD()
getDataSourceMD()
setLocation()
getUserName()
getUserName()
getUserPassword()
getUserPasswd()
setDataSourceMD()
setDataSourceMD()
setUserName()
setUserName()
setUserPassword()
setUserPasswd()
<<use>>
setContentResourceType()
<<use>>
Abbildung 6.3.: Klassendiagramm der Metadaten zur Steuerung der AktualisierungsKomponente AK
• void setContentResourceType(String type): setzt den
Typ der zu indizierenden Ressource auf den Wert des Parameters type.
• ContentResourceLocation getDataSourceLocation: gibt
die Metadaten zurück, die zum Zugriff auf die Datenquelle benötigt werden, deren Daten die Grundlage der Induktion der Ressource darstellen.
Diese Datenquelle kann eine relationale Datenbank sein, aber auch ein
Klassifikator-Repository.
• void setDataSourceLocation(
ContentResourceLocation dataSourceLocation):
setzt die Metadaten, die zum Zugriff auf die Datenquelle benötigt werden,
deren Daten die Grundlage der Induktion der Ressource darstellen, auf
den Parameter dataSourceLocation.
• String getDescription(): gibt eine Beschreibung der zu indizierenden Ressource zurück. Diese Beschreibung kann einem Benutzer in
einem Auswahlprozess präsentiert werden, um ihm eine Grundlage für eine Entscheidung zu bieten, ob dieser die Ressource in einen potentiellen
Analyse-Ablauf mit einbeziehen möchte oder nicht.
• void setDescription(String description): setzt die Beschreibung der zu indizierenden Ressource auf den Wert des Parameters
description.
• ContentResourceLocation getLocation(): gibt die Metadaten zurück, die zum Zugriff auf die zu indizierende Ressource benötigt
werden. Zu diesen Metadaten zählen die Adresse der Komponente, die
die Datenquelle beinhaltet, in der die zu indizierende Ressource gespeichert ist, sowie ein Benutzername und ein Passwort zum Zugriff auf diese
113
114
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Datenquelle.
• void setLocation(
ContentResourceLocation location): setzt die
Metadaten, die zum Zugriff auf die zu indizierende Ressource benötigt
werden, auf den Parameter location.
SimpleAKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces AKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces AKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• String type: der Typ der zu indizierenden Ressource. Dies kann
classifier oder classificationResult sein.
• ContentResourceLocation dataSourceLocation: die Metadaten, die zum Zugriff auf die Datenquelle benötigt werden, deren Daten
die Basis der Induktion der Ressource darstellen.
• String description: die Beschreibung der zu indizierenden Ressource. Diese Beschreibung kann einem Benutzer in einem Auswahlprozess präsentiert werden, um ihm eine Grundlage für eine Entscheidung zu
bieten, ob dieser die Ressource in einen potentiellen Analyse-Ablauf mit
einbeziehen möchte oder nicht.
• ContentResourceLocation location: die Metadaten, die zum
Zugriff auf die zu indizierende Ressource benötigt werden. Zu diesen Metadaten zählen die Adresse der Komponente, die die Datenquelle beinhaltet, in der die zu indizierende Ressource gespeichert ist, sowie ein Benutzername und ein Passwort zum Zugriff auf diese Datenquelle.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
public SimpleAKMetadata(
java.lang.String contentResourceType,
ContentResourceLocation location,
java.lang.String description,
ContentResourceLocation dataSourceLocation)
Listing 6.15: Konstruktor SimpleAKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
Basisklassifikator-Selektion Die zur Selektion eines Basisklassifikators benötigten Informationen umfassen zunächst Informationen über die Komponente, die den Basisklassifikator beherbergt. Dies kann ein Klassifikator-Repository sein, welches sich lokal vorfindet, es kann jedoch in einem verteilten Szenario auch an einem entfernten Ort vorliegen.
Zusätzlich zu den Informationen zur Lokalisierung des Basisklassifikators sind Metadaten zu übergeben, die für den Zugang zu den zu selektierenden Daten benötigt werden.
Dies kann beispielsweise ein Wertepaar aus Benutzername und Passwort für eine Datenquelle sein.
Weiterhin ist es erforderlich, der Selektions-Komponente mitzuteilen, an welche Komponente sie den selektierten Basisklassifikator übergeben soll. Dazu müssen ebenfalls
Informationen über den Ort, an dem sich die Ziel-Komponente befindet, in den Metadaten enthalten sein.
114
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
115
Schließlich muss der Komponente noch mitgeteilt werden, an welche Instanz sie eine quittierende Nachricht senden soll, die indiziert, dass der Klassifikator erfolgreich
ausgeliefert wurde. Da die Analysen sowohl zentral als auch lokal initiiert werden
können, kommen für den Empfang einer solchen Bestätigung verschiedene MetadatenVerwaltungs-Komponenten in Frage.
Somit wird ein Interface BSKMetadata konzeptioniert, über das sich die
Basisklassifikator-Selektions-Komponente steuern lässt. Es beinhaltet die abstrakten
Datentypen ComponentAddress zur Abbildung der Adresse einer Komponente und
ClassifierLocation zur Durchführung einer Klassifikator-Selektion. Eine einfache Implementierung des Interfaces wird durch die Klasse SimpleBSKMetadata
gegeben. Die Klassen und Interfaces, die das Metadatenpaket zur Steuerung der
Basisklassifikator-Selektions-Komponente umsetzen, sind in Abbildung 6.4 dargestellt.
<<use>>
<<interface>>
BSKMetadata
<<interface>>
redicat::metadata::ContentResourceLocation
getClassifierMD()
getComponentMD()
getDataSourceMD()
getReceiptMD()
setDataSourceMD()
setClassifierMD()
setComponentMD()
setReceiptMD()
<<use>>
<<use>>
<<interface>>
redicat::metadata::ComponentAddress
getComponentName()
SimpleBSKMetadata
<<interface>>
setComponentName()
redicat::metadata::ClassifierLocation
SimpleBSKMetadata()
getClassifierMD()
getComponentMD()
<<use>>
<<use>>
getUserName()
getReceiptMD()
setClassifierMD()
getDataSourceMD()
getUserPassword()
setDataSourceMD()
<<use>>
setComponentMD()
setUserName()
setReceiptMD()
setUserPassword()
Abbildung 6.4.: Klassendiagramm der Metadaten zur Basisklassifikator-Selektion
BSKMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes
der Komponente BSK der ReDiCAt-Architektur zur Selektion eines Klassifikators.
Superinterfaces
Subinterfaces
Implementierungen SimpleBSKMetadata
Methoden Folgende Methoden müssen implementiert werden:
• ClassifierLocation getClassifierMD(): gibt die Beschreibung des Ortes zurück, an dem der Klassifikator liegt, der selektiert werden soll.
• void setClassifierMD(
ClassifierLocation classifierMD): setzt den Ort,
an dem ein Klassifikator liegt, auf den Wert classifierMD.
• ComponentAddress getComponentMD(): gibt die Adresse der
Komponente zurück, an die der zu selektierende Klassifikator gesendet
werden soll.
• void setComponentMD(ComponentAddress componentMD):
setzt die Adresse der Komponente, an die der zu selektierende Klassifikator gesendet werden soll, auf den Parameter componentMD.
115
116
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• ComponentAddress getReceiptMD(): gibt die Adresse der
Komponente zurück, an die die Bestätigungsnachricht der erfolgreichen
Auslieferung des selektierten Klassifikators zu senden ist.
• void setReceiptMD(ComponentAddress receiptMD):
setzt die Adresse der Komponente, an die die Bestätigungsnachricht
der erfolgreichen Auslieferung des selektierten Klassifikators zu senden
ist, auf den Parameter receiptMD.
SimpleBSKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
BSKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces BSKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ComponentAddress componentMD: die Adresse der Komponente,
an die der zu selektierende Klassifikator gesendet werden soll.
• ComponentAddress receiptMD: die Adresse der Komponente, an
die die Bestätigungsnachricht der erfolgreichen Auslieferung des selektierten Klassifikators zu senden ist.
• ClassifierLocation classifierMD: die Adresse des Klassifikators, der selektiert werden soll.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleBSKMetadata(
ComponentAddress componentMD,
ComponentAddress receiptMD,
ClassifierLocation classifierMD)
Listing 6.16: Konstruktor SimpleBSKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
{Trainings-, Instanz-}Daten-Selektion Um eine Datenmenge zu selektieren, bedarf es
mehrerer Informationen. So muss der Name der Komponente, die die Datenquelle beinhaltet, aus der die Daten selektiert werden sollen, bekannt sein. Auch die Zugangsdaten
zum Zugriff auf die Datenquelle, wie z.B. der Benutzername oder das Passwort, müssen
vorhanden sein.
Weiter werden Informationen über die zu selektierenden Daten benötigt, beispielsweise
die Namen der zu selektierenden Attribute oder ein fertiges SQL-Statement zur Selektion
der Daten. Da die Implementierung prototypisch erfolgt, findet hier eine Einschränkung
auf die Übergabe der String-Repräsentation eines SQL-Statements statt.
Zusätzlich muss der Selektions-Komponente noch die Adresse der Komponente mitgeteilt werden, an die die selektierten Daten übergeben werden sollen.
Schließlich ist die Adresse der Komponente anzugeben, an die im Falle der erfolgreichen
Auslieferung des zu selektierenden Datensatzes eine quittierende Nachricht zu senden
ist.
Das Interface DSKMetadata, welches die zur Datenselektion benötigten Metadaten modelliert, ist zusammen mit den von ihr genutzten ADT-Klassen
ContentResourceLocation zur Beschreibung, Lokalisierung und Durchführung
des Zugriffes einer Datenquelle, ComponentAddress zur Abbildung der Adresse einer Komponente und QueryMetadata zur Repräsentation einer Datenbank-Abfrage
116
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
117
sowie der Klasse SimpleDSKMetadata, die eine einfache Implementierung des
Interfaces DSKMetadata darstellt, in Abbildung 6.5 aufgeführt.
<<interface>>
DSKMetadata
<<use>>
getComponentMD()
<<use>>
setComponentMD()
getDataSourceMD()
setDataSourceMD()
getQueryMD()
<<interface>>
setQueryMD()
redicat::metadata::ContentResourceLocation
getReceiptMD()
getDataSourceMD()
setReceiptMD()
setDataSourceMD()
<<use>>
<<use>>
<<interface>>
redicat::metadata::QueryMetadata
SimpleDSKMetadata
getQueryString()
SimpleDSKMetadata()
setQueryString()
getComponentMD()
<<use>>
setComponentMD()
getDataSourceMD()
setDataSourceMD()
<<interface>>
redicat::metadata::ComponentAddress
getQueryMD()
<<use>>
setQueryMD()
<<use>>
getReceiptMD()
getComponentName()
setReceiptMD()
setComponentName()
Abbildung 6.5.: Klassendiagramm der Metadaten zur Daten-Selektion
DSKMetadata (Interface)
Beschreibung Modelliert einen ADT zur Kontrolle des Ablaufes der Komponente DSK der ReDiCAt-Architektur zur Selektion eines Datensatzes aus einer Datenquelle.
Superinterfaces Subinterfaces Implementierungen SimpleDSKMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ComponentAddress getComponentMD(): gibt die Adresse der
Komponente zurück, an die die zu selektierende Datenmenge übergeben
werden soll.
• void setComponentMD(
ComponentAddress componentMD): setzt die Adresse
der Komponente, an die die zu selektierende Datenmenge übergeben werden soll, auf den Parameter componentMD.
• ContentResourceLocation getDataSourceMD(): gibt die
Metadaten zum Zugriff auf die Datenquelle zurück, in der sich die zu
selektierenden Daten befinden.
• void setDataSourceMD(
ContentResourceLocation dataSourceMD): setzt
die Metadaten zum Zugriff auf die Datenquelle, in der sich die zu selektierenden Daten befinden, auf den Parameter dataSourceMD.
• QueryMetadata getQueryMD(): gibt den ADT zur Beschreibung
der Datenbankabfrage zurück, auf Basis derer die Selektion durchgeführt
werden soll.
117
118
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• void setQueryMD(QueryMetadata queryMD): setzt den ADT
zur Beschreibung der Datenbankabfrage, auf Basis derer die Selektion
durchgeführt werden soll, auf den Parameter queryMD.
• ComponentAddress getReceiptMD(): gibt die Adresse der
Komponente zurück, an die die Bestätigungsnachricht der erfolgreichen
Auslieferung der selektierten Datenmenge zu senden ist.
• void setReceiptMD(ComponentAddress receiptMD):
setzt die Adresse der Komponente, an die die Bestätigungsnachricht
der erfolgreichen Auslieferung der selektierten Datenmenge zu senden
ist, auf den Parameter receiptMD.
SimpleDSKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces DSKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. Anhand der Objekte dieser Klasse
werden in der prototypischen Implementierung der Architektur die Instanzund Trainingsdatensätze durch die Komponente DSK selektiert werden.
Implementierte Interfaces DSKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ComponentAddress componentMD: die Adresse der Komponente,
an die die zu selektierende Datenmenge gesendet werden soll.
• ComponentAddress receiptMD: die Adresse der Komponente, an
die die Bestätigungsnachricht der erfolgreichen Auslieferung der zu selektierenden Daten gesendet werden soll.
• ContentResourceLocation dataSourceMD: die Metadaten
zum Zugriff auf die Datenquelle, aus der die Datenmenge selektiert
werden soll.
• QueryMetadata queryMD: der ADT zur Beschreibung der Datenbankabfrage, auf Basis derer die Selektion der Datenmenge durchgeführt
werden soll.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
public SimpleDSKMetadata(
ComponentAddress componentMD,
ComponentAddress receiptMD,
ContentResourceLocation dataSourceMD,
QueryMetadata queryMD)
Listing 6.17: Konstruktor SimpleDSKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
DB-Abfrage-Generierungs-Komponente Die DB-Abfrage-Generierungs-Komponente
benötigt zur Generierung von Datenbank-Abfragen aus einer Menge von Selection Graphs Informationen über die Datenquelle, der sie die Abfragen stellen soll. Zu diesem
Zweck werden ihr Metadaten zum Zugriff auf die Datenquelle übergeben.
Zusätzlich wird ein ADT benötigt, der die Selection Graph-Menge modelliert, auf Basis
derer die Datenbank-Abfragen generiert werden sollen
Weiterhin ist die Adresse der Komponente vonnöten, an die eine Bestätigung der erfolgreichen Auslieferung der generierten Datenbank-Abfragen an eine weiterverarbeitende
Komponente gemeldet werden soll.
118
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
119
Das Interface DBAGKMetadata, das den Metadatensatz zur Steuerung der DBAGKKomponente der ReDiCAt-Architektur umsetzt, ist in Abbildung 6.6 zusammen mit den
assoziierten Interfaces und der Klasse SimpleDBAGKMetadata, die eine einfache
Implementierung des Interfaces darstellt, abgebildet. Das Interface beinhaltet die Metadaten zum Zugriff auf die Datenquelle in Form eines ContentResourceLocationObjektes sowie ein DataSet-Objekt, welches den ADT zur Modellierung der Selection
Graphs darstellt, und ein ComponentAddress-Objekt, welches die Adresse der die
Quittung empfangenden Komponente beinhaltet.
<<interface>>
<<interface>>
DBAGKMetadata
redicat::metadata::ContentResourceLocation
<<use>>
getDataSourceMD()
getDataSourceMD()
setDataSourceMD()
setDataSourceMD()
getReceiptMD()
setReceiptMD()
<<use>>
getSelectionGraphSet()
setSelectionGraphSet()
<<use>>
<<interface>>
redicat::metadata::ComponentAddress
getComponentName()
setComponentName()
SimpleDBAGKMetadata
<<use>>
getDataSourceMD()
setDataSourceMD()
getReceiptMD()
setReceiptMD()
<<use>>
SimpleDBAGKMetadata()
getSelectionGraphSet()
setSelectionGraphSet()
Abbildung 6.6.: Klassendiagramm der Metadaten zur Steuerung der Datenbank-AbfrageGenerierungs-Komponente
DBAGKMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes
der Komponente DBAGK der ReDiCAt-Architektur zur Generierung von Datenbankabfragen aus Selection Graphs zur Klassifikation der Elemente einer
Datenmenge.
Superinterfaces Subinterfaces Implementierungen SimpleDBAGKMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ContentResourceLocation getDataSourceMD(): gibt die
Metadaten zum Zugriff auf die Datenbank zurück, auf deren Daten die
generierten Datenbankabfragen angewendet werden sollen.
• void setDataSourceMD(
ContentResourceLocation dataSourceMD): setzt
die Metadaten zum Zugriff auf die Datenbank, auf deren Daten die generierten Datenbankabfragen angewendet werden sollen, auf den Parameter
dataSourceMD.
• ComponentAddress getReceiptMD(): gibt die Adresse der
Komponente zurück, an die die Bestätigungsnachricht der erfolgreichen
Durchführung der Abfrage-Generierung und -anwendung zu senden ist.
119
120
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• void setReceiptMD(ComponentAddress receiptMD):
setzt die Adresse der Komponente, an die die Bestätigungsnachricht der
erfolgreichen Durchführung der Abfrage-Generierung und -anwendung
zu senden ist, auf den Parameter receiptMD.
• DataSet getSelectionGraphSet(): gibt den ADT zurück, der
die Menge der Selection Graphs modelliert, aus denen DatenbankAbfragen abgeleitet werden sollen.
• void setSelectionGraphSet(
DataSet selectionGraphSet): setzt den ADT,
der die Menge der Selection Graphs modelliert, aus denen die
Datenbank-Abfragen abgeleitet werden sollen, auf den Parameter
selectionGraphSet.
SimpleDBAGKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
DBAGKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur. In der prototypischen Implementierung wird das DataSet-Objekt, welches die Selection Graphs modellieren
soll, nicht mit Semantik versehen werden. Vielmehr wird lediglich ein syntaktischer Nutzen für die Komponenten DBAGK und SGAK gegeben sein.
Implementierte Interfaces DBAGKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ContentResourceLocation dataSourceMD: die Adresse der
Komponente, die die Datenbank beinhaltet.
• ComponentAddress receiptMD: die Adresse der Komponente,
an die die Bestätigungsnachricht der erfolgreichen Durchführung der
Abfrage-Generierung und -anwendung zu senden ist.
• DataSet selectionGraphSet: der ADT, der die Menge der Selection Graphs modelliert, aus denen die Datenbank-Abfragen abgeleitet
werden sollen. Die Implementierung wird keine semantische Umsetzung
einer Menge von Selection Graphs darstellen, sondern dient lediglich der
prototypischen Umsetzung einer Selection Graph-Menge.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleDBAGKMetadata(
ContentResourceLocation dataSourceMD,
ComponentAddress receiptMD,
DataSet selectionGraphSet)
Listing 6.18: Konstruktor SimpleDBAGKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
Invalidierungs-Komponente Die Invalidierungs-Komponente erfordert verschiedene Metadaten zur Steuerung ihres Ablaufes. So ist zunächst die Adresse der globalen Uhr
vonnöten, um einen Zeitstempel erzeugen zu können.
Der zeitgestempelte Klassifikator soll anschließend in einer Datensenke gespeichert werden. Dazu sind die Metadaten zum Zugriff auf die Datensenke vonnöten.
Schließlich bedarf es der Adresse der Komponente, an die die Bestätigung der erfolgreichen Auslieferung des invalidierten Klassifikators an die vorgesehene Datensenke gesendet werden soll.
120
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
121
Abbildung 6.7 stellt das Interface IVKMetadata dar, das einen Metadatensatz repräsentiert, der diese Informationen beinhaltet. Sie beinhaltet ein Objekt vom Typ
ContentResourceLocation zur Repräsentation der Datensenke sowie zwei Objekte vom Typ ComponentAddress, die die Adresse der globalen Uhr sowie die
Adresse der Komponente, die die Quittung der erfolgreichen Auslieferung des invalidierten Klassifikators empfangen soll, beinhalten. Ebenfalls dargestellt wird die Klasse SimpleIVKMetadata, die eine prototypische Implementierung des Interfaces
IVKMetadata ist.
<<interface>>
IVKMetadata
<<interface>>
redicat::metadata::ContentResourceLocation
<<use>>
getDataSinkMD()
getDataSourceMD()
setDataSinkMD()
setDataSourceMD()
getGlobalClockMD()
setGlobalClockMD()
getReceiptMD()
setReceiptMD()
<<use>>
<<use>>
SimpleIVKMetadata
<<interface>>
redicat::metadata::ComponentAddress
SimpleIVKMetadata()
getDataSinkMD()
getComponentName()
setDataSinkMD()
setComponentName()
<<use>>
getGlobalClockMD()
setGlobalClockMD()
getReceiptMD()
<<use>>
setReceiptMD()
Abbildung 6.7.: Klassendiagramm
Komponente
der Metadaten zur Steuerung der Invalidierungs-
IVKMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes der
Komponente IVK zur Invalidierung von Klassifikatoren.
Superinterfaces Subinterfaces Implementierungen SimpleIVKMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ContentResourceLocation getDataSinkMD(): gibt die Metadaten zum Zugriff auf die Datensenke zurück, in der der zu invalidierende Klassifikator gespeichert werden soll.
• void setDataSinkMD(
ContentResourceLocation dataSinkMD): setzt die Metadaten zum Zugriff auf die Datensenke, in der der zu invalidierende Klassifikator gespeichert werden soll, auf den Parameter dataSinkMD.
• ComponentAddress getGlobalClockMD(): gibt die Adresse der
Komponente zurück, von der die globale Uhrzeit der ReDiCAt-Architektur
erfragt werden kann.
• void setGlobalClockMD(
ComponentAddress globalClockMD): setzt die Adresse
der Komponente, von der die globale Uhrzeit der ReDiCAt-Architektur erfragt
werden kann, auf den Parameter globalClockMD.
121
122
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• ComponentAddress getReceiptMD(): gibt die Adresse der Komponente zurück, an die die Bestätigungsnachricht der erfolgreichen Auslieferung
des invalidierten Klassifikators zu senden ist.
• void setReceiptMD(ComponentAddress receiptMD): setzt die
Adresse der Komponente, an die die Bestätigungsnachricht der erfolgreichen
Auslieferung des invalidierten Klassifikators zu senden ist, auf den Parameter
receiptMD.
SimpleIVKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
IVKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces IVKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ComponentAddress globalClockMD: die Adresse der Komponente,
von der die globale Zeit der ReDiCAt-Architektur erfragt werden kann.
• ContentResourceLocation dataSinkMD: die Metadaten zum Zugriff auf die Datensenke, in der der zu invalidierende Klassifikator gespeichert
werden soll.
• ComponentAddress receiptMD: die Adresse der Komponente, an die
die Bestätigungsnachricht der erfolgreichen Auslieferung des invalidierten
Klassifikators zu senden ist.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
public SimpleIVKMetadata(
ComponentAddress globalClockMD,
ContentResourceLocation dataSinkMD,
ComponentAddress receiptMD)
Listing 6.19: Konstruktor SimpleIVKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()-Methoden für
jedes vorhandene Attribut implementiert.
Benutzungsschnittstelle Die Benutzungsschnittstelle nimmt in zwei verschiedenen Phasen der Analyse an deren Ablauf teil: einmal initial, einmal anschließend an die Recherche nach bereits vorhandenen Klassifikatoren oder Klassifikationsergebnissen.
Im initialen Durchlauf bekommt sie die notwendigen Informationen durch den Benutzer über die Benutzungsoberfläche mitgeteilt. Aus diesen Informationen kann sie
dann ein Metadaten-Objekt TAMetadata generieren, welches später genau beschrieben wird. Auf Basis dieses ersten generierten Metadaten-Objektes, welches der TaskAnalyse-Komponente übergeben wird, werden im Anschluss bereits im System vorhandene Klassifikatoren oder Klassifikationsergebnisse gesucht. Dieser Metadatensatz
muss Informationen über den durchzuführenden Ablauf beinhalten, also beschreiben, ob
eine Klassifikator-Induktion, eine Anwendung oder eine Wartung eines Klassifikators
durchgeführt werden soll. Weiter sind Informationen über die der potentiellen Analyse
zu Grunde liegenden Daten vonnöten. So kann ein entsprechender Klassifikator oder ein
bereits vorhandenes Klassifikationsergebnis nur anhand einer Beschreibung aufgefunden
werden. Ergebnisse einer Klassifikator-Anwendung müssen zudem auf den verwendeten
Klassifikator und auf die Datenquelle verweisen, aus der die Instanzdaten stammen.
122
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
123
Im zweiten Durchlauf wird ein Metadatenpaket von der Task-Analyse-Komponente
empfangen. Dieses beinhaltet potentiell gefundene, im System vorhandene Klassifikatoren oder Klassifikationsergebnisse, die dem Benutzer anschließend zur Auswahl für weitere Analyseschritte präsentiert werden. Durch die Eingaben des Benutzers kann dann ein
weiteres Metadaten-Objekt generiert werden, welches den weiteren Verlauf der Analyse bestimmt. Dieses muss die Information über die Art des Analyse-Ablaufes beinhalten, sowie alle Adressen von zu verwendenden Klassifikatoren und Datenmengen. Insgesamt müssen in diesem Metadaten-Objekt alle Informationen für alle nachfolgend an der
Analyse beteiligten Komponenten enthalten sein, da dieses die Steuerung des AnalyseAblaufes festlegt und vorgibt. Dementsprechend wird es für jeden Analyse-Ablauf ein
eigenes Metadaten-Objekt geben.
Die in Abbildung 6.8 abgebildete Klasse SimpleBSMetadata ist vom Interface
BSMetadata abgeleitet und repräsentiert die Metadatenmenge zur Steuerung der
Benutzungsschnittstellen-Komponente. Sie beinhaltet ein Vector-Objekt, in dem
ContentResource-Objekte enthalten sind, die durch die von der Komponente TA
initiierte Suche gefunden wurden. Diese Objekte können Klassifikatoren oder Klassifikationsergebnisse beinhalten. Die Klasse beinhaltet zudem ein Task-Objekt, welches
den durchzuführenden Analyse-Ablauf repräsentiert, und ein TAMetadata-Objekt zur
Übergabe der für die Suche nach ContentResource-Objekten notwendigen Metadaten an die Komponente TA.
<<interface>>
<<interface>>
BSMetadata
TAMetadata
getResultContentResources()
getAttributes()
<<use>>
getTask()
getContentResourcesFound()
setResultContentResources()
getDataSources()
setTask()
getSearchMD()
setAttributes()
<<use>>
<<interface>>
setContentResourcesFound()
redicat::metadata::Task
setSearchMD()
<<use>>
setDataSources()
getTask()
getUtilisation()
setTask()
setUtilisation()
SimpleBSMetadata
<<use>>
getTaskName()
setTaskName()
resultContentResources: Vector
searchMD: TAMetadata
task: Task
<<use>>
<<interface>>
SimpleBSMetadata()
VKMetadata
getResultContentResources()
getUtilisation()
getTask()
setResultContentResources()
setUtilisation()
getSinkLocation()
setTask()
getSearchMD()
setSearchMD()
setSinkLocation()
<<use>>
Abbildung 6.8.: Klassendiagramm der Metadaten zur Steuerung der BenutzungsschnittstellenKomponente
BSMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes der Komponente BS der ReDiCAt-Architektur zur Schaffung einer Benutzungsschnittstelle für die ReDiCAt-Architektur.
Superinterfaces Subinterfaces Implementierungen SimpleBSMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
123
124
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
• java.util.Vector getResultContentResources(): gibt
die gefundenen ContentResource-Objekte zurück, die von der Komponente TA auf Basis der in TAMetadata spezifizierten Eigenschaften
gefunden wurden.
• void setResultContentResources(
java.util.Vector resultContentResources):
setzt die gefundenen ContentResource-Objekte, die von der Komponente TA auf Basis der in TAMetadata spezifizierten Eigenschaften
gefunden wurden, auf den Parameter resultContentResources.
• TAMetadata getSearchMD(): gibt das Objekt zurück, das die Metadatenmenge repräsentiert, auf Basis derer nach bereits vorhandenen
ContentResource-Objekten wie Klassifikatoren oder Klassifikationsergebnissen gesucht werden soll.
• void setSearchMD(TAMetadata searchMD): setzt das Objekt, das die Metadatenmenge repräsentiert, auf Basis derer nach bereits vorhandenen ContentResource-Objekten wie Klassifikatoren
oder Klassifikationsergebnissen gesucht werden soll, auf den Parameter
searchMD.
• Task getTask(): gibt das Objekt zurück, das die Metadatenmenge zur Beschreibung eines Analyse-Ablaufes repräsentiert, der von der
ReDiCAt-Architektur durchgeführt werden kann.
• void setTask(Task task): setzt das Objekt, das die Metadatenmenge zur Beschreibung eines Analyse-Ablaufes repräsentiert, der von
der ReDiCAt-Architektur durchgeführt werden kann, auf den Parameter
task.
SimpleBSMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces BSMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces BSMetadata.java
Attribute Folgende Attribute wurden implementiert:
• Task task: das Objekt zur Repräsentation einer Metadatenmenge, die
den Analyse-Ablauf beschreibt, der von der ReDiCAt-Architektur durchgeführt werden soll. Möglich sind hier:
– Induktion eines Klassifikators
– Anwendung eines Klassifikators
– Wartung eines Klassifikators
• TAMetadata searchMD: das Objekt zur Repräsentation einer Metadatenmenge, die die Task-Analyse steuert und die Kriterien für die Suche
nach bereits vorhandenen ContentResource-Objekten beinhaltet.
• java.util.Vector resultContentResources: ein Vector zur
Speicherung der gefundenen ContentResource-Objekte, die von der
Komponente TA zurückgegeben wurden.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
public SimpleBSMetadata(
Task task,
TAMetadata searchMD)
Listing 6.20: Konstruktor SimpleBSMetadata.java
124
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
125
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
Nach Maßgabe des Betreuers dieser Arbeit wird auf die Implementierung dieser Komponente und der ADT, die diese Komponente steuern, verzichtet.
Task-Analyse Die Aufgabe der Task-Analyse-Komponente besteht darin, die für
einen Analyse-Vorgang potentiell interessanten, bereits im System vorhandenen
ContentResource-Objekte aufzufinden und an die Benutzungsschnittstelle zu übergeben. Dazu erhält sie von der Benutzungsschnittstelle eine Menge von Metadaten,
welche Informationen über den durchzuführenden Analyseschritt und die zur Analyse
zu verwendenden Datenmengen und -quellen beinhaltet. Sie stellt eine Suchanfrage
an die Metadaten-Verwaltungs-Komponente, die gefundene Ergebnisse in Form eines
Vector-Objektes zurück gibt. Dieses wird anschließend an die Benutzungsschnittstelle
weitergegeben.
Die Klasse SimpleTAMetadata implementiert das Interface TAMetadata und
beinhaltet einen Vector zur Speicherung von Attributnamen und einen Vector
zur Speicherung von Datenquellen-Adressen, nach denen in den Beschreibungen der
ContentResources gesucht werden soll. Weiter beinhaltet sie einen Vector zur
Speicherung der gefundenen ContentResource-Objekte sowie ein Task-Objekt zur
Repräsentation des aktuell durchzuführenden Analyse-Ablaufes. Alle beteiligten Klassen sind in Abbildung 6.9 dargestellt.
<<interface>>
<<interface>>
TAMetadata
redicat::metadata::Task
<<use>>
getAttributes()
getTaskName()
getContentResourcesFound()
setTaskName()
getDataSources()
getUtilisation()
getTask()
setUtilisation()
setAttributes()
setContentResourcesFound()
setDataSources()
setTask()
SimpleTAMetadata
<<use>>
attributes: Vector
contentResourcesFound: Vector
dataSources: Vector
task: Task
SimpleTAMetadata()
getAttributes()
getContentResourcesFound()
getDataSources()
getTask()
setAttributes()
setContentResourcesFound()
setDataSources()
setTask()
Abbildung 6.9.: Klassendiagramm
Komponente
der
Metadaten
zur
Steuerung
der
Task-Analyse-
TAMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes
der Komponente TA zur Suche nach bereits im System vorhandenen, für einen
Analyse-Ablauf potentiell interessanten ContentResource-Objekten wie
Klassifikatoren oder Klassifikationsergebnissen.
125
126
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Superinterfaces Subinterfaces Implementierungen SimpleTAMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• Task getTask(): gibt das Objekt zurück, das die Metadatenmenge zur Beschreibung eines Analyse-Ablaufes repräsentiert, der von der
ReDiCAt-Architektur durchgeführt werden kann.
• void setTask(Task task): setzt das Objekt, das die Metadatenmenge zur Beschreibung eines Analyse-Ablaufes repräsentiert, der von
der ReDiCAt-Architektur durchgeführt werden kann, auf den Parameter
task.
• java.util.Vector getAttributes(): gibt den Vector
zurück, der die Attributnamen beinhaltet, nach denen in den Beschreibungen der ContentResource-Objekte gesucht werden soll.
• void setAttributes(java.util.Vector attributes):
setzt den Vector, der die Attributnamen beinhaltet, nach denen in den
Beschreibungen der ContentResource-Objekte gesucht werden soll,
auf den Parameter attributes.
• java.util.Vector getContentResourcesFound(): gibt
den Vector zurück, der die gefundenen ContentResource-Objekte
beinhaltet, die den Suchkriterien entsprechen.
• void setContentResourcesFound(
java.util.Vector contentResourcesFound):
setzt den Vector, der die gefundenen ContentResource-Objekte
beinhaltet, die den Suchkriterien entsprechen, auf den Parameter
contentResourcesFound.
• java.util.Vector getDataSources(): gibt den Vector
zurück, der die Objekte zur Beschreibung des Zugriffes auf Datenquellen beinhaltet, nach denen die ContentResource-Objekte durchsucht
werden sollen.
• void setDataSources(java.util.Vector dataSources):
setzt den Vector, der die Objekte zur Beschreibung des Zugriffes auf
Datenquellen beinhaltet, nach denen die ContentResource-Objekte
durchsucht werden sollen, auf den Parameter dataSources.
SimpleTAMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces TAMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces TAMetadata.java
Attribute Folgende Attribute wurden implementiert:
• Task task: das Objekt zur Repräsentation einer Metadatenmenge, die
den Analyse-Ablauf beschreibt, der von der ReDiCAt-Architektur durchgeführt werden soll. Möglich sind hier:
– Induktion eines Klassifikators
– Anwendung eines Klassifikators
– Wartung eines Klassifikators
• java.util.Vector attributes: ein Vector zur Speicherung der Attributnamen, nach denen in den Beschreibungen der
ContentResource-Objekte gesucht werden soll.
126
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
127
• java.util.Vector dataSources: ein Vector zur Speicherung
der Objekte zur Beschreibung der Adresse der Datenquellen, nach denen
in den Beschreibungen der ContentResource-Objekte gesucht werden soll.
• java.util.Vector contentResourcesFound: ein Vector zur
Speicherung der gefundenen ContentResource-Objekte, die den
Suchkriterien entsprechen.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
public SimpleTAMetadata(
Task task,
java.util.Vector attributes,
java.util.Vector dataSources,
java.util.Vector contentResourcesFound)
Listing 6.21: Konstruktor SimpleTAMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
Nach Maßgabe des Betreuers dieser Arbeit wird auf die Implementierung dieser Komponente und der ADT, die diese Komponente steuern, verzichtet. Anstelle der Komponenten BS und TA wird eine Java-Client-Applikation implementiert, die eine direkte Ansteuerung der Komponente zur Verwaltung der Metadaten und Steuerung des AnalyseAblaufes erlaubt.
Metadaten-Verwaltungs-/Steuerungs-Komponente Die Aufgabe der MetadatenVerwaltungs-/Steuerungs-Komponente besteht in der Verwaltung der Metadaten zur
Durchführung des Analyse-Ablaufes und der Steuerung der Komponenten, die an den
verschiedenen Analyse-Abläufen beteiligt sind. Dazu bedarf es mehrerer Informationen.
Zur Durchführung des ersten Prozesses eines Analyse-Ablaufes, an dem diese Komponente partizipiert, einer Suche nach bereits im System vorhandenen Objekten des
Typs ContentResource, bedarf es je einem Vector-Objekt zur Speicherung der
Attribute, nach denen gesucht werden soll, und einem zur Speicherung der Beschreibungen der Datenquellen, deren Inhalte durchsucht werden sollen. Die gefundenen
ContentResource-Objekte werden in einem weiteren Vector-Objekt gespeichert.
Für den zweiten Prozess des Ablaufes bedarf es des Vorhandenseins eines TaskObjektes, das alle notwendigen Informationen zur Durchführung eines AnalyseAblaufes beinhaltet.
Die Klasse SimpleMVSKMetadata, die das Interface MVSKMetadata implementiert, beinhaltet diese Vector-Objekte sowie ein Task-Objekt zur Speicherung der Informationen zum durchzuführenden Analyse-Ablauf. Die zur Steuerung der Komponente MVSK benötigten Klassen und Interfaces sind in Abbildung 6.10 dargestellt.
MVSKMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Kontrolle des Ablaufes der Komponente MVSK zur Metadaten-Verwaltung und Steuerung der
Abläufe der ReDiCAt-Architektur.
Superinterfaces Subinterfaces Implementierungen SimpleMVSKMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
127
128
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
<<interface>>
<<interface>>
MVSKMetadata
redicat::metadata::Task
<<use>>
getAttributesToSearch()
getUtilisation()
getContentResourcesFound()
setUtilisation()
getDataSourcesToSearch()
getTaskName()
getTask()
setTaskName()
setAttributesToSearch()
setContentResourcesFound()
setDataSourcesToSearch()
setTask()
SimpleMVSKMetadata
attributesToSearch: Vector
contentResourcesFound: Vector
dataSourcesToSearch: Vector
task: Task
SimpleMVSKMetadata()
getAttributesToSearch()
<<use>>
getContentResourcesFound()
getDataSourcesToSearch()
getTask()
setAttributesToSearch()
setContentResourcesFound()
setDataSourcesToSearch()
setTask()
Abbildung 6.10.: Klassendiagramm der Metadaten zur Steuerung der Metadaten-Verwaltungs/Steuerungs-Komponente
• java.util.Vector getAttributesToSearch(): gibt den
Vector zurück, der die Attributnamen beinhaltet, nach denen in den
Beschreibungen der ContentResource-Objekte gesucht werden soll.
• void setAttributesToSearch(
java.util.Vector attributesToSearch): setzt
den Vector, der die Attributnamen beinhaltet, nach denen in den Beschreibungen der ContentResource-Objekte gesucht werden soll, auf
den Parameter attributesToSearch.
• java.util.Vector getContentResourcesFound(): gibt
den Vector zurück, der die gefundenen ContentResource-Objekte
beinhaltet, die den Suchkriterien entsprechen.
• void setContentResourcesFound(
java.util.Vector contentResourcesFound):
setzt den Vector, der die gefundenen ContentResource-Objekte
beinhaltet, die den Suchkriterien entsprechen, auf den Parameter
contentResourcesFound.
• java.util.Vector getDataSourcesToSearch(): gibt den
Vector zurück, der die Objekte zur Beschreibung des Zugriffes auf
Datenquellen beinhaltet, nach denen die ContentResource-Objekte
durchsucht werden sollen.
• void setDataSources(
java.util.Vector dataSourcesToSearch): setzt
den Vector, der die Objekte zur Beschreibung des Zugriffes auf Datenquellen beinhaltet, nach denen die ContentResource-Objekte
durchsucht werden sollen, auf den Parameter dataSources.
• Task getTask(): gibt das Objekt zurück, das die Metadatenmen-
128
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
129
ge zur Beschreibung eines Analyse-Ablaufes repräsentiert, der von der
ReDiCAt-Architektur durchgeführt werden kann.
• void setTask(Task task): setzt das Objekt, das die Metadatenmenge zur Beschreibung eines Analyse-Ablaufes repräsentiert, der von
der ReDiCAt-Architektur durchgeführt werden kann, auf den Parameter
task.
SimpleMVSKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
MVSKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces MVSKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• Task task: das Objekt zur Repräsentation einer Metadatenmenge, die
den Analyse-Ablauf beschreibt, der von der ReDiCAt-Architektur durchgeführt werden soll. Möglich sind hier:
– naive zur naiven Anwendung eines Klassifikators
– sg zur Klassifikation über Selection Graphs
– ci zur einfachen Induktion eines Klassifikators
– ici zur inkrementellen Induktion eines Klassifikators
– ml für einen Meta-Lern-Vorgang maintenance zur Wartung eines Klassifikators
• java.util.Vector attributesToSearch: ein Vector zur Speicherung der Attributnamen, nach denen in den Beschreibungen der
ContentResource-Objekte gesucht werden soll.
• java.util.Vector dataSourcesToSearch: ein Vector zur
Speicherung der Objekte zur Beschreibung der Adresse der Datenquellen,
nach denen in den Beschreibungen der ContentResource-Objekte
gesucht werden soll.
• java.util.Vector contentResourcesFound: ein Vector zur
Speicherung der gefundenen ContentResource-Objekte, die den
Suchkriterien entsprechen.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
4
5
public SimpleMVSKMetadata(
Task task,
java.util.Vector attributesToSearch,
java.util.Vector dataSourcesToSearch,
java.util.Vector contentResourcesFound)
Listing 6.22: Konstruktor SimpleMVSKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
Nach Maßgabe des Betreuers wird dieser ADT in der prototypischen Implementierung
keine Anwendung finden, da auf die Implementierung der Komponenten BS und TA
verzichtet wird. Somit beginnt der Analyse-Ablauf in der prototypischen Implementierung mit dem Selektieren der Trainingsdaten und Basisklassifikatoren. Der Prozess der
Suche nach vorhandenen Ressourcen wird übersprungen. Die Aufgaben der Ausführung
des Analyse-Ablaufes werden von der message-driven Bean MVSK übernommen, die in
Abschnitt 6.2 ausführlich dargestellt wird.
129
130
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Verwertungs-Komponente Die Verwertungs-Komponente steuert die weitere Verarbeitung des durch den Analyse-Ablauf erzeugten ContentResource-Objektes. Dazu
wird eine String-Repräsentation des Wertes der weiteren Verwendung sowie ein Objekt zum Zugriff auf die Datensenke, in der das erzeugte Objekt gespeichert werden soll,
verwendet.
Abbildung 6.11 zeigt die Klasse SimpleVKMetadata, die das Interface
VKMetadata repräsentiert. Die Klasse setzt die Speicherung der Metadaten zum
Zugriff auf die Datensenke sowie den String, der die Verwertung indiziert, um.
redicat::metadata::SimpleContentResourceLocation
SimpleContentResourceLocation()
getDataSourceMD()
getUserName()
getUserPasswd()
setDataSourceMD()
setUserName()
setUserPasswd()
<<interface>>
<<interface>>
VKMetadata
<<interface>>
redicat::metadata::ContentResourceLocation
<<use>>
redicat::metadata::ComponentAddress
<<use>>
getUtilisation()
getDataSourceMD()
getComponentName()
setUtilisation()
setDataSourceMD()
setComponentName()
getSinkLocation()
setSinkLocation()
<<interface>>
<<interface>>
redicat::metadata::ClassifierLocation
redicat::metadata::ResultDataSetLocation
setUtilisation()
getDataSourceMD()
getDataSourceMD()
getComponentName()
SimpleVKMetadata()
getUserName()
getUserName()
setComponentName()
getSinkLocation()
getUserPassword()
getUserPasswd()
setSinkLocation()
setDataSourceMD()
setDataSourceMD()
setUserName()
setUserName()
setUserPassword()
setUserPasswd()
SimpleVKMetadata
redicat::metadata::SimpleComponentAddress
getUtilisation()
SimpleComponentAddress()
redicat::metadata::SimpleClassifierLocation
redicat::metadata::SimpleResultDataSetLocation
SimpleClassifierLocation()
SimpleResultDataSetLocation()
getDataSourceMD()
getDataSourceMD()
getUserName()
getUserName()
getUserPassword()
getUserPasswd()
setDataSourceMD()
setDataSourceMD()
setUserName()
setUserName()
setUserPassword()
setUserPasswd()
Abbildung 6.11.: Klassendiagramm
Komponente
der Metadaten
zur Steuerung
der Verwertungs-
VKMetadata (Interface)
Beschreibung Modelliert einen abstrakten Datentyp zur Angabe der Verwertung
des durch einen Analyse-Ablauf erzeugten ContentResource-Objektes.
Dazu werden ein String-Attribut zur Bestimmung der Verwertung der erzeugten Ressource sowie Metadaten zum Zugriff auf eine Datensenke, in der die
erzeugte Ressource gespeichert werden soll, vorgesehen.
Superinterfaces Subinterfaces Implementierungen SimpleVKMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ContentResourceLocation getSinkLocation(): gibt die
Metadaten zum Zugriff auf die Datensenke zurück, in der die durch den
Analyse-Ablauf erzeugte Ressource gespeichert werden soll.
• void setSinkLocation(
ContentResourceLocation sinkLocation): setzt
die Metadaten zum Zugriff auf die Datensenke, in der die erzeugte Ressource gespeichert werden soll, auf den Parameter sinkLocation.
130
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
131
• java.lang.String getUtilisation(): gibt die StringRepräsentation des durch einen Analyse-Ablauf erzeugten Objektes
zurück.
• void setUtilisation(
java.lang.String utilisation): setzt die StringRepräsentation des durch einen Analyse-Ablauf erzeugten Objektes auf
den Parameter utilisation.
SimpleVKMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces VKMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces VKMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ContentResourceLocation sinkLocation: die Metadaten
zum Zugriff auf die Datensenke, in der die durch den Analyse-Ablauf
erzeugte Ressource gespeichert werden soll.
• java.lang.String utilisation: eine String-Repräsentation der
möglichen Verwertungen eines durch einen Analyse-Ablauf erzeugten
ContentResource-Objektes. Mögliche Werte sind:
– store zur Speicherung in einer Datensenke
– visualize zur Visualisierung gegenüber dem Benutzer
– both zur Speicherung in einer Datensenke und gleichzeitiger Visualisierung gegenüber einem Benutzer.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
3
public SimpleVKMetadata(
java.lang.String utilisation,
ContentResourceLocation sinkLocation)
Listing 6.23: Konstruktor SimpleVKMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
6.1.3. Interfaces und prototypische Implementierungen zur
Parametrisierung der Analyse-Algorithmen
Im Rahmen des ReKlaMe-Projektes sind verschiedene Analyse-Abläufe möglich, die unterschiedliche Komponenten mit unterschiedlicher Funktionalität einbinden. Einige dieser Komponenten bilden Analyse-Algorithmen ab, deren Ablauf parametrisierbar ist. Um die Parametrisierung dieser Algorithmen zu ermöglichen, werden verschiedene abstrakte Datentypen entworfen. Diese seien im Folgenden vorgestellt:
(Inkrementelle) Induktions-Komponente Diese Komponente implementiert einen (inkrementellen) Induktions-Algorithmus. Je nach Ausführung des implementierten Algorithmus existiert die Möglichkeit der Parameterübergabe. Das Interface, das diesen
Datentyp umsetzt, sei mit InductionMetadata bezeichnet und in Abbildung 6.12
zusammen mit der implementierenden Klasse SimpleInductionMetadata dargestellt. Die Parameter können über den abstrakten Datentyp ParameterSet als
Property in einer Liste des Datentyps java.util.Properties angegeben werden. Eine Property besteht immer aus einem Paar eines Schlüsselwortes und dessen
131
132
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Wertes. Somit können über die Schlüsselworte Parameternamen und über die Werte der
Schlüsselworte die Werte der Parameter übergeben werden.
Klassifikations-Komponente Analog zur Induktions-Komponente kann auch der
in der Klassifikations-Komponente implementierte Algorithmus potentiell parametrisiert werden. Um dies zu ermöglichen, wird ein abstrakter Datentyp in
Form eines Interfaces ClassificationMetadata eingeführt, das analog zu
InductionMetadata aufgebaut und ebenfalls zusammen mit seiner Implementierung SimpleClassificationMetadata in Abbildung 6.12 dargestellt ist.
Komponenten zur Durchführung der Klassifikator-Wartung Auch die KlassifikatorWartung, an der verschiedene Komponenten partizipieren, muss parametrisiert werden. Die Parametrisierung der Algorithmen erfolgt analog zu InductionMetadata
und ClassificationMetadata durch ein ParameterSet. Das Interface
MaintenanceMetadata, das die Metadaten zur Steuerung der an dem WartungsAblauf beteiligten Komponenten abbildet, ist zusammen mit der implementierenden
Klasse SimpleMaintenanceMetadata in Abbildung 6.12 dargestellt. Die einfaredicat::metadata::SimpleParameterSet
SimpleParameterSet()
getParameters()
setParameters()
<<interface>>
redicat::metadata::ParameterSet
getParameters()
setParameters()
<<use>>
<<use>>
<<use>>
<<interface>>
<<interface>>
ClassificationMetadata
MaintenanceMetadata
getParams()
getParams()
setParams()
setParams()
<<use>>
<<interface>>
InductionMetadata
<<use>>
getParams()
setParams()
<<use>>
SimpleClassificationMetadata
SimpleMaintenanceMetadata
SimpleInductionMetadata
SimpleClassificationMetadata()
SimpleMaintenanceMetadata()
SimpleInductionMetadata()
getParams()
getParams()
getParams()
setParams()
setParams()
setParams()
Abbildung 6.12.: Klassendiagramm der Klassen und Interfaces zur Repräsentation der ADT
zur Parametrisierung und Steuerung der Algorithmen, die durch Komponenten in der ReDiCAt-Architektur umgesetzt wurden
chen Implementierungen der Interfaces zur Parametrisierung der Analyse-Algorithmen
ermöglichen, wie auch schon die Implementierungen der Interfaces in Abschnitt 6.1.1,
die Demonstration der Funktionalität der Architektur. Es folgen die Beschreibungen der
Interfaces und Klassen zur Umsetzung der ADT, die die Algorithmen parametrisieren,
die in den Komponenten der ReDiCAt-Architektur eingebettet sind.
ClassificationMetadata (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Parametrisierung eines
Klassifikations-Algorithmus, der durch die Komponente KK der ReDiCAtArchitektur umgesetzt wird.
Superinterfaces -
132
6.1 O BJEKTORIENTIERTES D ESIGN DER M ETADATENFORMATE
133
Subinterfaces Implementierungen SimpleClassificationMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ParameterSet getParams(): gibt das Objekt ParameterSet
zurück, das den ADT repräsentiert, der die Parameter beinhaltet, die dem
Algorithmus übergeben werden sollen.
• void setParams(ParameterSet params): setzt das Objekt
ParameterSet, das den ADT repräsentiert, der die Parameter beinhaltet, die dem Algorithmus übergeben werden sollen, auf den Parameter
params.
InductionMetadata (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Parametrisierung eines
Klassifikator-Induktions-Algorithmus, der durch die Komponente (I)IK der
ReDiCAt-Architektur umgesetzt wird.
Superinterfaces Subinterfaces Implementierungen SimpleInductionMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ParameterSet getParams(): gibt das Objekt ParameterSet
zurück, das den ADT repräsentiert, der die Parameter beinhaltet, die dem
Algorithmus übergeben werden sollen.
• void setParams(ParameterSet params): setzt das Objekt
ParameterSet, das den ADT repräsentiert, der die Parameter beinhaltet, die dem Algorithmus übergeben werden sollen, auf den Parameter
params.
MaintenanceMetadata (Interface)
Beschreibung Modelliert eine Metadatenmenge zur Parametrisierung der Algorithmen zur Klassifikator-Wartung, die durch die Komponenten (I)IK und IVK
der ReDiCAt-Architektur umgesetzt werden.
Superinterfaces Subinterfaces Implementierungen SimpleMaintenanceMetadata.java
Methoden Folgende Methoden müssen implementiert werden:
• ParameterSet getParams(): gibt das Objekt ParameterSet
zurück, das den ADT repräsentiert, der die Parameter beinhaltet, die den
Algorithmen übergeben werden sollen.
• void setParams(ParameterSet params): setzt das Objekt
ParameterSet, das den ADT repräsentiert, der die Parameter beinhaltet, die den Algorithmen übergeben werden sollen, auf den Parameter
params.
SimpleClassificationMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
ClassificationMetadata dar und dient dem Zwecke der Demonstration der Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces ClassificationMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ParameterSet params: das Objekt zur Repräsentation des ADT, der
die Parameter beinhaltet, die dem Algorithmus übergeben werden sollen.
133
134
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleClassificationMetadata(
ParameterSet params)
Listing 6.24: Konstruktor SimpleClassificationMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
SimpleInductionMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
InductionMetadata dar und dient dem Zwecke der Demonstration der
Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces InductionMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ParameterSet params: das Objekt zur Repräsentation des ADT, der
die Parameter beinhaltet, die dem Algorithmus übergeben werden sollen.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleInductionMetadata(
ParameterSet params)
Listing 6.25: Konstruktor SimpleInductionMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
SimpleMaintenanceMetadata (Class)
Beschreibung Diese Klasse stellt eine einfache Implementierung des Interfaces
MaintenanceMetadata dar und dient dem Zwecke der Demonstration der
Funktionsfähigkeit der ReDiCAt-Architektur.
Implementierte Interfaces MaintenanceMetadata.java
Attribute Folgende Attribute wurden implementiert:
• ParameterSet params: das Objekt zur Repräsentation des ADT, der
die Parameter beinhaltet, die den Algorithmen zur Wartung der Klassifikatoren übergeben werden sollen.
Konstruktoren Ein Konstruktor wird implementiert:
1
2
public SimpleMaintenanceMetadata(
ParameterSet params)
Listing 6.26: Konstruktor SimpleMaintenanceMetadata.java
Methoden Es werden get<Attribut>() und set<Attribut>()Methoden für jedes vorhandene Attribut implementiert.
6.2. Objektorientiertes Design der Komponenten der
Architektur
Beim Design der Komponenten der Architektur wird die EJB-Architektur Verwendung finden.
Die Komponenten werden als Enterprise Beans (EB) umgesetzt, genauer als session beans (im
Folgenden als SB bezeichnet). Steuernde Komponenten wie z.B. die Komponente MVSK werden in Form von message-driven beans (folgend als MDB bezeichnet) implementiert. Datenoder Metadatensätze werden in Form von entity beans (fortan mit EB bezeichnet) umgesetzt.
134
6.2 O BJEKTORIENTIERTES D ESIGN DER KOMPONENTEN DER A RCHITEKTUR
Im Folgenden werden alle Komponenten, die in der prototypischen Implementierung der
ReDiCAt-Architektur implementiert werden, aufgeführt und in den Gesamtzusammenhang der
Architektur gebracht.
MVSK-Bean Die Komponente zur Metadatenverwaltung und Steuerung der Analyse-Abläufe
wird in Form einer MDB implementiert. Sie observiert eine Message-Queue, die
controlQueue. Die prototypische Implementierung dieser Komponente umfasst den
Teil der Analyse, der mit der Durchführung eines Analyse-Ablaufes betraut ist. Der Prozess der Suche nach vorhandenen Ressourcen wird nach Maßgabe des Betreuers dieser
Arbeit nicht umgesetzt.
Zur Initiierung eines Analyse-Ablaufes wird ein Objekt des Typs Task über eine Nachricht auf der controlQueue an die MVSK-MDB übergeben. Diese dekodiert die Nachricht und extrahiert das in der Nachricht enthaltene Task-Objekt in Abhängigkeit des
Wertes eines String-Parameters mit dem Namen Task, der zusätzlich mit der Nachricht
übergeben wurde. Dieser String-Parameter bestimmt den genauen Typ des übergebenen Task-Objektes und legt damit fest, ob dieses zu einem InductionTask-, einem
ClassificationTask- oder einem MaintenanceTask-Objekt gecastet wird.
Auf Basis des übergebenen String-Parameters und des dekodierten und gecasteten
Task-Objektes kann die Analyse durchgeführt werden. Die genauen Abläufe der möglichen Analysen sind in Abschnitt 6.3 dargestellt. Die MVSK-Bean sorgt weiter für die
Speicherung des Task-Objektes in einer EB, der TaskStorage-Bean. Diese EB ist
architekturweit zugreifbar, so dass jede Komponente zu jeder Zeit die Möglichkeit hat,
Daten aus dem Task-Objekt einzusehen.
In Abhängigkeit des auszuführenden Tasks wird das dekodierte und gecastete TaskObjekt an eine SB weitergegeben. Im Falle der Induktion ist dies die IMVK-SB, im Falle
der Klassifikation wird die AMVK-SB verwendet und im Falle der Klassifikator-Wartung
wird das Task-Objekt an die WMVK-SB übergeben. Je nach Art des auszuführenden
Tasks veranlasst die SB, an die das Task-Objekt übergeben wurde, die weiteren Schritte
zur Durchführung des Analyse-Ablaufes.
Hat eine der nachfolgenden SB die von ihr durchzuführende Aufgabe erledigt, so wird
erneut eine Nachricht an die MVSK-MDB geschickt, um die erfolgreiche Abarbeitung
der Teilaufgabe anzuzeigen bzw. zu bestätigen. Die Nachricht beinhaltet in einem solchen Falle einen String-Parameter mit der Bezeichnung resourceStored. Dieser Parameter weist auf die Speicherung einer Ressource hin, die im Rahmen der Ausführung der
Analyse selektiert wurde, und hat als Wert den Typ der Ressource, die gespeichert wurde. Dies kann z.B. ein Datensatz von Trainings- oder Instanzdaten sein, aber auch ein
Basisklassifikator. Je nach Wert dieses Parameters werden Nachrichten über die empfangene Bestätigung der erfolgreichen Beschaffung von Analyse-Ressourcen dem Benutzer
gegenüber ausgegeben.
Um die Ausführung weiterer Schritte im Rahmen der Abarbeitung eines AnalyseAblaufes zu veranlassen, können zusätzlich Nachrichten mit dem String-Parameter action übergeben werden. Zulässige Werte für diesen Parameter sind:
• executeClassifierCollection
• executeAnalysis
• AKMetadata
Der Wert executeClassifierCollection wird übergeben, wenn die Selektion
von Klassifikatoren durchgeführt werden soll, weil diese für den Fortlauf des AnalyseAblaufes benötigt werden. Der Wert executeAnalysis bewirkt den Aufruf der
135
135
136
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Komponente, die den auszuführenden Analyse-Algorithmus implementiert. Im Falle einer Klassifikator-Induktion bewirkt dieser Wert also den Aufruf der Komponente, die
den Induktions-Algorithmus umsetzt, im Falle der Klassifikator-Anwendung den Aufruf der Komponente, die den Klassifikations-Algorithmus implementiert, usw. Der Wert
AKMetadata schließlich bewirkt die Erzeugung eines Metadatensatzes, der eine Ressource beschreibt, die durch einen Analyse-Ablauf erzeugt wurde. Dieser Metadatensatz
wird in ein globales Metadaten-Repository eingepflegt und steht für zukünftige AnalyseAblaufe potentiell zur Verfügung.
DSK-Bean, TD-Bean, ID-Bean Die DSK-SB ist mit der Selektion von Daten aus Datenquellen betraut. Anhand der ihr übergebenen Metadaten vom Typ DSKMetadata sucht
sie die Komponente auf, die die Datenquelle beinhaltet, aus der Daten selektiert werden sollen. Im Falle eines Induktions-Ablaufes werden aus der TD-SB Trainingsdaten
selektiert, im Falle des Anwendungs-Ablaufes aus der ID-SB Instanzdaten. Die Adresse der TD- oder ID-SB ist in DSKMetadata enthalten. Die selektierten Daten werden
in Form einer Nachricht an die analysisQueue weitergegeben. Diese wird von der
AnalysisControl-MDB observiert, deren Verhalten später beschrieben wird.
BSK-Bean, KR-Bean Die BSK-SB wird zur Selektion von Basisklassifikatoren aus einem
Klassifikator-Repository genutzt, welches durch die KR-SB implementiert wird. Sie bekommt einen Metadatensatz vom Typ BSKMetadata übergeben, anhand dessen sie die
Komponente KR auffinden kann, um eine Menge von Basisklassifikatoren zu selektieren. Die selektierten Basisklassifikatoren werden, analog zum Verhalten der DSK-SB, in
Form einer Nachricht an die analysisQueue gesendet.
IVK-Bean, GU-Bean Die IVK-SB dient der Invalidierung von Klassifikatoren im Rahmen
des Analyse-Ablaufes einer Klassifikator-Wartung. Sie erhält einen Metadatensatz vom
Typ IVKMetadata, der die Metadaten zur Selektion des zu invalidierenden Klassifikators beinhaltet. Dieser wird aus dem Klassifikator-Repository selektiert und durch
das Setzen eines Zeitstempels für das Transaktionszeitende als invalid gekennzeichnet. Der Zeitstempel wird von der GU-SB erzeugt, die als globale Uhr für die gesamte
ReDiCAt-Architektur dient. Nach Invalidierung des Klassifikators wird dieser wieder im
Klassifikator-Repository gespeichert.
IIK-Bean Die IIK-SB implementiert prototypisch einen Klassifikator-InduktionsAlgorithmus. Dazu benötigt sie eine Menge von Trainingsdaten und im Falle einer inkrementellen Induktion eine Menge von Basisklassifikatoren, die sie aus der
ContentResourceStorage-EB bezieht, sowie einen Metadatensatz vom Typ
InductionMetadata zur potentiellen Parametrisierung des Induktionsvorganges.
Anhand dieser Eingaben induziert die IIK-SB einen neuen Klassifikator vom Typ
SimpleClassifier. Die Induktion wird nicht semantisch vollständig und korrekt
implementiert, sondern in Form eines prototypischen Induktions-Algorithmus, der einen
willkürlichen Klassifikator erzeugt, sofern er die benötigten Eingaben in syntaktisch
korrekter Form bekommt. Die Induktion erfolgt ohne Berücksichtigung der Semantik
der Eingabedaten und Basisklassifikatoren. Der prototypisch induzierte, neue Klassifikator wird anschließend in Form einer Nachricht an die utilisationQueue gesendet,
die von der VKControl-MDB observiert wird. Das Verhalten der VKControl-MDB
wird später beschrieben.
KK-Bean Die KK-SB stellt eine prototypische Implementierung eines KlassifikationsAlgorithmus dar. Sie erzeugt anhand der Eingabedaten, die aus einem Instanzdatensatz und einem darauf anzuwendenden Basisklassifikator bestehen,
ein Klassifikationsergebnis. Parametrisierende Metadaten werden in Form eines ADT ClassificationMetadata übergeben. Sie liest die in der
136
6.2 O BJEKTORIENTIERTES D ESIGN DER KOMPONENTEN DER A RCHITEKTUR
ContentResourceStorage-EB zwischengespeicherten Instanzdaten und den anzuwendenden Klassifikator ein und erzeugt aus diesen ohne Beachtung deren Semantik
willkürlich ein Klassifikationsergebnis. Dieses wird, analog zum Vorgehen der IIK-SB,
in Form einer Nachricht an die utilisationQueue gesendet.
ML-Bean Die ML-SB implementiert einen prototypischen Meta-Lern-Algorithmus. Dieser
wird durch die Übergabe eines Metadatensatzes vom Typ InductionMetadata
parametrisiert. Analog zur IIK-SB liest die ML-SB die Klassifikatoren aus der
ContentResourceStorage-EB aus und erzeugt ohne Beachtung der Semantik der
Basisklassifikatoren ein willkürliches, globales Modell. Dieses wird, analog zum Vorgehen der IIK-SB und der KK-SB, in Form einer Nachricht an die utilisationQueue
gesendet.
SGAK-Bean, DBAGK-Bean Die SGAK-SB ist Teil der Algorithmik, die aus einem Klassifikator über die Ableitung von Selection Graphs und deren Wandlung zu Datenbankabfragen einen alternativen Weg der Klassifikation darstellt. Die SGAK-SB
wird über einen ADT des Typs DBAGKMetadata parametrisiert und liest aus der
ContentResourceStorage-EB den benötigten Klassifikator aus. Dieser wird auf
Basis eines prototypisch implementierten Algorithmus willkürlich zu Selection Graphs
verarbeitet, die der DBAGK-SB übergeben werden. Diese wandelt die Selection Graphs
ebenfalls prototypisch zu Datenbank-Abfragen und wendet diese auf die Komponente ID-SB an, die die Instanzdaten beinhaltet. Die Adresse der ID-SB entnimmt sie den
Metadaten, die der SGAK-SB übergeben und an sie weitergereicht wurden. Die Ergebnisse der einzelnen Anfragen werden zu einem Gesamt-Klassifikationsergebnis verarbeitet
und, analog zum Vorgehen der IIK-SB, der KK-SB und der ML-SB in Form einer Nachricht an die utilisationQueue gesendet.
AnalysisControl-Bean Die AnalysisControl-MDB dient der Zwischenspeicherung
von Ressourcen, die durch andere Komponenten wie beispielsweise die DSK-SB oder
die BSK-SB aus verschiedenen Datenquellen selektiert wurden. Sie bekommt eine
Ressource per Nachricht übergeben, extrahiert diese aus der Nachricht und speichert
sie in Abhängigkeit des Typs in der ContentResourceStorage-EB. Nach erfolgreicher Speicherung sendet die AnalysisControl-MDB eine Nachricht an die
controlQueue, die als Bestätigung der erfolgreichen Ausführung einer RessourcenSelektion dient. Diese Nachricht wird mit einer String-Property resourceStored versehen, die in Abhängigkeit des Typs der zu speichernden Ressource die Werte
trainingsdata, instancedata oder classifierset annehmen kann. Anhand dieser String-Property kann die MDB, die die controlQueue observiert, entsprechend auf das Ereignis der Ressourcenspeicherung reagieren. In der prototypischen
Implementierung der ReDiCAt-Architektur wird sich die Reaktion auf die Ausgabe einer
bestätigenden Nachricht beschränken.
VK-Bean, KE-Bean, AK-Bean, MetadataRepository-Bean Die VK-SB ist mit der Verarbeitung des durch den Analyse-Ablauf erzeugten ContentResource-Objektes betraut. Anhand der Metadaten, die in Form eines ADT vom Typ VKMetadata übergeben
werden, kann die weitere Verarbeitung der erzeugten Ressource veranlasst werden. So
beinhalten die Metadaten ein String-Objekt, welches die Art der Verarbeitung bestimmt. Mögliche Werte sind hier store zur Speicherung der Ressource, visualize
zur Visualisierung gegenüber einem Benutzer sowie both, um sowohl eine Speicherung der Ressource als auch deren Visualisierung zu veranlassen. Im Falle der Speicherung werden Metadaten zum Zugriff auf die Datensenke benötigt, in der die Ressource gespeichert werden soll. Dazu enthalten die Metadaten vom Typ VKMetadata
ein ADT des Typs ContentResourceLocation, welches die Adresse der Komponente, die die Datensenke beherbergt, sowie einen Benutzernamen und ein Passwort
137
137
138
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
beinhaltet. Die Datensenke wird in Form der KE-SB prototypisch implementiert. Nach
erfolgter Speicherung und/oder Visualisierung erfolgt der Aufruf der AktualisierungsKomponente AK, die ebenfalls als SB implementiert wird und auf Basis der durch den
Analyse-Ablauf erzeugten, neuen Ressource einen Metadatensatz erzeugt und in ein globales Metadaten-Repository einpflegt, der die neu erzeugte Ressource beschreibt und referenzierbar macht. Anhand dieses Metadatensatzes kann die neu erzeugte Ressource im
Rahmen späterer Analyse-Abläufe aufgefunden und in einen Analyse-Prozess mit eingebunden werden. Zu diesen Metadaten, die in einem globalen Metadaten-Repository
gespeichert werden, zählen verschiedene Informationen:
• ein String-Objekt, welches den Typ der neu erzeugten Ressource repräsentiert. Erlaubte Werte sind classifier, globalModel oder
classificationResult.
• einen ADT zur Repräsentation der Metadaten zum Zugriff auf die Datensenke, in der die neu erzeugte Ressource gespeichert wurde, in Form eines
ContentResourceLocation-Objektes. Anhand dieser Metadaten kann die
Ressource später aus der Datenquelle extrahiert werden.
• ein String-Objekt, das eine Beschreibung der neu erzeugten Ressource beinhaltet. Diese kann einem Benutzer präsentiert werden, und dieser kann auf Basis dieser Beschreibung die Nützlichkeit der Ressource für einen eigenen Analyse-Ablauf
ermessen.
• einen ADT zur Repräsentation der Metadaten zum Zugriff auf die Datenquelle, die
die Grundlage der Erzeugung des neuen ContentResource-Objektes darstellte, also z.B. eine Datenquelle, die einen Klassifikator beinhaltet, anhand dessen
ein Klassifikationsergebnis erzeugt wurde. Diese Information kann sinnvoll sein,
wenn ein Benutzer sehen möchte, ob bereits Ergebnisse existieren, die denen einer
geplanten Analyse entsprächen.
Das Metadaten-Repository wird in der prototypischen Implementierung nicht in Form
eines klassischen Repositories als Datenbank oder DWH implementiert. Anstelle dessen werden die Metadatensätze, die eine von der ReDiCAt-Architektur erzeugte Ressource beschreiben, in Form von Entity-Beans vom Typ MetadataRepository implementiert, die anhand ihrer Attribute auffindbar sind. So lässt sich nach Teilen der
Beschreibung oder aber nach dem Ort der Speicherung einer Ressource suchen. Eine
entsprechende Such-Komponente, wie sie in der Planung des Ausführungsmodelles in
Abschnitt 5.1 aufgezeigt wird, erfolgt nach Maßgabe des Betreuers im Rahmen der prototypischen Implementierung nicht. Die MetadataRepository-EB implementiert
die Suchbarkeit der Felder hingegen auch in der prototypischen Implementierung der
ReDiCAt-Architektur.
IMVK-Bean Die IMVK-SB steuert die Abläufe, die zur Durchführung einer KlassifikatorInduktion erforderlich sind.
In Abhängigkeit des auszuführenden Induktions-Tasks (ci, ici oder ml) werden verschiedene Prozesse initiiert. So wird im Falle eines ci oder ici-Tasks zunächst die Selektion der zugrunde liegenden Trainingsdaten mittels der DSK-SB initiiert. Nach erfolgter Trainingsdatenselektion und Versendung der selektierten Daten mittels einer Nachricht an die analysisQueue wird eine Nachricht mit der String-Property action an
die controlQueue gesendet, die den Wert executeClassifierCollection
aufweist. Im Falle eines ml-Tasks ist die Datenselektion nicht notwendig, so dass direkt
eine Nachricht an die controlQueue gesendet werden kann, die eine KlassifikatorSelektion initiiert.
138
6.2 O BJEKTORIENTIERTES D ESIGN DER KOMPONENTEN DER A RCHITEKTUR
Anschließend wird die Klassifikator-Selektion mittels der BSK-SB durchgeführt. Dazu werden die im InductionTask-Objekt enthaltenen Adressen der BSK-Adressen
durchgegangen und die entsprechenden Basisklassifikatoren werden aus ihren Datenquellen selektiert. Die selektierten Klassifikatoren werden in Form einer Nachricht an
die analysisQueue zur weiteren Verarbeitung gesendet. Weiter wird eine Nachricht an die controlQueue gesendet, die die String-Property action mit dem Wert
executeAnalysis beinhaltet. Diese Nachricht sorgt für die Initiierung des AnalyseAlgorithmus, der eine neue Ressource erzeugt.
Die Durchführung dieses Analyse-Algorithmus wird erneut durch den auszuführenden
Induktions-Task bestimmt. Zunächst wird die Komponente spezifiziert, die den Algorithmus implementiert. Dies ist im Falle eines ci-Tasks oder eines ici-Tasks eine IIK-SB,
im Falle eines ml-Tasks handelt es sich um eine ML-SB. Dann erfolgt der Aufruf der Methode der spezifizierten Analyse-Komponente, die den Algorithmus ausführt.
Ein genaues Diagramm der an einem Induktions-Ablauf beteiligten Komponenten und
Methoden wird in Abschnitt 6.3 gegeben.
AMVK-Bean Die AMVK-SB steuert die Prozesse, die zur Durchführung eines AnalyseAblaufes einer Klassifikator-Anwendung benötigt werden. Hier muss zwischen dem naiven Ansatz der Klassifikator-Anwendung und dem auf Selection-Graph-Ableitung basierenden Ablauf unterschieden werden.
naiver Ansatz: Im Falle eines naiven Ansatzes wird zunächst mittels einer DSK-SB
die Instanzdatenmenge selektiert, die klassifiziert werden soll. Diese Datenmenge wird an die analysisQueue in Form einer Nachricht gesendet, um deren
weitere Verarbeitung zu veranlassen. Anschließend wird eine Nachricht an die
controlQueue gesendet, die mittels der String-Property action, die den Wert
executeClassifierCollection trägt, die Selektion des Klassifikators initiiert, der die Grundlage der Klassifikation darstellt.
Dann wird der Klassifikator über eine BSK-SB selektiert und ebenfalls an die
analysisQueue gesendet. Durch eine Nachricht mit der String-Property action
und dem Wert executeAnalysis, die an die controlQueue gesendet wird,
wird die Ausführung der Klassifikation initiiert.
Dazu wird eine KK-SB spezifiziert, die auf die zuvor selektierten Daten zugreifen
kann und die Klassifikation durchführt.
Selection-Graph-basierter Ansatz: Im Falle der Klassifikation durch SelectionGraph-Ableitung wird in einem ersten Schritt die Klassifikator-Selektion durch eine BSK-SB aufgerufen. Dies geschieht analog zum naiven Klassifikations-Ansatz
über die Versendung einer Nachricht an die controlQueue, die eine StringProperty action mit dem Wert executeClassifierCollection enthält.
Der Klassifikator wird anschließend durch eine SGAK-SB zu einer Menge von Selection Graphs gewandelt, die dann zu Datenbank-Abfragen umgesetzt und auf die
Datenquelle, die die Instanzdaten beinhaltet, angewendet werden. Diese prototypisch umgesetzten Wandlungen wurden bereits zuvor beschrieben.
Auch hier wird ein genaues Diagramm der an einem Klassifikations-Ablauf beteiligten Komponenten und Methoden in Abschnitt 6.3 aufgezeigt.
WMVK-Bean Die WMVK-SB steuert die Prozesse, die am Ablauf der Wartung eines Klassifikators beteiligt sind. Dazu zählt die Invalidierung des zu wartenden Klassifikators und
dessen Speicherung sowie die neue Induktion des zu wartenden Klassifikators, ebenfalls
gefolgt von dessen Speicherung.
139
139
140
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Der Ablauf gestaltet sich wie folgt: Zunächst wird durch die MVSK-MDB eine Invalidierung des zu wartenden Klassifikators durchgeführt. Dazu wird eine InvalidierungsKomponente IVK-SB spezifiziert, die einen Klassifikator übergeben bekommt, den sie
anhand eines globalen Zeitstempels von der GU-SB als invalid markiert und anschließend wieder im von der KR-SB umgesetzten, prototypischen Klassifikator-Repository
speichert.
Nach erfolgter Invalidierung verläuft der weitere Prozess der Klassifikator-Wartung analog zur Klassifikator-Induktion, die bereits zuvor beschrieben wurde. In der prototypischen Implementierung wird der Vorgang der Wartung eines beliebigen Klassifikators
auf die Wartung eines inkrementell induzierten Klassifikators eingeschränkt. Dieser Vorgang steht stellvertretend für die Wartungsvorgänge eines einfach induzierten oder durch
einen Meta-Lern-Prozess erzeugten Klassifikators.
6.3. Beschreibung der Methodenaufrufe zur Durchführung
der Analyse-Abläufe
Nachdem in Abschnitt 6.2 die Komponenten im Einzelnen in ihrer Funktionalität vorgestellt wurden, erfolgt nun die Darstellung der Verbindungen dieser in Form von SequenzDiagrammen. Zu den Analyse-Abläufen, die in der prototypischen Implementierung umgesetzt
werden, wird die Abfolge der Methodenaufrufe dargestellt. Somit können die Komponenten
miteinander in Verbindung gebracht werden, und die Vorgänge, die während der Ausführung
eines Analyse-Ablaufes ablaufen, können leichter nachvollzogen werden.
Die Sequenzen der Methodenaufrufe für die Umsetzung der Analyse-Abläufe sind in den folgenden Abschnitten in verschiedenen Abbildungen in Form von Sequenz-Diagrammen dargestellt. Um die Übersichtlichkeit der Sequenz-Diagramme zu verbessern, werden z.T. verschiedene Methoden untereinander dargestellt, und es wird auf die Angabe der Parameter verzichtet,
die den aufgerufenen Methoden übergeben werden.
6.3.1. Ablauf der einfachen und inkrementellen Klassifikator-Induktion
Anhand des Sequenz-Diagrammes in Abbildung 6.13 ist der Verlauf der Methodenaufrufe und
damit die Verbindung der Komponenten der ReDiCAt-Architektur untereinander zur Umsetzung des Analyse-Ablaufes der einfachen und inkrementellen Klassifikator-Induktion einzusehen. Der Unterschied zwischen der einfachen und der inkrementellen Induktion eines Klassifikators besteht in der prototypischen Implementierung darin, dass nur während des Ablaufes der
inkrementellen Induktion Basisklassifikatoren durch die BSK-SB selektiert werden. Im Falle
der einfachen Induktion wird die BSK-SB zwar aufgerufen, jedoch werden keine Klassifikatoren selektiert.
Exemplarisch für den Ablauf einer Klassifikator-Induktion sei im Folgenden der Verlauf der
Methodenaufrufe aufgezeigt, wie er im Falle der inkrementellen Induktion ablaufen wird, auf
die Darstellung der einfachen Induktion wird hier verzichtet, da sie mit Ausnahme der zuvor
erwähnten, fehlenden Basisklassifikator-Selektion analog verläuft.
Über die Client-Applikation JavaUserInterface wird ein Analyse-Ablauf zur inkrementellen Klassifikator-Induktion initiiert. Dies geschieht, indem über die controlQueue
der MVSK-MDB eine Nachricht mit einem SimpleInductionTask-Objekt und einer
String-Property Task mit dem Wert ci übergeben wird. Die onMessage()-Methode der
MVSK-MDB speichert das Task-Objekt durch Aufruf der Methode setTask() einer
140
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
TaskStorage-EB in einer Instanz mit der ID 1, über die diese architekturweit referenzierbar ist. Anschließend wird von MVSK-MDB die Methode executeDataCollection()
der IMVK-SB aufgerufen. Diese ruft die Methode deliverDataSet() einer DSK-SB
auf, die für die Selektion einer Trainingsdatenmenge verantwortlich ist. Die Selektion der
Trainingsdatenmenge erfolgt durch den Aufruf der Methode getTrainingsData() der
TD-SB. Die selektierten Daten werden zusammen mit einer String-Property dataType und
deren Wert trainingsdata in Form einer Nachricht an die analysisQueue gesendet, die von der AnalysisControl-MDB observiert wird. Die onMessage()-Methode
der AnalysisControl-MDB ruft ihrerseits die Methode setSelectedDataSet() einer EB-Instanz vom Typ ContentResourceStorage mit der ID 1 auf, um in dieser
EB die selektierten Daten zwischenzuspeichern. Um die erfolgreiche Zwischenspeicherung
der Trainingsdaten an die MVSK-MDB zu melden, sendet die onMessage()-Methode der
ContentResourceStorage-EB anschließend eine Nachricht mit der String-Property resourceStored und dem Wert trainingsdata an die controlQueue.
Nachdem die DSK-SB die Trainingsdaten als Nachricht an die analysisQueue geschickt hat, schickt sie eine weitere Nachricht mit der String-Property action und dem
Wert executeClassifierCollection an die controlQueue, um die Selektion
der Klassifikatoren durchzuführen, die im SimpleInductionTask-Objekt aufgeführt
sind. Die onMessage()-Methode der MVSK-MDB ruft nach Erhalt dieser Nachricht
die Methode executeClassifierCollection() der IMVK-SB auf, die ihrerseits
die Methode deliverClassifierSet() einer BSK-SB aufruft. Die BSK-SB lokalisiert die Komponenten des Typs KR-SB, die die Klassifikatoren speichern, die für die
inkrementelle Induktion benötigt werden, und ruft für jeden zu selektierenden Klassifikator die Methode getClassifier() der entsprechenden KR-SB auf. Die auf diese Weise selektierten Basisklassifikatoren werden anschließend als Vector-Objekt in
Form einer Nachricht mit der String-Property dataType und dem Wert classifierset
an die analysisQueue gesendet. Nach Empfang der Nachricht ruft die Methode
onMessage() der AnalysisControl-MDB die Methode setClassifier() der
ContentResourceStorage-EB-Instanz mit der ID 1 auf, um die Basisklassifikatoren
zwischenzuspeichern. Analog zum Vorgehen nach der Speicherung der Trainingsdatenmenge wird auch nach der Speicherung der Basisklassifikatoren eine Nachricht mit der StringProperty resourceStored und dem Wert classifierset an die controlQueue gesendet.
Analog zum Verhalten der DSK-SB sendet auch die BSK-SB nach der Versendung der
Basisklassifikatoren eine weitere Nachricht an die controlQueue, die in diesem Fall
eine String-Property action mit dem Wert executeAnalysis beinhaltet. Der Empfang dieser Nachricht veranlasst die onMessage()-Methode der MVSK-MDB zum Aufruf der Methode executeAnalysisTask() der IMVK-SB. Diese ruft die Methode
induceClassifier() einer Instanz derIIK-EB auf. Die IIK-SB ruft die zwischengespeicherten Trainingsdaten über die Methode getSelectedDataSet() und die zwischengespeicherten Basisklassifikatoren über die Methode getClassifierSet() der Instanz
der ContentResourceStorage-EB mit der ID 1 ab und versendet den daraus induzierten, neuen Klassifikator in Form einer Nachricht mit der String-Property contentResourceType
und dem Wert classifier an die utilisationQueue, die von der VKControl-MDB
observiert wird.
Der Empfang dieser Nachricht veranlasst die onMessage()-Methode der VKControlMDB, die Methode utiliseResource() einer VKBean-SB-Instanz aufzurufen, nachdem sie sich das SimpleInductionTask-Objekt mit den Metadaten des auszuführenden Analyse-Ablaufes über die Methode getTask() der Instanz einer TaskStorage-EB
mit der ID 1 aufgerufen hat. Auch die VKBean holt sich auf diese Weise das Task-Objekt
und verwertet den per Nachricht übergebenen, neu erzeugten Klassifikator in Abhängigkeit
141
141
142
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
der im Task-Objekt angegebenen Metadaten. Sofern der Klassifikator gespeichert werden
soll, lokalisiert die VK-SB die entsprechende Instanz der KR-SB und ruft deren Methode
setClassifier() auf, um den Klassifikator zu speichern.
Nach der Verwertung des erzeugten Klassifikators wird eine Nachricht mit einer StringProperty action und dem Wert AKMetadata sowie einem Metadaten-Objekt vom Typ
AKMetadata, welches Metadaten zur Beschreibung des neu erzeugten Klassifikators
enthält und von der VK-SB erzeugt wurde, an die controlQueue gesendet. Die Methode onMessage() der MVSK-MDB reagiert auf den Empfang der Nachricht, indem sie
zunächst die zur Zwischenspeicherung des Task-Objektes und der ContentResourceObjekte, die zur Induktion benötigt wurden, löscht. Dies geschieht durch die Aufrufe
der Methoden deleteTask() bzw. deleteContentResourceStorageBean() der
TaskStorage-EB bzw. der ContentResourceStorage-EB mit der ID 1. Anschließend ruft sie die Methode storeContentResourceMetadata() der AK-Bean auf, um
die erzeugten Metadaten über den neuen Klassifikator im Metadaten-Repository zu speichern,
welches in Form einer Menge von EBs vom Typ MetadataRepository prototypisch implementiert wird. Um eine solche Bean mit den Metadaten über den neuen Klassifikator zu
füllen, werden nacheinander die Methoden setType(), setDataSourceLocation(),
setDescription() und setRepositoryLocation() einer neuen Instanz einer
MetadataRepository-EB aufgerufen. Somit sind die beschreibenden Metadaten über den
neu erzeugten Klassifikator in das Metadaten-Repository eingefügt, und der Analyse-Ablauf
der inkrementellen Klassifikator-Induktion ist vollständig ausgeführt und terminiert.
142
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
Abbildung 6.13.: Sequenz-Diagramm der Methodenaufrufe zur Durchführung einer einfachen
Klassifikator-Induktion
143
143
144
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
6.3.2. Ablauf des Meta-Lernens
Die Verbindungen der Komponenten untereinander und die Methodenaufrufe zur
Durchführung eines Meta-Lern-Analyse-Ablaufes sind in Abbildung 6.14 in Form eines
Sequenz-Diagrammes dargestellt. Die dargestellten Abläufe gleichen in weiten Teilen denen,
die in Abschnitt 6.3.1 ausführlich erläutert wurden. Es lassen sich jedoch auch Unterschiede
beobachten.
Ein erster Unterschied zeigt sich in der Übergabe des Wertes der String-Property Task, die von
der Client-Applikation JavaUserInterface übergeben wird und den Wert ml aufweist,
der einen Meta-Lern-Vorgang initiiert.
Ein zweiter Unterschied besteht in dem nicht vorhandenen Ablauf der TrainingsdatenSelektion, da diese für den Meta-Lern-Vorgang nicht benötigt werden. So wird nach
Speicherung des SimpleInductionTask-Objektes über die Methode setTask() der
TaskStorage-EB-Instanz mit der ID 1 unter Umgehung des Aufrufes der Methode
executeDataCollection() die Methode executeClassifierCollection()
der IMVK-SB direkt aufgerufen.
Der dritte Unterschied zeigt sich im Aufruf der Komponente, die die Analyse durchführt.
Im Falle des Meta-Lern-Ablaufes wird die Methode executeMetaLearnTask() der
ML-SB durch die IMVK-SB aufgerufen, die anhand der Klassifikatoren, die in der Instanz
der ContentResourceStorage-EB mit der ID 1 gespeichert sind, durchgeführt wird.
Nachdem sich die ML-EB das aktuelle SimpleInductionTask-Objekt über die Methode getTask() der TaskStorage-EB mit der ID 1 geholt hat, sendet sie eine Nachricht
mit der String-Property contentResourceType und dem Wert globalModel sowie dem neu
erzeugten globalen Modell an die utilisationQueue, die von der VKControl-MDB observiert wird. Diese leitet, analog zum in Abschnitt 6.3.1 beschriebenen Vorgehen, die weitere
Verarbeitung des neu erzeugten globalen Modells ein.
Sonstige Methodenaufrufe verlaufen analog zu den in Abschnitt 6.3.1 beschriebenen Abläufen.
144
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
Abbildung 6.14.: Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines MetaLern-Prozesses
145
145
146
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
6.3.3. Ablauf der naiven Klassifikator-Anwendung
Auch die Sequenz der Methodenaufrufe während des Analyse-Ablaufes der naiven
Klassifikator-Anwendung, die in Abbildung 6.15 in Form eines Sequenz-Diagrammes dargestellt ist, zeigt analoge Vorgänge zum Ablauf der Klassifikator-Induktion.
Zunächst wird von der Client-Applikation JavaUserInterface eine Nachricht
mit der String-Property Task und dem Wert naive sowie einem ADT des Typs
SimpleClassificationTask, der die Metadaten zur Steuerung der naiven Klassifikation enthält, an die controlQueue gesendet, die von der MVSK-MDB observiert wird. Die
MVSK-MDB speichert das Metadaten-Objekt analog zum Vorgehen im Falle eines InduktionsAblaufes über den Aufruf der Methode setTask() der Instanz einer TaskStorage-EB
mit der ID 1. Anschließend wird die Methode executeDataCollection() der AMVKSB aufgerufen, um die Selektion der Instanzdatenmenge zu initiieren, die später klassifiziert
werden soll. Die aufgerufene Methode der AMVK-SB lokalisiert eine Instanz einer DSK-EB und
ruft auf dieser die Methode deliverDataSet() auf. Diese lokalisiert ihrerseits die passende Instanz einer ID-SB und ruft auf dieser die Methode getInstanceData() auf. Nach
Empfang der zu selektierenden Instanzdaten wird von der DSK-EB eine Nachricht mit den
selektierten Daten sowie einer String-Property dataType und dem Wert instancedata an
die analysisQueue gesendet. Die AnalysisControl-MDB speichert die per Nachricht
übergebenen Instanzdaten über den Aufruf der Methode setSelectedDataSet() der Instanz einer ContentResourceStorage-EB mit der ID 1. Nach erfolgreicher Speicherung
wird von der ContentResourceStorage-EB eine Nachricht mit einer String-Property
resourceStored und dem Wert instancedata an die controlQueue als Bestätigung der
erfolgreichen Speicherung gesendet.
Nachdem die DSK-SB die Nachricht mit den selektierten Daten an die analysisQueue
geschickt hat, schickt sie analog zum Vorgehen beim Ablauf der KlassifikatorInduktion eine weitere Nachricht mit der String-Property action und dem Wert
executeClassifierCollection an die controlQueue, um die Selektion des Klassifikators zu initiieren, der während des Vorganges der naiven Klassifikation angewendet
werden soll.
Empfängt die MVSK-MDB diese Nachricht, so ruft sie analog zum Vorgehen beim Ablauf der Klassifikator-Induktion die Methode executeClassifierCollection() der
AMVK-SB auf, um die Klassifikator-Selektion zu initiieren. Die AMVK-SB ruft weiter die
Methode deliverClassifierSet() einer BSK-SB auf, die wiederum die Methode getClassifier() einer KR-EB aufruft. Nach dem Empfang des zu selektierenden
Klassifikators sendet die BSK-SB eine Nachricht mit dem selektierten Klassifikator und
der String-Property dataType mit dem Wert classifierset an die analysisQueue,
woraufhin analog zur Klassifikator-Induktion der übergebene Klassifikator gespeichert und
die Kontrollkomponente über eine bestätigende Nachricht der erfolgreichen KlassifikatorZwischenspeicherung informiert wird.
Nach Versenden des Klassifikators schickt die BSK-SB eine weitere Nachricht mit der StringProperty action und dem Wert executeAnalysis an die controlQueue.
Nach dem Empfang dieser Nachricht wird von der MVSK-MDB die Methode
executeAnalysisTask() der AMVK-SB aufgerufen. Diese lokalisiert eine Instanz
der KK-SB und ruft deren Methode classifyDataSet() auf. Diese selektiert die
zwischengespeicherten Instanzdaten und den anzuwendenden Klassifikator über Aufrufe der Methoden getSelectedDataSet() bzw. getClassifierSet() der Instanz der ContentResourceStorage-EB mit der ID 1 und erzeugt prototypisch
ein syntaktisch korrektes Klassifikationsergebnis, welches in Form eines ADT vom
146
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
Typ SimpleResultDataSet umgesetzt wird. Dieses Klassifikationsergebnis wird
per Nachricht, die zusätzlich eine String-Property contentResourceType mit dem Wert
resultDataSet beinhaltet, an die utilisationQueue gesendet, die von der
VKControl-MDB observiert wird.
Empfängt diese die Nachricht, so wird das übergebene Klassifikationsergebnis über den Aufruf der Methode utiliseResource() an eine Instanz der VK-SB übergeben, die analog zum Vorgehen der Induktion eines Klassifikators für die Speicherung der übergebenen,
neu erzeugten Ressource sorgt. Dies geschieht in diesem Falle über den Aufruf der Methode
setResultDataSet() einer Instanz der KE-SB.
Nach erfolgter Speicherung des neu erzeugten Klassifikationsergebnisses wird, ebenfalls analog zum Vorgehen der Klassifikator-Induktion, eine Metadatenmenge generiert, die das neu
erzeugte Klassifikationsergebnis beschreibt und charakterisiert und im globalen MetadatenRepository gespeichert wird. Dies geschieht analog zum Ablauf der Klassifikation. Eine Beschreibung der Details dieser Vorgänge ist in Abschnitt 6.3.1 einzusehen.
147
147
148
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Abbildung 6.15.: Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines AnalyseAblaufes der naiven Klassifikator-Anwendung
148
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
6.3.4. Ablauf der Klassifikation mittels Selection Graphs
Die Sequenz der Methodenaufrufe eines Analyse-Ablaufes der Klassifikation mittels der Ableitung einer Menge von Selection Graphs und deren Wandlung in Datenbank-Abfragen ist
in Abbildung 6.16 dargestellt. Dieser Ablauf wird im Folgenden ausführlich betrachtet und
erläutert.
Zum Start der Analyse wird von der Client-Applikation JavaUserInterface eine Nachricht mit einem SimpleClassificationTask-Objekt und einer String-Property Task mit
dem Wert sg an die controlQueue gesendet. Die MVSK-MDB, die die controlQueue
überwacht, extrahiert zunächst das Task-Objekt aus der Nachricht und speichert es mittels des
Methodenaufrufes setTask() der Instanz der TaskStorage-EB mit der ID 1. Anschließend wird die Methode executeDataCollection() einer AMVK-SB-Instanz aufgerufen.
Da bei diesem Analyse-Ablauf zu diesem Zeitpunkt keine Daten benötigt werden, erfolgt keine Selektion eines Datensatzes. Anstelle dessen wird eine Nachricht mit einer String-Property
action und dem Wert executeClassifierCollection aufgerufen.
Diese Nachricht bewirkt, dass durch die MVSK-MDB der Aufruf der Methode
executeClassifierCollection() einer Instanz der AMVK-SB erfolgt. Die aufgerufene Methode initiiert die Selektion des anzuwendenden Klassifikators durch den Aufruf der
Methode deliverClassifierSet() einer BSK-SB-Instanz. Diese fordert den zu selektierenden Klassifikator durch Aufruf der Methode getClassifier() der entsprechenden
KR-SB-Instanz an und liefert ihn an die BSK-SB zurück. Die BSK-SB erzeugt eine Nachricht,
die den Klassifikator sowie eine String-Property dataType mit dem Wert classifier beinhaltet, und sendet diese an die analysisQueue, die von der AnalysisControl-MDB
observiert wird.
Die AnalysisControl-MDB extrahiert den übergebenen Klassifikator und führt
die Zwischenspeicherung durch Aufruf der Methode setClassifierSet der Instanz der ContentResourceStorage-EB mit der ID 1 aus. Um die erfolgreiche Zwischenspeicherung an die kontrollierende Komponente zu bestätigen, sendet die
ContentResourceStorage-EB eine Nachricht mit der String-Property resourceStored
und dem Wert classifierset an die controlQueue. Der gespeicherte Klassifikator
dient als Grundlage der Klassifikation. Aus ihm werden in einem folgenden Schritt eine Menge
von Selection Graphs abgeleitet, die wiederum in Datenbankabfragen umgewandelt werden.
Anhand dieser Abfragen, die auf die Datenbank angewendet werden, die die Instanzdaten
enthält, wird die Klassifikation durchgeführt. Dazu sind die folgend beschriebenen Schritte
notwendig.
Nach Erhalt der Nachricht mit der String-Property action und dem Wert executeAnalysis,
die von der AMVK-SB gesendet wurde, nachdem der Klassifikator an die analysisQueue
gesendet wurde, erfolgen die Methodenaufrufe zur Wandlung des Klassifikators zu Selection
Graphs und deren weitere Anwendung, um eine Klassifikation durchzuführen. Dazu wird
zunächst von der MVSK-SB die Methode executeAnalysisTask() der AMVK-SB aufgerufen. Diese sorgt für den Aufruf der Methode executeSelectionGraphDerivation()
der SGAK-SB.
Diese Methode ist für die Ableitung der Selection Graphs aus dem Klassifikator zuständig.
Sie benötigt zunächst die Metadaten, die zum auszuführenden Ablauf erforderlich sind,
und holt sich diese über den Aufruf der Methode getTask() der TaskStorage-EBInstanz mit der ID 1. Anschließend wird der zwischengespeicherte Klassifikator geladen, indem die Methode getClassifierSet() der ContentResourceStorage-EB-Instanz
mit der ID 1 aufgerufen wird. Der Klassifikator wird prototypisch zu einer Menge von
Selection Graphs verarbeitet, die an die DBAGK-SB weitergegeben werden. Deren Methode executeQueryProcessing() wandelt prototypisch die Selection Graphs in eine
149
149
150
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
Menge von Datenbank-Abfragen und wendet diese der Reihe nach auf die Instanzdaten
an, indem sie die Abfragen einzeln über die Methode getInstanceData() der ID-SB
durchführt. Die zurückgegebenen Instanzen, die jeweils einer Zielklasse entsprechen, werden
zu einem ADT des Typs SimpleResultDataSet zusammengefügt und über eine Nachricht mit der String-Property contentResourceType mit dem Wert resultDataSet an die
utilisationQueue gesendet.
Das weitere Vorgehen erfolgt analog zum Vorgehen der naiven Klassifikation, die bereits
ausführlich in Abschnitt 6.3.3 beschrieben wurde. Zum weiteren Vorgehen zählen die Speicherung des erzeugten Klassifikationsergebnisses sowie die Erzeugung eines beschreibenden
Metadatensatzes und dessen Speicherung im globalen Metadaten-Repository.
150
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
Abbildung 6.16.: Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines AnalyseAblaufes der Klassifikation über Selection-Graph-Ableitung
151
151
152
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
6.3.5. Ablauf der Wartung eines inkrementell induzierten Klassifikators
Die Methodenaufrufe zur Durchführung des Analyse-Ablaufes der Klassifikator-Wartung, die
aus der Invalidierung eines Klassifikators und dessen erneuter Induktion anhand aktueller Trainingsdaten oder Basisklassifikatoren erfolgt, sind in Abbildung 6.17 aufgezeigt.
Der Ablauf der Wartung unterscheidet sich vom Ablauf einer einfachen Klassifikator-Induktion
in dem Punkt, dass vor der eigentlichen Neu-Induktion des zu wartenden Klassifikators der
alte Klassifikator invalidiert wird. Dies geschieht anhand eines Zeitstempels, der von einer
globalen Uhr angefordert wird und architekturweit gilt. Dieser Zeitstempel wird in das Feld
des Transaktionszeit-Endes des zu invalidierenden Klassifikators gesetzt. Die genaue Sequenz
der Methodenaufrufe sei folgend beschrieben.
Zunächst wird von der Client-Applikation JavaUserInterface eine Nachricht mit
der String-Property Task und dem Wert maintenance sowie einem ADT vom Typ
SimpleMaintenanceTask an die controlQueue gesendet. Die MVSK-MDB, die die
controlQueue überwacht, extrahiert das Task-Objekt und speichert dies über den Aufruf der Methode storeTask() einer Instanz der TaskStorage-EB mit der ID 1. Danach ruft die MVSK-MDB die Methode invalidateClassifier() der IVK-SB auf,
die für die Invalidierung des zu wartenden Klassifikators verantwortlich ist. Diese ruft die
Methode getGlobalTime() der GU-SB auf, die die architekturweit gültige, aktuelle Zeit
in Form eines java.sql.Timestamp-Objektes zurück gibt. Dieser Zeitstempel wird als
Transaktionszeit-Ende für den zu invalidierenden Klassifikator genutzt. Anschließend ruft die
IVK-SB die Methode setClassifier() der KR-SB auf, um den invalidierten Klassifikator
im Klassifikator-Repository zu speichern.
Der weitere Verlauf der Klassifikator-Wartung, die erneute Induktion des zu wartenden Klassifikators anhand aktueller Trainingsdaten und gegebenenfalls Basisklassifikatoren, erfolgt analog zum Vorgehen bei der Klassifikator-Induktion, die in Abschnitt 6.3.1 ausführlich beschrieben wurde.
152
6.3 B ESCHREIBUNG DER M ETHODENAUFRUFE ZUR D URCHF ÜHRUNG DER A NALYSE -A BL ÄUFE
Abbildung 6.17.: Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines AnalyseAblaufes der Klassifikator-Wartung
153
153
154
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
6.4. Zusammenfassung
Dieses Kapitel zeigt den softwaretechnischen Entwurf der Komponenten der ReDiCAtArchitektur auf. Grundlage dieses Entwurfes bildet die in Kapitel 5 durchgeführte objektorientierte Analyse, die die Komponenten der Architektur vorgibt und auf dem in Kapitel 4
konzeptionierten Ausführungsmodell basiert.
Zunächst wurden in Abschnitt 6.1.1 die Metadaten-Formate definiert und entworfen, die
die atomaren Metadaten-Entitäten abbilden, die aus dem in Abschnitt 4 konzeptionierten
Ausführungsmodell abgeleitet werden können. Diese wurden auf JAVA-Interfaces abgebildet.
Die Metadaten-Entitäten umfassen beispielsweise ADT zur Repräsentation von Ressourcen
wie Klassifikatoren, Klassifikationsergebnisse oder selektierte Datenmengen, aber auch Metadaten über den gesamten Ablauf einer Analyse, die beispielsweise die Adressen der am
Analyse-Ablauf beteiligten Komponenten oder steuernde Metadaten für einzelne Komponenten beinhalten.
Zu jedem Interface erfolgte der Entwurf einer prototypischen Implementierung in Form einer JAVA-Klasse, deren Namen sich aus dem Namen des implementierten JAVA-Interfaces
ergänzt um das Namenspräfix Simple zusammensetzte. Die Darstellung der JAVA-Interfaces
und JAVA-Klassen wurde detailliert ausgeführt. So erfolgte die Darstellung der Beschreibung
des Interfaces, der in Beziehung zum Interface stehenden Super- und Sub-Interfaces sowie der
vorhandenen Implementierungen und umzusetzenden Methoden der Interfaces. In Bezug auf
die Darstellung der Klassen wurden die Beschreibung der Klasse, die von der Klasse implementierte Interfaces, die vorhandenen oder durch Interfaces vorgegebenen Attribute sowie die
implementierten Konstruktoren und Methoden der Klassen der ADT dargestellt. Klassendiagramme zeigten die Verbindungen der Interfaces untereinander sowie die Verbindungen zwischen den prototypischen Implementierungen auf.
Anschließend erfolgte in Abschnitt 6.1.2 der Entwurf der ADT zur Darstellung der steuernden
Kontrollflüsse. Dazu wurde für jede Komponente, die steuernde Metadaten benötigt, ein ADT
in Form eines JAVA-Interfaces entworfen, und durch eine prototypisch implementierte JAVAKlasse umgesetzt. Für jeden ADT erfolgte die Darstellung eines Klassendiagrammes, um die
beteiligten Metadaten-Klassen und Interfaces zu visualisieren.
Weiter wurden in Abschnitt 6.1.3 Metadaten-ADT entworfen, um die Analyse-Algorithmen parametrisieren zu können, die von den Komponenten der ReDiCAt-Architektur implementiert
werden. Auch hier erfolgte die Darstellung in Form von Klassendiagrammen und ausführlichen
Erläuterungen zu den Bereichen Beschreibung, Super- und Sub-Interfaces, Implementierungen
und Methoden bei Interfaces bzw. Beschreibung, implementierte Interfaces, Attribute, Konstruktoren und Methoden bei Klassen.
Abschnitt 6.2 befasste sich mit dem objektorientierten Entwurf der Komponenten der
ReDiCAt-Architektur. Die Komponenten wurden in Form von EnterpriseBeans (EB) entworfen
und textuell beschrieben. Die ausführliche Darstellung, die beim Entwurf der Metadaten-ADT
erfolgte, wurde nach Maßgabe des Betreuers dieser Arbeit an dieser Stelle nicht ausgeführt.
Vielmehr wurde auf die vorhandene Dokumentation im Javadoc-Format hingewiesen, die
unter http://www.miaundpeppi.de/ReDiCAt/ einzusehen ist. Anstelle der ausführlichen Darstellung jeder den EBs zugehörigen Klasse und jedes zugehörigen Interfaces wurden
die entworfenen EB textuell in den Gesamtzusammenhang der Architektur gestellt und in Bezug auf ihre Aufgaben beschrieben.
Im Anschluss daran erfolgte in Abschnitt 6.3 der Entwurf der Sequenz der Methoden-Aufrufe,
unterteilt in die Sequenz der Methodenaufrufe beim Analyse-Ablauf
• der Klassifikator-Induktion, die in Abschnitt 6.3.1 dargestellt wurde,
154
6.4 Z USAMMENFASSUNG
155
• des Meta-Lernens, die in Abschnitt 6.3.2 dargestellt wurde,
• der naiven Klassifikator-Anwendung, die in Abschnitt 6.3.3 dargestellt wurde,
• der Klassifikation über die Ableitung von Selection Graphs aus einem Klassifikator und
deren Wandlung zu Datenbank-Abfragen, die in Abschnitt 6.3.4 dargestellt wurde, und
• der Wartung eines Klassifikators, die in Abschnitt 6.3.5 dargestellt wurde.
Die Darstellung der verschiedenen Analyse-Abläufe erfolgte in Form von SequenzDiagrammen und einer textuellen Beschreibung der genauen Methodenaufrufe in chronologischer Reihenfolge. Sowohl bei den Sequenz-Diagrammen als auch in der textuellen Beschreibung wurden die den Methoden übergebenen Parameter nicht aufgeführt. Diese lassen
sich ebenfalls der Javadoc-Dokumentation entnehmen.
155
156
K APITEL 6 - S OFTWARETECHNISCHER E NTWURF DES R E D I CAT S YSTEMES
156
7. Implementierung und Test
Dieses Kapitel beschreibt die prototypische Implementierung der ReDiCAt-Architektur sowie
die Durchführung anschließender Testläufe zur Überprüfung der Funktionalität der Implementierung. Zunächst wird in Abschnitt 7.1 ein Überblick über die Spezifikation des Referenzsystemes gegeben, auf dem die Implementierung der Architektur durchgeführt und getestet
wurde. Anschließend erfolgt in Abschnitt 7.2 die Beschreibung der prototypischen Implementierung der Architektur. Dabei wird noch einmal kurz auf die Vorgaben und Umsetzungen der
Implementierung eingegangen. Die Beschreibung der Testszenarien für die implementierte Architektur folgt in Abschnitt 7.3. Hier werden u.a. die Testläufe in ihrem Ablauf beschrieben
und es werden die Datensätze aufgeführt, die als Eingabe der Testläufe dienen. Die dazu verwendeten Parameter werden in ihren Belegungen aufgezeigt und erörtert. Die Ausgaben der
Testläufe werden nachfolgend in Abhängigkeit der verschiedenen Eingabedaten und AnalyseAbläufe auszugsweise dargestellt. Abschnitt 7.4 befasst sich mit den Vorzügen und den Einschränkungen der durchgeführten Implementierung der Architektur in Bezug auf Vollständigkeit der Umsetzung der aus dem Ausführungsmodell abgeleiteten Architektur. Abschließend
wird in Abschnitt 7.5 eine Zusammenfassung dieses Kapitels gegeben.
7.1. Beschreibung des Referenzsystemes der
Implementierung und des Tests
Die Implementierung der entworfenen Interfaces und Klassen sowie die Umsetzung der Komponenten erfolgte nach der EJB2.0-Spezifikation. Diese umfasst die Umsetzung der Komponenten in Form von Enterprise-Beans, also Session-Beans (SB), Entity-Beans (EB) und
Message-Driven-Beans (MDB). Diese wurden anschließend in einen JBoss-Applikationsserver
eingebettet, der einen EJB-Container und die entsprechenden Dienste bereitstellt, die bereits in
Abschnitt 3.5 aufgeführt und ausführlich beschrieben wurden.
Dabei kann der Server unter einem Windows- oder Unix-Betriebssystem betrieben werden, im
Falle der Testumgebung handelte es sich um ein Gentoo Linux mit Kernel 2.6.10. Der JBossApplikationsserver kam in der Version 4.0.1 zum Einsatz, bei der eingesetzten JAVA-SDKVersion handelt es sich um das JDK 1.5.0. Weiter wurde zur Implementierung der Interfaces,
Klassen und Enterprise-Beans die Eclipse-IDE der Version 3.1.0 M4 mit dem Plugin JBoss
Eclipse IDE in der Version 1.4.0 eingesetzt.
Die Hardware-Ausstattung der Entwicklungs- und Testumgebung umfasste ein Notebook mit
einem Intel Pentium4-Prozessor mit 1,7 GHz und 512 MB Arbeitsspeicher. Für die Installation
aller benötigten Software-Komponenten und für den Testbetrieb sind ca. 500MB Festplattenspeicher erforderlich.
7.2. Prototypische Implementierung der Architektur
Alle Metadaten-Objekte, die in Abschnitt 6.1 entworfen wurden, wurden durch Interfaces in
der Programmiersprache JAVA bezüglich verschiedener Vorgaben spezifiziert. Zu diesen Vor-
157
158
K APITEL 7 - I MPLEMENTIERUNG UND T EST
gaben zählt in erster Linie die Konformität gegenüber den Schnittstellen der an den AnalyseAbläufen beteiligten Komponenten der ReDiCAt-Architektur. Dadurch soll gewährleistet sein,
dass zukünftige Implementierungen dieser Metadaten-Objekte zur implementierten ReDiCAtArchitektur kompatibel sind und innerhalb dieser eingesetzt werden können. Zusätzlich zu
den Interfaces werden die Metadaten-Objekte durch JAVA-Klassen mit dem Namenspräfix
Simple prototypisch implementiert. So soll durch die Implementierung dieser Klassen die
generelle Funktionsfähigkeit der Implementierung der Gesamtarchitektur aufgezeigt werden.
Die Klassen zur Repräsentation der Metadaten-Objekte, die Komponenten steuern sollen, beinhalten die dazu notwendigen, in Abschnitt 6.1.2 beschriebenen Parameter. Die Klassen zur Repräsentation der Metadaten-Objekte, die Ressourcen wie Klassifikatoren oder Klassifikationsergebnisse repräsentieren, werden so implementiert, dass sie die Schnittstellenanforderungen
der Komponenten erfüllen, an denen sie verarbeitet werden. Darüber hinaus besitzen sie jedoch
keine Semantik. Eine ausführliche Implementierung solcher Metadaten-Objekte, die ihnen
auch eine spezifische Semantik verleihen würde, wird durch die Vorgaben der JAVA-Interfaces
dahingehend beeinflusst, dass sie auch die Anforderungen der Architektur bezüglich einer
Schnittstellenkompatibilität erfüllt. Nocheinmal verdeutlicht bedeutet dies, dass die MetadatenObjekte zur Repräsentation von Klassifikatoren und Klassifikationsergebnissen in der prototypischen Implementierung als Klasse mit dem Namenspräfix Simple keine realen Klassifikatoren oder Klassifikationsergebnisse beinhalten, eine prinzipielle Einbettbarkeit dieser jedoch
vorgesehen ist und ermöglicht wird. Anhand der prototypischen Implementierungen dieser
Metadaten-Objekte soll nur gezeigt werden, wie ein Klassifikator oder ein Klassifikationsergebnis durch die Komponenten der Architektur bearbeitet wird, da darin der Schwerpunkt
dieser Arbeit liegt.
Die in Abschnitt 6.2 entworfenen Komponenten wurden in Form von Enterprise-Beans implementiert. Dabei wurden alle Aspekte umgesetzt, die im Entwurf beschrieben wurden. Um
den exakten Aufbau der verschiedenen Bean-Typen aufzuzeigen, sei hier auf den Anhang verwiesen. Dieser zeigt beispielhaft den Code zur Umsetzung verschiedener implementierter Beans unterschiedlichen Typs auf. So wird im Anhang A.1 die GU-SB zur Repräsentation der
globalen, architekturweit gültigen Zeit als Beispiel einer SB anhand des geschriebenen JAVACodes vorgestellt. Eine beispielhafte MDB wird ausschnittsweise anhand des JAVA-Codes der
MVSK-MDB in Anhang A.2 aufgezeigt, und als Beispiel für eine EB wird der JAVA-Code
der MetadataRepository-EB in Anhang A.3 vorgestellt. Auch die zugehörigen XMLFragmente für den Deployment Descriptor und die Datei jboss.xml zur Bindung der JNDINamen an die Beans werden dargestellt.
Zur Erinnerung sei hier noch einmal in der Tabelle 7.1 aufgeführt, welcher Bean-Typ die Implementierung welcher Interfaces und Klassen erfordert. Entsprechend der unterschiedlichen
Aufgaben der Komponenten und Metadaten-Objekte wurden diese als unterschiedliche Typen
von Enterprise Beans umgesetzt.
Die Tabelle 7.2 zeigt die Zuordnung der implementierten Komponenten zum jeweilig zugrunde
liegenden Bean-Typ. Während die Komponenten, die Daten verarbeiten, als Session-Beans umgesetzt wurden, wurden die steuernden und verwaltenden Komponenten als Message-DrivenBeans implementiert. Entity-Beans dienten der Speicherung von Ressourcen. Die Funktionalität der Komponenten und Beans wurde entsprechend der in Kapitel 6 aufgeführten Eigenschaften umgesetzt.
Der Aspekt der Verteiltheit der Komponenten wird durch die Wahl der EJB-Architektur
als Grundlage der Implementierung umgesetzt. Durch die Referenzierung einer EnterpriseBean über ihren JNDI-Namen ist es möglich, Instanzen einer Bean zu nutzen, die über verschiedene EJB-Container verteilt vorliegen. So kann die prototypische Implementierung der
ReDiCAt-Architektur auf verschiedene EJB-Container verteilt installiert werden, auch auf
158
7.2 P ROTOTYPISCHE I MPLEMENTIERUNG DER A RCHITEKTUR
159
EB
EB
Persistenz-Management durch
container
bean
Remote-/ Local-Interface
•
•
•
LocalHome-/ Home-Interface
•
•
•
•
•
•
•
•
•
Konkrete Bean-Klasse
Abstrakte Bean-Klasse
•
Deployment-Deskriptor
•
Persistence Deskriptor
•
SB
MDB
Tabelle 7.1.: Gegenüberstellung von Bean-Typen und Bean-Komponenten (nach [DP02])
E NTITY-B EAN
S ESSION -B EAN
M ESSAGE -D RIVEN B EAN
• ContentResourceStorage
• AK
• AMVK
• BSK
• AnalysisControl
• MetadataRepository
• DBAGK
• DSK
• GU
• MVSK
• TaskStorage
• ID
• IIK
• IMVK
• VKControl
• IVK
• KE
• KK
• KR
• ML
• SGAK
• TD
• VK
• WMVK
Tabelle 7.2.: Zuteilung der implementierten Komponenten zu den Bean-Typen
verschiedenen Servern, die per Netzwerk verbunden sind. Durch ein Mapping der JNDIDienste und -Namensräume entfernter Server und Container in den eigenen JNDI-Dienst ist
es dann möglich, auf entfernt vorliegende Beans zuzugreifen. Dieses Mapping könnte beispielsweise derart ausgeführt werden, dass der JNDI-Namensraum eines entfernten Servers in
ein neues Verzeichnis des lokalen Servers mit dem Namen der Domain des entfernten Servers gelinkt wird. So könnte eine Entity-Bean MetadataRepository, die auf dem Server server1.informatik.uni-oldenburg.de installiert ist, über den JNDI-Namen
jnp://localhost:1099/server1.informatik.uni-oldenburg.de/
MetadataRepositoryHomeRemote referenziert werden. Da die Adressen der
Komponenten, die während eines Analyse-Ablaufes der prototypischen Implementierung der
ReDiCAt-Architektur genutzt werden, parametrisiert sind, ist die Verteilung der Komponenten der Architektur umsetzbar. So kann bei Initiierung eines Analyse-Ablaufes durch Setzen
der entsprechenden Adressen der Zugriff auf entfernte Komponenten durchgeführt werden.
Grundlage dessen ist jedoch die Konfiguration des zugrunde liegenden Applikationsservers,
die ein Mapping der JNDI-Namensräume des entfernten Servers in den eigenen JNDI-Context
ermöglichen muss. Die Adressen der Komponenten werden in der prototypischen Implementierung durch die Client-Applikation JavaUserInterface gesetzt und sind in den zur Analyse zugehörigen Metadaten-Objekten des Typs Task enthalten. Weitere Informationen über die
Referenzierung einer Enterprise-Bean anhand ihres JNDI-Namens sind samt beispielhaftem
JAVA-Code in Anhang B.2 einzusehen.
Bei der Implementierung der Komponenten, die eine Datenquelle an die Architektur anbinden
159
160
K APITEL 7 - I MPLEMENTIERUNG UND T EST
sollen, wurde aus den bereits genannten Gründen auf eine konkrete Implementierung der Anbindung der Datenquellen verzichtet. Anstelle dessen werden auf Anfragen hin prototypische
Dummy-Datensätze zurückgegeben, die einen Datensatz repräsentieren sollen, jedoch analog
zur Repräsentation von Klassifikatoren und Klassifikationsergebnissen keinerlei Semantik aufweisen.
7.3. Testszenarien und Testläufe
Um zu zeigen, dass die prototypisch implementierte Architektur die Abläufe abbildet, die im
Ausführungsmodell in Kapitel 4 und im Architekturentwurf in Kapitel 5 konzeptioniert wurden, wurden verschiedene Testläufe durchgeführt und deren Ergebnisse analysiert. In diesem
Abschnitt wird die Durchführung der Testläufe beschrieben, die die identifizierten AnalyseAbläufe der einfachen und inkrementellen Klassifikator-Induktion, des Meta-Lern-Vorganges,
der naiven Klassifikation und der Klassifikation über Selection Graphs sowie der KlassifikatorWartung anhand der prototypisch implementierten ReDiCAt-Architektur umsetzen.
Um einen Testlauf der Architektur zu initiieren, kann die zu Testzwecken implementierte
main()-Methode der Klasse JavaUserInterface mit einem String-Parameter aufgerufen werden, der für die Spezifizierung des auszuführenden Analyse-Ablaufes verantwortlich
ist. Der Aufruf dieser Methode ist in Listing 7.1 dargestellt.
1
java JavaUserInterface ci
Listing 7.1: Aufruf der main()-Methode der Klasse JavaUserInterface
Zulässige Belegungen des Parameters sind:
• ci für die einfache Klassifikator-Induktion,
• ici für die inkrementelle Klassifikator-Induktion,
• ml für einen Meta-Lern-Vorgang,
• naive für eine naive Klassifikator-Anwendung,
• sg für eine Klassifikation unter Verwendung von Selection Graphs und
• maintenance für eine Klassifikator-Wartung.
7.3.1. Test der Abläufe der einfachen und inkrementellen
Klassifikator-Induktion
Nach Übergabe des Wertes ci oder ici als Parameter an die main-Methode des
JavaUserInterface wird eine einfache oder eine inkrementelle Klassifikator-Induktion
anhand der ReDiCAt-Architektur durchgeführt. Dazu bedarf es eines mit spezifischen Werten belegten Objektes vom Typ SimpleInductionTask. Die Erzeugung eines solchen
Objektes erfolgte zu Testzwecken über die Methode initSimpleInductionTask(),
die anhand der übergebenen Parameter entsprechende Metadaten-Objekte erzeugt, die dann
in einem SimpleInductionTask-Objekt zusammengefasst und zum Ablauf der Analyse benötigt werden. Der Aufruf dieser Methode mit den Belegungen der Parameter für eine
einfache Klassifikator-Induktion ist in Listing 7.2 einzusehen.
160
7.3 T ESTSZENARIEN UND T ESTL ÄUFE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
161
SimpleInductionTask task = initSimpleInductionTask(
"ci",
BSKAddresses,
"jnp://localhost:1099/DSKHomeRemote",
"jnp://localhost:1099/IIKHomeRemote",
"queue/redicat-controlQueue",
"jnp://localhost:1099/TDHomeRemote",
"myUser",
"myPass",
classifierSourceAddresses,
classifierSourceUserNames,
classifierSourceUserPasswords,
"jnp://localhost:1099/KRHomeRemote",
"myUser",
"MyPassword",
"both",
System.getProperties());
Listing 7.2: Erzeugung eines SimpleInductionTask-Objektes
Der erste Parameter ist ein String-Objekt, das den Namen des auszuführenden AnalyseAblaufes beinhaltet. Im Falle der einfachen Klassifikator-Induktion hat es den Wert ci, im
Falle der inkrementellen Induktion weist es den Wert ici auf.
Der zweite übergebene Parameter trägt den Namen BSKAddresses. Es handelt sich hierbei
um ein Vector-Objekt, welches String-Objekte enthält, die die JNDI-Namen der Komponenten als Wert aufweisen, die die Selektion der für einen inkrementellen Induktionsvorgang benötigten Klassifikatoren ausführen. Über diese JNDI-Namen werden die Komponenten im weiteren Verlauf der Ausführung des Analyse-Ablaufes durch die Architektur referenziert. Im Falle der einfachen Induktion ist dieses Vector-Objekt leer, da keine Klassifikatoren
für die Induktion benötigt werden und somit auch keine BSK-Komponenten referenziert werden müssen. Im Falle einer inkrementellen Induktion beinhaltet es für jede BSK-Komponente,
die einen Klassifikator selektieren soll, ein String-Objekt mit der Belegung deren JNDINamens.
Der dritte Parameter ist ein String-Objekt, das den JNDI-Namen der Komponente beinhaltet, die für die Selektion der Trainingsdaten verwendet werden soll.
Auch hier wird anhand dieses JNDI-Namens, der in diesem Fall mit der Belegung
jnp://localhost:1099/DSKHomeRemote versehen ist, die Komponente zur Trainingsdatenselektion referenziert. Diese Belegung bewirkt in diesem Analyse-Ablauf, dass
die lokale DSK-Komponente für die Beschaffung der Trainingsdaten herangezogen wird.
Auf diese Weise lassen sich auch alle anderen DSK-Instanzen nutzen, die über den lokalen
JNDI-Namensraum adressierbar sind.
Der vierte Parameter ist ein String-Objekt, welches den JNDI-Namen der Komponente beinhaltet, die den Induktions-Algorithmus implementiert. In diesem Falle bewirkt die Belegung
die Nutzung der lokalen IIK-Komponente.
Der fünfte Parameter ist ein String-Objekt, dessen Belegung für den JNDI-Namen der Nachrichtenschlange steht, die für den Empfang von Bestätigungsnachrichten verantworlich ist. Hier
wird auf die lokale Steuerungsschlange verwiesen.
Der sechste Parameter ist ein String-Objekt, das den JNDI-Namen der Komponente als Belegung aufweist, welche die Datenquelle kapselt, die die Trainingsdaten beinhaltet. Zusammen
mit dem siebten und achten Parameter, die je ein String-Objekt für den Benutzernamen und
das korrespondierende Passwort enthalten, kann auf die Datenquelle zugegriffen werden. Die
161
162
K APITEL 7 - I MPLEMENTIERUNG UND T EST
Belegungen der String-Objekte für Benutzernamen und Passwort werden in der prototypischen Implementierung nicht interpretiert und haben lediglich konzeptionellen Charakter, da
die Anbindung der Datenquellen, wie bereits eingangs erwähnt, nicht implementiert wurde,
sondern Dummy-Datensätze zurückgegeben werden. Die Interfaces für die Metadaten-Objekte
zum Zugriff auf Datenquellen fordern hingegen die Implementierung dieser Attribute, um im
Rahmen einer konkreten, ausführlichen Implementierung die Möglichkeit der Authentifizierung gegenüber einer Datenquelle zu ermöglichen.
Analog zu den drei zuvor beschriebenen Parametern dienen der neunte, zehnte und elfte Parameter der Repräsentation von JNDI-Namen, Benutzernamen und Passwörtern zum Zugriff
auf die Datenquellen, in denen die Klassifikatoren gespeichert sind. Es handelt sich bei diesen
Parametern um Vector-Objekte, die mit String-Objekten belegt sind.
Der zwölfte, dreizehnte und vierzehnte Parameter dienen dem Zugriff auf das KlassifikatorRepository, in dem der neu durch die Induktion erzeugte Klassifikator gespeichert werden soll.
Auch zum Zugriff auf diese Datensenke sind JNDI-Name der Komponente, die die Senke beherbergt, sowie Benutzername und Passwort vorgesehen. Die Werte werden jeweils in Form
eines String-Objektes übergeben. Analog zu den Komponenten, die den Zugriff auf eine
Datenquelle lediglich prototypisch umsetzen oder simulieren, werden auch die Komponenten
zur Umsetzung einer Datensenke prototypisch implementiert. Die neu erzeugten Klassifikatoren werden dort also nicht real gespeichert.
Der fünfzehnte Parameter ist ein String-Objekt, welches als Belegung einen Wert trägt, der
die Verwertung der erzeugten Ressource festlegt. In diesem Fall weist es die Belegung both
auf, welche für eine Speicherung und eine Visualisierung der erzeugten Ressource steht.
Der letzte Parameter ist ein Objekt vom Typ Properties, welches eine Menge von Parametern in Form von Schlüssel-Wert-Paaren beinhaltet, die zur Parametrisierung der AnalyseAlgorithmen genutzt werden können. Auch hierin ist lediglich ein konzeptioneller Sinn zu sehen, da die Belegung dieses Objektes in der prototypischen Implementierung nicht interpretiert
wird. Daher wird hier ein beliebiges, irrelevantes Properties-Objekt übergeben.
Auf der Basis dieser sechzehn Parameter wird ein SimpleInductionTask-Objekt erzeugt,
welches der ReDiCAt-Implementierung übergeben wird. Diese extrahiert analog zu dem in
Kapitel 6 beschriebenen Entwurf die einzelnen Metadaten und führt die Analyse durch. Das
Ergebnis der Analyse besteht aus verschiedenen Aspekten. So wird zunächst ein induzierter
Klassifikator ausgegeben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classifier.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108758776475
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource():
Location: jnp://localhost:1099/IIKHomeRemote
RESULT: VKBean.visualizeResource(): UserName: myUser
RESULT: VKBean.visualizeResource(): UserPassword: myPass
RESULT: VKBean.visualizeResource(): =================================
Listing 7.3: Ausgabe der Implementierung der Architektur zur Visualisierung eines neu induzierten Klassifikators im Falle einer einfachen Klassifikator-Induktion
162
7.3 T ESTSZENARIEN UND T ESTL ÄUFE
163
Listing 7.4 zeigt die Ausgaben des Testlaufes, die die prototypische Speicherung des erzeugten
Klassifikators belegen. Auch an dieser Stelle sei noch einmal darauf hingewiesen, dass in der
prototypischen Implementierung der Architektur keine reale Speicherung erfolgt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): ================================
RESULT: VKBean.storeResource(): classifier
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ClassifierSink location
(KR component): jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.storeResource(): ClassifierSink UserName
(KR component): myUser
RESULT: VKBean.storeResource(): ClassifierSink UserPassword
(KR component): MyPassword
RESULT: VKBean.storeResource(): ================================
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
DEBUG: KRBean.setClassifier(): ##################
Listing 7.4: Ausgabe der Implementierung der Architektur zur Speicherung eines neu induzierten Klassifikators im Falle einer einfachen Klassifikator-Induktion
Schließlich wird auch ein Metadaten-Objekt erzeugt und gespeichert, welches den induzierten
Klassifikator beschreibt und nach Durchführung der Induktion als Entity-Bean-Instanz persistent im EJB-Container vorliegt. Die Ausgaben zur Speicherung dieser Entity-Bean sind in
Listing 7.5 dargestellt. In diesem Falle erfolgt eine reale Speicherung, die durch den EJBContainer umgesetzt wird, da die Daten in einer Entity-Bean-Instanz gehalten werden. Diese
werden automatisch vom EJB-Container persistent gespeichert.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata set
with values:
DEBUG: AKBean.storeContentResourceMetadata(): type: classifier
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/TDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der einen
Klassifikator beschreibt.
DEBUG: AKBean.storeContentResourceMetadata(): contentResourceLocation:
jnp://localhost:1099/KRHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb with
id 1108758777160.
Listing 7.5: Ausgabe der Implementierung der Architektur zur Speicherung des MetadatenObjektes über den neu induzierten Klassifikator im Falle einer einfachen
Klassifikator-Induktion
Die vollständigen Ausgaben des Testlaufes zur einfachen Induktion eines Klassifikators sind
im Anhang C.1 einzusehen. In Listing 7.3 ist der Abschnitt der Ausgaben aufgeführt, der die
Visualisierung des neu erzeugten Klassifikators umfasst.
Da Entity-Beans vom EJB-Container auf eine relationale Datenbank gemappt und Instanzen
dieser auch darin gespeichert werden, lässt sich nach dem Testlauf in der relationalen Datenbank Hypersonic des JBoss-Applikationsservers ein Eintrag für die Entity-Bean-Instanz mit
163
164
K APITEL 7 - I MPLEMENTIERUNG UND T EST
den Metadaten über den neu erzeugten Klassifikator finden. Dieser Eintrag ist in Abbildung 7.1
einzusehen. Anhand dieser drei Aspekte und der in Anhang C.1 aufgezeigten, weiteren Ausga-
Abbildung 7.1.: Gespeicherte Metadaten über den durch den Testlauf neu erzeugten Klassifikator
ben kann das zu erwartende Verhalten der ReDiCAt-Implementierung nachvollzogen werden.
Der von der ReDiCAt-Implementierung durchgeführte Analyse-Ablauf entspricht dem auf Basis des Ausführungsmodelles und des Architekturentwurfes zu erwartenden Ablauf. So konnte
gezeigt werden, dass die Implementierung den Analyse-Ablauf der einfachen KlassifikatorInduktion abbildet. Hierbei sei noch einmal auf die Einschränkungen hingewiesen, dass der
Fokus der prototypischen Implementierung auf der Schaffung der Kontroll- und Datenflüsse
zwischen den Komponenten liegt, und nicht auf der semantisch korrekten Durchführung der
Analyse unter Erzeugung semantisch korrekter und wertvoller Ressourcen, z.B. eines Klassifikators. Der entstandene Klassifikator trägt keinerlei Semantik. Es handelt sich vielmehr um
ein Objekt, welches durch eine Implementierung mit einem semantisch aussagekräftigen Inhalt
ersetzt werden kann. Der Schwerpunkt liegt in der Umsetzung des Analyse-Ablaufes durch die
Implementierung der Architektur. Fortführende Arbeiten können hier ansetzen und beispielsweise ein Objekt zur Repräsentation eines realen Klassifikators und eines realen Induktionsalgorithmus implementieren, das dann in die Implementierung dieser Arbeit eingebettet werden
kann.
Der Ablauf der inkrementellen Klassifikator-Induktion unterscheidet sich in der prototypischen Implementierung nur in der Phase der Basisklassifikator-Selektion. Im Falle einer inkrementellen Induktion werden hier mehrere Klassifikatoren selektiert und in der
ContentResourceStorage-Entity-Bean-Instanz mit der ID 1 zwischengespeichert. Die
vollständigen Ausgaben eines inkrementellen Analyse-Ablaufes sind in Anhang C.2 aufgeführt. Da auch im Falle einer inkrementellen Klassifikator-Induktion ein Klassifikator entsteht, der sich syntaktisch nicht von einem Klassifikator unterscheidet, der durch eine einfache
Induktion entsteht, wird an dieser Stelle auf die Darstellung der Metadaten über den erzeugten
Klassifikator in der Hypersonic-Datenbank verzichtet.
7.3.2. Test des Ablaufes eines Meta-Lern-Vorganges
Die Tests der weiteren Analyse-Abläufe verlaufen analog zum Test des Ablaufes der
Klassifikator-Induktion. Für den Test des Ablaufes eines Meta-Lern-Vorganges wird wie im
Falle der Klassifikator-Induktion ein Objekt vom Typ SimpleInductionMetadata instantiiert, welches dann von der ReDiCAt-Implementierung verarbeitet wird. Die Ausgaben
eines Meta-Lern-Ablaufes sind in Anhang C.3 einzusehen. Anhand der Ausgaben kann nachvollzogen werden, dass die Architektur den Ablauf des Meta-Lern-Vorganges abbildet. Als
Ergebnis entsteht ein globales Modell, welches in Abbildung 7.2 dargestellt ist.
164
7.3 T ESTSZENARIEN UND T ESTL ÄUFE
165
Abbildung 7.2.: Gespeicherte Metadaten über das durch den Testlauf neu erzeugte globale Modell
7.3.3. Test der Abläufe der Klassifikator-Anwendungen
Um einen Testlauf einer Klassifikation zu initiieren, kann die main-Methode mit dem Parameter naive oder sg aufgerufen werden. Um eine Klassifikation durchzuführen, muss der Architektur ein Objekt vom Typ SimpleClassificationTask übergeben werden, welches
die steuernden Metadaten beinhaltet. Da das Erzeugen eines solchen Task-Objektes analog
zum zuvor beschriebenen Erzeugen eines SimpleInductionTask-Objektes erfolgt, wird
die Darstellung der Testläufe an dieser Stelle auf den Verweis auf die Ausgaben der Architektur
im Anhang und die Abbildung des gespeicherten Klassifikationsergebnisses in der HypersonicDatenbank des JBoss-Applikationsservers eingeschränkt.
Bei der einfachen Klassifikation ist der in Listing 7.6 abgebildete Ausschnitt der Ausgaben von
Interesse. Anhand der Ausgaben ist zu erkennen, dass eine Ressource der Art classification
Result erzeugt wurde, die prototypisch visualisiert und gespeichert wird.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classification Result.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108772118432
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location of result dataset:
jnp://localhost:1099/KEHomeRemote
RESULT: VKBean.visualizeResource(): UserName of result dataset:
myUser
RESULT: VKBean.visualizeResource(): UserPassword of result dataset:
MyPassword
RESULT: VKBean.visualizeResource(): Location of classifier applied:
jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.visualizeResource(): UserName to access the
classifier applied: myUser
RESULT: VKBean.visualizeResource(): UserPassword to access the
classifier applied: myPass
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): =================================
RESULT: VKBean.storeResource(): classification Result.
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ResultDataSetSink location
(KE component): jnp://localhost:1099/KEHomeRemote
165
166
K APITEL 7 - I MPLEMENTIERUNG UND T EST
31
32
33
34
35
36
37
38
39
40
RESULT: VKBean.storeResource(): ResultDataSetSink UserName
(KE component): myUser
RESULT: VKBean.storeResource(): ResultDataSetSink UserPassword
(KE component): MyPassword
RESULT: VKBean.storeResource(): =================================
DEBUG: KEBean.getResultDataSet(): #####################
DEBUG: KEBean.getResultDataSet(): result dataset stored:
Prototypische Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
DEBUG: KEBean.getResultDataSet(): #####################
Listing 7.6: Ausschnitt der Ausgabe des Testlaufes einer naiven Klassifikator-Anwendung
Das zugehörige Metadaten-Objekt wurde ebenfalls erzeugt und kann in der HypersonicDatenbank des JBoss-Applikationsservers eingesehen werden, da es in Form einer EntityBean-Instanz gespeichert wurde. Die Ausgaben zu diesem Vorgang sind in Listing 7.7 einzusehen, eine Abbildung des Datenbankeintrages ist in Abbildung 7.3 dargestellt.
1
2
3
4
5
6
7
8
9
10
11
12
13
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata
set with values:
DEBUG: AKBean.storeContentResourceMetadata(): type:
classificationResult
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/IDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
DEBUG: AKBean.storeContentResourceMetadata():
contentResourceLocation: jnp://localhost:1099/KEHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb
with id 1108772119124
Listing 7.7: Ausschnitt der Ausgabe des Testlaufes zur Speicherung der Metadaten über das
erzeugte Klassifikationsergebnis
Abbildung 7.3.: Gespeicherte Metadaten über das durch den Testlauf zur naiven KlassifikatorAnwendung neu erzeugte Klassifikationsergebnis
Für weitere Details zum Testlauf der naiven Klassifikator-Anwendung sei hier auf die
vollständige Darstellung aller Ausgaben des Testlaufes zur naiven Klassifikator-Anwendung
der prototypisch implementierten Architektur in Anhang C.4 verwiesen.
Die Klassifikation durch Ableitung von Selection Graphs aus einem Klassifikator und deren
Wandlung zu Datenbank-Abfragen zeigt andere beteiligte Komponenten und Methodenaufrufe. Ein interessanter Ausschnitt der Ausgaben des Testlaufes dieser Analyse ist in Listing 7.8
dargestellt.
166
7.3 T ESTSZENARIEN UND T ESTL ÄUFE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
167
DEBUG: AMVKBean.executeClassifierCollection() entered.
DEBUG: AMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB
with id 1
DEBUG: AMVKBean.executeClassifierCollection(): sent command
to execute analysis.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of
classifier set to be stored.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt
received.
DEBUG: AMVKBean.executeAnalysisTask() entered.
DEBUG: AMVKBean.executeAnalysisTask(): sgak address:
jnp://localhost:1099/SGAKHomeRemote
DEBUG: SGAKBean.executeSelectionGraphDerivation() entered.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): EB with pk 1
already exists. Using this one.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): using as
receipt component address.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): using
jnp://localhost:1099/IDHomeRemote as data source component.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): executed
selection graph derivation based on Classifier retreived from
the entity bean ContentResourceStorage. Task was sg
classification.
DEBUG: DBAGKBean.executeQueryProcessing() entered.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): EB with pk 1
already exists. Using this one.
DEBUG: DBAGKBean.executeQueryProcessing(): Generated
classification result dataset.
Listing 7.8: Ausschnitt der Ausgabe des Testlaufes der Selection Graph-Klassifikation
Die weitere Verarbeitung des erzeugten Klassifikationsergebnisses erfolgt analog zum zuvor
dargestellten Vorgehen bei der naiven Klassifikation. Die vollständigen Ausgaben des Testlaufes einer Klassifikator-Anwendung durch Ableitung von Selection Graphs aus diesem und
deren Wandlung zu Datenbankabfragen sind in Anhang C.5 dargestellt. Anhand der Ausgaben
der beiden Testläufe der unterschiedlichen Klassifikator-Anwendungen und der erzeugten Ergebnisse kann nachvollzogen werden, dass auch beide Abläufe der Klassifikator-Anwendung,
die durch das Ausführungsmodell und den Architekturentwurf konzeptioniert wurden, von der
Implementierung der Architektur umgesetzt werden.
7.3.4. Test des Ablaufes der Klassifikator-Wartung
Der letzte Testlauf zeigt die Abbildung der Klassifikator-Wartung durch die implementierte
Architektur. Um eine Klassifikator-Wartung durchzuführen, muss ein Metadaten-Objekt vom
167
168
K APITEL 7 - I MPLEMENTIERUNG UND T EST
Typ SimpleMaintenanceTask instantiiert und mit passenden Werten belegt werden. Dies
geschieht analog zur Erzeugung des SimpleInductionTask-Objektes über den Aufruf
einer Methode des JavaUserInterface. Die Wartung verläuft in weiten Teilen analog
zur Klassifikator-Induktion. Bevor jedoch ein neuer Klassifikator induziert wird, erfolgt die
Invalidierung des zu wartenden Klassifikators. Die Ausgaben des Testlaufes, die die Invalidierung belegen, sind in Listing 7.9 abgebildet. Die Darstellung der vollständigen Ausgaben der
Klassifikator-Wartung erfolgt in Anhang C.6.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DEBUG: WVSKBean.onMessage(): using IVK address
jnp://localhost:1099/IVKHomeRemote.
DEBUG: IVKBean.invalidateClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: IVKBean.invalidateClassifier(): using global clock to
generate invalidation timestamp.
DEBUG: GUBean.getGlobalTime: global timestamp is:
2005-02-19 01:19:11.016.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored:
Classifier invalidated by IVK component.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: IVKBean.invalidateClassifier(): stored invalidated
classifier at component kr with address:
jnp://localhost:1099/KRHomeRemote and value of
tte: 2005-02-19 01:19:11.016.
Listing 7.9: Ausschnitt der Ausgabe des Testlaufes der Klassifikator-Wartung: Invalidierung
des zu wartenden Klassifikators
7.3.5. Zusammenfassung der Testläufe
Insgesamt wurde versucht, alle Analyse-Abläufe, die vom Ausführungsmodell und der daraus
abgeleiteten Architektur ausführbar sind, durch Testläufe der prototypischen Implementierung
der Architektur nachzuvollziehen. Anhand der Ausgaben der Implementierung und anhand von
entstandenen Einträgen in der Hypersonic-Datenbank des JBoss-Applikationsservers konnte
das erwartete Verhalten beobachtet werden. Somit wurden die Abläufe von der Implementierung korrekt umgesetzt.
7.4. Vorzüge und Einschränkungen der prototypischen
Implementierung
Es wurde bereits zuvor an einigen Stellen erwähnt, dass die Implementierung der ReDiCAtArchitektur prototypisch erfolgte. Der Fokus dieser Arbeit liegt auf der Konzeptionierung der
Analyse-Abläufe in Form eines Ausführungsmodelles und einer daraus abgeleiteten Architektur. Die Implementierung dient dabei als Hilfsmittel, um die konzeptionierten Analyse-Abläufe
demonstrieren zu können. Aus diesen Gründen wurden beispielsweise keine semantisch belegten Datentypen für Klassifikatoren oder Klassifikationsergebnisse implementiert. Der Schwerpunkt der Implementierung der Architektur lag vielmehr auf der Schaffung der verteilten Komponenten und der Umsetzung der Kontroll- und Datenflüsse zwischen ihnen.
Durch die Implementierung von Interfaces, die ein bestimmtes Maß an Vorgaben für nachfolgende, ausführliche Implementierungen der einzelnen Datentypen oder Komponenten geben,
168
7.5 Z USAMMENFASSUNG
169
kann erreicht werden, dass durch Erweiterungen auch Semantik in die Implementierung eingearbeitet werden kann. Richtet sich beispielsweise eine zukünftige Implementierung eines Datentyps zur Darstellung eines Klassifikators nach den Vorgaben des Interfaces Classifier,
so kann sie innerhalb der Architektur eingesetzt werden und diese somit um ein Maß an Semantik bereichern.
Die im Rahmen dieser Arbeit umgesetzte prototypische Implementierung der ReDiCAtArchitektur stellt also einen ersten Schritt dar, auf dem weitere Arbeiten aufbauen können. Sie
ist zum derzeitigen Zeitpunkt in ihrer semantischen Aussagekraft stark eingeschränkt, bietet
jedoch die fast vollständige Umsetzung aller Abläufe des Ausführungsmodelles durch die Implementierung der Kontroll- und Datenflüsse zwischen den Komponenten. Einschränkungen
bestehen in der fehlenden Implementierung der Benutzungsschnittstelle und der daran angeschlossenen Task-Analyse, die durch die Komponenten BS bzw. TA der aus dem Ausführungsmodell abgeleiteten Architektur umgesetzt werden. Von der Implementierung dieser Komponenten wurde nach Maßgabe des Betreuers abgesehen. Weiterhin bestehen Einschränkungen in
der prototypischen Implementierung der Komponenten, die die Analyse-Algorithmen umsetzen. Diese erfüllen derzeit ausschließlich die Spezifikationen der Schnittstellen, weisen jedoch
keine Semantik in Bezug auf die umzusetzende Algorithmik auf. So erzeugt die Komponente
IIK zur Umsetzung eines inkrementellen Induktions-Algorithmus zwar einen syntaktisch korrekten Klassifikator, induziert diesen jedoch nicht anhand eingegebener Datensätze, sondern
statisch.
Auf dem derzeitigen Stand aufbauend kann die Implementierung durch Schaffung semantisch
aussagekräftiger Datentypen für Klassifikatoren und Klassifikationsergebnisse erweitert werden. Auch die Implementierung von Komponenten, die reale Algorithmen umsetzen und eine konkrete Funktionalität bieten, kann die derzeitige Architektur erweitern. Auf diese Weise
kann die semantische Aussagekraft der Implementierung erhöht werden, so dass die AnalyseAbläufe des Ausführungsmodelles, und somit auch die Analysen des ReKlaMe-Ansatzes durch
die ReDiCAt-Implementierung semantisch korrekt umgesetzt werden können.
7.5. Zusammenfassung
In diesem Kapitel wurde die Implementierung der ReDiCAt-Architektur vorgestellt und
ausführlich betrachtet. Dazu wurden zunächst in Abschnitt 7.1 die der Implementierung zugrunde liegenden Soft- und Hardwareanforderungen aufgezeigt.
In Abschnitt 7.2 wurden implementationsspezifische Details der implementierten Datentypen
und Komponenten beschrieben. So wurde u.a. eine Abbildung von Komponenten der aus dem
Ausführungsmodell abgeleiteten Architektur auf Enterprise-Bean-Typen durchgeführt.
Abschnitt 7.3 befasste sich anschließend mit dem Vorhaben, die Umsetzung der AnalyseAbläufe, die durch die aus dem Ausführungsmodell abgeleitete Architektur vorgegebenen wurden, anhand der Implementierung nachzuvollziehen. Dazu wurde eine Reihe von Testläufen initiiert, anhand derer die zu erwartenden Analyse-Abläufe nachvollzogen wurden. In Abschnitt
7.3.1 wurde dazu die Durchführung eines solchen Testlaufes detailliert beschrieben. Die eingehenden Belegungen der Parameter wurden aufgezeigt und in ihrer Wirkung erörtert. Anhand
der Ausgaben der ReDiCAt-Implementierung und weiterer Umstände konnte nachvollzogen
werden, dass die zu erwartenden Abläufe von der Implementierung umgesetzt werden. In den
Abschnitten 7.3.2 bis 7.3.4 erfolgte anschließend die Darstellung der weiteren Testläufe, die
jedoch in großen Teilen analog zu dem in Abschnitt 7.3.1 ausführlich beschriebenen Ablauf
verliefen und daher in kompakterer Form dargestellt wurden. Zusätzlich wurde darauf verwiesen, dass die Ausgaben der Architektur zu jedem der Testläufe der unterschiedlichen Analyse-
169
170
K APITEL 7 - I MPLEMENTIERUNG UND T EST
Abläufe im Anhang in den Abschnitten C.1 bis C.6 vollständig einzusehen sind. In Abschnitt
7.3.5 wurden dann gemeinsame Beobachtungen aller Testläufe zusammengefasst und bewertet.
Abschnitt 7.4 erörtert schließlich die Vorzüge und die Einschränkungen der prototypischen
Implementierung. Es wurde darauf hingewiesen, dass die Implementierung der Architektur als
ein erster Schritt in der Umsetzung der aus dem Ausführungsmodell abgeleiteten Architektur
darstellt, die eine Basis für weitere Arbeiten darstellt.
Sämtliche Ressourcen der prototypischen Implementierung sind unter
http://www.miaundpeppi.de/ReDiCAt/code/ReDiCAt/
einzusehen. Die Dokumentation des Quellcodes ist unter
http://www.miaundpeppi.de/ReDiCAt/index.html
als Javadoc hinterlegt.
170
8. Zusammenfassung und Ausblick
Dieses Kapitel fasst die Ergebnisse dieser Arbeit zusammen. Dazu werden zunächst in Abschnitt 8.1 die durchgeführten Arbeiten und deren Ergebnisse aufgeführt und mit den Zielen
abgeglichen, die im Vorfeld der Arbeit formuliert wurden. Anschließend erfolgt in Abschnitt
8.2 ein Ausblick auf die Möglichkeiten der Erweiterung der geschaffenen Architektur. Dazu
werden Ansatzpunkte für nachfolgende Arbeiten aufgezeigt und bereits vorhandene Ansätze
vorgestellt, die in den Kontext dieser Arbeit eingeordnet und in die geschaffene Architektur
integriert werden können.
8.1. Ergebnisse der Arbeit
Einführend wurden in Kapitel 2 zunächst die Grundlagen erarbeitet, die für das Verständnis des
Kontextes dieser Arbeit erforderlich sind. Zu diesen Grundlagen zählen das Distributed Data
Mining (DDM), der übergeordnete Prozess des Knowledge Discovery in Databases (KDD) sowie die spezialisierten Analyse-Verfahren der Klassifikation anhand von Entscheidungsbäumen. Es wurden zwei Herangehensweisen an DDM aufgezeigt: die Task-Parallelisierung und die
Datenparallelisierung. Die Form der Darstellung wurde bewusst auf die Aspekte eingeschränkt,
die zum weiteren Verständnis der Schritte dieser Arbeit erforderlich sind.
Im Anschluss daran erfolgte in Kapitel 3 die Vorstellung verschiedener Architektur-Ansätze
und -Konzepte. Die Vorteile eines Architektur-Ansatzes bei der Planung und Umsetzung eines Systemes bestehen vor allem in der besseren Verständlichkeit des zu entwerfenden Systemes sowie in der Schaffung von Wiederverwendbarkeit der zu entwerfenden Komponenten.
Zusätzlich wird die Verteilung der Entwicklung des Systemes auf ein Team von Entwicklern
ermöglicht, die aufgrund einer Aufteilung der Komponentenentwicklung parallel an einem
System arbeiten können. Die Betrachtung verschiedener, komponentenbasierter ArchitekturAnsätze wie z.B. dem Ansatz der agentenbasierten Architektur, dem Mediator-Wrapper-Ansatz
sowie dem Web-Service-Ansatz erbrachte in Verbindung mit der Betrachtung verschiedener
Architektur-Konzepte wie dem der Client-Server-Architektur, der Container-Architektur und
der Multi-Layer-Architektur einen Überblick über die Eigenschaften, die für die im weiteren Verlauf dieser Arbeit zu implementierende Architektur zur Umsetzung der Analysen des
ReKlaMe-Systemes erwünscht sind. In einer anschließenden Bewertung wurden vorhandene
Implementierungen von Architekturen bezüglich ihrer Eignung für die Verwendung im Rahmen dieser Arbeit untersucht, und die J2EE/EJB-Architektur wurde als die geeignetste Architektur zur Umsetzung des zu entwerfenden Ausführungsmodelles gewählt. Ein wichtiger
Aspekt bei dieser Wahl stellt die umfangreiche Unterstützung der EJB-Architektur von Verteiltheit der Komponenten dar, aber auch die Vorgabe der Programmiersprache JAVA begünstigte
die Wahl der EJB-Architektur. Eine andere, agentenbasierte Architektur, die im Rahmen des
Habilitationsprojektes von Dr. Frank Köster implementiert wurde, erschien bezüglich vieler Eigenschaften ebenfalls geeignet, bietet jedoch zusätzliche Funktionalitäten, die im Rahmen dieser Arbeit nicht von Nutzen wären. Da sie jedoch mit erhöhtem Umsetzungsaufwand verbunden sind, wurde von der Verwendung dieser Architektur im Rahmen dieser Arbeit abgesehen.
Im Anschluss an die Wahl der geeigneten Architektur folgte die Erarbeitung der Grundlagen
des gewählten J2EE-Konzeptes und der EJB-Architektur.
171
172
K APITEL 8 - Z USAMMENFASSUNG UND AUSBLICK
Nach Schaffung dieser Grundlagen befasste sich Kapitel 4 mit dem Einstieg in den konzeptionellen Teil dieser Arbeit, der zunächst die Konzeptionierung eines Ausführungsmodelles
für ReKlaMe-Analysen umfasste. Es wurden verschiedene Analyse-Abläufe (KlassifikatorInduktion, Klassifikator-Anwendung und Klassifikator-Wartung) sowie deren Aufteilung in
verschiedene Analyse-Phasen (einfache und inkrementelle Induktion, Meta-Lernen, naive
Klassifikation und die Klassifikation anhand von Selection Graphs) identifiziert. Daraufhin
wurden Operatoren, beispielsweise zur Datenselektion, zur Durchführung eines KlassifikatorInduktionsschrittes oder zur Selektion eines Klassifikators entworfen und bezüglich ihrer Signaturen spezifiziert. Jeder Analyse-Ablauf, der aus einer Verschaltung verschiedener Operatoren besteht, wurde anhand von graphischen Darstellungen erläutert und formal bezüglich der
Konkatenation der entsprechenden Operator-Signaturen beschrieben. Das Ergebnis dieses Kapitels ist ein Ausführungsmodell, welches die im Rahmen des ReKlaMe-Projektes möglichen
Analysen operationalisiert ausführen kann.
Im Anschluss an die Konzeptionierung des Ausführungsmodelles erfolgte in Kapitel 5 die
Ableitung einer Architektur aus dem zuvor konzeptionierten Ausführungsmodell. Dabei wurden die Operatoren des Ausführungsmodelles auf Komponenten abgebildet, und die operationalisierten Abläufe der verschiedenen Analyse-Schritte wurden durch die Verschaltung der Komponenten in drei vorläufigen Architekturen umgesetzt, je eine für den Ablauf
der Klassifikator-Induktion, den Ablauf der Klassifikator-Anwendung und den Ablauf der
Klassifikator-Wartung. Anschließend erfolgte die Zusammenlegung der vorläufigen Architekturen zu einer Gesamt-Architektur, die alle Analyse-Abläufe abbildet. Durch die Zusammenlegung konnten einige Komponenten mehrfach genutzt werden, so dass eine Reduzierung
der Komponenten der Gesamtarchitektur im Vergleich zur Summe der Komponenten der drei
vorläufigen Architekturen zu beobachten ist.
Die zuvor abgeleitete Architektur zur Durchführung der Analysen im ReKlaMe-Kontext wurde
in Kapitel 6 anschließend im Rahmen eines objektorientierten Entwurfes entwickelt und nach
Maßgabe des Betreuers dieser Arbeit prototypisch implementiert. Grundlage dieses Entwurfes bildeten die zuvor gewählte J2EE/EJB-Basisarchitektur und daraus resultierend die Programmiersprache JAVA. Die Architektur erhielt den Namen ReDiCAt, das Akronym steht für
ReKlame Distributed Classification Architecture. Die Implementierung umfasste die prototypische Umsetzung der Datentypen zur Darstellung von Ressourcen wie z.B. Klassifikatoren,
Klassifikationsergebnissen oder Trainings- und Instanzdatenmengen, Metadaten zur Steuerung
der Komponenten und zur Umsetzung der Datenflüsse innerhalb der Architektur sowie eine
ausgewählte Menge weiterer Komponenten, die jeweils ebenfalls prototypisch implementiert
wurden. Die Auswahl der Komponenten erfolgte nach Maßgabe des Betreuers, es wurden alle
Komponenten des Architekturentwurfes implementiert, abgesehen von den Komponenten BS
und TA.
Um die implementierte Architektur testen zu können, und um nachweisen zu können, dass
sie die Analyse-Abläufe des Ausführungsmodelles und der daraus abgeleiteten Architektur
umsetzt, wurden in Kapitel 7 einige Testläufe durchgeführt und beschrieben. Anhand der auszugsweise dargestellten Ausgaben der Architektur und anhand von entstandenen MetadatenObjekten über die durch den Analyse-Ablauf erzeugten Ressourcen konnte nachvollzogen
werden, dass die Analyse-Abläufe in der Implementierung abgebildet wurden. Vollständige
Ausgaben sind im Anhang C aufgeführt.
Insgesamt wurde das Ziel dieser Arbeit umgesetzt, welches in der Konzeptionierung eines
Ausführungsmodelles für ReKlaMe-Analysen und der darauf basierenden Ableitung einer Architektur samt prototypischer Implementierung bestand. Alle Abläufe, die im Rahmen des ReKlaMe-Projektes durchführbar sind, können durch das Ausführungsmodell und die daraus abgeleitete Architektur abgebildet werden. Als nachteilhaft erweist sich, dass die Implementierung lediglich prototypisch erfolgen konnte und diese somit zwar Vorgaben für eine detaillierte
172
8.2 AUSBLICK
173
Implementierung verschiedener Aspekte der Architektur gibt, jedoch im derzeitigen Stadium
keine auf realen Daten basierenden Analysen durchführen und somit keine realen Ergebnisse erzielen kann. Für nachfolgende Arbeiten ist jedoch ein Rahmenwerk entstanden, welches
viele Ansatzpunkte bietet, um verschiedene Komponenten detailliert zu entwerfen und zu implementieren.
8.2. Ausblick
Im Gegensatz zur detaillierten Konzeptionierung des Ausführungsmodelles und der darauf
basierenden Ableitung einer Architektur erfolgte die Implementierung der Architektur prototypisch, so dass sich hier einige Ansatzpunkte bieten, die durch nachfolgende Arbeiten ausgeführt werden können. So sind sämtliche Komponenten, die Analyse-Algorithmen abbilden,
nur bezüglich ihrer Ein- bzw. Ausgabe-Schnittstellen implementiert worden. Die eigentlichen
Algorithmen fanden keine Implementierung. Hier können auf Basis der Interfaces, die entworfen wurden, um die Anbindung der Komponenten an den Kontroll- und Datenfluss umzusetzen, funktionale Komponenten entworfen werden, die einen Analyse-Ablauf ermöglichen, der
reale Ergebnisse in Abhängigkeit von den Eingaben erzeugen kann. Denkbar ist hier der Entwurf eines Klassifikator-Induktions-Algorithmus, eines Meta-Lerners oder eines KlassifikatorAnwendungs-Algorithmus. Auch der Ablauf der Klassifikation über die Wandlung eines Klassifikators in eine Menge von Selection Graphs und der anschließend folgenden Wandlung dieser zu Datenbank-Abfragen könnte konkret implementiert werden. Zudem ist eine Parameterisierung der implementierten Algorithmen vorgesehen, die ebenfalls prototypisch implementiert
wurde. Diese müsste in Abhängigkeit der zu implementierenden Analyse-Algorithmen ebenfalls detailliert implementiert werden.
Die Modelle für Ressourcen, die im Rahmen der ReKlaMe-Analysen entstehen, sind ebenfalls
prototypisch implementiert worden. Die detaillierte Implementierung eines Modelles zur Abbildung eines Klassifikators oder eines Klassifikationsergebnisses stellt hier einen Ansatzpunkt
dar, um eine reale Funktionalität der Architektur zu erreichen. In der derzeitigen Implementierung handelt es sich um Dummy-Datentypen. Eine reale Repräsentation eines Klassifikators
oder eines Klassifikationsergebnisses wurde nicht umgesetzt.
Auch die Anbindung von Datenquellen und die Darstellung selektierter Datenmengen wurde
nicht detailliert implementiert. Die Konzeptionierung der Architektur sieht verschiedene Komponenten für die Selektion von Daten oder Ressourcen vor. Hier besteht ein Ansatzpunkt für die
detaillierte Implementierung der Komponenten DSK für die Datenselektion von Trainings- oder
Instanzdatenmengen oder BSK für die Selektion von Basisklassifikatoren. Komponenten, die
Datenquellen an die Architektur anbinden, sind KE zur Speicherung von Klassifikationsergebnissen, KR zur Speicherung von Klassifikatoren, TD zur Selektion von Trainingsdatenmengen
und ID zur Selektion von zu klassifizierenden Instanzdatenmengen. Die derzeitigen Implementierungen dieser Komponenten erfüllen die Anforderungen an die Schnittstellen, bieten jedoch
keine reale Speicherung der übergebenen Ressourcen.
Die Initiierung von Analysen erfolgt in der prototypischen Implementierung durch eine statische JAVA-Clientapplikation, in die Parameter und Eingabedaten fest einprogrammiert wurden.
Von der ursprünglich angedachten Implementierung einer webbasierten Benutzungsschnittstelle wurde nach Maßgabe des Betreuers abgesehen, da diese für die Testläufe keinen Mehrwert
erbringt. Hier bietet sich der Ansatzpunkt der detaillierten Implementierung einer Benutzungsschnittstelle, die analog zum konzeptionierten Vorgehen des Ausführungsmodelles auch bereits
vorhandene Ressourcen der Architektur mit in die Planung eines auszuführenden AnalyseAblaufes einbezieht und es komfortabel ermöglicht, Analysen zu planen und zu initiieren.
173
174
K APITEL 8 - Z USAMMENFASSUNG UND AUSBLICK
Auch komplexere Analysen, die aus mehr als einem Analyse-Ablauf bestehen, können hier
umgesetzt werden.
Schließlich wurden die Komponenten der Architektur prototypisch implementiert, die mit der
Verwertung der durch die Analysen erzeugten Ressourcen betraut sind. Auch an dieser Stelle
kann die Entwicklung einer Komponente zur realen Speicherung einer erzeugten Ressource
wie z.B. eines Klassifikators oder eines Klassifikationsergebnisses ansetzen. Die Visualisierung einer solchen Ressource wurde zudem prototypisch implementiert. Hier ließen sich beispielsweise graphische Visualisierungen umsetzen. Die derzeitigen Implementierungen sehen
lediglich eine textuelle Ausgabe der erzeugten Ressourcen vor, die Speicherung erfolgt nicht
real.
Weitere Arbeiten, die im Rahmen des ReKlaMe-Projektes unter der Betreuung von Herrn Heiko
Tapken durchgeführt wurden oder die sich in Planung befinden, können in den Kontext dieser
Arbeit eingeordnet werden. Teile der zuvor erwähnten Erweiterungsmöglichkeiten ließen sich
so möglicherweise bereits umsetzen.
So hat Herr Carsten Saathoff im Rahmen seiner Diplomarbeit ein Metadatenmodell entworfen
und implementiert, welches die Anwendung von Entscheidungsbäumen in Data Warehouses
ermöglicht [Saa04]. Dieses Metadatenmodell könnte zur Darstellung von Klassifikatoren in der
ReDiCAt-Architektur verwendet werden. Zu prüfen ist hier der notwendige Aufwand, um das
Metadatenmodell an die vorgegebenen Auflagen der ReDiCAt-Architektur anzupassen. Hier
stellen die Verwendung des CWM-Standards und die Speicherung der Metadaten in einem
TOY-Repository [HT01] den größten Anpassungsbedarf dar.
Herr Matthias Pretzer entwickelte im Rahmen seiner Diplomarbeit einen Meta-LernAlgorithmus, der datenschutzrechtliche Aspekte berücksichtigt [Pre05]. Bezüglich der Integration in die ReDiCAt-Architektur ist hier eine Anpassung und Integration dieses Algorithmus in die ML-Komponente denkbar, die derzeit lediglich die Schnittstellen-Spezifikation der
Komponente implementiert, auf die Umsetzung eines realen Meta-Lern-Algorithmus jedoch
verzichtet.
Die Diplomarbeit von Herrn Tim Hobbiebrunken beinhaltet die Konzeptionierung eines inkrementellen Klassifikator-Induktions-Algorithmus. Dieser kann die Grundlage einer Implementierung der IIK-Komponente darstellen, die in ihrer derzeitigen Implementierung analog zur
ML-Komponente lediglich die Schnittstellenspezifikationen erfüllt.
Herr Guido Zendel befasste sich im Rahmen seiner Diplomarbeit mit der Implementierung eines Entscheidungsbaum-Induktionsalgorithmus, der direkt auf relationalen Strukturen wie dem
Snowflake-Schema eines Data Warehouse arbeitet [Zen05]. Auch hier bieten sich Ansatzpunkte, diesen Induktionsalgorithmus an die Anforderungen der Komponente IIK der ReDiCAtArchitektur anzupassen und als solches zu implementieren.
Eine zukünftige Arbeit im Rahmen des ReKlaMe-Projektes unter der Betreuung von Herrn
Heiko Tapken befasst sich mit dem Gebiet des Privacy Preserving Data Mining (PPDM). Ergebnisse dieser Arbeit können ebenfalls in potentielle weitere Implementierungen der Komponenten einbezogen werden. In der derzeitigen Implementierung wurde nach Maßgabe des
Betreuers auf die Umsetzung von datenschutzrechtlichen Aspekten verzichtet.
174
Anhang
175
A. Detaillierte Darstellung der
Bestandteile von Enterprise-Beans
Dieser Abschnitt zeigt den Aufbau der Bestandteile auf, aus denen Enterprise-Beans bestehen.
Da jeder der drei Beantypen (Session-Bean, Message-Driven-Bean, Entity-Bean) aus unterschiedlichen Interfaces, Klassen oder sonstigen Ressourcen besteht, wird für jeden Bean-Typ
ein Beispiel aufgeführt. Anhand dieser Beispiele, in denen JAVA- und XML-Codefragmente
dargestellt werden, kann der Aufbau der Enterprise-Beans nachvollzogen werden.
A.1. Interfaces und Klassen zur Definition der GU-SB
Zur Definition der GU-SB bedarf es verschiedener Klassen, Interfaces und XML-Dokumente,
die hier in Form von JAVA- und XML-Code dargestellt werden:
Das GUHomeRemote-Interface muss vom Interface javax.ejb.EJBHome abgeleitet
werden, das wiederum von java.rmi.Remote abgeleitet ist. Auch hier müssen alle Methoden eine Exception vom Typ java.rmi.RemoteException werfen. Sie
dient als eine Art ObjectFactory. Die Implementierung dieser Klasse dient später der
Erzeugung, dem Auffinden und der Löschung von GUBean-Instanzen. Der Code ist in
Listing A.1 gegeben.
1
2
3
4
/*
* Created on Jan 31, 2005
*/
package redicat.mvs;
5
6
7
8
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
9
10
11
12
13
14
15
16
17
/**
* GUHomeRemote.java, created on Jan 31, 2005,
*
* the remote home interface to control the lifecycle of the
* GUBean.
* @author R. Stuber <Ralph.Stuber@Informatik.Uni-Oldenburg.DE>
*/
public interface GUHomeRemote extends EJBHome {
18
public GURemote create() throws
RemoteException, CreateException;
19
20
21
}
Listing A.1: Code des HomeRemote-Interfaces der GU-Bean
Die Home- und Remote-Interfaces einer Bean können sowohl für lokalen als auch für
entfernten Zugriff konzeptioniert werden. In diesem Falle handelt es sich um den entfernt
konzeptionierten Zugriff, daher der Name HomeRemote.
177
178
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
Das Remote-Interface definiert die von einer Bean an Clients angebotenen Geschäftsmethoden und Funktionalitäten. Es muss vom Interface javax.ejb.EJBObject abgeleitet werden, welches selbst vom Interface java.rmi.Remote abgeleitet ist. Zudem
muss die Exception java.rmi.RemoteException deklariert werden. Die Implementierung dieses Interfaces zeichnet später zusätzlich für das transaktionale Verhalten,
die Sicherheitsüberprüfungen sowie gegebenenfalls für die Logik der containergesteuerten Persistenz verantwortlich. Der Code für das Remote-Interface der GU-SB ist in
Listing A.2 gegeben.
1
2
3
4
/*
* Created on Jan 31, 2005
*/
package redicat.mvs;
5
6
7
8
import java.rmi.RemoteException;
import java.sql.Timestamp;
import javax.ejb.EJBObject;
9
10
11
12
13
14
15
16
17
/**
* GURemote.java, created on Jan 31, 2005,
*
* the remote interface to access business methods of the
* GUBean.
* @author R. Stuber <Ralph.Stuber@Informatik.Uni-Oldenburg.DE>
*/
public interface GURemote extends EJBObject {
18
/**
* Method to deliver the global timestamp for all containers
* involved in the ReDiCAt architecture.
* @return Timestamp of the actual time.
* @throws RemoteException
*/
public Timestamp getGlobalTime() throws RemoteException;
19
20
21
22
23
24
25
26
}
Listing A.2: Code des Remote-Interfaces der GU-SB
Die GUBean-Bean-Klasse dient der Implementierung der Methoden, die im Homeund Remote-Interface deklariert wurden. Dabei ist zu beachten, dass die Signaturen der Methoden aus dem Remote-Interface mit den zu implementierenden Methoden übereinstimmen. Je nachdem, welche Art von Enterprise-Bean implementiert werden soll, muss eines der drei Interfaces javax.ejb.EntityBean,
javax.ejb.MessageDrivenBean oder, wie in diesem Beispiel, das Interface
javax.ejb.SessionBean implementiert werden. Dabei müssen die jeweiligen
Home- und Remote-Interfaces nicht implementiert werden. Sie werden später vom EJBContainer bei Installation (Deployment) der Beans von den Installations-Werkzeugen
erzeugt. Mit Ausnahme einer Entity-Bean mit container-managed Persistence werden
die Bean-Klassen als konkrete Klassen implementiert. Der Code der GUBean-BeanKlasse ist in Listing A.3 zu finden.
1
2
3
4
5
/*
* Created on Jan 19, 2005
*
*/
package redicat.mvs;
6
178
A.1 I NTERFACES UND K LASSEN ZUR D EFINITION DER GU-SB
7
8
9
10
11
12
13
14
15
16
import
import
import
import
import
import
import
import
import
import
179
java.rmi.RemoteException;
java.sql.Timestamp;
java.util.Calendar;
javax.ejb.CreateException;
javax.ejb.EJBException;
javax.ejb.SessionBean;
javax.ejb.SessionContext;
javax.naming.Context;
javax.naming.InitialContext;
javax.naming.NamingException;
17
18
19
20
21
/**
* GU-Bean
*/
public class GUBean implements SessionBean {
22
/**
* Default create method
* @throws CreateException
*/
public void ejbCreate() throws CreateException {
}
/**
* Method to return the global timestamp for the redicat
* architecture.
* @return
*/
public Timestamp getGlobalTime() {
Timestamp ts =
new Timestamp(
Calendar.getInstance().getTimeInMillis());
System.out.println(
"DEBUG: GUBean.getGlobalTime: global timestamp is: "
+ts.toString()+".");
return ts;
}
/*
* @see javax.ejb.SessionBean#ejbRemove()
*/
public void ejbRemove() throws
EJBException, RemoteException {
}
/*
* @see javax.ejb.SessionBean#ejbActivate()
*/
public void ejbActivate() throws
EJBException, RemoteException {
}
/*
* @see javax.ejb.SessionBean#ejbPassivate()
*/
public void ejbPassivate() throws
EJBException, RemoteException {
}
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
}
Listing A.3: Code der Bean-Klasse der GU-SB
179
180
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
Der Deployment-Deskriptor liegt als XML-Datei vor und beinhaltet zusätzliche, deklarative Informationen, die nicht im Code einer Bean vorhanden sind. Auch Informationen darüber, wie mehrere Enterprise-Beans zusammenzufassen oder einzelne EnterpriseBeans in einem EJB-Container zu installieren sind, sind im Deployment-Deskriptor enthalten. Er beschreibt, welche externen Abhängigkeiten gegenüber anderen EnterpriseBeans oder Ressourcen vorliegen, sowie das Verhalten der Enterprise-Bean zur Laufzeit
und die Möglichkeiten der Kombination mit anderen Enterprise-Beans. Ein Beispiel für
einen Deployment-Deskriptor ist in Listing A.4 aufgezeigt. Es enthält die Ausschnitte,
die zur Deklaration der GU-SB erforderlich sind, und ist nicht vollständig wiedergegeben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description><![CDATA[No Description.]]></description>
<enterprise-beans>
<!-- Session Beans -->
<session>
<ejb-name>GU</ejb-name>
<home>redicat.mvs.GUHomeRemote</home>
<remote>redicat.mvs.GURemote</remote>
<ejb-class>redicat.mvs.GUBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<security-identity>
<use-caller-identity></use-caller-identity>
</security-identity>
</session>
<session>
<ejb-name>IVK</ejb-name>
[...]
<ejb-ref>
<ejb-ref-name>GU</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>GUHomeRemote</home>
<remote>GURemote</remote>
</ejb-ref>
<ejb-ref>
[...]
</ejb-ref>
<security-identity>
<use-caller-identity></use-caller-identity>
</security-identity>
</session>
[...]
</ejb-jar>
Listing A.4: Code-Beispiel eines Deployment-Deskriptors
Die Datei jboss.xml , ein JBoss-spezifischer XML-Deskriptor, ordnet jeder Bean einen
JNDI-Namen zu, über den diese im Namens- und Verzeichnisdienst eines EJBContainers aufzufinden ist und referenziert werden kann. Der XML-Code der verwendeten jboss.xml ist in Listing A.5 dargestellt.
1
2
3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
180
A.2 I NTERFACES UND K LASSEN ZUR D EFINITION DER MVSK-MDB
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
181
<jboss>
<enterprise-beans>
<session>
<ejb-name>GU</ejb-name>
<jndi-name>GUHomeRemote</jndi-name>
</session>
<session>
<ejb-name>IVK</ejb-name>
<jndi-name>IVKHomeRemote</jndi-name>
<ejb-ref>
<ejb-ref-name>GU</ejb-ref-name>
<jndi-name>GUHomeRemote</jndi-name>
</ejb-ref>
</session>
</enterprise-beans>
[...]
</jboss>
Listing A.5: Code-Beispiel der Datei jboss.xml
Nach Implementation werden alle Klassen und Deskriptoren in einem jar-Archiv1 verpackt,
welches die Bean-Repräsentation darstellt. Dieses jar-Archiv ist die Grundlage der Installation
einer Bean in einem EJB-Container. Der genaue Ablauf der Installation der Beans im EJBContainer wird in Anhang B beschrieben.
A.2. Interfaces und Klassen zur Definition der MVSK-MDB
Die implementierten MDB bedürfen keiner HomeRemote- und Remote-Interfaces. Hier genügt
es, eine Bean-Klasse zu schreiben, die eine onMessage()-Methode implementiert. Diese
wird aufgerufen, sobald eine Nachricht an die Queue geschickt wird, die durch die MDB observiert wird. Im Falle der MVSK-MDB ist dies die controlQueue.
Die controlQueue wird durch den in Listing A.6 dargestellten XML-Code im JBoss-EJBContainer installiert.
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.mq.destination:service=Queue,name=controlQueue">
<depends optional-attribute-name="DestinationManager">
jboss.mq:service=DestinationManager
</depends>
</mbean>
</server>
Listing A.6: XML-Code zur Einrichtung der controlQueue in einem JBoss-EJB-Container
Die MVSK-Beanklasse implementiert eine onMessage()-Methode, die aufgerufen wird,
wenn eine Nachricht an die controlQueue gesendet wird. In Abhängigkeit des Typs
1
jar steht für Java Archive und ist technisch gesehen ein zip-komprimiertes Format.
181
182
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
der Nachricht, die empfangen wurde, kann diese Objekte und String-Properties enthalten. Das Listing zeigt exemplarisch den Zugriff auf eine in einer ObjectMessage enthaltene String-Property Task, deren Wert in dem String-Objekt taskString abgelegt wird. Weiter wird ein Objekt des Typs Task, welches über die ObjectMessageNachricht an die MDB übergeben wurde, aus dieser extrahiert und in einem TaskObjekt gespeichert. Somit wird gezeigt, wie ein Objekt aus einer Nachricht zu extrahieren ist. Der JAVA-Code zur Implementierung der MVSK-SB sei in Listing A.7 gegeben.
1
2
3
4
/*
* Created on Jan 18, 2005
*/
package redicat.mvs;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
javax.ejb.CreateException;
javax.ejb.EJBException;
javax.ejb.MessageDrivenBean;
javax.ejb.MessageDrivenContext;
javax.jms.Message;
javax.jms.MessageListener;
javax.jms.ObjectMessage;
javax.naming.Context;
javax.naming.InitialContext;
javax.naming.NamingException;
javax.rmi.PortableRemoteObject;
redicat.aa.ContentResourceStorageHomeRemote;
redicat.aa.ContentResourceStorageRemote;
redicat.aa.IVKHomeRemote;
redicat.aa.IVKRemote;
redicat.metadata.SimpleClassificationTask;
redicat.metadata.SimpleClassifierLocation;
redicat.metadata.SimpleInductionTask;
redicat.metadata.SimpleMaintenanceTask;
redicat.metadata.Task;
redicat.metadata.control.AKMetadata;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* MVSKBean.java, created on Jan 16, 2005,
*
* is a message-driven bean to control the task to be executed by the
* ReDiCAt architecture. The queue called redicat-controlQueue will be
* observed for messages containing metadata objects containing
* information to execute an analysis task. The kind of task to be
* executed will be determined by the StringProperty given within
* the message. Possible tasks are:
* <ul>
* <li><i>naive </i> for naive classifier application,</li>
* <li><i>sg </i> for selection graph/database query application,</li>
* <li><i>ci </i> for simple classifier induction,</li>
* <li><i>ici </i> for incremental classifier induction,</li>
* <li><i>ml </i> for metalearning,</li>
* <li><i>maintenance </i> for maintenance.</li>
* </ul>
* After receiving the task and the corresponding metadata, the
* task will be executed. This bean is the central control instance
* of the ReDiCAt architecture.
*/
public class MVSKBean implements MessageDrivenBean, MessageListener {
50
182
A.2 I NTERFACES UND K LASSEN ZUR D EFINITION DER MVSK-MDB
MessageDrivenContext ejbContext;
Context jndiContext;
/*
* @see javax.ejb.MessageDrivenBean#setMessageDrivenContext(
*
javax.ejb.MessageDrivenContext)
*/
public void setMessageDrivenContext(MessageDrivenContext ctx)
throws EJBException {
ejbContext = ctx;
try {
jndiContext = new InitialContext();
} catch (NamingException ne) {
throw new EJBException(ne);
}
}
/**
* Default create method
* @throws CreateException
*/
public void ejbCreate() {
}
/*
* @see javax.jms.MessageListener#onMessage(
*
javax.jms.Message)
*/
public void onMessage(Message message) {
// Place the code to be performed on receiving a message
// here
ObjectMessage controlMessage = (ObjectMessage) message;
String taskString =
controlMessage.getStringProperty("Task");
Task task = controlMessage.getObject();
}
/*
* @see javax.ejb.MessageDrivenBean#ejbRemove()
*/
public void ejbRemove() throws EJBException {
}
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
183
}
Listing A.7: Code der Bean-Klasse der MVSK-MDB
Der Deployment-Deskriptor umfasst im Falle einer MDB die in Listing A.8 abgebildeten
XML-Tags:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description><![CDATA[No Description.]]></description>
<enterprise-beans>
<!-- Session Beans -->
<session>
[...]
</session>
<!-- Entity Beans -->
<entity>
[...]
183
184
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
</entity>
<!-- Message Driven Beans -->
<message-driven>
<ejb-name>MVSK</ejb-name>
<ejb-class>redicat.mvs.MVSKBean</ejb-class>
<transaction-type>Container</transaction-type>
<acknowledge-mode>
Auto-acknowledge
</acknowledge-mode>
<message-driven-destination>
<destination-type>
javax.jms.Queue
</destination-type>
</message-driven-destination>
<ejb-ref>
<ejb-ref-name>AMVK</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>AMVKHomeRemote</home>
<remote>AMVKRemote</remote>
</ejb-ref>
[...]
<resource-ref>
<res-ref-name>jms/QueueFactory</res-ref-name>
<res-type>
javax.jms.QueueConnectionFactory
</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</message-driven>
</enterprise-beans>
[...]
</ejb-jar>
Listing A.8: Code-Beispiel eines Deployment-Deskriptors
Die Datei jboss.xml umfasst die Bindung der zu observierenden Message-Queue an die
MDB. Dazu sei das XML-Codefragment aus Listing A.9 einzusehen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC
"-//JBoss//DTD JBOSS 3.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
<jboss>
<enterprise-beans>
<session>
[...]
</session>
<entity>
[...]
</entity>
<message-driven>
<ejb-name>MVSK</ejb-name>
<destination-jndi-name>
queue/redicat-controlQueue
</destination-jndi-name>
<ejb-ref>
<ejb-ref-name>AMVK</ejb-ref-name>
<jndi-name>AMVKHomeRemote</jndi-name>
</ejb-ref>
184
A.3 I NTERFACES UND K LASSEN ZUR D EFINITION DER M E T A D A T A R E P O S I T O R Y -EB
22
23
24
25
26
</message-driven>
[...]
</enterprise-beans>
[...]
</jboss>
Listing A.9: Code-Beispiel der Datei jboss.xml für die MVSK-MDB
A.3. Interfaces und Klassen zur Definition der
MetadataRepository-EB
Eine EB zu implementieren, bedarf eines etwas größeren Aufwandes. Anstelle der Implementierung einer eigenen Primärschlüssel-Klasse wird die JAVA-Klasse java.lang.Long als
Primärschlüssel-Klasse genutzt, so dass hier auf die Darstellung der Primärschlüssel-Klasse
verzichtet wird. Folgende Klassen, Interfaces und XML-Dateifragmente sind zu implementieren:
Das Home-Interface MetadataRepositoryHomeRemote bietet analog zum in Anhang A.1 beschriebenen Home-Interface die Methoden zur Verwaltung des Lebenszyklus der EB. Zusätzlich werden hier jedoch Methoden zum Aufspüren von EBInstanzen deklariert. Diese müssen in Form von EJB-QL-Ausdrücken im DeploymentDeskriptor umgesetzt werden. Diese Umsetzung wird in diesem Abschnitt an späterer
Stelle erläutert. Listing A.10 zeigt das Home-Interface der MetadataRepositoryEB.
Die in diesem Beispiel angegebene EB ist anhand des Wertes eines der Attribute, für
das eine findBy...()-Methode implementiert wurde, auffindbar. Zusätzlich kann sie
anhand ihrer ID vom Typ java.lang.Long aufgefunden werden, die dazu benötigte Methode findByPrimaryKey() wird automatisch vom Container implementiert
und bedarf keiner Deklaration im Home-Interface. Die Implementierung findet bei der
Installation der EB durch den EJB-Container statt.
1
2
3
4
/*
* Created on Jan 27, 2005
*/
package redicat.mvs;
5
6
7
8
9
10
import
import
import
import
import
java.rmi.RemoteException;
java.util.Collection;
javax.ejb.CreateException;
javax.ejb.EJBHome;
javax.ejb.FinderException;
11
12
13
14
15
16
17
18
19
/**
* MetadataRepositoryHomeRemote.java, created on Jan 27, 2005,
*
* the remote home interface to control the lifecycle of the
* MetadataRepositoryBean.
* @author R. <Ralph.Stuber@Informatik.Uni-Oldenburg.DE>
*/
public interface MetadataRepositoryHomeRemote extends EJBHome {
20
21
22
public MetadataRepositoryRemote create(Long id)
throws CreateException, RemoteException;
185
185
186
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
23
public MetadataRepositoryRemote findByPrimaryKey(Long pk)
throws FinderException, RemoteException;
24
25
26
public Collection findByType(String type)
throws FinderException, RemoteException;
27
28
29
public Collection findByDataSourceLocation(
String dataSourceLocation)
throws FinderException, RemoteException;
30
31
32
33
public Collection findByDescription(String description)
throws FinderException, RemoteException;
34
35
36
public Collection findByResourceLocation
(String resourceLocation)
throws FinderException, RemoteException;
37
38
39
40
}
Listing A.10: Code des HomeRemote-Interfaces der MetadataRepository-EB
Das Remote-Interface MetadataRepositoryRemote umfasst die Deklaration der
Methoden, die von der MetadataRepository-EB angeboten werden. Im Falle dieser EB sind dies die get- und set-Methoden für die vorhandenen Attribute. Einzusehen
ist der JAVA-Code des Remote-Interfaces in Listing A.11.
1
2
3
4
/*
* Created on Jan 27, 2005
*/
package redicat.mvs;
5
6
7
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
8
9
10
11
12
13
14
15
16
/**
* MetadataRepositoryRemote.java, created on Jan 27, 2005,
*
* the remote interface to access business methods of the
* MetadataRepository bean.
* @author R. Stuber <Ralph.Stuber@Informatik.Uni-Oldenburg.DE>
*/
public interface MetadataRepositoryRemote extends EJBObject {
17
public String getType() throws RemoteException;
public void setType(String type) throws RemoteException;
18
19
20
public String getDataSourceLocation() throws RemoteException;
public void setDataSourceLocation(String dataSourceLocation)
throws RemoteException;
21
22
23
24
public String getDescription() throws RemoteException;
public void setDescription(String description)
throws RemoteException;
25
26
27
28
public String getResourceLocation() throws RemoteException;
public void setResourceLocation(String resourceLocation)
throws RemoteException;
29
30
31
32
}
186
A.3 I NTERFACES UND K LASSEN ZUR D EFINITION DER M E T A D A T A R E P O S I T O R Y -EB
Listing A.11: Code des Remote-Interfaces der MetadataRepository-EB
Die Bean-Klasse MetadataRepositoryBean dient der Definition der Attribute, die in der EB gespeichert werden sollen, und implementiert das Interface
javax.ejb.EntityBean. Zur Definition der Attribute werden diese jedoch nicht
wie in herkömmlichen Java-Klassen deklariert. Seit EJB2.0 werden anstelle dessen die
get- und set-Methoden für die Attribute definiert, die der EJB-Container ebenfalls zur
Installation der EB im Container implementiert. Zusätzlich muss die ejbCreate()Methode implementiert werden, die in diesem Fall eine neue EB erzeugt und ihrem
Primärschlüssel-Attribut ID einen Wert zuweist. Der JAVA-Code der Bean-Klasse ist in
Listing ejb:metadatarepositorybean dargestellt.
1
2
3
4
/*
* Created on Jan 27, 2005
*/
package redicat.mvs;
5
6
7
8
9
10
11
import
import
import
import
import
import
java.rmi.RemoteException;
javax.ejb.CreateException;
javax.ejb.EJBException;
javax.ejb.EntityBean;
javax.ejb.EntityContext;
javax.ejb.RemoveException;
12
13
14
public abstract class MetadataRepositoryBean implements
EntityBean {
15
16
17
18
19
public Long ejbCreate(Long id) throws CreateException {
this.setId(id);
return null;
}
20
21
22
public void ejbPostCreate(Long id) {
}
23
24
25
public abstract Long getId();
public abstract void setId(Long id);
26
27
28
public abstract String getType();
public abstract void setType(String type);
29
30
31
32
public abstract String getDataSourceLocation();
public abstract void setDataSourceLocation(
String dataSourceLocation);
33
34
35
36
public abstract String getDescription();
public abstract void setDescription(
String description);
37
38
39
40
public abstract String getResourceLocation();
public abstract void setResourceLocation(
String resourceLocation);
41
42
43
44
/**
* @see javax.ejb.EntityBean#setEntityContext(
*
javax.ejb.EntityContext)
187
187
188
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
*/
public void setEntityContext(EntityContext ctx)
throws EJBException,
RemoteException {
}
/**
* @see javax.ejb.EntityBean#unsetEntityContext()
*/
public void unsetEntityContext() throws EJBException,
RemoteException {
}
/**
* @see javax.ejb.EntityBean#ejbActivate()
*/
public void ejbActivate() throws EJBException,
RemoteException {
}
/**
* @see javax.ejb.EntityBean#ejbPassivate()
*/
public void ejbPassivate() throws EJBException,
RemoteException {
}
/**
* @see javax.ejb.EntityBean#ejbLoad()
*/
public void ejbLoad() throws EJBException,
RemoteException {
}
/**
* @see javax.ejb.EntityBean#ejbStore()
*/
public void ejbStore() throws EJBException,
RemoteException {
}
/**
* @see javax.ejb.EntityBean#ejbRemove()
*/
public void ejbRemove() throws RemoveException,
EJBException, RemoteException {
}
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
}
Listing A.12: Code der Bean-Klasse der MetadataRepository-EB
Der Deployment-Deskriptor ist im Falle einer EB etwas umfangreicher zu deklarieren.
Zunächst werden im Abschnitt der SB-Deklarationen die SB, die einen Zugriff auf die
einzufügende EB durchführen, mit einem <ejb-ref>-Tag erweitert, welches einen
Zugriff auf die EB ermöglicht. Die Deklaration der EB im <entity>-Tag ist im
Falle der MetadataRepository-EB umfangreich, da diese Bean Methoden implementiert, die das Auffinden einer EB-Instanz anhand weiterer Attribute neben dem
Primärschlüssel erlauben.
Zunächst werden die bekannten Deklarationen bezüglich der Namen des Home- und
Remote-Interfaces gegeben. Über das Tag <persistence-type> kann festgelegt
werden, ob Container oder Bean die Persistenzsicherung implementieren sollen. Der
Typ der Primärschlüsselklasse wird im Tag <prim-key-class> festgelegt. Das Tag
188
A.3 I NTERFACES UND K LASSEN ZUR D EFINITION DER M E T A D A T A R E P O S I T O R Y -EB
<reentrant> bestimmt, ob eine EB-Instanz, auf die bereits von einer Methode zugegriffen wird, einen Zugriff einer weiteren Methode erlaubt. Schließlich werden die
Attribute der EB in <cmp-field> deklariert.
Für jedes Attribut, das über eine findBy...()-Methode gesucht werden kann, bedarf
es eines <query>-Tags, welches unter anderem den Attributnamen und ein Suchkriterium in Form eines EJB-QL-Ausdruckes umfasst. EJB-QL erinnert in Bezug auf die
Syntax stark an SQL, die Angabe ?1 bezieht sich auf das erste übergebene Argument
der findBy...()-Methode.
Der XML-Code für die Deklaration der MetadataRepository-EB ist in Listing
A.13 dargestellt. Für weitere Informationen sei hier auf [MH02] verwiesen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description><![CDATA[No Description.]]></description>
<enterprise-beans>
<!-- Session Beans -->
[...]
<session>
<ejb-name>AK</ejb-name>
[...]
<ejb-ref>
<ejb-ref-name>MetadataRepository</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>MetadataRepositoryHomeRemote</home>
<remote>MetadataRepositoryRemote</remote>
</ejb-ref>
[...]
</session>
[...]
<!-- Entity Beans -->
<entity>
<ejb-name>MetadataRepository</ejb-name>
<home>
redicat.mvs.MetadataRepositoryHomeRemote
</home>
<remote>
redicat.mvs.MetadataRepositoryRemote
</remote>
<ejb-class>
redicat.mvs.MetadataRepositoryBean
</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Long</prim-key-class>
<reentrant>False</reentrant>
<abstract-schema-name>
MetadataRepository
</abstract-schema-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>type</field-name>
</cmp-field>
<cmp-field>
189
189
190
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<field-name>dataSourceLocation</field-name>
</cmp-field>
<cmp-field>
<field-name>description</field-name>
</cmp-field>
<cmp-field>
<field-name>resourceLocation</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
<security-identity>
<use-caller-identity></use-caller-identity>
</security-identity>
<query>
<query-method>
<method-name>findByType</method-name>
<method-params>
<method-param>
java.lang.String
</method-param>
</method-params>
</query-method>
<ejb-ql>
SELECT DISTINCT OBJECT(m)
FROM MetadataRepository m
WHERE m.type = ?1
</ejb-ql>
</query>
<query>
<query-method>
<method-name>
findByDataSourceLocation
</method-name>
<method-params>
<method-param>
java.lang.String
</method-param>
</method-params>
</query-method>
<ejb-ql>
SELECT DISTINCT OBJECT(m)
FROM MetadataRepository m
WHERE m.dataSourceLocation = ?1
</ejb-ql>
</query>
<query>
<query-method>
<method-name>
findByDescription
</method-name>
<method-params>
<method-param>
java.lang.String
</method-param>
</method-params>
</query-method>
<ejb-ql>
SELECT DISTINCT OBJECT(m)
FROM MetadataRepository m
190
A.3 I NTERFACES UND K LASSEN ZUR D EFINITION DER M E T A D A T A R E P O S I T O R Y -EB
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
WHERE m.description = ?1
</ejb-ql>
</query>
<query>
<query-method>
<method-name>
findByResourceLocation
</method-name>
<method-params>
<method-param>
java.lang.String
</method-param>
</method-params>
</query-method>
<ejb-ql>
SELECT DISTINCT OBJECT(m)
FROM MetadataRepository m
WHERE m.resourceLocation = ?1
</ejb-ql>
</query>
</entity>
[...]
<!-- Message Driven Beans -->
<message-driven>
[...]
</message-driven>
</enterprise-beans>
[...]
</ejb-jar>
Listing A.13: Code-Beispiel eines Deployment-Deskriptors für eine EB
Die Datei jboss.xml umfasst im Falle der Deklaration einer EB lediglich die Deklaration
der Referenzen anderer Beans auf die zu deklarierende EB sowie die Deklaration der EB
selbst und deren Bindung an einen JNDI-Namen. Das XML-Codefragment aus Listing
A.14 zeigt die notwendigen Deklarationen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC
"-//JBoss//DTD JBOSS 3.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
<jboss>
<enterprise-beans>
[...]
<session>
<ejb-name>AK</ejb-name>
<jndi-name>AKHomeRemote</jndi-name>
<ejb-ref>
<ejb-ref-name>MetadataRepository</ejb-ref-name>
<jndi-name>
MetadataRepositoryHomeRemote
</jndi-name>
</ejb-ref>
</session>
[...]
<entity>
<ejb-name>MetadataRepository</ejb-name>
<jndi-name>
MetadataRepositoryHomeRemote
191
191
192
K APITEL A - D ETAILLIERTE D ARSTELLUNG DER B ESTANDTEILE VON E NTERPRISE -B EANS
23
24
25
26
27
28
29
30
31
</jndi-name>
</entity>
[...]
<message-driven>
[...]
</message-driven>
</enterprise-beans>
[...]
</jboss>
Listing A.14: Code-Beispiel der Datei jboss.xml für die MetadataRepository-EB
Die vorhergehenden Abschnitte haben je ein Beispiel einer SB, einer MDB und einer EB anhand von JAVA-Code der zu implementierenden Interfaces und Klassen sowie den notwendigen XML-Fragmenten aufgezeigt. Die Interfaces, Klassen und XML-Deskriptoren müssen nun
zusammengefasst und im EJB-Container installiert werden. Das Vorgehen der jar-Erzeugung
und der Installation dieses jars im EJB-Container wird für den speziellen Fall der Nutzung des
JBoss-Applikationsservers im folgenden Abschnitt vorgestellt.
192
B. Installation und Nutzung von
Enterprise-Beans
Zuvor wurde bereits beschrieben, welche Komponenten benötigt werden, um eine EnterpriseBean zu implementieren. Auch Code-Beispiele wurden aufgezeigt. Nun müssen die erzeugten
Beans samt ihrer Deskriptoren in einem EJB-Container installiert werden, damit sie für ClientApplikationen nutzbar sind. Dazu ist zunächst die Erzeugung einer jar-Datei erforderlich, die
dann anhand der Installations-Werkzeuge des EJB-Container-Herstellers im Container installiert (deployed) werden kann.
B.1. Packen und Installieren der Enterprise-Beans
Die Beans müssen in einer jar-Datei vorliegen, um im JBoss-Applikationsserver installiert
werden zu können. Zunächst müssen die Interfaces und Klassen übersetzt werden. Der
Deployment-Deskriptor ejb-jar.xml und die Datei jboss.xml müssen in ein Verzeichnis META-INF gelegt werden. Zur Erzeugung einer jar-Datei kann folgender Aufruf erfolgen:
$ jar cfm ReDiCAt.jar META-INF/ejb-jar.xml META-INF/jboss.xml
GUHomeRemote.class GURemote.class ...
MetadataRepositoryBean.class
wobei alle Interfaces und Klassen in kompilierter Form (.class-Datei) aufgeführt werden
müssen.
Die EJB-Spezifikation verpflichtet den Hersteller des EJB-Containers, die zur Installation einer jar-Datei notwendigen Werkzeuge bereitzustellen. Während der Installation
werden die fehlenden Codefragmente erzeugt. Dazu zählen die Implementationen des
Home- und Remote-Interfaces (EJBHome- bzw. EJBObject-Klasse) und im Falle einer container-managed Entity-Bean auch die Implementierung der konkreten Beanund Persistence-Klasse. Das zuvor erzeugte jar kann im Falle der Nutzung des JBossApplikationsservers ohne ein spezielles Werkzeug durch einfaches Kopieren in das Verzeichnis
$JBOSS HOME/server/default/deploy/ im EJB-Container installiert werden. Auch
die XML-Dateien zur Erzeugung der Message-Queues müssen dort hinterlegt werden. Nach
dem Start des Servers sind die Enterprise-Beans und die Message-Queues einsatzbereit.
Eine Kommunikation mit den Methoden der Enterprise Beans kann aufgrund der vollständigen Kapselung der Bean-Methoden lediglich über das EJBHome bzw. EJBObject-Objekt
durchgeführt werden; die Bean-Klasse selbst ist nicht von außen ansprechbar.
Der folgende Abschnitt erläutert den genauen Ablauf der Nutzung einer Methode einer
Enterprise-Bean durch einen Client.
193
194
K APITEL B - I NSTALLATION UND N UTZUNG VON E NTERPRISE -B EANS
B.2. Nutzung einer Bean durch einen Client
In diesem Abschnitt wird der Ablauf der Nutzung einer Enterprise-Bean-Methode durch einen
Client beispielhaft in kurzer Form aufgezeigt. Wenn ein Client auf einen Dienst, der von einer
Enterprise-Bean angeboten wird, zurückgreifen will, so muss er zunächst mit dem Namensund Verzeichnisdienst des EJB-Containers in Kontakt treten und eine Suchanfrage stellen,
anhand derer die entsprechende Bean lokalisiert werden kann. Diese Kontaktaufnahme wird
über die JNDI-Schnittstelle abgewickelt. Alle im EJB-Container installierten Beans müssen im
Namens- und Verzeichnisdienst verzeichnet sein, dafür ist der Hersteller des EJB-Containers
verantwortlich. Über den Deployment-Deskriptor können Beans mit spezifischen Attributen,
beispielsweise einem JNDI-Namen, versehen werden, anhand derer man sie später auffinden
kann. Zur Suche nach einer Bean kann eines dieser Attribute verwendet werden. Zum Auffinden einer Enterprise-Bean anhand ihres Namens kann der in Listing B.1 dargestellte JAVACode genutzt werden:
1
2
3
4
5
6
Object ref =
jndiContext.lookup("jnp://localhost:1099/GUHomeRemote");
GUHomeRemote home = (GUHomeRemote)
PortableRemoteObject.narrow(ref,GUHomeRemote.class);
GURemote GU = home.create();
Timestamp ts = GU.getGlobalTime();
Listing B.1: Code zum Zugriff auf eine Enterprise-Bean anhand ihres JNDI-Namens
Das jndiContext-Objekt ermöglicht den Zugriff auf den JNDI-Namensdienst des Containers. Zunächst wird das HomeRemote-Objekt erzeugt, anhand dessen ein Remote-Objekt zum
Zugriff instantiiert werden kann. Auf diesem kann dann die gewünschte Methode aufgerufen
werden, in diesem Fall getGlobalTime().
194
C. Ausgaben der Testläufe
Bei Implementierung der ReDiCAt-Architektur wurde darauf geachtet, dass die Kommunikationsflüsse transparent gegenüber einem Benutzer dargelegt werden. Daher geben sämtliche Methoden aller Komponenten bei Aufruf eine Meldung aus, die auf den Aufruf hinweist.
Zudem werden zusätzlich in manchen Fällen noch weitere Informationen ausgegeben. Somit
kann anhand dieser Ausgaben, die in das Log des Applikationsservers geleitet werden, die Sequenz der Methodenaufrufe nachvollzogen werden. Diese gibt einen weiteren Anhaltspunkt
für einen Benutzer, den durch die Implementierung der ReDiCAt-Architektur abgebildeten
Analyse-Ablauf nachzuvollziehen. In den folgenden Abschnitten werden die Ausgaben der
verschiedenen Testläufe der unterschiedlichen Analyse-Abläufe dargestellt.
C.1. Ausgaben des Analyse-Testlaufes zur einfachen
Klassifikator-Induktion
Der Testlauf einer einfachen Klassifikator-Induktion erzeugt die folgenden Ausgaben:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DEBUG: MVSKBean.onMessage(): ControlMessage: ci
DEBUG: MVSKBean.storeTask(): task stored with id 1.
DEBUG: IMVKBean.executeDataCollection() entered.
DEBUG: IMVKBean.executeDataCollection(): task is ci.
DEBUG: IMVKBean.executeDataCollection(): dsk address:
jnp://localhost:1099/DSKHomeRemote
DEBUG: DSKBean.deliverDataSet() entered.
DEBUG: DSKBean.deliverDataSet(): task string: ci.
DEBUG: DSKBean.deliverDataSet(): td/id address:
jnp://localhost:1099/TDHomeRemote.
DEBUG: TDBean.getTrainingsData() entered.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean.onMessage(): trainingsdata received.
DEBUG: AnalysisControlBean.onMessage(): trainingsdata set to EB with
id 1
DEBUG: AnalysisControlBean.onMessage(): sent receipt of trainingsdata
set to be stored.
DEBUG: IMVKBean.executeDataCollection(): sent command to execute
classifier collection.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.onMessage(): trainingsdata set delivery receipt
reveiced.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: IMVKBean.executeClassifierCollection() entered.
DEBUG: IMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifierSet(): no classifiers to be selected.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
195
196
K APITEL C - AUSGABEN DER T ESTL ÄUFE
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
DEBUG: AnalysisControlBean.onMessage(): EB with pk 1 already exists.
Using this one.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB with
id 1
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt reveiced.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of classifier
set to be stored.
DEBUG: IMVKBean.executeClassifierCollection(): sent command to
execute analysis.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: IMVKBean.executeAnalysisTask() entered.
DEBUG: IMVKBean.executeAnalysisTask(): iik address:
jnp://localhost:1099/IIKHomeRemote
DEBUG: IIKBean.induceClassifier() entered.
DEBUG: IIKBean.induceClassifier(): EB with pk 1 already exists.
Using this one.
DEBUG: IIKBean.induceClassifier(): induced Classifier based on
SelectedDataSet retreived from the entity bean
ContentResourceStorage. Task was simple classifier induction.
DEBUG: VKControlBean.onMessage() entered.
DEBUG: VKControlBean.onMessage(): classifier received.
DEBUG: VKBean.utiliseResource() entered.
DEBUG: VKBean.utiliseResource(): Utilisation is both.
DEBUG: VKBean.utiliseResource(): initiate storage and visualisation.
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): ================================
RESULT: VKBean.visualizeResource(): classifier.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108758776475
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location:
jnp://localhost:1099/IIKHomeRemote
RESULT: VKBean.visualizeResource(): UserName: myUser
RESULT: VKBean.visualizeResource(): UserPassword: myPass
RESULT: VKBean.visualizeResource(): ================================
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): ================================
RESULT: VKBean.storeResource(): classifier
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ClassifierSink location
(KR component): jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.storeResource(): ClassifierSink UserName
(KR component): myUser
RESULT: VKBean.storeResource(): ClassifierSink UserPassword
(KR component): MyPassword
RESULT: VKBean.storeResource(): ================================
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
DEBUG: KRBean.setClassifier(): ##################
196
C.2 AUSGABEN DES A NALYSE -T ESTLAUFES ZUR
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
INKREMENTELLEN K LASSIFIKATOR -I NDUKTION
DEBUG: VKBean.createAKMetadata() entered.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: VKBean.createAKMetadata(): sent message with AKMetadata.
DEBUG: MVSKBean.onMessage(): cleaning up, inserting newly created
ContentResource via AK component...
DEBUG: MVSKBean.deleteTask(): task with id 1 deleted.
DEBUG: MVSKBean.deleteContentResourceStorageBean():
ContentResourceStorageBean with id 1 deleted.
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata set
with values:
DEBUG: AKBean.storeContentResourceMetadata(): type: classifier
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/TDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der einen
Klassifikator beschreibt.
DEBUG: AKBean.storeContentResourceMetadata(): contentResourceLocation:
jnp://localhost:1099/KRHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb with
id 1108758777160.
Listing C.1: Ausgaben des Testlaufes der einfachen Klassifikator-Induktion
C.2. Ausgaben des Analyse-Testlaufes zur inkrementellen
Klassifikator-Induktion
Der Testlauf einer inkrementellen Klassifikator-Induktion erzeugt die folgenden Ausgaben:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DEBUG: MVSKBean.onMessage(): ControlMessage: ici
DEBUG: MVSKBean.storeTask(): task stored with id 1.
DEBUG: IMVKBean.executeDataCollection() entered.
DEBUG: IMVKBean.executeDataCollection(): task is ici.
DEBUG: IMVKBean.executeDataCollection(): dsk address:
jnp://localhost:1099/DSKHomeRemote
DEBUG: DSKBean.deliverDataSet() entered.
DEBUG: DSKBean.deliverDataSet(): task string: ici.
DEBUG: DSKBean.deliverDataSet(): td/id address:
jnp://localhost:1099/TDHomeRemote.
DEBUG: TDBean.getTrainingsData() entered.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean.onMessage(): trainingsdata received.
DEBUG: AnalysisControlBean.onMessage(): trainingsdata set to EB with
id 1
DEBUG: AnalysisControlBean.onMessage(): sent receipt of trainingsdata
set to be stored.
DEBUG: IMVKBean.executeDataCollection(): sent command to execute
classifier collection.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.onMessage(): trainingsdata set delivery receipt
received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: IMVKBean.executeClassifierCollection() entered.
DEBUG: IMVKBean.executeClassifierCollection(): bsk address:
197
197
198
K APITEL C - AUSGABEN DER T ESTL ÄUFE
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: AnalysisControlBean.onMessage(): EB with pk 1 already exists.
Using this one.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB with
id 1
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of classifier
set to be stored.
DEBUG: IMVKBean.executeClassifierCollection(): sent command to
execute analysis.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: IMVKBean.executeAnalysisTask() entered.
DEBUG: IMVKBean.executeAnalysisTask(): iik address:
jnp://localhost:1099/IIKHomeRemote
DEBUG: IIKBean.induceClassifier() entered.
DEBUG: IIKBean.induceClassifier(): EB with pk 1 already exists.
Using this one.
DEBUG: IIKBean.induceClassifier(): induced Classifier based on
SelectedDataSet and ClassifierSet retreived from the entity bean
ContentResourceStorage. Task was incremental classifier induction.
DEBUG: VKControlBean.onMessage() entered.
DEBUG: VKControlBean.onMessage(): classifier received.
DEBUG: VKBean.utiliseResource() entered.
DEBUG: VKBean.utiliseResource(): Utilisation is both.
DEBUG: VKBean.utiliseResource(): initiate storage and visualisation.
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classifier.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108769464526
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location:
jnp://localhost:1099/IIKHomeRemote
RESULT: VKBean.visualizeResource(): UserName: myUser
RESULT: VKBean.visualizeResource(): UserPassword: myPass
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): =================================
RESULT: VKBean.storeResource(): classifier
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ClassifierSink location
(KR component): jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.storeResource(): ClassifierSink UserName
198
C.3 AUSGABEN DES A NALYSE -T ESTLAUFES EINES M ETA -L ERN -VORGANGES
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
(KR component): myUser
RESULT: VKBean.storeResource(): ClassifierSink UserPassword
(KR component): MyPassword
RESULT: VKBean.storeResource(): =================================
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: VKBean.createAKMetadata() entered.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: VKBean.createAKMetadata(): sent message with AKMetadata.
DEBUG: MVSKBean.onMessage(): cleaning up, inserting newly created
ContentResource via AK component...
DEBUG: MVSKBean.deleteTask(): task with id 1 deleted.
DEBUG: MVSKBean.deleteContentResourceStorageBean():
ContentResourceStorageBean with id 1 deleted.
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata set
with values:
DEBUG: AKBean.storeContentResourceMetadata(): type: classifier
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/TDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der einen
Klassifikator beschreibt.
DEBUG: AKBean.storeContentResourceMetadata():
contentResourceLocation: jnp://localhost:1099/KRHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb
with id 1108769465393
Listing C.2: Ausgaben des Testlaufes der inkrementellen Klassifikator-Induktion
C.3. Ausgaben des Analyse-Testlaufes eines
Meta-Lern-Vorganges
Der Testlauf eines Meta-Lern-Vorganges erzeugt die folgenden Ausgaben:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DEBUG: MVSKBean.onMessage(): ControlMessage: ml
DEBUG: MVSKBean.storeTask(): task stored with id 1.
DEBUG: IMVKBean.executeClassifierCollection() entered.
DEBUG: IMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: IMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
199
199
200
K APITEL C - AUSGABEN DER T ESTL ÄUFE
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB with
id 1
DEBUG: AnalysisControlBean.onMessage(): sent receipt of classifier
set to be stored.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: AnalysisControlBean.onMessage(): EB with pk 1 already
exists. Using this one.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB with
id 1
DEBUG: IMVKBean.executeClassifierCollection(): sent command to
execute analysis.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: IMVKBean.executeAnalysisTask() entered.
DEBUG: IMVKBean.executeAnalysisTask(): ml address:
jnp://localhost:1099/MLHomeRemote
DEBUG: AnalysisControlBean.onMessage(): sent receipt of
classifier set to be stored.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MLBean.executeMetaLearnTask() entered.
DEBUG: MLBean.executeMetaLearnTask(): EB with pk 1 already exists.
Using this one.
DEBUG: MLBean.executeMetaLearnTask(): induced global Model based
ClassifierSet retreived from the entity bean
ContentResourceStorage. Task was metalearn task.
DEBUG: VKControlBean.onMessage() entered.
DEBUG: VKControlBean: globalModel received.
DEBUG: VKBean.utiliseResource() entered.
DEBUG: VKBean.utiliseResource(): Utilisation is both.
DEBUG: VKBean.utiliseResource(): initiate storage and
visualisation.
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classifier.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der ein globales Modell
beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108767627058
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location:
jnp://localhost:1099/MLHomeRemote
RESULT: VKBean.visualizeResource(): UserName: myUser
RESULT: VKBean.visualizeResource(): UserPassword: myPass
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.storeResource(): Prototypical storage:
200
C.4 AUSGABEN DES A NALYSE -T ESTLAUFES EINER
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
NAIVEN
K LASSIFIKATOR -A NWENDUNG
RESULT: VKBean.storeResource(): =================================
RESULT: VKBean.storeResource(): classifier
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ClassifierSink location
(KR component): jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.storeResource(): ClassifierSink UserName
(KR component): myUser
RESULT: VKBean.storeResource(): ClassifierSink UserPassword
(KR component): MyPassword
RESULT: VKBean.storeResource(): =================================
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored: Prototypische
Implementierung eines Datensatzes, der ein globales Modell
beschreibt.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: VKBean.createAKMetadata() entered.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: VKBean.createAKMetadata(): sent message with AKMetadata.
DEBUG: MVSKBean.onMessage(): cleaning up, inserting newly created
ContentResource via AK component...
DEBUG: MVSKBean.deleteTask(): task with id 1 deleted.
DEBUG: MVSKBean.deleteContentResourceStorageBean():
ContentResourceStorageBean with id 1 deleted.
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata
set with values:
DEBUG: AKBean.storeContentResourceMetadata(): type: globalModel
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/DSKHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der ein
globales Modell beschreibt.
DEBUG: AKBean.storeContentResourceMetadata():
contentResourceLocation: jnp://localhost:1099/KRHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb
with id 1108768360036
Listing C.3: Ausgaben des Testlaufes eines Meta-Lern-Vorganges
C.4. Ausgaben des Analyse-Testlaufes einer naiven
Klassifikator-Anwendung
Der Testlauf zur naiven Anwendung eines Klassifikators erzeugt diese Ausgaben:
1
2
3
4
5
6
7
8
9
10
11
DEBUG: MVSKBean.onMessage(): ControlMessage: naive
DEBUG: MVSKBean.storeTask(): task stored with id 1.
DEBUG: AMVKBean.executeDataCollection() entered.
DEBUG: AMVKBean.executeDataCollection(): task is naive.
DEBUG: AMVKBean.executeDataCollection(): dsk address:
jnp://localhost:1099/DSKHomeRemote
DEBUG: DSKBean.deliverDataSet() entered.
DEBUG: DSKBean.deliverDataSet(): task string: naive.
DEBUG: DSKBean.deliverDataSet(): td/id address:
jnp://localhost:1099/IDHomeRemote.
DEBUG: IDBean.getInstanceData() entered.
201
201
202
K APITEL C - AUSGABEN DER T ESTL ÄUFE
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: instancedata received.
DEBUG: AnalysisControlBean.onMessage(): instancedata set to EB
with id 1
DEBUG: AMVKBean.executeDataCollection(): sent command to execute
classifier collection.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of
instancedata set to be stored.
DEBUG: AMVKBean.executeClassifierCollection() entered.
DEBUG: AMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: MVSKBean.onMessage(): instancedata set delivery receipt
received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: AnalysisControlBean.onMessage(): EB with pk 1 already
exists. Using this one.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB
with id 1
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of classifier
set to be stored.
DEBUG: AMVKBean.executeClassifierCollection(): sent command to
execute analysis.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AMVKBean.executeAnalysisTask() entered.
DEBUG: AMVKBean.executeAnalysisTask(): kk address:
jnp://localhost:1099/KKHomeRemote
DEBUG: KKBean.classifyDataSet entered.
DEBUG: KKBean.classifyDataSet(): EB with pk 1 already exists.
Using this one.
DEBUG: KKBean.classifyDataSet(): executed Classification based
on SelectedDataSet and Classifier retreived from the entity
bean ContentResourceStorage. Task was naive classification.
DEBUG: VKControlBean.onMessage() entered.
DEBUG: VKControlBean.onMessage(): classification ResultDataSet
received.
DEBUG: VKBean.utiliseResource() entered.
DEBUG: VKBean.utiliseResource(): Utilisation is both.
DEBUG: VKBean.utiliseResource(): initiate storage and visualisation.
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classification Result.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
202
C.4 AUSGABEN DES A NALYSE -T ESTLAUFES EINER
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
NAIVEN
K LASSIFIKATOR -A NWENDUNG
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108772118432
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location of result dataset:
jnp://localhost:1099/KEHomeRemote
RESULT: VKBean.visualizeResource(): UserName of result dataset:
myUser
RESULT: VKBean.visualizeResource(): UserPassword of result dataset:
MyPassword
RESULT: VKBean.visualizeResource(): Location of classifier applied:
jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.visualizeResource(): UserName to access the
classifier applied: myUser
RESULT: VKBean.visualizeResource(): UserPassword to access the
classifier applied: myPass
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): =================================
RESULT: VKBean.storeResource(): classification Result.
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ResultDataSetSink location
(KE component): jnp://localhost:1099/KEHomeRemote
RESULT: VKBean.storeResource(): ResultDataSetSink UserName
(KE component): myUser
RESULT: VKBean.storeResource(): ResultDataSetSink UserPassword
(KE component): MyPassword
RESULT: VKBean.storeResource(): =================================
DEBUG: KEBean.getResultDataSet(): #####################
DEBUG: KEBean.getResultDataSet(): result dataset stored:
Prototypische Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
DEBUG: KEBean.getResultDataSet(): #####################
DEBUG: VKBean.createAKMetadata() entered.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: VKBean.createAKMetadata(): sent message with AKMetadata.
DEBUG: MVSKBean.onMessage(): cleaning up, inserting newly
created ContentResource via AK component...
DEBUG: MVSKBean.deleteTask(): task with id 1 deleted.
DEBUG: MVSKBean.deleteContentResourceStorageBean():
ContentResourceStorageBean with id 1 deleted.
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata
set with values:
DEBUG: AKBean.storeContentResourceMetadata(): type:
classificationResult
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/IDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
DEBUG: AKBean.storeContentResourceMetadata():
contentResourceLocation: jnp://localhost:1099/KEHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb
with id 1108772119124
Listing C.4: Ausgaben des Testlaufes einer naiven Klassifikator-Anwendung label
203
203
204
K APITEL C - AUSGABEN DER T ESTL ÄUFE
C.5. Ausgaben des Analyse-Testlaufes der
SG-Klassifikation
Der Testlauf einer Klassifikation durch die Ableitung von Selection Graphs aus einem Klassifikator und anschließender Wandlung dieser zu Datenbank-Abfragen erzeugt folgende Ausgaben:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
DEBUG: MVSKBean.onMessage(): ControlMessage: sg
DEBUG: MVSKBean.storeTask(): task stored with id 1.
DEBUG: AMVKBean.executeDataCollection() entered.
DEBUG: AMVKBean.executeDataCollection(): sent command to execute
classifier collection.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AMVKBean.executeClassifierCollection() entered.
DEBUG: AMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB
with id 1
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AMVKBean.executeClassifierCollection(): sent command
to execute analysis.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of
classifier set to be stored.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt
received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AMVKBean.executeAnalysisTask() entered.
DEBUG: AMVKBean.executeAnalysisTask(): sgak address:
jnp://localhost:1099/SGAKHomeRemote
DEBUG: SGAKBean.executeSelectionGraphDerivation() entered.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): EB with pk 1
already exists. Using this one.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): using as
receipt component address.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): using
jnp://localhost:1099/IDHomeRemote as data source component.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): executed
selection graph derivation based on Classifier retreived from
the entity bean ContentResourceStorage. Task was sg
classification.
DEBUG: DBAGKBean.executeQueryProcessing() entered.
DEBUG: SGAKBean.executeSelectionGraphDerivation(): EB with pk 1
already exists. Using this one.
DEBUG: DBAGKBean.executeQueryProcessing(): Generated
classification result dataset.
DEBUG: VKControlBean.onMessage() entered.
DEBUG: VKControlBean.onMessage(): classification ResultDataSet
received.
204
C.5 AUSGABEN DES A NALYSE -T ESTLAUFES DER SG-K LASSIFIKATION
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
DEBUG: VKBean.utiliseResource() entered.
DEBUG: VKBean.utiliseResource(): Utilisation is both.
DEBUG: VKBean.utiliseResource(): initiate storage and
visualisation.
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classification Result.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108772273143
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location of result dataset:
jnp://localhost:1099/KEHomeRemote
RESULT: VKBean.visualizeResource(): UserName of result dataset:
myUser
RESULT: VKBean.visualizeResource(): UserPassword of result dataset:
MyPassword
RESULT: VKBean.visualizeResource(): Location of classifier applied:
jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.visualizeResource(): UserName to access the
classifier applied: myUser
RESULT: VKBean.visualizeResource(): UserPassword to access the
classifier applied: myPass
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): =================================
RESULT: VKBean.storeResource(): classification Result.
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ResultDataSetSink location
(KE component): jnp://localhost:1099/KEHomeRemote
RESULT: VKBean.storeResource(): ResultDataSetSink UserName
(KE component): myUser
RESULT: VKBean.storeResource(): ResultDataSetSink UserPassword
(KE component): MyPassword
RESULT: VKBean.storeResource(): =================================
DEBUG: KEBean.getResultDataSet(): #####################
DEBUG: KEBean.getResultDataSet(): result dataset stored:
Prototypische Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
DEBUG: KEBean.getResultDataSet(): #####################
DEBUG: VKBean.createAKMetadata() entered.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: VKBean.createAKMetadata(): sent message with AKMetadata.
DEBUG: MVSKBean.onMessage(): cleaning up, inserting newly
created ContentResource via AK component...
DEBUG: MVSKBean.deleteTask(): task with id 1 deleted.
DEBUG: MVSKBean.deleteContentResourceStorageBean():
ContentResourceStorageBean with id 1 deleted.
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata
set with values:
DEBUG: AKBean.storeContentResourceMetadata(): type:
classificationResult
205
205
206
K APITEL C - AUSGABEN DER T ESTL ÄUFE
110
111
112
113
114
115
116
117
118
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/IDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der ein
Klassifikationsergebnis beschreibt.
DEBUG: AKBean.storeContentResourceMetadata():
contentResourceLocation: jnp://localhost:1099/KEHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb
with id 1108772273757
Listing C.5: Ausgaben des Testlaufes einer Klassifikation mit Selection Graphs
C.6. Ausgaben des Analyse-Testlaufes einer
Klassifikator-Wartung
Diese Ausgaben wurden durch einen Testlauf einer Klassifikator-Wartung erzeugt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
DEBUG: MVSKBean.onMessage(): ControlMessage: maintenance
DEBUG: MVSKBean.storeTask(): task stored with id 1.
DEBUG: WVSKBean.onMessage(): using IVK address
jnp://localhost:1099/IVKHomeRemote.
DEBUG: IVKBean.invalidateClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: IVKBean.invalidateClassifier(): using global clock to
generate invalidation timestamp.
DEBUG: GUBean.getGlobalTime: global timestamp is:
2005-02-19 01:19:11.016.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored:
Classifier invalidated by IVK component.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: IVKBean.invalidateClassifier(): stored invalidated
classifier at component kr with address:
jnp://localhost:1099/KRHomeRemote and value of
tte: 2005-02-19 01:19:11.016.
DEBUG: WMVKBean.executeDataCollection() entered.
DEBUG: WMVKBean.executeDataCollection(): task is maintenance.
DEBUG: WMVKBean.executeDataCollection(): dsk address:
jnp://localhost:1099/DSKHomeRemote
DEBUG: DSKBean.deliverDataSet() entered.
DEBUG: DSKBean.deliverDataSet(): task string: maintenance.
DEBUG: DSKBean.deliverDataSet(): td/id address:
jnp://localhost:1099/TDHomeRemote.
DEBUG: TDBean.getTrainingsData() entered.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean.onMessage(): trainingsdata received.
DEBUG: AnalysisControlBean.onMessage(): trainingsdata set to EB
with id 1
DEBUG: AnalysisControlBean.onMessage(): sent receipt of
trainingsdata set to be stored.
DEBUG: MVSKBean.onMessage(): trainingsdata set delivery receipt
received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: WMVKBean.executeDataCollection(): sent command to execute
classifier collection.
206
C.6 AUSGABEN DES A NALYSE -T ESTLAUFES EINER K LASSIFIKATOR -WARTUNG
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: WMVKBean.executeClassifierCollection() entered.
DEBUG: WMVKBean.executeClassifierCollection(): bsk address:
jnp://localhost:1099/BSKHomeRemote.
DEBUG: BSKBean.deliverClassifierSet() entered.
DEBUG: BSKBean.deliverClassifier(): kr address:
jnp://localhost:1099/KRHomeRemote.
DEBUG: KRBean.getClassifier() entered.
DEBUG: BSKBean.deliverClassifier(): classifier added to Vector
classifierSet at position 0.
DEBUG: AnalysisControlBean.onMessage() entered.
DEBUG: AnalysisControlBean: classifier received.
DEBUG: AnalysisControlBean.onMessage(): EB with pk 1 already
exists. Using this one.
DEBUG: AnalysisControlBean.onMessage(): classifier set to EB
with id 1
DEBUG: BSKBean.deliverClassifierSet: classifierSet delivered.
DEBUG: MVSKBean.onMessage(): classifier delivery receipt
received.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: AnalysisControlBean.onMessage(): sent receipt of
classifier set to be stored.
DEBUG: WMVKBean.executeClassifierCollection(): sent command
to execute analysis.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: WMVKBean.executeAnalysisTask() entered.
DEBUG: WMVKBean.executeAnalysisTask(): iik address:
jnp://localhost:1099/IIKHomeRemote
DEBUG: IIKBean.induceClassifier() entered.
DEBUG: IIKBean.induceClassifier(): EB with pk 1 already exists.
Using this one.
DEBUG: IIKBean.induceClassifier(): induced Classifier based on
SelectedDataSet and ClassifierSet retreived from the entity
bean ContentResourceStorage. Task was classifier maintenance.
DEBUG: VKControlBean.onMessage() entered.
DEBUG: VKControlBean.onMessage(): classifier received.
DEBUG: VKBean.utiliseResource() entered.
DEBUG: VKBean.utiliseResource(): Utilisation is both.
DEBUG: VKBean.utiliseResource(): initiate storage and visualisation.
RESULT: VKBean.visualizeResource(): Prototypical visualisation:
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.visualizeResource(): classifier.
RESULT: VKBean.visualizeResource(): Content:
RESULT: VKBean.visualizeResource(): Description: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
RESULT: VKBean.visualizeResource(): vtb: 1106131000000
RESULT: VKBean.visualizeResource(): vte: 1106131951194
RESULT: VKBean.visualizeResource(): ttb: 1108772352702
RESULT: VKBean.visualizeResource(): tte: not set.
RESULT: VKBean.visualizeResource(): Location:
jnp://localhost:1099/IIKHomeRemote
RESULT: VKBean.visualizeResource(): UserName: myUser
RESULT: VKBean.visualizeResource(): UserPassword: myPass
RESULT: VKBean.visualizeResource(): =================================
RESULT: VKBean.storeResource(): Prototypical storage:
RESULT: VKBean.storeResource(): =================================
207
207
208
K APITEL C - AUSGABEN DER T ESTL ÄUFE
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
RESULT: VKBean.storeResource(): classifier
RESULT: VKBean.storeResource(): storage metadata:
RESULT: VKBean.storeResource(): ClassifierSink location
(KR component): jnp://localhost:1099/KRHomeRemote
RESULT: VKBean.storeResource(): ClassifierSink UserName
(KR component): myUser
RESULT: VKBean.storeResource(): ClassifierSink UserPassword
(KR component): MyPassword
RESULT: VKBean.storeResource(): =================================
DEBUG: KRBean.setClassifier(): ##################
DEBUG: KRBean.setClassifier(): classifier stored: Prototypische
Implementierung eines Datensatzes, der einen Klassifikator
beschreibt.
DEBUG: KRBean.setClassifier(): ##################
DEBUG: VKBean.createAKMetadata() entered.
DEBUG: MVSKBean.loadTask(): task with id 1 loaded.
DEBUG: VKBean.createAKMetadata(): sent message with AKMetadata.
DEBUG: MVSKBean.onMessage(): cleaning up, inserting newly
created ContentResource via AK component...
DEBUG: MVSKBean.deleteTask(): task with id 1 deleted.
DEBUG: MVSKBean.deleteContentResourceStorageBean():
ContentResourceStorageBean with id 1 deleted.
DEBUG: MVSKBean.onMessage(): sending AKMetadata to AK component.
DEBUG: AKBean.storeContentResourceMetadata() entered.
DEBUG: AKBean.storeContentResourceMetadata(): storing metadata
set with values:
DEBUG: AKBean.storeContentResourceMetadata(): type: classifier
DEBUG: AKBean.storeContentResourceMetadata(): dataSourceLocation:
jnp://localhost:1099/TDHomeRemote
DEBUG: AKBean.storeContentResourceMetadata(): description:
Prototypische Implementierung eines Datensatzes, der einen
Klassifikator beschreibt.
DEBUG: AKBean.storeContentResourceMetadata():
contentResourceLocation: jnp://localhost:1099/KRHomeRemote
DEBUG: AKBean.storeContentResource(): metadata set stored in eb
with id 1108772353406
Listing C.6: Ausgaben des Testlaufes einer Klassifikator-Wartung
208
Glossar
Data Mining: ∼ bezeichnet den Prozess des automatischen Erzeugens eines Modelles, das
maßgebliche Entwicklungen und Muster in Quelldaten beschreibt, die von intelligenten Analyse-Algorithmen identifiziert werden. ∼ wird dabei als einer von mehreren
Schritten im ↑KDD-Prozess verstanden.
Data Warehouse System: Ein ∼ ist ein Informationssystem, welches alle für den DWHProzess benötigten Komponenten bereitstellt. Zu diesen Komponenten zählen Datenbeschaffungsbereich und Analyse, Metadatenmanagement, DWH-Management und die
Basisdatenbank, das eigentliche Data Warehouse und das Repository.
Data Warehouse: ∼ ist eine Sammlung von themenorientierten, integrierten, nichtflüchtigen
und zeitbeständigen Daten zur Unterstützung von Management-Entscheidungen in einem Unternehmen.
Datenvorverarbeitung: Die ∼ besteht aus verschiedenen Schritten, die Daten aufbereiten,
damit diese bereinigt, integriert, aggregiert und transformiert vorliegen und somit für
verschiedene nachfolgende Zwecke wie z.B. die Speicherung in ↑Data Warehouses
oder die Analyse durch verschiedene Algorithmen vorbereitet und geeignet sind.
Distributed Data Mining: ∼ bezeichnet den Prozess des ↑Data Mining auf verteilten Datenquellen.
Enterprise JavaBeans: ∼ sind in einem verteilten Szenario serverseitige Komponenten, die
in der Komponenten-Architektur der Enterprise JavaBeans (EJB) zum Einsatz kommen. Enterprise-Beans definieren die Anwendungslogik, auf die die Client-Programme
zugreifen.
Enterprise-Beans: ↑ bezeichnen in einem verteilten Szenario serverseitige Komponenten,
die in der Komponenten-Architektur der ↑Enterprise JavaBeans zum Einsatz kommen.
Enterprise-Beans definieren die Anwendungslogik, auf die die Client-Programme zugreifen.
Entity-Bean: Eine ∼ (EB) ist eine Enterprise-Bean, die zur Speicherung von Daten genutzt
werden kann. Sie ist innerhalb eines Containers persistent und kann in vielen Instanzen
mit jeweils eigenen Werten vorliegen.
Entscheidungsbaum: Ein ∼ ist eine Baumstruktur, die in ihren Knoten Attribute (wie z.B.
Gehalt<50000) beinhaltet. Die von einem Knoten ausgehenden Kanten beschreiben
die möglichen Alternativen (z.B. Ja oder Nein). Die Blätter stellen Zielklassen dar
(z.B. Großverdiener). Ein Entscheidungsbaum dient der Überprüfung von Attributen
und Werten und kann somit zur Klassifizierung genutzt werden.
Entwicklungsmuster: Ein ∼, auch als Design Pattern bekannt, definiert ein programmiersprachenunabhängiges Schema zur Verfeinerung von Subsystemen oder Komponenten
eines Software-Systemes oder der Beziehungen dieser untereinander.
209
210
G LOSSAR
HTML: ∼ steht für HyperT extM arkupLanguage und bezeichnet eine Sprache zur Beschreibung von formatiertem Text.
HTTP: ∼ steht für HyperT extT ransf erP rotocol und bezeichnet ein Protokoll zum Transport von ↑HTML-Dokumenten.
IIOP: Internet Inter-ORB Protocol: wird zur Kommunikation zwischen CORBA ORBs genutzt. Nähere Informationen zu IIOP und CORBA siehe [OMG02].
J2EE: Java 2 Platform, Enterprise Edition: definiert den Standard zur Entwicklung von komponentenbasierten, verteilten Unternehmensanwendungen.
J2SE: Java 2 Platform, Standard Edition: Diese beinhaltet eine vollständige Umgebung zur
Anwendungsentwicklung auf dem Desktop und auf Servern.
Java RMI: Java Remote Method Invocation: ermöglicht es, verteilte Java-Anwendungen zu
entwerfen, in denen Methoden entfernter Java-Objekte auf anderen Maschinen aufgerufen werden können. Näheres dazu siehe [Sun04j].
Java Server Pages: ∼ bezeichnen dynamische Webseiten auf Basis des ↑J2EE-Konzeptes.
JavaMail: JavaMail: bietet ein plattform- und protokollunabhängiges Framework zur Erzeugung von Email- und Messaging-Anwendungen.
JAXP: Java API for XML Processing: erlaubt es Anwendungen, XML-Dokumente unabhängig von einer speziellen Implementation eines XML-Prozessors zu parsen und
zu transformieren.
JDBC: Java Database Connectivity: bietet Zugriff auf verschiedene SQL-Datenbanken.
JMS: Java Message Service: erlaubt J2EE-Komponenten die Erzeugung, das Versenden und
Empfangen sowie das Lesen von Nachrichten.
JNDI: Java Naming and Directory Interface: bietet eine einheitliche Schnittstelle zu verschiedenen Namens- und Verzeichnisdiensten basierend auf Java.
JTA: Java Transaction API: spezifiziert eine Standard-Schnittstelle zwischen einem Transaktionsmanager und den Komponenten eines verteilten Systemes.
Klassifikation: Die ∼ ist ein Prozess, der aus zwei Schritten besteht. Im ersten Schritt wird
durch Analyse von Datentupeln ein Modell erzeugt, das eine vorgegebene Menge von
Datenklassen oder Konzepten beschreibt. Im zweiten Schritt wird das Modell genutzt,
um Daten einer der gefundenen Klassen zuzuordnen.
Knowledge Discovery in Databases: ∼ bezeichnet den nicht trivialen Prozess der Identifikation valider, neuartiger, potentiell nützlicher und klar verständlicher Muster in Daten.
Der Prozess beinhaltet dabei Schritte von der ursprünglichen Datenauswahl bis hin zur
Interpretation der gefundenen Muster und der folgenden Umsetzung.
Message-Driven-Bean: Eine ∼ (MDB) ist eine Enterprise-Bean, die auf Nachrichten reagiert.
Wird eine Nachricht an eine ↑MessageQueue oder ein ↑Topic gesendet, welche bzw.
welches von der MDB observiert wird, so wird die Methode onMessage() der MDB
ausgeführt.
Message-Queue: Eine ∼ ist eine Warteschlange, an die Nachrichten verschickt werden
können. Eine ↑Message-Driven-Bean kann eine solche Warteschlange observieren und
auf Nachrichten reagieren, die an diese Warteschlange gesendet wurden.
210
G LOSSAR
211
Meta-Lerner: Ein ∼ ist in der Lage, verteilt erzeugte, verschiedene Ergebnisse von unterschiedlichen ↑Data Mining-Algorithmen zu einem Gesamtergebnis zusammenzusetzen. So können beispielsweise auf verteilten Datenbeständen jeweils lokal Klassifikatoren generiert werden, die dann in zentraler Instanz von einem Meta-Lerner zu einem
globalen Klassifikator zusammengesetzt werden.
Privacy Preserving Data Mining: ∼ ist eine Form des ↑Data Mining, bei der die Wahrung
datenschutzrechtlicher Aspekte der zu analysierenden Daten Beachtung findet.
ReKlaMe: ∼ bezeichnet ein Dissertationsprojekt, dessen Ziel es ist, Klassifikationen auf verteilten Data Warehouses (siehe ↑Distributed Data Mining) direkt auf den relationalen
Teildaten zu betreiben, ohne eine logische Schemaintegration durchführen zu müssen.
Servlet: Ein ∼ ist im Rahmen des ↑J2EE-Konzeptes ein Java-Objekt, das von einem WebServer Anfragen von dessen Clients bekommt, um diese dynamisch zu bearbeiten und
zu beantworten.
Session-Bean: Eine ∼ ist eine Enterprise-Bean, die eine Menge an Geschäftsmethoden zur
Verfügung stellt, die von Client-Applikationen oder anderen ↑Enterprise-Beans genutzt
werden können.
Software-Entwicklungsmuster: ↑ Entwicklungsmuster.
Topic: Ein ∼ ist eine Art Adresse, an die eine Nachricht geschickt werden kann. Mehrere
↑Message-Driven-Beans können Nachrichten an ein Topic empfangen.
Web-Container: Ein ∼ ist eine Laufzeitumgebung für ↑Servlets und ↑Java Server Pages, die
von einem ↑J2EE-Server bereitgestellt wird.
Wissensbasis: Die ∼ beinhaltet Muster, die von ↑Data Mining-Algorithmen gefunden und
anschließend vom Anwender als nützlich klassifiziert wurden.
XML: ∼ steht für ExtensibleM arkupLanguage und bezeichnet ein semi-strukturiertes
Daten-Austauschformat.
211
212
G LOSSAR
212
Tabellenverzeichnis
3.1. Gegenüberstellung der drei Bean-Typen (nach [DP02]) . . . . . . . . . . . . . 44
5.1. Einteilung der Komponenten der ReKlaMe-Gesamt-Architektur in zentral und dezentral angebundene Kompon
7.1. Gegenüberstellung von Bean-Typen und Bean-Komponenten (nach [DP02]) . . 159
7.2. Zuteilung der implementierten Komponenten zu den Bean-Typen . . . . . . . . 159
213
214
TABELLENVERZEICHNIS
214
Abbildungsverzeichnis
1.1. Analyse-Prozess im ReKlaMe-Ansatz [Tap04] . . . . . . . . . . . . . . . . . .
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
Der KDD-Prozess (nach [HK00]) . . . . . . . . . . . . . . . . .
Ein beispielhafter Entscheidungsbaum (nach [HK00]) . . . . . . .
Paralleles Data Mining auf einem einzelnen System (nach [Tal03])
Task-parallelisiertes DDM (nach [Tal03]) . . . . . . . . . . . . .
Task-parallelisierte Klassifikation (nach [Tal03]) . . . . . . . . . .
Daten-parallelisiertes DDM (nach [Tal03]) . . . . . . . . . . . . .
Daten-parallelisierte Klassifikation (nach [Tal03]) . . . . . . . . .
3.1.
3.2.
3.3.
3.4.
3.5.
Beispiel einer Architektur für eine Klassifikationsanalyse . . . . . . . . . . . . 24
Überblick über verschiedene komponentenbasierte Architektur-Ansätze und deren Beziehungen untereinander
Das ISO-OSI-Referenzmodell als Beispiel für eine Multi-Layer-Architektur (nach [KB94]) 29
Einordnung der EJB-Architektur in den J2EE-Kontext (nach [DP02]) . . . . . . 38
Gesamtüberblick über die EJB-Architektur (nach [DP02]) . . . . . . . . . . . . 39
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
4.9.
4.10.
4.11.
4.12.
4.13.
4.14.
Identifizierte Abläufe im Rahmen von ReKlaMe: Induktion, Klassifikation und Wartung 50
Lerner auf a) einer Datenquelle und b) inkrementell auf einer Datenquelle und einem Basisklassifikator 51
Meta-Lerner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Verteilte Klassifikation ohne virtuelle oder physische Integration der Instanzen . 52
Verteilte Klassifikation ohne virtuelle oder physische Integration der Instanzen für Klassifikatoren, die auf meh
Verteilte Klassifikation durch Erzeugung von Selection Graphs und Wandeln in Datenbankabfragen 54
Wartung von Basisklassifikatoren: Invalidierung, Aktualisierung und Neugenerierung 55
Ablauf einer einfachen Klassifikator-Induktion . . . . . . . . . . . . . . . . . 63
Ablauf einer inkrementellen Klassifikator-Induktion . . . . . . . . . . . . . . . 64
Ablauf des Meta-Lernens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Ablauf einer Klassifikator-Anwendung . . . . . . . . . . . . . . . . . . . . . . 66
Ablauf einer verteilten Klassifikation durch Ableitung von Selection Graphs und deren Wandlung in Datenbank
Phase der (inkrementellen) Aktualisierung/Neugenerierung eines Klassifikators im Ablauf der Wartung 68
Phase der Erweiterung eines Klassifikators durch einen Meta-Lerner im Ablauf der Wartung 69
5.1.
5.2.
5.3.
5.4.
5.5.
Architektur des ReKlaMe-Projektes auf hoher Abstraktionsebene
Architektur der Klassifikator-Induktion . . . . . . . . . . . . .
Architektur der Klassifikator-Anwendung . . . . . . . . . . . .
Architektur der Klassifikator-Wartung . . . . . . . . . . . . . .
Gesamt-Architektur des ReKlaMe-Projektes . . . . . . . . . . .
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
Klassendiagramm der Interfaces zur Abbildung der ADT . . . . . . . . . . . . 99
Klassendiagramm der Interfaces und Klassen zur Abbildung der ADT . . . . . 111
Klassendiagramm der Metadaten zur Steuerung der Aktualisierungs-Komponente AK113
Klassendiagramm der Metadaten zur Basisklassifikator-Selektion . . . . . . . . 115
Klassendiagramm der Metadaten zur Daten-Selektion . . . . . . . . . . . . . . 117
Klassendiagramm der Metadaten zur Steuerung der Datenbank-Abfrage-Generierungs-Komponente 119
215
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
.
.
.
.
.
8
11
17
17
18
18
18
74
76
80
83
84
216
A BBILDUNGSVERZEICHNIS
6.7.
6.8.
6.9.
6.10.
6.11.
6.12.
6.13.
6.14.
6.15.
6.16.
6.17.
Klassendiagramm der Metadaten zur Steuerung der Invalidierungs-Komponente 121
Klassendiagramm der Metadaten zur Steuerung der Benutzungsschnittstellen-Komponente 123
Klassendiagramm der Metadaten zur Steuerung der Task-Analyse-Komponente 125
Klassendiagramm der Metadaten zur Steuerung der Metadaten-Verwaltungs-/Steuerungs-Komponent
Klassendiagramm der Metadaten zur Steuerung der Verwertungs-Komponente . 130
Klassendiagramm der Klassen und Interfaces zur Repräsentation der ADT zur Parametrisierung und
Sequenz-Diagramm der Methodenaufrufe zur Durchführung einer einfachen Klassifikator-Induktion 1
Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines Meta-Lern-Prozesses145
Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines Analyse-Ablaufes der naiven Klas
Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines Analyse-Ablaufes der Klassifikatio
Sequenz-Diagramm der Methodenaufrufe zur Durchführung eines Analyse-Ablaufes der Klassifikato
7.1. Gespeicherte Metadaten über den durch den Testlauf neu erzeugten Klassifikator 164
7.2. Gespeicherte Metadaten über das durch den Testlauf neu erzeugte globale Modell165
7.3. Gespeicherte Metadaten über das durch den Testlauf zur naiven Klassifikator-Anwendung neu erzeug
216
Symbol-Verzeichnis
ID3-A LGORITHMUS
a = {a1 , a2 , . . . , an }
Werte, die A annehmen kann
A
Ein Attribut der Elemente aus S
C
Menge von Klassen von Datensätzen
E(A)
Entropie zur Klassifikation anhand des Attributes A
Gain(A)
information gain, Menge an Informationen, die durch Partitionierung gewonnen wurde
I
zu erwartende Information aus Partitionierung von Trainingsdaten
p
Wahrscheinlichkeit
s = {s1 , s2 , . . . , sn }
Datensätze ∈ S
S
Menge von Datensätzen
Si
Menge der Datensätze aus S, die in Klasse Ci enthalten sind
D EFINITIONEN
VON
AGENTEN
A
Menge von Agenten (A ⊆ O)
B
Menge von Beziehungen, die Objekte ∈ O miteinander verbinden
O
Menge von situierten Objekten, die von Agenten wahrgenommen,
erzeugt, modifiziert und gelöscht werden können
Op
Menge von Operationen, mit denen Agenten Objekte empfangen,
erzeugen, konsumieren, verändern und löschen können
U
Umwelt eines Agenten
S YMBOLE
DES
AUSF ÜHRUNGSMODELLES
C
Menge von Klassen von Datensätzen
D
Menge von Datensätzen/Instanzen
ϕ
Menge aller Basisklassifikatoren
Φ
Menge globaler Klassifikatoren
i
zu klassifizierende Instanz ∈ D
k, k1 , k2 , . . . , kn
Basisklassifikatoren ∈ ϕ
217
218
S YMBOL -V ERZEICHNIS
S YMBOLE
DES
AUSF ÜHRUNGSMODELLES (F ORTSETZUNG )
kinv
invalidierter Basisklassifikator ∈ ϕ
kT
Basisklassifikator ∈ ϕ erweitert durch Trainingsdatenmenge T
kϕ
globaler Klassifikator ∈ Φ, der von einem Meta-Lerner auf Basis
der Basisklassifikatoren k1 , k2 , . . . , kn ∈ ϕ erzeugt wurde
M
Menge von Metadatenmengen
m
Metadatenmenge ∈ M
Q
Menge von Datenbankabfragen
S
Menge von Selection Graphs
T
Menge von Trainingsdatenmengen ∈ D × C
t
Trainingsdatenmenge ∈ T
z
Zielklasse ∈ C
218
Abkürzungs-Verzeichnis
A LLGEMEINE A BK ÜRZUNGEN
DDM
Distributed Data Mining
DM
Data Mining
DWH
Data Warehouse
DWS
Data Warehouse System
EB
Entity-Bean
EJB
Enterprise JavaBeans
HTML
HyperText Markup Language
HTTP
HyperText Transfer Protocol
IIOP
Internet Inter-ORB Protocol
J2EE
Java 2 Platform, Enterprise Edition
J2SE
Java 2 Platform, Standard Edition
JSP
Java Server Pages
JAXP
Java API for XML Processing
JDBC
Java Database Connectivity
JMS
Java Message Service
JNDI
Java Naming and Directory Interface
JTA
Java Transaction API
KDD
Knowledge Discovery in Databases
MDB
Message-Driven-Bean
PPDM
Privacy Preserving Data Mining
ReDiCAt
ReKlaMe Distributed Classification Architecture
ReKlaMe
Klassifikation relationaler und verteilter Daten am Beispiel des
Kundenmanagements
RMI
Remote Method Invocation
SB
Session-Bean
XML
Extensible Markup Language
219
220
A BK ÜRZUNGS -V ERZEICHNIS
O PERATOREN
UND
A BL ÄUFE
DES
AUSF ÜHRUNGSMODELLES
BSO
Basisklassifikator-Selektions-Operator
DSO
Daten-Selektions-Operator
IO
Induktions-Operator
IIO
Inkrementeller Induktions-Operator
IN D
Ablauf der einfachen Induktion eines Basisklassifikators
IN O
Basisklassifikator-Invalidierungs-Operator
KO
Klassifikations-Operator
M LO
Meta-Lern-Operator
SGO
Operator zur Selection-Graph-Ableitung
SGT O
Operator zur Selection-Graph-Transformation in Datenbankabfragen
WO
Wrapping-Operator zur relationalen Datenbank
M ODULE , U NTERMODULE
UND
KOMPONENTEN
DER
A RCHITEKTUR
BSI
Modul zur Benutzung/Steuerung/Interaktion
BSI:Eingabe
Untermodul zur Bearbeitung der Benutzer-Eingaben
BSI:Eingabe:BS
Komponente zur Schaffung einer Schnittstelle gegenüber einem
Benutzer. Hier werden Analyse-Abläufe parametrisiert
BSI:Eingabe:TA
Komponente zur Extraktion und Identifikation des anzuwendenden Analyse-Ablaufes (Tasks)
BSI:Ausgabe
Untermodul zur Verwertung der erzeugten Analyse-Ergebnisse
BSI:Ausgabe:EV
Abstrakte Komponente zur Zusammenfassung der Komponenten
zur Verarbeitung der Analyse-Ergebnisse
BSI:Ausgabe:EV:S Komponente
Ergebnisse
zur
persistenten
Speicherung
der
Analyse-
BSI:Ausgabe:EV:V Komponente zur Visualisierung der Analyse-Ergebnisse gegenüber einem Benutzer
BSI:Ausgabe:VK
Komponente zur Steuerung der Verwertung der Ergebnisse einer
Analyse
MVS
Modul zur Verwaltung von Metadaten und zur Steuerung der
Abläufe
MVS:MVSK
Abstrakte Komponente zur Steuerung der für die verschiedenen Analyse-Abläufe benötigten Metadaten-VerwaltungsKomponenten
MVS:MVSK:AMVK
Komponente zur Verwaltung der Metadaten für den Ablauf der
Anwendung von Klassifikatoren und dessen Steuerung
MVS:MVSK:IMVK
Komponente zur Verwaltung der Metadaten für den Ablauf der
Induktion von Klassifikatoren und dessen Steuerung
220
A BK ÜRZUNGS -V ERZEICHNIS
221
M ODULE , U NTERMODULE
UND
KOMPONENTEN
DER
A RCHITEKTUR (F ORTSETZUNG )
MVS:MVSK:WMVK
Komponente zur Verwaltung der Metadaten für den Ablauf der
Wartung von Klassifikatoren und dessen Steuerung
MVS:AK
Komponente zur Speicherung von Metadaten über Klassifikatoren
und Klassifikationsergebnisse, die durch einen Analyse-Ablauf
neu erzeugt wurden
MVS:GU
Komponente zur Bereitstellung eines architekturweit gültigen, aktuellen Zeitstempels
AA
Modul zur Durchführung von Analysen
AA:BSK
Komponente zur Selektion von Basisklassifikatoren
AA:DBAGK
Komponente zur Generierung von Datenbank-Abfragen aus Selection Graphs
AA:DQ
Untermodul zur Verwaltung der Datenquellen und Datensenken
AA:DQ:ID
Komponente zum Zugriff auf Datenquelle für Instanzdaten
AA:DQ:KE
Komponente zum Zugriff auf Datenquelle für KlassifikationsErgebnisse
AA:DQ:KR
Komponente zum Zugriff auf Datenquelle für Klassifikatoren
AA:DQ:TD
Komponente zum Zugriff auf Datenquelle für Trainingsdaten
AA:DSK
Komponente zur Selektion von Trainings- oder Instanzdatensätzen
AA:IVK
Komponente zur Invalidierung von Klassifikatoren durch
Transaktionszeit-Zeitstemplung
AA:KV
Abstrakte Komponente zur Zusammenfassung von Komponenten
zur Verarbeitung von Klassifikatoren
AA:KV:(I)IK
Komponente zur (inkrementellen) Induktion von Klassifikatoren
AA:KV:KK
Komponente zur Anwendung von Klassifikatoren
AA:ML
Komponente zur Durchführung eines Meta-Lern-Prozesses
AA:SGAK
Komponente zur Ableitung von Selection Graphs aus Basisklassifikatoren
221
222
A BK ÜRZUNGS -V ERZEICHNIS
222
Listingverzeichnis
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
6.9.
6.10.
6.11.
6.12.
6.13.
6.14.
6.15.
6.16.
6.17.
6.18.
6.19.
6.20.
6.21.
6.22.
6.23.
6.24.
6.25.
6.26.
Konstruktor SimpleClassificationTask.java . . . .
Konstruktor SimpleClassifier.java . . . . . . . .
Konstruktor SimpleClassifierLocation.java . . . .
Konstruktor SimpleComponentAddress.java . . .
Konstruktor SimpleContentResourceLocation.java
Konstruktor SimpleDataSet.java . . . . . . . . .
Konstruktor SimpleInductionTask.java . . . . . .
Konstruktor SimpleMaintenanceTask.java . . . .
Konstruktor SimpleParameterSet.java . . . . . .
Konstruktor SimpleQueryMetadata.java . . . . .
Konstruktor SimpleResultDataSet.java . . . . . .
Konstruktor SimpleResultDataSetLocation.java .
Konstruktor SimpleSelectedDataSet.java . . . . .
Konstruktor SimpleTimestampMetadata.java . . .
Konstruktor SimpleAKMetadata.java . . . . . . .
Konstruktor SimpleBSKMetadata.java . . . . . .
Konstruktor SimpleDSKMetadata.java . . . . . .
Konstruktor SimpleDBAGKMetadata.java . . . .
Konstruktor SimpleIVKMetadata.java . . . . . .
Konstruktor SimpleBSMetadata.java . . . . . . .
Konstruktor SimpleTAMetadata.java . . . . . . .
Konstruktor SimpleMVSKMetadata.java . . . . .
Konstruktor SimpleVKMetadata.java . . . . . . .
Konstruktor SimpleClassificationMetadata.java .
Konstruktor SimpleInductionMetadata.java . . .
Konstruktor SimpleMaintenanceMetadata.java . .
7.1.
7.2.
7.3.
7.4.
7.5.
7.6.
7.7.
7.8.
7.9.
Aufruf der main()-Methode der Klasse JavaUserInterface . . . . . . . 160
Erzeugung eines SimpleInductionTask-Objektes . . . . . . . . . . . . . 161
Ausgabe der Implementierung der Architektur zur Visualisierung eines neu induzierten Klassifikators im Falle
Ausgabe der Implementierung der Architektur zur Speicherung eines neu induzierten Klassifikators im Falle ei
Ausgabe der Implementierung der Architektur zur Speicherung des Metadaten-Objektes über den neu induzier
Ausschnitt der Ausgabe des Testlaufes einer naiven Klassifikator-Anwendung . 165
Ausschnitt der Ausgabe des Testlaufes zur Speicherung der Metadaten über das erzeugte Klassifikationsergebn
Ausschnitt der Ausgabe des Testlaufes der Selection Graph-Klassifikation . . . 167
Ausschnitt der Ausgabe des Testlaufes der Klassifikator-Wartung: Invalidierung des zu wartenden Klassifikator
A.1.
A.2.
A.3.
A.4.
A.5.
A.6.
Code des HomeRemote-Interfaces der GU-Bean . . . . . . . . . . . . . . . . . 177
Code des Remote-Interfaces der GU-SB . . . . . . . . . . . . . . . . . . . . . 178
Code der Bean-Klasse der GU-SB . . . . . . . . . . . . . . . . . . . . . . . . 178
Code-Beispiel eines Deployment-Deskriptors . . . . . . . . . . . . . . . . . . 180
Code-Beispiel der Datei jboss.xml . . . . . . . . . . . . . . . . . . . . . . 180
XML-Code zur Einrichtung der controlQueue in einem JBoss-EJB-Container181
223
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
100
101
102
102
103
103
104
106
107
107
107
108
109
109
114
116
118
120
122
124
127
129
131
134
134
134
224
L ISTINGVERZEICHNIS
A.7. Code der Bean-Klasse der MVSK-MDB . . . . . . . . . . . . . . . . . . . .
A.8. Code-Beispiel eines Deployment-Deskriptors . . . . . . . . . . . . . . . . .
A.9. Code-Beispiel der Datei jboss.xml für die MVSK-MDB . . . . . . . . . .
A.10.Code des HomeRemote-Interfaces der MetadataRepository-EB . . . .
A.11.Code des Remote-Interfaces der MetadataRepository-EB . . . . . . .
A.12.Code der Bean-Klasse der MetadataRepository-EB . . . . . . . . . . .
A.13.Code-Beispiel eines Deployment-Deskriptors für eine EB . . . . . . . . . . .
A.14.Code-Beispiel der Datei jboss.xml für die MetadataRepository-EB
.
.
.
.
.
.
.
.
182
183
184
185
186
187
189
191
B.1. Code zum Zugriff auf eine Enterprise-Bean anhand ihres JNDI-Namens . . . . 194
C.1.
C.2.
C.3.
C.4.
C.5.
C.6.
Ausgaben des Testlaufes der einfachen Klassifikator-Induktion . . . .
Ausgaben des Testlaufes der inkrementellen Klassifikator-Induktion .
Ausgaben des Testlaufes eines Meta-Lern-Vorganges . . . . . . . . .
Ausgaben des Testlaufes einer naiven Klassifikator-Anwendung label
Ausgaben des Testlaufes einer Klassifikation mit Selection Graphs . .
Ausgaben des Testlaufes einer Klassifikator-Wartung . . . . . . . . .
224
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
195
197
199
201
204
206
Index
A
Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Überblick . . . . . . . . . . . . . . . . . . . . . . . 26
Ansätze . . . . . . . . . . . . . . . . . . . . . . . . . 29
Agentenbasiert . . . . . . . . . . . . . . . . 29
Mediator-Wrapper . . . . . . . . . . . . . 31
Web-Service. . . . . . . . . . . . . . . . . . .32
Beispiele für Komponenten∼ . . . . . 27
Bewertungen . . . . . . . . . . . . . . . . . . . . 33
Agentenbasiert . . . . . . . . . . . . . . . . 33
Mediator-Wrapper . . . . . . . . . . . . . 34
Web-Service. . . . . . . . . . . . . . . . . . .35
Datenfluss-Modell . . . . . . . . . . . . . . . 26
Einführung . . . . . . . . . . . . . . . . . . . . . . 23
Enterprise JavaBeans . . . . . . . . . . . . . 38
Interface-Modell . . . . . . . . . . . . . . . . . 26
Konzepte . . . . . . . . . . . . . . . . . . . . . . . . 28
Client-Server . . . . . . . . . . . . . . . . . . 28
Container . . . . . . . . . . . . . . . . . . . . . 28
Multi-Layer . . . . . . . . . . . . . . . . . . . 28
Prozess-Modell . . . . . . . . . . . . . . . . . . 26
Strukturmodell . . . . . . . . . . . . . . . . . . 25
Assoziationsanalyse . . . . . . . . . . . . . . . . . . 10
B
Basisklassifikator . . . . . . . . . . . . . . . . . . . . 19
C
Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
D
Data Mining . . . . . . . . . . . . . . . . . . . . 2, 7, 10
Architektur . . . . . . . . . . . . . . . . . . . . . . 15
Distributed . . . . . . . . . . . . . . . . . . . . . . . 7
Data Warehouse . . . . . . . . . . . . . . . . . . . 4, 15
System . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Datenvorverarbeitung . . . . . . . . . . . . . . . . . . 8
DDM . . . . . . siehe Distributed Data Mining
Distributed Data Mining . . . . . . . . . . 2, 7, 16
Daten-Parallelisierung . . . . . . . . . . . . 18
Definition . . . . . . . . . . . . . . . . . . . . . . . 16
Task-Parallelisierung . . . . . . . . . . . . . 17
Distributed Knowledge Discovery . . . . . 16
E
EJB . . . . . . . . . . siehe Enterprise JavaBeans
EJB-Container
Datenbanken . . . . . . . . . . . . . . . . . . . . 40
Dienste . . . . . . . . . . . . . . . . . . . . . . . . . 39
Komponenten . . . . . . . . . . . . . . . . . . . 42
Messaging . . . . . . . . . . . . . . . . . . . . . . 40
Namens- und Verzeichnisdienst . . . 40
Persistence Manager . . . . . . . . . . . . . 42
Schnittstellen . . . . . . . . . . . . . . . . . . . . 39
Sicherheit . . . . . . . . . . . . . . . . . . . . . . . 41
Transaktions-Monitor . . . . . . . . . . . . 40
Weitere Dienste . . . . . . . . . . . . . . . . . . 41
Enterprise JavaBeans . . . . . . . . . . . . . . 36, 37
Architektur . . . . . . . . . . . . . . . . . . . . . . 38
Begriffsklärungen . . . . . . . . . . . . . . . . 37
Container . . . . . . . siehe EJB-Container
Komponenten . . . . . . . . . . . . . . . . . . . 39
Enterprise-Bean
Implementierung . . . . . . . . . . . . . . . . . 43
Enterprise-Beans . . . . . . . . . . . . . . . . . . . . . 37
Aktivierung und Passivierung . . . . . 41
Bean-Typen . . . . . . . . . . . . . . . . . . . . . 42
Entity-Beans . . . . . . . . . . . . . . . . . . 43
Gegenüberstellung . . . . . . . . . . . . . 44
Message-Driven-Beans . . . . . . . . . 42
Session Beans . . . . . . . . . . . . . . . . . 42
Bestandteile . . . . . . . . . . . . . . . . . . . . . 43
Bestandteile EB . . . . . . . . . . . . . . . . 185
Bean-Klasse . . . . . . . . . . . . . . . . . . 187
Deployment-Deskriptor . . . . . . . 188
Home-Interface . . . . . . . . . . . . . . . 185
jboss.xml . . . . . . . . . . . . . . . . . . . . 191
Remote-Interface . . . . . . . . . . . . . 186
Bestandteile MDB . . . . . . . . . . . . . . 181
Bean-Klasse . . . . . . . . . . . . . . . . . . 181
Deployment-Deskriptor . . . . . . . 183
jboss.xml . . . . . . . . . . . . . . . . . . . . 184
queue . . . . . . . . . . . . . . . . . . . . . . . . 181
Bestandteile SB . . . . . . . . . . . . . . . . . 177
Bean-Klasse . . . . . . . . . . . . . . . . . . 178
225
226
I NDEX
Deployment-Deskriptor . . . . . . . 180
Home-Interface . . . . . . . . . . . . . . . 177
jboss.xml . . . . . . . . . . . . . . . . . . . . 180
Remote-Interface . . . . . . . . . . . . . 178
Installation . . . . . . . . . . . . . . . . . . . . . 193
Installation und Nutzung. . . . . . . . .193
Lebenszyklus . . . . . . . . . . . . . . . . . . . . 41
Nutzung . . . . . . . . . . . . . . . . . . . . . . . 194
Persistenz . . . . . . . . . . . . . . . . . . . . . . . 41
Verteilung . . . . . . . . . . . . . . . . . . . . . . . 41
Entscheidungsbaum . . . . . . . . . . . . . . . . 3, 11
Anwendung . . . . . . . . . . . . . . . . . . . . . 11
Entropie . . . . . . . . . . . . . . . . . . . . . . . . 14
ID3-Induktionsalgorithmus . . . . . . . 12
Induktion . . . . . . . . . . . . . . . . . . . . . . . 12
verteilte . . . . . . . . . . . . . . . . . . . . . . . 19
information gain . . . . . . . . . . . . . . . . . 14
Pruning . . . . . . . . . . . . . . . . . . . . . . . . . 15
Wurzel . . . . . . . . . . . . . . . . . . . . . . . . . . 11
I
Individualsoftware . . . . . . . . . . . . . . . . . . . 26
Intelligenz . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
J
J2EE . . . . . . siehe Java 2 Enterprise Edition
Java 2 Enterprise Edition
Server . . . . . . . . . . . . . . . . . . . . . . . . . . 38
JavaBean . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
K
KDD . . . . . . siehe Knowledge Discovery in
Databases
Klassifikation . . . . . . . . . . . . . . . . . . . . . . . . 11
Trainingsdaten . . . . . . . . . . . . . . . . . . . 11
Knowledge Discovery in Databases . . . 2, 7
M
MAS . . . . . . . . . . siehe Multiagentensystem
Mediator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Meta-Lerner . . . . . . . . . . . . . . . . . . . . . . . 2, 20
Metadaten-Formate. . . . . . . . . . . . . . . . . . . 87
ADT-Interfaces und Implementierungen . . . . . . . . . . . . . . . . . . . . . . . . . 88
Kontrollflüsse . . . . . . . . . . . . . . . . . . 112
Parametrisierung der Algorithmen 131
Mobilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Multiagentensystem . . . . . . . . . . . . . . . . . . 30
Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . 30
O
Objektorientiertes Design . . . . . . . . . . . . . 87
Komponenten . . . . . . . . . . . . . . . . . . 134
226
Metadaten-Formate . . . . . . . . . . . . siehe
Metadaten-Formate
Sequenz-Diagramme . . . . . . . . . . . . 140
Induktion . . . . . . . . . . . . . . . . . . . . 140
Meta-Lernen . . . . . . . . . . . . . . . . . 144
naive Klassifikation . . . . . . . . . . . 146
SG-Klassifikation . . . . . . . . . . . . . 149
Wartung . . . . . . . . . . . . . . . . . . . . . 152
Zusammenfassung . . . . . . . . . . . . . . 154
OOD . . . . . siehe Objektorientiertes Design
Operatoren
Anwendung . . . . . . . . . . . . . . . . . . . . . 58
Datenbank-Wrapper . . . . . . . . . . . . 60
Klassifikation . . . . . . . . . . . . . . . . . . 58
Selection-Graph-Ableitung . . . . . 59
Selection-Graph-Transformation 59
Selektion . . . . . . . . . . . . . . . . . . . . . . 58
Induktion . . . . . . . . . . . . . . . . . . . . . . . 56
Basisklassifikator-Selektion . 57, 59
Daten-Selektion . . . . . . . . . . . . . . . 56
Inkrementeller Lerner . . . . . . . 57, 61
Lerner . . . . . . . . . . . . . . . . . . . . . . . . 56
Meta-Lernen . . . . . . . . . . . . . . . . . . . . 57
Wartung . . . . . . . . . . . . . . . . . . . . . . . . 60
Daten-Selektion . . . . . . . . . . . . . . . 62
Invalidierung . . . . . . . . . . . . . . . . . . 61
Klassifikator-Selektion . . . . . . . . . 60
Lerner . . . . . . . . . . . . . . . . . . . . . . . . 61
Meta-Lerner . . . . . . . . . . . . . . . . . . . 60
R
ReDiCAt
Implementierung . . . . . . . . . . . . . . . 157
Referenz-System . . . . . . . . . . . . . 157
Tests . . . . . . . . . . . . . . . . . . . . . . . . 160
ReKlaMe . . . . . . . . . . . . . . . . . . . . . . . 2, 5, 47
Abläufe und Phasen . . . . . . . . . . . . . . 62
Induktion . . . . . . . . . . . . . . . . . . . . . 62
Klassifikation . . . . . . . . . . . . . . . . . . 66
Wartung . . . . . . . . . . . . . . . . . . . . . . 68
Analyse . . . . . . . . . . . . . . . . . . . . . . . . . 48
Architektur . . . . . . . . . . . . . . . . . . . . . . 73
Überblick . . . . . . . . . . . . . . . . . . . . . 73
Anwendung . . . . . . . . . . . . . . . . . . . 79
Gesamt . . . . . . . . . . . . . . . . . . . . . . . 84
Induktion . . . . . . . . . . . . . . . . . . . . . 76
Verteiltheit . . . . . . . . . . . . . . . . . . . . 85
Wartung . . . . . . . . . . . . . . . . . . . . . . 82
Zusammenfassung . . . . . . . . . . . . . 86
Ausführungsmodell . . . . . . . . . . . . . . 47
Operatoren . . . . . . . . . siehe Operatoren
I NDEX
227
S
Simple Object Access Protocol . . . . . . . . 32
SOAPsiehe Simple Object Access Protocol
Software-Agent . . . . . . . . . . . . . . . . . . . . . . 30
Software-Architektur . . . . . . . . . . . . . . . . . 23
Software-Komponente . . . . . . . . . . . . . . . . 23
Standardsoftware . . . . . . . . . . . . . . . . . . . . .26
SWA . . . . . . . . . . . . . . siehe Software-Agent
T
Transformation . . . . . . . . . . . . . . . . . . . . . . . 9
W
Web Service Description Language . . . . 32
Web-Service . . . . . . . . . . . . . . . . . . . . . . . . . 32
Wissensbasis . . . . . . . . . . . . . . . . . . . . . . . . 10
Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
WSDL . . . . siehe Web Service Description
Language
227
228
I NDEX
228
Literaturverzeichnis
[BA96]
RONALD J. B RACHMANN und T EJ A NAND. The Process Of Knowledge Discovery in Databases. American Association for Artificial Intelligence, Menlo
Park, CA, USA, 1996. ISBN 0-262-56097-6
[Bär03]
S TEFAN B ÄRISCH. Gestaltung eines MAS zum Einsatz im VR-Learning, 2003
[BCK03]
L EN BASS, PAUL C LEMENTS und R ICK K AZMAN. Software Architecture in
Practice. Addison Wesley Professional, 2003. ISBN 0-321-15495-9
[BG01]
A NDREAS BAUER und H OLGER G ÜNZEL. Data Warehouse Systeme. Architektur, Entwicklung, Anwendung. Dpunkt Verlag, 2001. ISBN 3932588762
[Bre96]
L EO B REIMAN. Bagging Predictors. Machine Learning, 24(2):123–140,
1996. URL citeseer.ist.psu.edu/breiman96bagging.html,
letzter Zugriff 17.12.2004
[Böh01]
K LEMENS B ÖHM.
Kapitel 4: Data Preprocessing, 2001.
Aus: Vorlesung Data Warehousing und Data Mining, URL
http://www-dbs.inf.ethz.ch/˜boehm/DD/dwm0102/qualityaspekte.pdf,
letzter Zugriff 30.09.2004
[Com04]
The Common Component Architecture Forum: Glossary, 2004.
URL
http://www.cca-forum.org/glossary/index.html, letzter Zugriff 11.10.2004
[CRI04]
CRISP-DM
Process
Model,
2004.
http://www.crisp-dm.org/Process/index.htm,
griff 30.09.2004
letzter
URL
Zu-
[CS93]
P HILLIP K. C HAN und S ALVATORE J. S TOLFO.
Toward parallel and distributed learning by meta-learning.
In Working Notes
AAAI Work. Knowledge Discovery in Databases, Seiten 227–240. 1993.
URL citeseer.ist.psu.edu/chan93toward.html, letzter Zugriff
17.12.2004
[Dit97]
T.G. D ITTERICH. Machine Learning Research: Four Current Directions. In AI
Magazine 18(4), Seiten 97–136. 1997
[DP02]
S TEFAN D ENNINGER und I NGO P ETERS. Enterprise JavaBeans 2.0. AddisonWesley, 2002. ISBN 3-8273-1765-7. Zur Spezifikation 2.0
[ES00]
M ARTIN E STER und J ÖRG S ANDER. Knowledge discovery in databases: Techniken und Anwendungen. Springer, Berlin, 2000. ISBN 3-540-67328-8
[Fer01]
JAQUES F ERBER. Multiagentensysteme. Addison-Wesley, 2001. ISBN 3-82731679-0
229
230
L ITERATURVERZEICHNIS
[FPSS96a]
U SAMA M. FAYYAD, G REGORY P IATETSKY-S HAPIRO und PADHRAIC
S MYTH. The KDD Process for Extracting Useful Knowledge from Volumes
of Data. In Communications of the ACM 39(11), Seiten 27–34. 1996
[FPSS96b]
U SAMA M. FAYYAD, G REGORY P IATETSKY-S HAPIRO und PADHRAIC
S MYTH. Knowledge Discovery and Data Mining: Towards a Unifying Framework. In Knowledge Discovery and Data Mining, Seiten 82–88. 1996. URL
http://citeseer.nj.nec.com/fayyad96knowledge.html, letzter Zugriff 30.09.2004
[GGRL99]
J OHANNES G EHRKE, V ENKATESH G ANTI, R AGHU R AMAKRISHNAN und
W EI -Y IN L OH. BOAT — optimistic decision tree construction. In A LEX
D ELIS, C HRISTOS FALOUTSOS und S HAHRAM G HANDEHARIZADEH, Editoren, Proceedings of the 1999 ACM SIGMOD International Conference on
Management of Data: SIGMOD ’99, Philadelphia, PA, USA, June 1–3, 1999,
volume 28, Seiten 169–180. ACM Press, New York, NY 10036, USA, 1999.
URL http://citeseer.nj.nec.com/gehrke99boat.html, letzter
Zugriff 24.11.2004
[GHJV95]
E RICH G AMMA, R ICHARD H ELM, R ALPH J OHNSON und J OHN V LISSIDES.
Design Patterns. Addison-Wesley Professional, 1995. ISBN 0-2016-3361-2
[GS00]
Y I -K E G UO und JANJAO S UTIWARAPHUN. Distributed Classification with
Knowledge Probing, Kapitel 4, Seiten 115–132. In Kargupta und Chan [KC00],
2000
[HK00]
J IAWEI H AN und M ICHELINE K AMBER. Data Mining: Concepts and Techniques. Morgan Kaufmann, 2000. ISBN 1558604898
[HR03]
W ILHELM H ASSELBRING und R ALF R EUSSNER. Softwaresystementwicklung, 2003. Vorlesungsskript im Rahmen der Veranstaltung Softwaresystementwicklung an der Carl-von-Ossietzky Universität Oldenburg
[HSS+ 03]
JASON O. H ALLSTROM, N IGAMANTH S RIDHAR, PAOLO A.G. S IVILOTTI,
A NISH A RORA und W ILLIAM M. L EAL. A Container-Based Approach to
Object-Oriented Product Lines. Journal of Object Technology, 3(4):161–175,
2003
[HT01]
A RNE H ARREN und H EIKO TAPKEN. TODAY Open Repository. Technical Report TODAY-TR-2001-1, OFFIS, 2001. An Extensible MOF-Based Metadata
Repository System.
[HW01]
H AJO H IPPNER und K LAUS D. W ILDE. Handbuch Data Mining im Marketing
- Knowledge Discovery in Marketing Databases, Kapitel Der Prozess des Data
Mining im Marketing, Seiten 21–91. Vieweg Verlag, Wiesbaden, 2001
[JC99]
D. J ENSEN und P.R. C OHEN. Multiple Comparisons in Induction Algorithms,
Seiten 309–338. Kluwer Academic Publishers Hingham, MA, USA, 1999
[KB94]
W OLFGANG P. KOWALK und M ANFRED B URKE. Rechnernetze. Teubner
Verlag, 1994. ISBN 3519021412
[KBSvdW99] J. K NOBBE, H. B LOCKEEL, A. S IEBES und D. VAN DER WALLEN. MultiRelational Decision Tree Induction. In Proceedings of the 3rd European Conference on Principles and Practice of Knowledge Discovery in Databases, PKDD
99. 1999
230
L ITERATURVERZEICHNIS
231
[KC00]
H ILLOL K ARGUPTA und P HILIP C HAN, Editoren. Advances in Distributed
and Parallel Knowledge Discovery. AAAI/MIT Press, Menlo Park, CA / Cambridge, MA, 2000. ISBN 0-262-61155-4
[KKC00]
H ILLOL K ARGUPTA, C HANDRIKA K AMATH und P HILIP C HAN. Distributed
and Parallel Data Mining: Emergence, Growth, and Future Directions, Kapitel 15, Seiten 409–417. In Kargupta und Chan [KC00], 2000
[MEH01]
M ARK W. M AIER, DAVID E MERY und R ICH H ILLIARD. Software Architecture: Introducing IEEE Standard 1471. Computer, 34(4):107–109, 2001
[Meh03]
A XEL M EHNER. Eine agentenbasierte Softwareinfrastruktur zum verteilten Data Mining in Handhabungsdaten, 2003
[MH02]
R ICHARD M ONSON -H AEFEL. Enterprise JavaBeans. O’Reilly, 2002. ISBN
3897212978
[Mic04a]
Microsoft COM Technologies - Information and Resources for the
Component Object Model-based technologies, 2004.
Microsoft, URL
http://www.microsoft.com/com/, letzter Zugriff 19.10.2004
[Mic04b]
Microsoft
.NET
Information,
2004.
Microsoft,
http://www.microsoft.com/net/, letzter Zugriff 19.10.2004
[MST94]
D. M ICHIE, D. J. S PIEGELHALTER und C. C. TAYLOR, Editoren. Machine Learning, Neural and Statistical Classification. Ellis Horwood, New York,
1994. ISBN 013106360X
[Neb95]
W OLFGANG N EBEL. Entwurf Integrierter Schaltungen, Skriptum zur Vorlesung Entwurf Integrierter Schaltungen“, WS 1995/1996, 2. Auflage, Carl-von”
Ossietzky-Universität Oldenburg, 1995
[OMG02]
CORBA Component Model, v3.0, 2002. Object Management Group, URL
http://www.omg.org/technology/documents/formal/components.htm,
letzter Zugriff 19.10.2004
[PCS00]
A NDREAS L. P RODROMIS, P HILIP K. C HAN und S ALVATORE J. S TOLFO.
Meta-Learning in Distributed Data Mining Systems: Issues and Approaches,
Kapitel 3, Seiten 81–113. In Kargupta und Chan [KC00], 2000
[Pre03]
M ATTHIAS P RETZER.
Clustering und Klassifikation.
In Zwischenbericht Teil B der Projektgruppe Personalisierung internetbasierter Handelsszenarien, Seiten 125–162. 2003.
URL
http://diko-project.de/dokumente/ausarbeitungen/pretzer.pdf,
letzter Zugriff 24.11.2004
[Pre05]
M ATTHIAS P RETZER. Entwurf eines Ensemble-Lerners zum Kombinieren von
Entscheidungsbäumen unter Beachtung von Datenschutzaspekten. Diplomarbeit, Carl von Ossietzky Universität Oldenburg, 2005
[Pro00]
F OSTER P ROVOST. Distributed Data Mining: Scaling Up and Beyond, Kapitel 1, Seiten 3–27. In Kargupta und Chan [KC00], 2000
[Rob04]
O LIVER R EEMT ROBBE. Ein Werkzeug zur Administration eines agentenbasierten Softwaresystems, 2004
[Saa04]
C ARSTEN S AATHOFF.
Metadatengesteuerte Anwendung von Entscheidungsbäumen in Data Warehouse Systemen, 2004
231
URL
232
L ITERATURVERZEICHNIS
[SAS04]
SAS SEMMA, 2004. URL http://www.sas.com/technologies/analytics/data
letzter Zugriff 30.09.2004
[Sch90]
ROBERT E. S CHAPIRE.
The Strength of Weak
nability.
Machine Learning, 5:197–227, 1990.
citeseer.ist.psu.edu/schapire90strength.html,
Zugriff 17.12.2004
[Stu03]
R ALPH S TUBER.
Data Preprocessing - Datenvorverarbeitungsschritte
des Prozessmodelles.
In Zwischenbericht der Projektgruppe Personalisierung internetbasierter Handelsszenarien, Seiten 101–124. 2003. URL
http://diko-project.de/dokumente/ausarbeitungen/stuber.pdf,
letzter Zugriff 30.09.2004
[Sun97]
Java Beans API Specification, 1997. Sun Microsystems
[Sun04a]
Java 2 Platform, Enterprise Edition (J2EE), 2004. Sun Microsystems, URL
http://java.sun.com/j2ee/index.jsp, letzter Zugriff 14.10.2004
[Sun04b]
Enterprise JavaBeans Technology, 2004.
Sun Microsystems, URL
http://java.sun.com/products/ejb/index.jsp, letzter Zugriff
14.10.2004
[Sun04c]
Java 2 Platform, Standard Edition (J2SE), 2004. Sun Microsystems, URL
http://java.sun.com/j2se/index.jsp, letzter Zugriff 27.10.2004
[Sun04d]
Java Naming and Directory Interface (JNDI), 2004. Sun Microsystems, URL
http://java.sun.com/products/jndi/, letzter Zugriff 27.10.2004
[Sun04e]
Java Transaction API (JTA), 2004.
Sun Microsystems, URL
http://java.sun.com/products/jta/, letzter Zugriff 27.10.2004
[Sun04f]
JDBC
Technology,
2004.
Sun
Microsystems,
URL
http://java.sun.com/products/jdbc/, letzter Zugriff 27.10.2004
[Sun04g]
Java Message Service (JMS), 2004.
Sun Microsystems, URL
http://java.sun.com/products/jms/, letzter Zugriff 27.10.2004
[Sun04h]
JavaMail,
2004.
Sun
Microsystems,
http://java.sun.com/products/javamail/,
letzter
27.10.2004
[Sun04i]
Java API for XML Processing (JAXP), 2004. Sun Microsystems, URL
http://java.sun.com/xml/jaxp/, letzter Zugriff 27.10.2004
[Sun04j]
Java Remote Method Invocation (Java RMI), 2004. Sun Microsystems,
URL http://java.sun.com/products/jdk/rmi/, letzter Zugriff
27.10.2004
[Tal03]
D OMENICO TALIA. Parallel and Distributed Data Mining: from Multicomputers to Grids. In Proc. ECML/PKDD 2003 Workshop on Parallel and Distributed Computing for Machine Learning. 2003
[Tap04]
H EIKO TAPKEN. An Overview of the ReKlaMe-Approach. In British National
Conference on Databases, Edinburg, UK. 2004
232
LearURL
letzter
URL
Zugriff
L ITERATURVERZEICHNIS
233
[Tes03]
T HORSTEN T ESCHKE.
Semantische Komponentensuche auf Basis von
Geschäftsprozessmodellen. Diplomarbeit, Carl von Ossietzky Universität Oldenburg, 2003
[TG00]
K AGAN T URNER und J OYDEEP G HOSH. Robust Order Statistics-based Ensembles for Distributed Data Mining, Kapitel 6, Seiten 185–210. In Kargupta
und Chan [KC00], 2000
[W3C03]
SOAP Version 1.2 Part 1: Messaging Framework, 2003. W3C Recommendation, URL http://www.w3.org/TR/soap12-part1/, letzter Zugriff
19.10.2004
[W3C04]
Web Services Architecture, 2004.
W3C Working Group Note, URL
http://www.w3.org/TR/ws-arch/, letzter Zugriff 19.10.2004
[Zen03]
G UIDO Z ENDEL.
Der Prozess des Knowledge Discovery in Databases.
In Zwischenbericht der Projektgruppe Personalisierung
internetbasierter Handelsszenarien, Seiten 73–100. 2003.
URL
http://diko-project.de/dokumente/ausarbeitungen/zendel.pdf,
letzter Zugriff 30.09.2004
[Zen05]
G UIDO Z ENDEL. REBIND - Algorithmus für die Relationale Entscheidungsbauminduktion. Diplomarbeit, Carl von Ossietzky Universität Oldenburg, 2005
[Zho02]
Z HI -H UA Z HOU. Data Mining - Chapter 3 Data Preparation, 2002. Lehrveranstaltung Data Mining, 2002, Department of Computer Science and Technology,
Nanjing University, China
233
Hiermit versichere ich, daß ich diese Arbeit selbständig verfaßt und keine anderen als die angegebenen Hilfsmittel und Quellen verwendet habe.
Oldenburg, den 1. April 2005
(Ralph Stuber)