Agentenbasierte Softwareentwicklung

Orientierte Konzept, das durch Java vertreten wird, auf der anderen Seite die ... So kommt Java mit ausgebauten und ausgereiften Konzepten zur Verteilung und.
306KB Größe 8 Downloads 371 Ansichten
Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

Seminar Softwareagenten WS 01/02

Agentenbasierte Softwareentwicklung Autor: Theodor Foerster (email: [email protected])

Dozenten: Prof. Lippe & Dr. Lammers

1

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

1. EINFÜHRUNG..................................................................................................................... 3 2. MOTIVATION ..................................................................................................................... 3 3. BEISPIEL.............................................................................................................................. 3 4. GEMEINSAMKEITEN ....................................................................................................... 3 4.1 ANALYSE........................................................................................................................... 4 4.1.1 Bestandteile ............................................................................................................... 4 4.1.2 DATENSTRUKTUREN ....................................................................................................... 5 4.1.3 Algorithmen ............................................................................................................... 6 4.1.4 Systemsicht ................................................................................................................ 7 4.2 ENTWURF .......................................................................................................................... 7 4.2.1 Bestandteile ............................................................................................................... 8 4.2.2 Datenstrukturen......................................................................................................... 8 4.2.3 Algorithmen ............................................................................................................... 8 4.2.4 Systemsicht ................................................................................................................ 8 4.3 IMPLEMENTIERUNG ........................................................................................................... 8 4.4 ASPEKTE............................................................................................................................ 9 5. ENTWICKLUNGSMETHODIK........................................................................................ 9 5.1 BEGRIFFSDEFINITION UND STRUKTURIERUNG FRAMEWORK ............................................. 9 5.2 FRAMEWORK KONKRET ..................................................................................................... 9 5.3 ENTWICKLUNGSMETHODEN ............................................................................................... 9 5.4 AGENTEN & JAVA ........................................................................................................... 10 6. AUSBLICK & FAZIT........................................................................................................ 10

2

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

1. Einführung Bei der Entwicklung eines komplexen verteilten Systems, stellen sich viele Probleme. Aus Gesamtsicht ist eine inhärente Verteilung von Daten, Zuständigkeiten und Leistungsstrukturen erkennbar. Wohingegen aus Komponentensicht eine eingeschränkte Sicht auf das Gesamtsystem und somit auf die anderen Komponenten gegeben ist. Diese schlechte Umgebungssicht, wird durch schlechte Vorhersehbarkeit und hohe Fehlerhaftigkeit der, auf die einzelnen Komponenten einströmenden, Informationen weiter beeinträchtigt. Als weiteres Problem stellt sich das Einbinden bestehender Komponenten heraus. All diese problematischen Eigenschaften, die mit komplexen verteilten Systemen einhergehen, sollen durch ein System von Agenten gelöst werden. Eine entsprechende Methodik zum Entwickeln eines solchen Agentensystems, ist Gegenstand dieses Themas.

2. Motivation Das Ziel ist eine einheitliche Entwicklungsmethodik, womit man verteilte Systeme mit Hilfe von Agenten entwickelt. Diese entwickelte Methodik soll in weiteren Projekten zu einer kürzeren Herstellungszeit führen und Lösungsansätze für gleichartige Probleme liefern. Die vom eingeführten Framework angeführten Vorteile sind vor allem die Widerverwendbarkeit und Modularisierung des Systems I.

3. Beispiel Der an der Humboldt Universität Berlin entwickelte Virtuelle Fußballsimulator diente als Grundlage zur Entwicklung dieses im Weiteren vorgestellten Frameworks. Diese Simulation umfasst zum einen Fußballspieler (organisiert in 2 Teams), die als Agenten implementiert sind, und einen Server, der das Fußballfeld repräsentiert. Der Server kümmert sich um die Umsetzung der Kommandos der Agenten und die Versorgung dieser mit Informationen über die jeweilige Spielumgebung. Um reale Spielverhältnisse zu erhalten wird die Ausdauer der einzelnen Spieler berechnet und Ungenauigkeiten in der Zugausführung auf dem Spielfeld simuliert. Der Spieler wiederum soll aus den erhaltenen Informationen seinen nächsten Spielzug abwägen. Als weiteres kann der Spieler sich mit seinen Teammitgliedern absprechen und so Strategien während des Spiels planan. Auch diese Kommunikation läuft über den Server ab. Dieser Virtuelle Fußballsimulator wurde beim Robocup 98 in Paris Vizeweltmeister in der Simulator League II. Als weitere Ausgangslage dienten ein Assistent zur Nutzung verteilten Know-hows, ein Würfelspiel und ein dezentralisiertes, flexibles Job-Shop-Scheduling.

