Kaiserslautern - Fachbereich Informatik
Refine
Year of publication
Document Type
- Master's Thesis (38) (remove)
Language
- German (38) (remove)
Has Fulltext
- yes (38)
Keywords
- CoMo-Kit (5)
- Case-Based Planning (4)
- Fallbasiertes Schliessen (3)
- Case-Based Reasoning (2)
- Decision Trees (2)
- Entscheidungsbäume (2)
- Fallbasierte Planning (2)
- AG-RESY (1)
- AKLEON (1)
- Aspektorientierte Programmierung (1)
Faculty / Organisational entity
Hadoop ist ein beliebtes Framework für verteilte Berechnungen über große
Datenmengen (Big Data) mittels MapReduce. Hadoop zu verwenden ist einfach: Der
Entwickler definiert die Eingabedatenquelle und implementiert die beiden
Methoden Map und Reduce. Über die verteilte Berechnung und Fehlerbehandlung muss
er sich dabei keine Gedanken machen, das erledigt das Hadoop-Framework.
Allerdings kann die Analyse von Big Data sehr lange dauern und da sich die
Eingabedaten jede Sekunde ändern, ist es vielleicht nicht immer die beste
Idee, die vollständige Berechnung jedes Mal aufs Neue auf die kompletten
Eingabedaten anzuwenden. Es wäre geschickter, sich das Ergebnis der
vorherigen Berechnung zu betrachten und nur die Deltas zu analysieren, also
Daten, die seit der letzten Berechnung hinzugefügt oder gelöscht wurden. In dem Gebiet der
selbstwartbaren materialisierten Sichten in relationalen Datenbanksystemen gibt
es bereits mehrere Ansätze, die sich mit der Lösung dieses Problems
beschäftigen. Eine Strategie liest nur die Deltas und inkrementiert oder
dekrementiert die Ergebnisse der vorherigen Berechnung. Allerdings ist diese
Inkrement-Operation sehr teuer, deshalb ist es manchmal besser, das komplette
alte Ergebnis zu lesen und es mit den Deltas der Eingabedaten zu kombinieren.
In dieser Masterarbeit wird ein neues Framework namens Marimba vorgestellt,
welches sich genau um diese Probleme der inkrementellen Berechnung kümmert. Einen
Map\-Re\-duce-Job in Marimba zu schreiben ist genau so einfach wie einen Hadoop-Job.
Allerdings werden hier keine Mapper- und Reducer-Klasse implementiert, sondern
eine Translator- und Serializer-Klasse. Der Translator ähnelt dem Mapper: Er
bestimmt, wie die Eingabedaten gelesen und daraus Zwischenwerte berechnet
werden. Der Serializer erzeugt die Ausgabe des Jobs. Wie diese Ausgabe berechnet
wird, gibt der Benutzer durch Implementierung einiger Methoden an, um Werte zu
aggregieren und invertieren.
Vier MapReduce-Jobs, darunter auch das Paradebeispiel für MapReduce WordCount,
wurden im Marimba-Framework implementiert. Das Entwickeln von inkrementellen
Map-Reduce-Jobs ist mit dem Framework extrem einfach geworden. Außerdem konnte
mit Performanztests gezeigt werden, dass die inkrementelle Berechnung deutlich
schneller ist als eine vollständige Neuberechnung.
Ein weiterer unter den vier implementierten Jobs berechnet
Wortauftrittswahrscheinlichkeiten in geschriebenen Sätzen. Dies kann
beispielsweise für Spracherkennung verwendet werden. Wenn ein Wort in einer
gesprochenen SMS nicht richtig verstanden wurde, hilft der Algorithmus zu raten,
welches Wort am wahrscheinlichsten an einer bestimmten Stelle stehen könnte,
abhängig von den vorherigen Wörtern im Satz. Damit dieser Algorithmus auch
brauchbare Ergebnisse liefert, ist die Menge und die Qualität der Eingabedaten
wichtig. Durchaus brauchbare Ergebnisse wurden durch die Verarbeitung von
Millionen von Twitter-Feeds, die deutsche Twitter-Nutzer in den letzten Monaten
geschrieben haben, erreicht.
JSR 170 spezifiziert die Java Content Repository (JCR) Schnittstelle. Diese Schnittstelle wird als Standard im Bereich Web-Anwendungen und Content Management akzeptiert. Sie gliedert sich in Level 1 (lesender Zugriff) and Level 2 (Lese- und Schreibzugriffe) und beschreibt darüber hinaus vier weitere optionale Funktionen. Das in JSR 170 beschriebene hierarchische Datenmodell weist starke Analogie zu XML auf. Jedoch verwenden die meisten JCR-Implementierungen relationale Datenbanken. Durch native XML Datenbanken, wie XTC, können XML-Daten effizient verwaltet werden. Diese Arbeit beschreibt das Design und die Implementierung eines Level 2 JCRs, welches alle Anforderungen an die Persistenz mit Hilfe von DOM und XQuery Operationen auf XML-Dokumenten in XTC erfüllt. Die optionalen FuJSR 170 spezifiziert die Java Content Repository (JCR) Schnittstelle. Diese Schnittstelle wird als Standard im Bereich Web-Anwendungen und Content Management akzeptiert. Sie gliedert sich in Level 1 (lesender Zugriff) und Level 2 (Lese- und Schreibzugriffe) und beschreibt darüber hinaus vier weitere optionale Funktionen. Das in JSR 170 beschriebene hierarchische Datenmodell weist starke Analogie zu XML auf. Jedoch verwenden die meisten JCR-Implementierungen relationale Datenbanken. Durch native XML Datenbanken, wie XTC, können XML-Daten effizient verwaltet werden. Diese Arbeit beschreibt das Design und die Implementierung eines Level 2 JCRs, welches alle Anforderungen an die Persistenz mit Hilfe von DOM und XQuery Operationen auf XML-Dokumenten in XTC erfüllt. Die optionalen Funktionen “Versionierung” und “Transaktionen” werden ebenfalls unterstützt. Um die Implementierung zu testen werden zwei Demo-Anwendungen (Blog & Wiki) entwickelt und Vergleichstests gegen die Referenzimplementierung angestellt.
Ein typisches Mittelklassefahrzeug hat mittlerweile 100 Computerprozessoren,die miteinander kommunizieren, und bildet damit ein komplexes Softwaresystem. Die steigende Anzahl der miteinander kommunzierenden Funktionen trägt dazu bei, dass die Komplexität der Steurungssoftware immer schwerer zu beherrschen ist. Trotz eines enormen Kostenaufwands zur Entwicklung der entsprechenden Softwarekomponenten sind Softwarefehler bei Fahrzeugen der automobilen Oberklasse eine der am häufigsten angeführten Ursachen in der Pannenstatistik. Die Tatsache, dass die angeführten Funktionalitäten verteilt und parallel auf einer steigenden Anzahl unterschiedlicher Mikrokontroller abgearbeitet werden, birgt zusätzliche Probleme. Es ist jedoch Fakt, dass der Markt nach Funktionalitäten wie ABS, ASR und ESP verlangt, die zu einem wesentlichen Teil aus Software bestehen. Es ist also notwendig, einen alternativen Softwareansatz zu finden, der die Komplexität der Steuerungssoftware beherrschbar werden lässt und dennoch den Anforderungen des automobilen Umfelds, wie zum Beispiel der Verlässlichkeit gerecht wird. Dies wird in dieser Arbeit mit hilfe einer verhaltensbasierten steuerung erreicht.
Das Ziel dieser Arbeit ist es, ein Framework und einen funktionsfähigen Prototypen für eine Middleware zu entwickeln, die es ermöglicht, Berechnungen verteilt in einem Peer-to-Peer-Netz auszuführen. Dabei sollen verschiedene Arten der Berechnung unterstützt werden. Eine Art der Berechnung sind Aufträge, die massiv parallel berechnet werden können, d.h. solche, die in unabhängige Teilaufträge zerlegt werden können und ohne gegenseitige Kommunikation auskommen. Diese Aufträge können entweder so parametrisiert sein, dass jeder Teilauftrag einen anderen Satz Parameter erhält (z.B. Fraktalberechnung), oder zufallsbasiert, so dass jeder Teilauftrag mit den gleichen Ausgangswerten berechnet wird und unterschiedliche Ergebnisse resultieren. Eine andere Art der Berechnung setzt voraus, dass Knoten, die am gleichen Auftrag arbeiten, auch miteinander kooperieren und durch Nachrichten beispielsweise Teillösungen austauschen (z.B. verteilte evolutionäre Algorithmen). Alle Knoten in diesem Netz sollen gleichberechtigt sein, d.h. jedem Knoten soll es möglich sein, eigene Anwendungen und Aufgaben im Netz zu verteilen. Den verteilten Anwendungen soll zudem die Möglichkeit gegeben werden, mit anderen Knoten, die an der gleichen Aufgabe arbeiten, kommunizieren zu können. Alle benötigten Informationen zur Berechnung eines Auftrags (d.h. Parameter, ausführbarer Code der Anwendung, Anzahl der zu berechnenden Fälle) sollen den rechnenden Knoten durch Middlewarefunktionen zur Verfügung gestellt werden, ebenso soll der Rücktransport der Ergebnisse zum Initiator durch die Middleware erfolgen. Der Nutzer soll also an seinem Arbeitsplatz seine verteilte Anwendung starten können und die Ergebnisse schließlich wieder auf seinem Rechner vorfinden. Die Implementierung soll möglichst modular angelegt sein und nicht auf ein konkretes P2P-Protokoll beschränkt sein, sondern einen leichten Austausch bzw. eine nutzergesteuerte Auswahl von verschiedenen Protokollen ermöglichen. Im Rahmen dieses Prototypen soll ein epidemisches P2P-Protokoll realisiert werden.
Im Rahmen dieser Diplomarbeit werden die Konzepte zur Unterstützung von datenbankorientierten Software-Produktlinien durch domänenspezifische Sprachen am Beispiel von Versionierungssystemen untersucht. Ziel dieser Arbeit ist es, die zeitlichen Kosten, die durch die Nutzung einer domänenspezifischen Sprache entstehen, zu bestimmen. Dabei werden unterschiedliche Datenbankschemata verwendet, um zu untersuchen, welcher Zusammenhang zwischen der Komplexität des Datenbankschemas und der Übersetzung einer domänenspezifischen Anweisung in eine Reihe von herkömmlichen SQL-Anweisungen besteht. Um die zeitlichen Kosten für die Reduktion zu bestimmen, werden Leistungsuntersuchungen durchgeführt. Grundlage für diese Leistungsuntersuchungen sind domänenspezifische Anweisungen, die von einem speziell für diesen Zweck entwickelten Generator erzeugt wurden. Diese generierten domänenspezifischen Anweisungen werden mit den unterschiedlichen Datenbanktreibern auf dem passenden Datenbankschema ausgeführt.
Diese Arbeit beschäftigt sich mit der Ergebnisverarbeitung (Result-Set-Processing) im Projekt META-AKAD. Das materialisierte Anfrageergebnis, dient als Grundlage für die Ausführung von Meta-Queries. Für die Schnittstelle zum Web-Tier wurden zwei unterschiedliche Implementierungen (zustandslos und zustandsbehaftet) zur Verfügung gestellt und miteinander vergliechen.
On-line Kollisionserkennung mit hierarchisch modellierten Hindernissen für ein Mehrarm-Robotersystem
(1991)
Dieses Kapitel gliedert sich in drei Teile. Zuerst wird die Vorgehensweise in dieser Diplomarbeit zusammengefaßt. Dann folgen die gewonnenen Schlußfolgerungen mit einer Bewertung der verglichenen Ansätze. Der letzte Teil ist ein Ausblick auf die möglichen Anwendungen der Ergebnisse dieser Arbeit. Methodik Bei der Aufgabe, eine on-line Kollisionserkennung mit hierarchisch modellierten Hindernissen für ein Mehrarm-Robotersystem zu untersuchen, wurden folgende Schritte vorgenommen: " Klassifizierung der bisherigen Ansätze zur Beschleunigung der Kollisionserkennung mit einem Arm. Dabei wurde unterschieden zwischen dem Einsatz-Zeitpunkt und der Methode der Ansätze. " Modifikation des Weltmodells der Kollisionserkennung für den Einsatz von mehreren Roboterarmen. Kollisionsklassen wurden in einer formalen Darstellung eingeführt und ihre Eigenschaften betrachtet. " Untersuchung der Approximation von Objekten (z. B. Armsegmente und Hindernisse) durch Primitive. Dabei wurden Algorithmen zur Berechnung der Approximationen entworfen und implementiert. Unterschiedliche Strategien zur Abstandsberechnung mit Primitiven-Approximationen wurden entwickelt. " Untersuchung und Erweiterung der hierarchischen Modellierung für den Einsatz bei bewegten Objekten (wie z. B. Roboterarmen). Dazu wurden eine on-line Aktualisierung der Geometrie und eine Auswahl der optimalen Baumstruktur eingesetzt. " Implementierung der bisherigen und eigenen Beschleunigungs-Ansätze. Für die Durchführung von Experimenten wurden die Ansätze in ein Simulationssystem eingebunden und das Simulationssystem erweitert. " Vergleich und Bewertung der Beschleunigungs-Ansätze durch Messung von Laufzeiten und Qualität der resultierenden Abstandsvektoren. Untersuchung anderer einflußnehmender Parameter, wie z. B. der Sicherheitsabstand oder die Frequenz (Schrittweite) der Kollisionserkennung. Schlußfolgerungen Die Untersuchung der implementierten Ansätze zur on-line Kollisionserkennung erlaubt folgende Bewertung und Folgerungen: " Die on-line Kollisionserkennung mit Abstandsvektoren für mehrere Arme ist bei der Verwendung der entsprechenden Beschleunigungs-Ansätze möglich. Die Berechnungszeit pro Bewegungsschritt liegt im Bereich von wenigen Millisekunden. " Die eingeführte Unterteilung der Umwelt in Kollisionsklassen schafft einen einfachen Mechanismus zur Kollisionserkennung in Szenen mit mehreren bewegten Objekten. Die Kollisionsklassen ermöglichen eine systematische Kollisionserkennung für ein Mehrarm-Robotersystem. " Der Vergleich der Primitiven-Approximationen zeigt, daß der ausschließliche Einsatz der Bounding-Box als Primitiv zu besseren Ergebnissen führt als der Einsatz von mehreren Primitiven wie z. B. in [Adolphs]. Die Verbesserungen betreffen den Aufwand der Abstandsberechnung und die Qualität des Abstandsvektors. " Schon bei wenigen Objekten empfiehlt sich eine hierarchische Darstellung zur Beschleunigung der Kollisionserkennung, da sie zu sehr schnellen Abstandsberechnungen führt. Vor allem bei Szenen mit vielen Objekten ist eine hierarchische Darstellung unverzichtbar. " Durch das neue Konzept der dynamischen Hierarchien ist eine hierarchische Modellierung auch für bewegte Objekte möglich. Die dynamischen Hierarchien garantieren eine optimale Darstellung und ermöglichen eine relativ genaue Modellierung des Roboterarms. Bei der Kollisionserkennung für mehrere Roboterarme ist durch den Einsatz von dynamischen Hierarchien ein Beschleunigungsfaktor von 100 gegenüber dem einfachen Verfahren erreicht worden. Damit ist eine on-line Anwendung möglich. Ausblick Aufbauend auf den hier erzielten Ergebnissen sind folgende Anwendungen denkbar: " Eine on-line Bahnplanung basierend auf den berechneten Abstandsvektoren ist möglich. Von Punkt zu Punkt geplante Bahnen können mit Hilfe der Abstandsvektoren modifiziert und Ausweichtrajektorien generiert werden. " Die Potential-Feld-Methode zur lokalen Bahnplanung kann aufgrund den on-line berechneten Abstandsvektoren angewendet werden. " Auch exakte Abstände können schnell berechnet werden. Diese Abstandsberechnung wird effizient durch die Kombination der dynamischen Hierarchien mit einer A*-Suche. " Die schnelle Abstandsberechnung kann auch für andere Gebiete eingesetzt werden. Beispiele dafür sind der Aufbau von Konfigurations-Räumen oder die Layout-Planung. " Bei zu handhabenden Objekten, wie z. B. Werkstücke, kann das Konzept der Kollisionsklassen einfach um einen dynamischen Wechsel erweitert werden. Dabei wechselt z. B. ein Werkstück, wenn es von dem Arm gegriffen wird, die Klasse.
Die Entwicklung und Wartung von Software-Systemen wird ständig komplexer, da die entwickelte Software selbst immer komplexer und umfangreicher wird. Daher bietet sich zur Entlastung der Projektleiter, Projektmanager und weiterer Projektmitarbeiter eine Rechnerunterstützung der Software-Entwicklung und -wartung an. So können sie einen Überblick über den gesamten Prozess bekommen und diesen optimieren. Eine Möglichkeit der Unterstützung liefert die Modellierung des Software-Entwicklungsprozesses. Um einen Software-Entwicklungsprozess modellieren zu können, müssen die notwendigen Basisstrukturen identifiziert und bereitgestellt werden, was Thema dieser Arbeit ist.
Die Lösung einer Konfigurationsaufgabe innerhalb einer technischen Domäne besteht in der Konstruktion eines komplexen Objektes, das sowohl alle in der Aufgabe gestellten Anforderungen bezüglich seiner Funktionalität erfüllt, als auch den innerhalb der Domäne vorhandenen Restriktionen vollständig genügt. Durch die als bekannt vorausgesetzte Struktur der Anwendungsdomäne wird ein Suchraum aufgespannt, in dem es eine in diesem Sinne korrekte - und wenn möglich besonders gute - Lösung zu finden gilt. Wegen der Grösse des Suchraums wird zu diesem Zweck im allgemeinen ein Verfahren zur Tiefensuche eingesetzt.