Einleitung


... [ Seminar "Mobile Agenten" ] ...[ Inhaltsverzeichnis ] ... [ zurück ] ... [ weiter ] ...

Übersicht Einleitung


Abstrakt

Mobile Agenten – Ende der 90er Jahre noch als revolutionäre Softwaredisziplin gefeiert, hat sich in den letzten Jahren vielfach Ernüchterung breit gemacht. Einige Gründe hierfür, sowie Möglichkeiten, wie Mobile Agenten doch die Bedeutung erlangen könnten, werde ich im hinteren Teil dieser Arbeite beleuchten, nicht jedoch ohne vorher die nötigen Grundlagen beleuchtet zu haben.

Hierzu will ich mich in erster Linie auf (die wenigen) vorhandenen Standards (z.B. MAFO) stützten, die im letzten Kapitel dann näher ausgeführt werden.

[ nach oben ]

Was sind Mobile Agenten ?

Der Begriff „Mobiler Agent“ sieht sich glücklicherweise nicht ganz so vielen Definitionsversuchen ausgesetzt, wie es bei dem Begriff eines Software-Agent der Fall ist. Grundsätzlich kann man hier zwei unterschiedliche Ansätze antreffen:

1. Mobiler Agent als Kurzform für „mobiler Software-Agent“, also eine um die Eigenschaft Mobilität erweiterte Softwareentität
2. Mobiler Agent als Form eines Software-Agenten der mobil ist, jedoch dadurch auch geprägt von anderen Eigenschaften oder Ausprägungen ist

Der MAFO-Standard [vgl MAF], die wohl bedeutendste Spezifikation zu diesem Thema, definiert einen Mobilen Agenten nach dem ersten Muster, wonach dieser zunächst ein (Software-)Agent und damit ein „ablauffähiges Programm, welches autonom im Auftrag einer Person oder Organisation handelt“ darstellt und darüber hinaus die Eigenschaft besitzt zwischen verschiedenen Agenten-Systemen – welche die Laufzeitumgebungen des Agenten darstellen, wechseln kann.

Entsprechend ist hier ein Stationärer Agent als Agent zu betrachten, der nur auf einem Agentensystem ausgeführt wird.

In dieser recht kurzen Definition befinden zwei entscheidende Aussagen: 1. Ein Agent handelt immer im Auftrag von jemandem (einer sog. Autorität) und 2. er existiert nur innerhalb eines Agentensystems (AS). In den meisten Fällen wird dieser mit Multiagenten-Systemen (MAS) gleichgesetzt, mehrere Agenten zur gleichen Zeit enthalten können.

Auch wird statt Agentensystem oft der Begriff Umgebung (engl. Environment) verwendet, die jedoch einer abstrakteren Betrachtung zugrunde liegt und auch einen bestimmten Bereich innerhalb eines Agentensystems darstellen.
Die MAFO-Definitionen will ich als Grundlage nehmen, komme jedoch nicht darum, diese nach dem zweiten Muster entsprechend anzupassen. Dies soll im Folgenden anhand der Eigenschaften eines mobilen Agenten geschehen, wie sie von den meisten Autoren in diesem Zusammenhang genannt werden:

[ nach oben ]

Eigenschaften eines Mobilen Agenten

1. Mobilität

Der Agent kann zwischen verschiedenen Agentensystemen wechseln. Man sagt: er migriert auf ein anderes Agentensystem. Hierfür müssen zwei Vorraussetzungen erfüllt sein:
- Der Agent kann als Datenstrom dargestellt werden
- Der Agent kann von der Zielplattform entfangen und interpretiert / ausgeführt werden

2. Autonomität

Der Agent entscheidet selbstständig anhand bestimmter Kriterien über seine nächste Aktion . D.h er arbeitet unabhängig von einer kontrollierenden Instanz (z.B. einem Anwender).

3. Soziale Kompetenz

Der Agent kommuniziert mit anderen Agenten, (Agenten-)Systemen oder auch Menschen. Vorraussetzung hierfür:
- gemeinsame Protokolle
- gemeinsame Ontologien
- gemeinsame Interaktionsvereinbarungen (Sprechakte)

4. Reaktivität