4. Gemeinsamkeiten Als gemeinsames Merkmal dieser sehr unterschiedlichen Systeme ist der Nachrichtenaustausch zwischen den einzelnen Komponenten zu nennen. Dieser Austausch beeinflusst das Verhalten des Gesamtsystems in erheblichem Maße. Als weitere Gemeinsamkeit ist die Gliederung der einzelnen Komponenten auffällig. So hat jedes System auf alle Fälle ein Kommunikationsmodul, womit es mit anderen Komponenten des Gesamtsystems in Interaktion treten kann oder als Schnittstelle zum Benutzer dienen kann. Im Weiteren werden nun spezielle Konzepte vorgestellt die sich in den drei Phasen (Analyse, Entwurf, Impleme ntierung) der Softwareentwicklung herauskristallisieren.

3

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

4.1 Analyse „Mit Analyse werden alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses bezeichnet, die der Ermittlung, Klärung und Beschreibung der Anforderungen an das System dienen“ III

4.1.1 Bestandteile Bei der Untersuchung der verschiedenen Systeme wurden folgende Komponenten identifiziert: Steuermodul Dieses Modul regelt die Kommunikation zwischen den einzelnen Komponenten. Zusätzlich konfiguriert es den Agenten, indem die einzelnen Bestandteile erzeugt und zusammengeschaltet werden. Das Steuerungsmodul kümmert sich um das Erstellen eines Zeitplans und achtet darauf, dass dieser ausgeführt wird. Der Zeitplan ist Ergebnis eines Entscheidungsalgorithmus, der auf Grund der Wissensbasis, Pläne entwirft. Ein Plan wäre beim Fußballsimulator ein Doppelpass, um den Ball so an den Gegnern vorbeizubringen und am Ende ein Tor zu schießen. Der Vorteil eines solchen zentralen Moduls liegt darin, dass die Komplexität der anderen Komponenten sinkt und damit die Komplexität des Gesamtsystems. Der mit dieser Zentralität einhergehende Nachteil ist der eventuell eintretende Informationsstau am Steuerungsmodul, da alle Komponenten mit Nachrichten versorgt werden müssen und Nachrichten gleichzeitig gegen das Steuerungsmodul schicken. Wissensbasis Die Knowledgebase, in sich dreigeteilt, ist ein wesentlicher Bestandteil des Gesamtsystems, damit auf ihrer Basis Entscheidungen getroffen werden können. In ihr sind die Fähigkeiten und möglichen Handlungsvarianten des Agenten gespeichert. So ist in der Wissensbasis des Fußballagenten vermerkt, dass er eine gewisse Kondition hat und eine verfügbare Restausdauer. Als Handlungsvarianten sind situationsabhängige Abfolgen von Aktionen abgespeichert. Wobei wiederum Aktionen, als Teil der Fähigkeiten, in sich atomar und nicht zerlegbar sind. Als dritten Teil der Wissensbasis sind die Ziele eines Agenten vermerkt. Hinzukommen Spezialinformationen, die von dem jeweiligen zu entwickelnden System abhängen (z.B. spezielle Algorithmen). Interaktionsmodul Das Senden und Empfangen von sowohl Umgebungsinformation als auch Handlungsaufforderungen ist Aufgabe des Interaktionsmoduls. Dabei kann ein Agent mehrere solcher Module besitzen. Als Modul kann es zum einen zur Interaktion mit dem Server und anderen Agenten zum anderen zur Kommunikation mit dem Benutzer agieren (Assistent zur Nutzung verteilten Know- hows). Weitere Aufgaben kann dieses Modul weiterhin übernehmen, jedoch ist dies sehr von der Anwendung abhängig. Ausführungsmodul Als Gegenstück zum Aktorikmodul, was nach außen wirkt, führt das Ausführungsmodul verpflichtende Aktionen innerhalb des Agenten aus. Somit ist die Aktionsauswahl klar von der Aktionsausführung getrennt. Das Ausführungsmodul kann als weiteres ein Aktorikmodul enthalten, wodurch dann die Kommunikation nach außen gewährleistet ist. Zusätzlich enthält es noch eine Parallelisierungsstrategie, wodurch Komponenten parallel mit Informationen versorgt werden können und so gleichzeitig handeln möglich ist. Beispielsweise muss der Assistent zur Nutzung verteilten Know-hows gleichzeitig andere Agenten und den Benutzer mit Informationen versorgen. 4

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster Managementmodul Für Einstellungen an dem Agenten ist das Managementmodul zuständig. Das Modul wickelt auch den korrekten und geordneten Ablauf des Agenten ab.

