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.
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:
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.
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.
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 CodeOft 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.
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.
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
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:
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.
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.
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 |
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.
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.
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).
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.
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.