Der Agent reagiert auf Änderungen seiner Umgebung. Hierzu besitzt er Sensoren mit denen er diese wahrnehmen kann (z.B. Temperaturerhöhung) und Regeln die eine bestimmte Aktion (z.B. Heizung anstellen) auslösen, oder den empfangenen Reiz ignorieren.

Proaktivität (Zielorientiertheit)

Agenten reagieren nicht nur auf Reize ihrer Umgebung, sondern besitzen zudem internen Zustand (engl. State) und sind zu zielgerichtetem Planung und Handeln fähig. Man sagt:sie ergreifen die Initiative.

Über diese recht simple Betrachtung von Zustand und Regeln lassen sich zudem weitere Eigenschaften wie Intelligenz oder Persönlichkeit über eine entsprechende Komplexität beider Komponenten, sowie der Beziehungen zwischen ihnen abbilden.

 

6. Persistenz

Der Agent bleibt auch nach einen Umgebungswechsel mitsamt seines Zustandes erhalten, d.h. er wird nicht schlicht kopiert, sondern setzt seine Ausführung innerhalb der neuen Umgebung fort.

Sicherlich ließen sich hier noch weitere Eigenschaften aufzählen die mobile Agenten besitzen können, die innerhalb dieser Betrachtung allerdings weniger Relevanz besitzen.


[ nach oben ]

Abgrenzung zu anderen Softwarepadadigmen


Was Mobile Agenten für die Softwareentwicklung bedeuten, lässt sich am anschaulichsten darstellen, wenn man dieses mit anderen Konzepten (auch: Paradigmen) vergleicht, die gemeinüblich zur Programmierung von Netzwerkanwendungen eingesetzt werden.

Mobiler Code

Hierunter soll jegliche Software verstanden werden, die auf einem entfernten System aufgeführt wird.

Beispiele für Mobilen Code sind:

Mobile Agenten stellen somit eine spezielle Form von Mobilem Code dar.

Bösartiger mobiler Code

Oft werden unter Mobilen Agenten Software-Schädlinge wie Würmer, Viren oder Trojaner verstanden.

Diese stellen bezogen auf die eingangs dargestellte Definition Mobiler Agenten jedoch keinen solchen dar, da diese nicht auf einem Agentensystem aufsetzen. Stattdessen handelt es sich dabei um sogenannten bösartigen Mobilen Code, der hier nicht weiter Beachtung finden soll.

[ nach oben ]

Client-Server (CS)

Hierbei stellt der Client an den Server Anfragen (requests), die dieser ausführt und seinerseits mit entsprechenden Antworten (responses) erwidert. Beide Übertragungen basieren dabei auf ein vom Server vorgegebenem Format (Protokoll).

Abstrahiert kann man sagen, dass hier beim Server die Funktionalität, aber auch der Grossteil des Ressourcenverbrauchs einer Anfrage liegt.

Beispiele: HTTP oder FTP.

[ nach oben ]

Code-on-Demand (CoD)

Anstatt Anfragen vollständig auf der Serverseite zu bearbeiten, dient diese hier lediglich zur Auslieferungen eines Stücks Software an den Client. Der – nun in der Lage dieses zu interpretieren – führt es darauf mit eigenen, lokalen Ressourcen aus.

Der Vorteil neben der Entlastung der Server-Ressourcen, besteht bei diesem Ansatz auch in der Reduzierung der Netzwerkkommunikation, die während der Ausführung der Anwendung sogar gleich null ist.

Beispiel: Java Applets

[ nach oben ]

Remote Evaluation (REV)

Einen etwas anderen und auch komplizierteren Ansatz bietet die Entfernte Ausführung (Remote Evaluation). Der Grundgedanke: Eine Clientanwendung ruft eine Prozedur auf, wobei es für ihn transparent ist, ob diese lokal, oder auf einem entfernten Rechner ausgeführt wird.

Realisiert wird dies durch den Einsatzlokaler Stellvertreter, sogenannter Stubs (engl. für Stummel). Der Client ruft dabei nicht die „echte“ Prozedur auf dem entfernten Rechner, sondern den lokalen Stub dieser Prozedur auf.

Über den Stub wird nun die direkte Netzwerkkommunikation mit dem Stub auf der Gegenseite hergestellt , worüber schließlich die „echte“ Prozedur aufgerufen wird und deren Ergebnisse über den gleichen Weg an den ursprünglichen Aufruf zurückgibt.