4.1.2 Datenstrukturen Auf Grund der hohen Anzahl an verschiedenen Strukturen, sind drei beispielhaft erläutert. Das Zusammenspiel von Datenstrukturen und Komponenten eines Agenten ist in Abbildung 1 dargestellt. Umgebungs information Diese Datenstruktur enthält beim Fußballagenten beispielsweise die Spielsituation, die vom Simulator dem Spieler mitgeteilt wurde. Umgebungsinformationen sind im Fall des Fußballbeispiels Zeit- getriggert, was heißt, dass diese Information in einem gewissen Intervallabstand vom Server dem Client neu zu gesandt wird. Als Gegenstück kann sich die Umgebungsinformation auf Grund eines Ereignisses ändern, man spricht dann von änderungsgetriggert (Assistent zur Nutzung verteilten Know- hows). Situation Eine Situation ergibt sich beim Fußballspieler durch die aktuelle Umgebungsinformation vermengt mit alten parallel simulierten Umgebungsinformationen. Dadurch erhält der Agent ein vollständigeres Bild über die gesamte Spielsituation und kann so seine Entscheidungen besser fällen. Plan Ein Plan besteht bei dem Fußballagenten aus einer Abfolge von Aktionen, wobei eine Aktion, wie schon erwähnt, eine atomare, also nicht teilbare Einheit darstellt. Neben diesen an konkreten Beispielen aufgezeigten Datenstruk turen, gibt es noch weitere. Als da wären: Handlungsaufforderung, Aktion, Fähigkeit, Handlungsvariante, Ziel, Verpflichtung, Aktivität.

5

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

Abbildung 1: Beziehung zwischen Komponenten und Datenstrukturen IV

4.1.3 Algorithmen In dem Framework wurden 3 wesentliche Algorithmen spezifiziert. Ein Algorithmus kümmert sich um die Aktualisierung der Umgebungsinformationen. Dieser hat die schon angesprochene Funktionalität, die Situation durch Verschmelzen von alten und neuen Umgebungsinformationen zu berechnen. Dieser Algorithmus wird wie aus Abbildung 2 hervorgeht von der Wissensbasis genutzt. Die Auswahl der nächsten Aktion erfordert auch einen eigenen Algorithmus. Er soll eine Nutzenberechnung aufstellen und daraus einen Plan erstellen. Beim Fußballagenten speziell in Anbetracht der Spielsituation und der eigenen Fähigkeiten einen geeigneten Plan zur Erfüllung des Ziels entwerfen. Als drittes braucht ein Agent eine Ablaufsteuerung mit einer Logik zur möglichen Parallelisierung. Dieser Teil ist im Wesentlichen von der Aktionsauswahl abhängig.

6

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

Abbildung 2: Dynamik der Anwendung der Algorithmen

4.1.4 Systemsicht Obwohl diese Schicht beliebig erweiterbar, werden folgende Komponenten für notwendig gehalten: Adresse Sie dient der Identifikation eines jeden Agenten gegenüber dem Gesamtsystem (Agenten & Simulator). Erst durch diesen Schritt ist es möglich mehrere Akteure gleichzeitig zu unterhalten und doch einzeln anzusprechen. Nachricht Eine Nachricht, enthält Umgebungsinformationen oder Handlungsaufforderungen. Die Bedeutung der Nachricht muss sowohl dem Empfänger als auch dem Sender bekannt sein. Im Fall des Fußballagenten muss der Empfänger einer Nachricht, falls er diese nicht erkennt, verwerfen können. Da der Agent Nachrichten des gegnerischen Teams auffangen kann. Protokoll Dieses enthält die Kommunikationsregeln und definiert eine gewisse Abfolge von Nachrichten. Hinzukommt, dass Protokolle die Rollen der Kommunikationspartner festlegen.

4.2 Entwurf „Entwur fsmuster sind generalisierte Lösungsideen zu immer wiederkehrenden Entwurfsproblemen. Sie sind keine fertig codierten Lösungen, sie beschreiben lediglich den Lösungsweg“ IV

7

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

4.2.1 Bestandteile Beispielhaft für die Komponenten, ist die Wissensbasis nach Abbildung 3 ausgewählt. Dieser Vorschlag der Implementierung spezifiziert nur ein Interface, was heißt, dass die konkrete Implementierungsarbeit noch immer geleistet werden muss. Man kann aber schon die aus Abbildung 1 zuerkennenden Beziehung zwischen der Komponente und den Datenstrukturen erkennen.

Abbildung 3: Wissensbasis Entwurf

4.2.2 Datenstrukturen Auch hier sind nur beispielhaft drei Datenstrukturen aufgeführt. Die Umgebungsinformation besteht aus einer Liste an Paaren mit Attributwerten. Eine Handlungsaufforderung (request) besteht aus einem Parameter, der Priorität und einem einzuhaltenden Endtermin. Die Fähigkeit eines Agenten setzt sich zusammen aus dem Namen, dem Parameternamen und der Bearbeitungsdauer. Die Bearbeitungsdauer bezeichnet die Dauer der Ausführung einer Fähigkeit. Eine an die Fähigkeit geknüpfte Vor- und Nachbedingung, erlaubt eine Aktionsverknüpfung und damit das Erstellen eines Plans.

4.2.3 Algorithmen Bei der Aktualisierung der Umgebungsinformation wird der entsprechende Parameter mit Rücksicht auf die alten Umgebungsinformationen in die Wissensbasis eingearbeitet. Die Auswahl der nächsten Aktion, kümmert sich in dieser konkreteren Phase der Softwareentwicklung um die Berechnung der Verpflichtungen. Eine Verpflichtung umfasst die Aktionen und den jeweiligen Zeitpunkt. Für die Ablaufsteuerung sind Befehle wie stop, run und hold vorgesehen, die dann wenn notwendig von der Ablaufsteuerung an die einzelnen Komponenten geschickt werden können. So muss die Ablaufsteuerung genug Logik besitzen, um Priorität und Grund einer jeden Aktivität zu erkennen.

4.2.4 Systemsicht Aus Systemsicht muss eine Adresse aus Host, port und Identifikationsnummer bestehen. Die an eine bestimmte Adresse gesendet Nachricht setzt sich aus einer Sender- und Empfangsadresse, dem Typ und einem Inhalt zusammen. Dieser Typ kann eventuell Hinweise auf das Protokoll und die Rolle geben. Das Protokoll wird in dieser Phase nicht weitergehend beschrieben.

4.3 Implementierung Bei der Implementierung werden verschiedene Kommunikationstechniken berücksichtigt. So verwendet der Fußballagent UDP, andere Systeme wiederum TCP. Bezüglich des 8

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster Datenschutzes wird die Zuständigkeit dem Kommunikations- oder Ausführungsmodul zugewiesen. Aber auch hier hängt viel von den Anforderungen des jeweiligen Systems ab. Bei der Implementierung sieht man 2 Gruppen an Sprachen vor. Auf der einen Seite das Objekt Orientierte Konzept, das durch Java vertreten wird, auf der anderen Seite die logischen Sprachen, wo Prolog als Vertreter gehandelt wird. Beide Programmiersprachen haben ihre Vorteile. So kommt Java mit ausgebauten und ausgereiften Konzepten zur Verteilung und Kommunikation für Systeme mit genau diesen Anforderungen in Frage. Prolog und damit die Familie der logischen Sprachen, bringt eine bessere Unterstützung von Techniken zur künstlichen Intelligenz mit sich.