Es gibt zahlreiche Implementierungen dieses Konzepts, Beispiele sind RPC, RMI (Java spezifisch), DCOM (W32 spezifisch) und Corba , die diesen Ansatz auf unterschiedliche Weise (teilweise unter Einsatz eines zusätzlichen Namensdienstes) umsetzen.

Grundsätzlich lässt sich jedoch ein Aufruf von drei Methoden (A(),B() und C()) auf allen Implementierungen, immer wir folgt darstellen:

[ nach oben ]

Mobile Agenten (MA)

Bezogen auf die vorgestellten Konzepte, besitzen Mobile Agenten in diesem Kontext teilweise Ähnlichkeiten mit CoD (Code on Demand), nur dass hierbei die Softwareentität eben nicht vom Client abgerufen, sondern von diesem erzeugt und auf den Server zur Verarbeitung übertragen wird.

Die Ressourcen werden somit beim Server verbraucht, während die Funktionalität (jedenfalls theoretisch) vom Client vollständig vorgegeben werden.

Insofern besitzen beide Konzepte (CoD und MA) die gleiche Motivation: den eigenen Ressourcenverbrauch und die Netzwerkbelastung minimal zu halten. Einmal aus Sicht des Servers, einmal aus Sicht des Clients.

[ nach oben ]

Mobile Agenten im Vergleich zu RPCs

Da viele Autoren den Grundgedanken hinter Entwicklung Mobiler Agenten hauptsächlich in der Schaffung einer Alternative zu Remote Procedure Calls (RPCs) sehen, liegt der direkte Vergleich beider Konzepte an dieser Stelle nahe. Der Idee hierhinter war, dass Mobile Agenten durch ihre Architektur, prinzipiell die gleichen Möglichkeiten wie RPCs bieten, dabei jedoch ohne deren Nachteile auskommen. Die da wären:

1. Bandbreite:

Jeder Prozeduraufruf und dessen Antwort vom Server wird über das Netzwerk übertragen. Bei hundert Aufrufen während der Ausführung eines Programms ergäbe sich somit eine beträchtliche Netzwerkbelastung.

Mobile Agenten hingen werden nur einmal versendet und empfangen.