4.4 Aspekte Hier soll darauf hingewiesen, dass je nach System die Konzepte teilweise stark von den vorgestellten Konzepten abweichen bzw. um bestimmte Aspekte erweitert werden müssen. Dabei sind Bereiche der Wissensrepräsentation, der Objekt Orientierten Programmierung und der Agententechnik im Ganzen genauer zu betrachten.

5. Entwicklungsmethodik 5.1 Begriffsdefinition und Strukturierung Framework Ein Framework besteht aus einer anpassbaren Menge von abhängigen Klassen. Es dient dazu, entwickelte Abstraktionen von Implementierungsproblemen wieder zu verwenden. Dabei besteht ein Framework aus Konzepten, die gerade schon konkret erklärt wurden, Schnittstellen, Invarianten der Interaktion, Ablaufsteuerung und einer Basis-Implementierung. Ein Framework stellt also eine Makro-Architektur dar, die erst lose und dann starr ist. Die Programmiersprache, an das sich das Framework hängt ist für den Nutzer einer solchen Architektur verbindlich. Jedoch ist im Grunde von den Konzepten her ein Framework quasi auf jede Programmiersprache portierbar. Ein Framework gliedert sich in die Konzeptschicht, die Standardschicht und die Variantenschicht. Diese Schichtung, geht von abstrakt nach konkret bzw. von stabil nach instabil. Die Implementierung kann in jeder Schicht ansetzen.

5.2 Framework konkret Die Komponenten, die Datenstrukturen, die Algorithmen und das Gesamtsystem sind nun in den beiden konkreteren Schichten, Standardschicht und Variantenschicht zu betrachten. Dabei wird der mögliche Einsatz von Kommunikationstechniken (z.B. RMI, Corba) erläutert und für die Algorithmen spezielle Thread-Handlingstrategien betrachtet. Das System soll nach dem Framework um eine GUI verfügen, Analysefunktionen enthalten und das Zusammenspiel mehrer Agenten unterstützen.

5.3 Entwicklungsmethoden Bei der Entwicklungsmethoden gibt es verschiedene Konzepte. Die Auswahl ist sehr vielfältig und macht es so schwer die geeignete Methodik auszuwählen. Sie unterscheiden sich vor allem in der Herangehensweise (bottom- up vs. top-down), im Ausgangspunkt, den eingesetzten Mitteln, der Gewichtung der einzelnen Programmierphasen (Extreme Programming) und der Sichtweise auf Begriffe und Komponenten.

9

Seminar Softwareagenten WS 01/02 – Thema Agentenbasierte Softwareentwicklung Autor: Theodor Foerster

5.4 Agenten & Java Das Framework sieht Java als geeignete Programmiersprache an, obwohl die Vorzüge der Vererbung nicht genutzt werden. Trotzdem existiert noch kein auf Java abgestimmtes Framework.

6. Ausblick & Fazit In der Zukunft muss sich das vorgestellte Framework in Projekten bewähren, das wird auch sicherlich auch eine Umstrukturierung an manchen Stellen nach sich ziehen, jedoch scheint dies mir nicht so das Problem zu sein, da das Framework, wie es sich präsentiert ziemlich flexibel ist. Zusätzlich muss sich zeigen, ob sich die Kombination von Agenten und Java eignet. Am besten anhand eines dafür entwickelten Frameworks. Als Fazit kann man sagen, dass die Entwicklung einer solchen Methodik zum Erstellen eines komplexen verteilten Systems mit Hilfe von Agenten erst sich noch in der Praxis bewähren muss. Ganz ausgeklammert wurde die Phase der Tests, dieser Abschnitt als Teil des Prozesses der Softwareentwicklung scheint mir aber in einem Projekt solcher Komplexität sehr wichtig zu sein. Also müsste das Framework in diese Richtung weiter ausgebaut werden.

Literatur: I

Referat über Frameworks, http://swt.cs.tuberlin.de/~sepradm/ws0001/projekt/verweise/cvsdoc/doc/christom_20010130_02_frameworks_ausarbeitung/fra meworks.pdf , besucht am 15.02.2002 II Official Robocup Site, http://www.robocup.org III B. Oestereich,, Objektorientierte Softwareentwicklung. Oldenbourg 1998 IV R. Kühnel, Agentenbasierte Softwareentwicklung. Addison-Wesley, 2001

10