Auf der andren Seite können RPCs bei nur geringer Kommunikation aber auch weitaus effektiver als Mobile Agenten sein (schließlich muss hier kein Agentencode übertragen werden. Strasser und Schwem [Strasser1997] haben dies wie folgt ermittelt:

2. Latenzzeit

Die Dauer zwischen Prozeduraufruf und Antwort liegt bei der lokalen Kommunikation des Mobilen Agenten gewiss deutlich unter der von RPCs, welche gewöhnlich über das Netzwerk erfolgen.

Allerdings kann auch hier ein RPC durchaus lokal oder in räumlicher Nähe zum Client erfolgen, was dann nur noch sehr geringe Unterschiede zu Mobilen Agenten bedeuten würde.

Hingegen wäre für eine beträchtliche Entfernung beider Seiten – etwa wie bei der zwischen Hamburg und Taipeh, RPCs sicherlich eine denkbar ineffektive Variante und Mobilen Agenten klar unterlegen.

3. Ausfallsicherheit

Bei Netzwerkübertragungen besteht stets die Gefahr, dass die übertragene Nachricht nicht oder nur unbrauchbar ankommt.

In beiden Fällen müsste eine entsprechende Funktionalität implementiert (z.B. Timeouts) oder genutzt werden, wodurch ein höherer Aufwand und potenziell längere Übertragungsdauer, bestehen würde. Bei der rein lokalen Kommunikation Mobiler Agenten besteht dieser Nachteil nicht.

[ nach oben ]

Zusammenfassung

Vereinfacht kann man die vorgestellten Konzepte wie folgt voneinander abgrenzen:

 

Ressourcenverbrauch

Funktionalität

CS

Server

Server

CoD

Client

Server

ReV

Server

Client / Server*

MA

Server

Client

* Server gibt die Prozeduren vor

Mobile Agenten muten hier leicht als veridealisierte Disziplin an: Der Client darf Funktionalität der Anwendung selbst vollständig bestimmten, ohne dabei lokale Ressourcen zur Verfügung stellen zu müssen.

Der direkte Vergleich zu RPCs macht jedoch deutlich, dass der zusätzliche Aufwand für die Erstellung eines Mobilen Agenten als Ersatz für ein bestehendes RPC-Konzept, stark vom jeweiligen Szenario abhängt. Sind viele Aufrufe über weiter Entfernung oder ist ein großes Datenaufkommen zu erwarten bieten sich Mobile Agenten an, bei räumlich naher Entfernung beider Seiten oder nur wenig Kommunikation mit geringem Datenaufkommen dagegen sind klassische RPCs wiederum im Vorteil.

Was hier allerdings bisher noch nicht betrachtet wurde, ist die Möglichkeiten Mobiler Agenten gänzlich neue Anwendungsfelder, die für konventionelle Konzepte bisher kaum vorstellbar waren, zu erschließen.

[ nach oben ]

Anwendungsszenarien Mobiler Agenten

1. Intelligente Suche in verteilten Datenbanken

Ein Benutzer Bob möchte eine Internet Recherche betrieben.

Bisher:

Bob fängt bei einem Suchdienst an, wobei er meist nur wenige Worte als Suchanfrage angibt und überfliegt dann die ersten paar Ergebnisse, spezialisiert darauf eventuell seine Anfrage oder wechselt auf die angebotenen Inhalte, wobei er immer wieder Verweisen folgt. Ergebnis: Die Recherche dauert sehr lange, wobei viele relevante Informationen von Bob nicht wahrgenommen werden.

Durch Mobile Agenten:

Bob definiert (etwa durch eine GUI) seine Suchanfrage. Er sagt was er will und in welchem Kontext (z.B. Kohl im Kontext Politik) stehen soll. Er schickt einen Suchagenten auf verschiedene Datenbanken. Trifft der Agent nun auf eine relevante Information (die er durch seine KI selektiert), so speichert er diese. Trifft er auf einen Verweis zu einer weiteren Quelle, klont er sich und schickt seinen Klon zu der angegebenen Ressourcen. Der Klon verfährt genauso, usw..
Die Klone kehren nach einiger Zeit zu ihrem Erschaffer zurück, übergeben ihm die gefundenen Informationen und terminieren. Schließlich tut dies auch der einst von Bob erzeugte Agent, der nun die Information sämtlicher Klone an Bob gibt.

Ergebnis: für die Recherche muss Bob nur seine Suchanfrage formulieren, und erhält sehr umfangreiche Resultate, die er lokale schnell selektieren kann.

2. Überwachung und Steuerung

Ein Agent wird auf ein Börsen System geschickt, überwacht dabei sämtliche Kursverläufe und vollzieht Aktionen entsprechend der ihm mitgegebenen Parameter (z.B. Verkauf wenn Aktie um 0,2 Prozent fällt).

3. Mobile Computing

Bob möchte von unterwegs eine sehr umfangreiche Formel berechnen. Da er in seinem PDA hierfür nicht über die nötigen Ressourcen verfügt, schickt er einen Mobilen Agenten an einen leistungsfähigen Rechner, auf dem er Formel ausrechnen lässt und zusammen mit dem Ergebnis auf den PDA zurückkehrt.

4. Electronic Commerce

Bob möchte eine günstige Reise nach Kuba buchen. Dafür erstellt er einen Shopping Agenten, der zwischen verschiedenen Reise-Anbietern wechselt, die günstigsten Preise ermittelt, eventuell diese sogar bucht und mit den Ergebnissen an Bob zurückkehrt.
Wie problematisch speziell dieser Einsatz ist, soll im Abschnitt zu Sicherheit von Mobilen Agenten, näher dargestellt werden.

Abschließend bleibt hier noch zu sagen, dass bisher keine Killer-Applikation für den Einsatz Mobiler Agenten existieren, die also etwa den Aufbau von weltweiten Agentensystemen ökonomisch rechtfertigen würde. Wie später gezeigt, sprechen auch andere Gründe gegen ein solches Vorhaben.


[ nach oben ]


... [ Seminar "Mobile Agenten" ] ...[ Inhaltsverzeichnis ] ... [ zurück ] ... [ weiter ] ...