17.01.2014 Aufrufe

Sonderdruck (PDF) - Institut für Automatisierungs- und ...

Sonderdruck (PDF) - Institut für Automatisierungs- und ...

Sonderdruck (PDF) - Institut für Automatisierungs- und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2003–04<br />

<strong>Automatisierungs</strong>technische<br />

Praxis<br />

Softwareagenten – Einführung <strong>und</strong><br />

Überblick über eine alternative Art<br />

der Softwareentwicklung<br />

<strong>Sonderdruck</strong><br />

Oldenbourg


Universität Stuttgart<br />

<strong>Institut</strong> für <strong>Automatisierungs</strong>- <strong>und</strong> Softwaretechnik<br />

Prof. Dr.-Ing. Dr. h. c. P. Göhner<br />

Agenten in der <strong>Automatisierungs</strong>technik<br />

Liebe Leser,<br />

die Entwicklung von Software für moderne <strong>Automatisierungs</strong>systeme<br />

ist eine beständige Herausforderung für<br />

Ingenieure <strong>und</strong> findet häufig im Spannungsfeld einer<br />

Reihe verschiedenster Anforderungen statt. Dazu gehören<br />

die zunehmende Dezentralisierung <strong>und</strong> komplexere<br />

Abläufe in <strong>Automatisierungs</strong>systemen sowie die Notwendigkeit<br />

zu mehr Flexibilität, Robustheit, Skalierbarkeit,<br />

Anpassbarkeit <strong>und</strong> Integrationsfähigkeit der <strong>Automatisierungs</strong>software.<br />

Um diese Anforderungen zukunftssicher bewältigen zu<br />

können, muss die <strong>Automatisierungs</strong>software flexibel <strong>und</strong><br />

ohne großen Aufwand an Änderungen des <strong>Automatisierungs</strong>systems<br />

oder seiner Umgebung anpassbar sein.<br />

Dabei besteht häufig die Schwierigkeit, die komplexen<br />

Abläufe <strong>und</strong> Verhaltensweisen eines solchen, flexiblen<br />

Systems zu beherrschen. Der Einsatz von Softwareagenten<br />

bietet viel versprechende Möglichkeiten, diesen Herausforderungen<br />

zu begegnen. Dabei handelt es sich um<br />

autonome Softwareeinheiten, die selbstständig innerhalb<br />

ihres Entscheidungsrahmens handeln <strong>und</strong> dabei vorgegebene<br />

Ziele verfolgen. Agenten können miteinander<br />

flexibel interagieren <strong>und</strong> durch Verhandlungen kooperieren,<br />

um ihre individuellen Ziele zu erreichen.<br />

Besonderes Potential beim Einsatz von Softwareagenten<br />

ist überall dort zu erwarten, wo in verteilten Strukturen<br />

lokale Dynamik <strong>und</strong> Selbstständigkeit von Bedeutung<br />

sind <strong>und</strong> zugleich vielfältige, systemübergreifende Abhängigkeiten<br />

zwischen Teilprozessen das Verhalten des<br />

Gesamtssystems wesentlich beeinflussen. Mit Hilfe von<br />

Agenten wird es möglich, die notwendige Flexibilität <strong>und</strong><br />

Anpassungsfähigkeit von <strong>Automatisierungs</strong>systemen<br />

systematisch zu entwerfen. Damit kann der längst fällige<br />

Paradigmenwechsel in der <strong>Automatisierungs</strong>technik vollzogen<br />

werden – weg von hierarchischen, statischen Systemen,<br />

hin zu flexiblen, dezentralen Netzwerken aus<br />

autonomen, kooperierenden Elementen.<br />

In den letzten Jahren haben Agenten in den verschiedensten<br />

Bereichen den Weg in konkrete Anwendungen<br />

gef<strong>und</strong>en, beispielsweise im E-Business, in der Telekommunikation<br />

oder in der Logistik. In der <strong>Automatisierungs</strong>technik<br />

werden die Vorteile agentenorientierter<br />

Systeme bisher noch kaum genutzt. Ein Gr<strong>und</strong> hierfür ist<br />

sicherlich, dass heute noch keine einheitliche Vorstellung<br />

darüber besteht, was Agenten genau ausmacht, <strong>und</strong> wie<br />

agentenorientierte <strong>Automatisierungs</strong>systeme systematisch<br />

entwickelt <strong>und</strong> realisiert werden können.<br />

Das <strong>Institut</strong> für <strong>Automatisierungs</strong>- <strong>und</strong> Softwaretechnik<br />

beschäftigt sich seit einigen Jahren mit dem Einsatz von<br />

Agenten in der <strong>Automatisierungs</strong>technik. Die vorliegende<br />

Beitragsreihe bietet einen Überblick über dieses spannende<br />

Thema. Der erste Teil gibt eine Einführung in die<br />

wesentlichen Merkmale von Agenten, beschreibt die<br />

Vorgehensweise bei der agentenorientierten Softwareentwicklung<br />

<strong>und</strong> zeigt die Vor- <strong>und</strong> Nachteile agentenorientierter<br />

Systeme – insbesondere im Hinblick auf die<br />

<strong>Automatisierungs</strong>technik – auf. Im zweiten Teil wird die<br />

Denk- <strong>und</strong> Vorgehensweise bei der agentenorientierten<br />

Softwareentwicklung an Hand der Modellierung eines<br />

technischen Anwendungsbeispiels veranschaulicht. Der<br />

dritte Teil diskutiert die Möglichkeiten zur Implementierung<br />

von Agentensystemen <strong>und</strong> verdeutlicht diese mit<br />

Hilfe des modellierten technischen Beispiels. Die drei<br />

Beiträge wurden in der atp, Hefte 10/2003, 11/2003 <strong>und</strong><br />

2/2004 veröffentlicht.<br />

Wenn Sie weitere Fragen zu diesem Thema oder zu<br />

den Forschungsarbeiten des <strong>Institut</strong>s für <strong>Automatisierungs</strong>-<br />

<strong>und</strong> Softwaretechnik auf dem Gebiet „Agenten in<br />

der <strong>Automatisierungs</strong>technik“ haben, freuen wir uns über<br />

Ihre Kontaktaufnahme. Sie finden unsere Kontaktadressen<br />

am Ende dieses Sonderheftes.<br />

Herzlichst, Ihr<br />

Prof. Dr.-Ing. Dr. h. c. P. Göhner


3<br />

Softwareagenten – Einführung <strong>und</strong><br />

Überblick über eine alternative Art der<br />

Softwareentwicklung<br />

Thomas Wagner, Paulo G. de A. Urbano <strong>und</strong> Peter Göhner<br />

Universität Stuttgart<br />

Agentenorientierte Softwareentwicklung<br />

Immer häufiger fällt im Zusammenhang mit moderner industrieller Software der Begriff des Agenten. Ob im<br />

Internet, E-Business, Telekommunikation, Logistik <strong>und</strong> teilweise bereits in der <strong>Automatisierungs</strong>technik, Software,<br />

die auf Agenten basiert, scheint die Herauforderungen an moderne Anwendungen besser <strong>und</strong> einfacher<br />

zu bewältigen. Häufig wird bei den vorgestellten Anwendungen aber nicht klar, um was es sich bei dem<br />

Begriff des Softwareagenten eigentlich handelt <strong>und</strong> warum damit Probleme besser gelöst werden sollen.<br />

Handelt es sich hierbei um eine Technologie, eine Architektur oder ein Programmierkonzept? In diesem Artikel<br />

wollen wir eine allgemeine Einführung in das Thema Softwareagenten aus der Sicht des Softwareentwicklers<br />

geben, die theoretischen Gr<strong>und</strong>lagen sowie die praktische Anwendung erläutern <strong>und</strong> verdeutlichen,<br />

bei welchen Problemen Softwareagenten überhaupt einen sinnvollen Lösungsansatz darstellen. Der<br />

Schwerpunkt liegt dabei auf Anwendungen in der <strong>Automatisierungs</strong>technik.<br />

Agent systems in industrial automation: Agent-oriented software engineering<br />

Evermore frequently, the term „agent“ is associated with modern industrial software.Whether in the Internet,<br />

e-business, telecommunications, logistics or even in the industrial automation area, software based on<br />

agents seems to make the challenges in modern applications easier to overcome effectively. However, in a<br />

particular application, it is often unclear what the function of the software agent is and why problems can<br />

be better solved with it. Is it concerning a technology, an architecture or a programming concept? In this article<br />

we intend to present a general introduction to the software agent subject from the software engineer's<br />

perspective, elucidating the theoretical basis in addition to the practical applications and clarifying to which<br />

type of problems software agents could represent a reasonable approach. The main focus therefore lies in<br />

industrial automation applications.<br />

1. Einführung<br />

Der Begriff des (Software-) Agenten existiert seit fast 40 Jahren<br />

in den verschiedensten Ausprägungen. Zunächst wurde<br />

die Idee des Agenten in der Science-Fiction Literatur 1964<br />

von Arthur C. Clarke in seinem Buch 2001 – Odyssee im Weltraum<br />

als künstliches, intelligentes Computerwesen HAL skizziert.<br />

In den achtziger Jahren entwickelte sich ein Forschungs-zweig<br />

der Informatik, der sich mit so genannten<br />

Agentensystemen beschäftigt <strong>und</strong> seinen Schwerpunkt<br />

zunächst im Bereich der künstlichen Intelligenz (KI) hatte.<br />

Hier wurden unter Agenten vorwiegend verteilte Problemlösungsprozesse<br />

verstanden.<br />

In den letzten 15 Jahren haben sich die Agenten 1 <strong>und</strong><br />

Agentensysteme zu einem wichtigen Forschungsbereich<br />

1<br />

Im Folgenden verwenden wir den Begriff Agent stets im Sinne von<br />

Softwareagent. Eine allgemeine Taxonomie des Begriffes Agent findet sich<br />

in [1].<br />

entwickelt. Auch bei industriell eingesetzter Software findet<br />

sich in den letzten Jahren vermehrt der Begriff des Agenten<br />

wieder, ausgehend von der Informationssuche im Internet,<br />

über E-Business <strong>und</strong> Supply Chain Management Systeme bis<br />

hin zu bestimmten Programmen in heutigen Windows-Betriebssystemen.<br />

Vielfach werden Agenten dabei als Mittel<br />

dargestellt, mit dem die Eigenschaften <strong>und</strong> Fähigkeiten von<br />

Software entscheidend verbessert werden können. Dies ist<br />

sicherlich zum einen auf die Tatsache zurückzuführen, dass<br />

sich der Forschungsbereich der Agentensysteme zunehmend<br />

etablieren konnte <strong>und</strong> immer mehr Synergien mit<br />

anderen Forschungsgebieten entstanden. Zum anderen ist<br />

der Begriff des Agenten aber wegen seiner unterschiedlichen<br />

umgangssprachlichen Bedeutung als Handels- <strong>und</strong> als<br />

Geheimagent ein schillernder Begriff, so dass er bestens als<br />

Werbeschlagwort geeignet ist, um alles <strong>und</strong> nichts zu<br />

bezeichnen. Von manchen Softwareherstellern wird heute<br />

selbst ein einfaches Makro als Agent bezeichnet, ohne dass<br />

sich seine Funktionalität dadurch geändert hätte.


4<br />

Es ist ein bekanntes Paradoxon in der Gemeinschaft der<br />

Agentenforscher, dass es trotz umfangreicher Entwicklungen<br />

auf diesem Gebiet bis hin zu real eingesetzten Systemen<br />

kein festgelegtes <strong>und</strong> allgemein akzeptiertes Verständnis<br />

darüber gibt, was ein Agent genau ist <strong>und</strong> welche<br />

gr<strong>und</strong>legenden Eigenschaften diesen Begriff charakterisieren.<br />

Nick Jennings, einer der bekanntesten Pioniere auf dem<br />

Gebiet der Agentenforschung, hat diese Tatsache auf den<br />

Punkt gebracht: „In particular, there is no real agreement<br />

even on the core question of exactly what an agent is.“ [2].<br />

Nach Parunak gibt es fast so viele Definitionen von Agenten<br />

wie Forscher auf diesem Gebiet [3]. Viele dieser Definitionen<br />

sind historisch entstanden <strong>und</strong> beziehen sich meist auf<br />

ein spezifisches Anwendungsgebiet. Beispiele hierfür sind<br />

der AIMA Agent [4], der Maes-Agent [5], der Hayes-Roth-<br />

Agent [6], weitere Beispiele unter [1]. Zwar bestehen die<br />

verschiedenen Definitionen häufig aus ähnlichen Kernbegriffen<br />

wie Autonomie, Reaktivität <strong>und</strong> Zielorientierung,<br />

diese werden aber unterschiedlich ausgelegt <strong>und</strong> gewichtet.<br />

Dieses Paradoxon führt zu einem gr<strong>und</strong>sätzlichen<br />

Dilemma in der Agentenforschung <strong>und</strong> -anwendung: Einerseits<br />

ist es nicht möglich, ohne allgemeine Definition Agentensysteme<br />

(auch: agentenorientierte Softwaresysteme) in<br />

vernünftiger Weise von anderen Arten von Softwaresystemen<br />

abzugrenzen. Andererseits ist es schwierig, ein agentenorientiertes<br />

Softwaresystem zu entwickeln, wenn die charakteristischen<br />

Eigenschaften eines solchen Systems – <strong>und</strong><br />

somit auch die Entwicklungsmethodik – nicht klar sind. Ein<br />

Softwaresystem kann herkömmlich entwickelt <strong>und</strong> auf Basis<br />

einer passenden Definition als Agentensystem bezeichnet<br />

werden. Dies ist sicherlich mit ein Gr<strong>und</strong> für den eingangs<br />

erwähnten Wildwuchs bei der Verwendung der Begriffe<br />

Agent <strong>und</strong> Agentensystem.<br />

Aus der Sicht des Anwenders ist Software stets ein mehr<br />

oder weniger gut funktionierendes Produkt. Aus der Sicht<br />

des Ingenieurs <strong>und</strong> Softwareentwicklers ist aber vielmehr<br />

von wesentlichem Interesse, wie dieses Produkt entsteht,<br />

welche Instrumente <strong>und</strong> Methoden bei seiner Entwicklung<br />

zum Einsatz kommen <strong>und</strong> wie einfach damit die gewünschte<br />

Funktionalität erreicht werden kann. In den letzten Jahren<br />

hat sich daher auch in der Gemeinde der Agentenforscher<br />

die Erkenntnis durchgesetzt, dass die Theorie der Agenten<br />

<strong>und</strong> Agentensysteme für eine breite industrielle Anwendbarkeit<br />

nicht nur aus der Sichtweise der Informatik, sondern<br />

vielmehr aus Sicht der Softwaretechnik betrachtet werden<br />

muss [7, 8].<br />

Eine Ursache für die vielfach bekannten Probleme in der<br />

heutigen Softwareentwicklung ist sicherlich die hohe Komplexität<br />

der Programme. In den letzten drei Jahrzehnten hat<br />

die Softwaretechnik ein zunehmend besseres Verständnis<br />

über die Eigenschaften <strong>und</strong> Zusammenhänge der Komplexität<br />

von Software erreicht. Heute ist es zunehmend anerkannt,<br />

dass Verteiltheit <strong>und</strong> Interaktion wohl die hervorstechendsten<br />

Merkmale komplexer Software sind [9, 10]. Es<br />

zeigt sich, dass aufgr<strong>und</strong> der zunehmenden Vernetzung<br />

zwischen <strong>und</strong> innerhalb von Systemen die meisten realen<br />

Anwendungen genau diese Eigenschaften von Komplexität<br />

aufweisen. Dies gilt für Internet- <strong>und</strong> Officeanwendungen<br />

gleichsam wie für automatisierungstechnische Systeme.<br />

Moderne Softwaresysteme bestehen häufig aus vielen<br />

dynamisch interagierenden Elementen, die getrennt<br />

voneinander ablaufen <strong>und</strong> untereinander in vielfältiger<br />

<strong>und</strong> komplexer Weise kommunizieren. Sie sind jedoch viel<br />

schwieriger zu entwickeln als diejenigen, die mit einer einzelnen<br />

Funktion Eingabewerte in Ausgabewerte überführen.<br />

Daher liegt der Schwerpunkt der Softwaretechnik<br />

zunehmend darin, Instrumente <strong>und</strong> Methoden zu entwickeln,<br />

mit denen diese Systeme besser verstanden, modelliert<br />

<strong>und</strong> implementiert werden können. Die Objektorientierung<br />

ist ein Beispiel dafür.<br />

Im Kontext dieser Entwicklungen kann man Agenten als<br />

neuen Ansatz im Sinne der Softwaretechnik unter zwei<br />

Gesichtspunkten betrachten: als Hilfsmittel für die Softwareentwicklung<br />

<strong>und</strong> als Technologie für die Implementierung<br />

von Softwaresystemen.<br />

1.1 Agenten als Instrument für die<br />

Softwareentwicklung<br />

Die Erfahrungen seit Beginn der Softwaretechnik haben<br />

gezeigt, dass ein Ansatz zur Entwicklung von Softwaresystemen<br />

nicht nur auf die Aspekte der Programmierung<br />

beschränkt sein darf, soll er umfassend für die systematische<br />

Entwicklung von Systemen anwendbar sein. Statt dessen<br />

müssen Hilfsmittel bereit gestellt werden, die den Softwareentwickler<br />

bei allen Schritten des Entwicklungsprozesses<br />

unterstützen – ausgehend von der Analyse der Problemstellung<br />

über den Entwurf des Systems bis hin zu seiner Implementierung.<br />

Das Konzept des Agenten ist ein solches Instrument<br />

für die Entwicklung von komplexen Systemen mit vielfältiger<br />

Funktionalität <strong>und</strong> verteilten, interagierenden<br />

Elementen [11]. Mit Hilfe von Agenten können verteilte Informationen,<br />

Funktionalität <strong>und</strong> Entscheidungsprozesse in<br />

einem Softwarekonstrukt integriert werden. Dieser Aspekt<br />

des Agentenbegriffes wird als agentenorientierte Softwareentwicklung<br />

bezeichnet <strong>und</strong> im ersten Teil des Artikels<br />

behandelt.<br />

1.2 Agenten als Technologie für die<br />

Implementierung<br />

Für die Implementierung eines agentenorientierten Softwareentwurfes<br />

in ein agentenorientiertes Softwaresystem –<br />

als Agentensystem bezeichnet – existieren eine Reihe von<br />

Technologien, welche die agentenorientierten Entwicklungskonzepte<br />

direkt auf Implementierungsebene umsetzen.<br />

Die agentenorientierten Technologien bieten dem Programmierer<br />

eine umfassende Unterstützung für die Implementierung<br />

einzelner Agenten, eines Agentensystems, der<br />

Interaktion von Agenten <strong>und</strong> agenteninternen Abläufen <strong>und</strong><br />

Abläufen zwischen Agenten. Zu diesen Technologien zählen<br />

agentenorientierte Programmiersprachen, Klassenbibliotheken,<br />

Entwicklungsumgebungen, Laufzeitumgebungen,<br />

Agentenarchitekturen. Diese Gesichtspunkte werden zusammen<br />

mit einem Modellierungs- <strong>und</strong> Implementierungsbeispiel<br />

aus der <strong>Automatisierungs</strong>technik in den folgenden<br />

zwei Teilen des Artikels vorgestellt.


5<br />

2. Wie entwickelt man eigentlich<br />

Software?<br />

Ausgangspunkt einer Softwareentwicklung<br />

ist immer eine konkrete Aufgabenstellung<br />

in Form einer Problembeschreibung.<br />

Ist die Aufgabenstellung<br />

klein <strong>und</strong> überschaubar genug, so kann ein Programmierer<br />

möglicherweise die gewünschte Funktionalität direkt in<br />

einer bestimmten Programmiersprache implementieren.<br />

Heutige Aufgabenstellungen sind aber häufig viel zu komplex<br />

<strong>und</strong> umfangreich, als dass sie für eine Einzelperson<br />

überschaubar <strong>und</strong> direkt implementierbar wären [12]. Daneben<br />

können allgemeine Qualitätsmerkmale von Software<br />

wie Robustheit, Änderbarkeit <strong>und</strong> Wiederverwendbarkeit<br />

mit dieser Vorgehensweise nur sehr begrenzt gewährleistet<br />

werden [13]. Vielmehr stellt sich die Frage: Wie muss ein realer<br />

Sachverhalt betrachtet werden, damit sich dessen Merkmale<br />

<strong>und</strong> die gewünschte Funktionalität am Ende im erstellten<br />

Softwaresystem widerspiegeln? Zur Beantwortung dieser<br />

Fragen stellt die Softwaretechnik Gr<strong>und</strong>sätze, Methoden,<br />

Konzepte <strong>und</strong> Notationen für die systematische Entwicklung<br />

von komplexen <strong>und</strong> umfangreichen Softwaresystemen<br />

bereit. Durch die systematische Betrachtung der Aufgabenstellung<br />

entsteht ein Modell 2 davon (siehe Bild 1), das die<br />

Spezifikation von Funktion, Struktur <strong>und</strong> Verhalten des Systems<br />

beinhaltet.<br />

Nach [15, 16] gibt es drei wesentliche Strategien bei der<br />

Softwareentwicklung, um die Komplexität der Aufgabenstellung<br />

zu bewältigen:<br />

Zerlegung (Modularisierung) der Aufgabe in kleinere, überschaubare<br />

Teilbereiche (Systemelemente), die relativ isoliert<br />

voneinander betrachtet werden können. Damit kann<br />

die Komplexität reduziert werden.<br />

Abstraktion der wesentlichen Merkmale des Sachverhalts<br />

<strong>und</strong> Unterdrückung nicht relevanter Eigenschaften.<br />

Dadurch kann das Modell wesentlich vereinfacht werden.<br />

Die Abstraktion ist abhängig vom Standpunkt des<br />

Betrachters, das heißt das gegenwärtige Ziel bestimmt,<br />

welche Merkmale von Bedeutung sind.<br />

Strukturierung (Organisation) durch geeignete Anordnung<br />

der Systemelemente (z. B. Hierarchisierung, Bildung<br />

von Subsystemen) <strong>und</strong> Beschreibung der Beziehungen<br />

zwischen den Systemelementen.<br />

Analyse & Entwurf<br />

Modell<br />

Bild 1: Vorgehensweise bei der Softwareentwickung.<br />

Implementierung<br />

Aufgabenstellung<br />

Softwaresystem<br />

In der Softwaretechnik gibt es eine ganze Reihe von<br />

unterschiedlichen Ansätzen zur Umsetzung dieser Strategien.<br />

Die dabei zum Einsatz kommenden Entwicklungskonzepte<br />

<strong>und</strong> -methoden unterscheiden sich in den Abstraktionsmöglichkeiten<br />

zur Beschreibung einer Systemkomponente<br />

[16]. Bei der Betrachtung eines Sachverhalts gibt es<br />

sehr verschiedene mögliche Blickwinkel, je nach Denkweise<br />

des Betrachters. Diese Tatsache soll allgemein am Beispiel<br />

eines Autos verdeutlicht werden: Ein K<strong>und</strong>e betrachtet das<br />

Auto beispielsweise unter den Gesichtspunkten Geschwindigkeit<br />

<strong>und</strong> Benzinkosten. Der Maschinenbauer betrachtet<br />

unter anderem die Bremsen <strong>und</strong> die Bremskraftverläufe. Der<br />

Elektroingenieur betrachtet das Auto als Netzwerk von Steuergeräten<br />

<strong>und</strong> die Software in den Steuergeräten. Jedem<br />

dieser Blickwinkel liegt eine andere Denkweise zu Gr<strong>und</strong>e,<br />

die unterschiedliche Merkmale des realen Sachverhalts auf<br />

unterschiedliche Weise hervorhebt <strong>und</strong> verschiedene Herangehensweisen<br />

bei der Betrachtung des Sachverhalts zur<br />

Folge hat. Diese Tatsache gilt insbesondere auch für die Entwicklung<br />

von Software. Hier sind mögliche Denkweisen<br />

unter anderem die strukturierte Entwicklung oder die Objektorientierung.<br />

In der Softwaretechnik werden solche Denkmuster, die<br />

dem jeweiligen Blickwinkel <strong>und</strong> der Herangehensweise zu<br />

Gr<strong>und</strong>e liegen, als Paradigma bezeichnet. Das Paradigma<br />

bestimmt die Art <strong>und</strong> Weise, wie ein Sachverhalt abstrahiert<br />

wird. Zu einem Paradigma der Softwaretechnik gehören<br />

Konzepte <strong>und</strong> Methoden. Konzepte bieten Hilfsmittel, auf<br />

deren Basis man einen Sachverhalt analysieren, abstrahieren<br />

<strong>und</strong> beschreiben kann, um ein Modell davon zu entwickeln<br />

[16]. Ein Beispiel ist das Konzept der Kapselung, das benötigte<br />

Daten mit den zugehörigen Operationen assoziiert. Methoden<br />

beschreiben auf Basis der Konzepte eine Vorgehensweise,<br />

mit der ein konkretes Problem am besten gelöst werden<br />

kann.<br />

Auf der Basis dieses Verständnisses der Softwareentwicklung<br />

wird deutlich, dass der Begriff des Agenten nicht nur<br />

eine Zusammenfassung von bestimmten Eigenschaften<br />

eines Softwaresystems sein kann. Russel <strong>und</strong> Norvig [4]<br />

haben dies bereits 1995 angemerkt:„The notion of an agent<br />

is meant to be a tool for analyzing systems, not an absolute<br />

characterization that divides the world into agents and nonagents.“<br />

Agenten sind also eine bestimmte Denk- <strong>und</strong><br />

Herangehensweise bei der Entwicklung von Software. Man<br />

spricht vom Paradigma der agentenorientierten Softwareentwicklung.<br />

2<br />

Ein Modell ist eine idealisierte, vereinfachte [. .] Darstellung eines Gegenstands,<br />

Systems oder sonstigen Weltausschnitts [14].<br />

3. Wie entwickelt man Software<br />

agentenorientiert?<br />

Gegenstand der agentenorientierten Softwareentwicklung<br />

sind Konzepte, Methoden, Vorgehensweisen <strong>und</strong> Werkzeuge<br />

für die Erstellung von agentenorientierter Software. Darunter<br />

versteht man Software, deren Struktur <strong>und</strong> Funktionalität<br />

unter dem Blickwinkel einer Menge von Agenten betrachtet<br />

wird [17]. Dabei wird das Verhalten eines Softwaresystems<br />

durch das Zusammenwirken komplex interagierender, autonomer<br />

Softwareeinheiten beschrieben. Die im vorhergehenden<br />

Abschnitt beschriebenen allgemeinen Strategien bei<br />

der Softwareentwicklung werden bei der agentenorientierten<br />

Softwareentwicklung wie folgt umgesetzt: Die Zerlegung


6<br />

eines Problems erfolgt in autonome Agenten als elementare<br />

Einheiten <strong>und</strong> die Abstraktion basiert auf agentenorientierten<br />

Konzepten. Bemerkenswert ist, dass die Strukturierung<br />

des Systems nicht explizit im Detail vorgegeben wird, sondern<br />

lediglich ein struktureller „Rahmen“ in Form von Organisationsmodellen<br />

festgelegt <strong>und</strong> die Art möglicher Beziehungen<br />

durch Interaktionsmodelle bestimmt wird. Damit<br />

wird eine dynamische Bildung von Strukturen zur Laufzeit<br />

ermöglicht.<br />

Um das Paradigma der agentenorientierten Softwareentwicklung<br />

genauer zu beschreiben <strong>und</strong> zu verstehen, sollen<br />

im Folgenden drei elementare Fragen beantwortet werden:<br />

Konzepte: Welche gr<strong>und</strong>legenden Konzepte stellt die<br />

agentenorientierte Denkweise für die Abstraktion eines<br />

realen Sachverhalts bereit? Diese Konzepte werden in<br />

Abschnitt 3.1 erläutert.<br />

Methoden: Wie sieht die systematische Vorgehensweise<br />

zur Anwendung der agentenorientierten Konzepte bei<br />

der Softwareentwicklung aus? Die Merkmale <strong>und</strong> Vorgehensweisen<br />

von agentenorientierten Methoden werden<br />

in Abschnitt 4 vorgestellt.<br />

Problembereich: Für welche gr<strong>und</strong>sätzlichen Probleme ist<br />

die agentenorientierte Denkweise geeignet? Dieser<br />

Punkt wird in Abschnitt 5 ausgeführt, sowie die Vor- <strong>und</strong><br />

Nachteile der Agentenorientierung diskutiert.<br />

3.1 Agentenorientierte Konzepte<br />

Zur Vorstellung des Ansatzes der agentenorientierten Softwareentwicklung<br />

werden zunächst die Konzepte erläutert,<br />

auf denen der Ansatz basiert. Dazu gehört zuerst das Konzept<br />

des Agenten selbst als zentrales Abstraktionsmittel bei<br />

der agentenorientierten Betrachtung eines Sachverhalts. Die<br />

folgende Definition ist angelehnt an die allgemein anerkannten<br />

<strong>und</strong> verwendeten Definitionen aus [2, 7, 18, 19] (für<br />

eine vergleichbare Definition in deutscher Sprache siehe<br />

[17]):<br />

In der agentenorientierten Softwareentwicklung ist das Konzept<br />

des Agenten eine abgrenzbare Softwareeinheit mit einem<br />

definierten Ziel. Ein Agent versucht, dieses Ziel durch autonomes<br />

Verhalten zu erreichen <strong>und</strong> interagiert dabei kontinuierlich<br />

mit seiner Umgebung <strong>und</strong> anderen Agenten.<br />

In dieser Definition sind die folgenden Gr<strong>und</strong>konzepte der<br />

Agentenorientierung enthalten (Bild 2):<br />

Kapselung: Zustand <strong>und</strong> Verhalten sind in einer Einheit,<br />

dem Agenten, zusammengefasst.<br />

Zielorientierung: Ein Agent orientiert sein Verhalten an<br />

einem bestimmten Ziel, das er zu erreichen versucht. Ziele<br />

können entweder vom Entwickler vorgegeben sein (z. B.<br />

den eigenen Zustand dauernd zu optimieren) oder zur<br />

Ausführungszeit von einem Benutzer in Form eines Auftrages<br />

übertragen werden.<br />

Reaktivität: Reaktivität (Reaktionsfähigkeit) ist die Fähigkeit,<br />

die Umwelt wahrzunehmen <strong>und</strong> darauf angemessen<br />

zu reagieren.<br />

Autonomie: Autonomie bedeutet die Kontrolle über den<br />

internen Zustand <strong>und</strong> das Verhalten. Das heißt zum<br />

einen, dass das Verhalten, mit dem ein Agent auf externe<br />

Stimuli reagiert, im Wesentlichen durch den Agenten<br />

Autonomie<br />

Interaktion<br />

Kapselung<br />

Agent<br />

Persistenz<br />

Bild 2: Die Gr<strong>und</strong>konzepte der Agentenorientierung.<br />

Zielorientierung<br />

Reaktivität,<br />

Proaktivität<br />

selbst bestimmt wird <strong>und</strong> nicht von „außerhalb“ festlegbar<br />

ist. Zum anderen ist Autonomie die Voraussetzung<br />

für Proaktivität.<br />

Proaktivität: Proaktivität bedeutet die Fähigkeit, ohne<br />

direkten Einfluss von außen, zielgerichtet <strong>und</strong> vorausschauend<br />

zu handeln (Eigeninitiative). Voraussetzung für<br />

Proaktivität ist die Existenz von Zielen (siehe Zielorientierung).<br />

Interaktion: Agenten treten untereinander auf hohem<br />

Niveau in Wechselwirkung (z. B. Verhandlungen). Die Basis<br />

für die Interaktionen zwischen Agenten ist ein zu Gr<strong>und</strong>e<br />

liegender organisatorischer Kontext [7]. Agenten interagieren<br />

miteinander, um individuelle Ziele zu erreichen<br />

oder um Abhängigkeiten untereinander zu handhaben.<br />

Persistenz: Ein Agent verfügt über einen fortlaufenden<br />

Kontrollfluss, der unabhängig ist von externer Aktivierung<br />

– also die Fähigkeit, seinen inneren Zustand während seines<br />

Lebenszyklus beizubehalten.<br />

Die Gr<strong>und</strong>konzepte der Agentenorientierung können je<br />

nach Ziel der Softwareentwicklung unterschiedlich stark<br />

ausgeprägt sein, so dass die Agentenartigkeit (engl. Agency)<br />

einer Softwareeinheit nicht zwingend vom Auftreten einer<br />

einzelnen Eigenschaft abhängig ist. Beispielsweise kann<br />

Aktivität im einfachsten Fall die simple Reaktion auf<br />

bestimmte Wahrnehmungen (Eingangssignale) oder – stärker<br />

ausgeprägt – die selbstständige Abarbeitung von Aufgaben<br />

bis hin zur autonomen Anpassung vorgegebener Ziele<br />

bedeuten. Neben diesen Gr<strong>und</strong>konzepten gibt es noch weitere<br />

Konzepte, um spezifische Anforderungen aus einem<br />

bestimmten Anwendungsbereich zu erfüllen. Dazu gehören:<br />

Mobilität: Mobilität ist die Fähigkeit zur Migration von<br />

einem Ort (Ausführungskontext) zu einem anderen –<br />

sowohl räumlich zwischen Plattformen als auch logisch<br />

zwischen Systemen. Sie ist dann erforderlich, wenn der<br />

Agent eine Aufgabe nur sinnvoll an einem bestimmten<br />

Ort lösen kann oder wenn zur Lastverteilung in einem<br />

Netzwerk die Verlagerung eines laufenden Prozesses von<br />

einem Rechner auf einen anderen erforderlich ist. Das<br />

Konzept der Mobilität entstand weitgehend unabhängig,<br />

so dass bei mobilen Agenten andere agentenorientierte<br />

Gr<strong>und</strong>konzepte häufig schwächer ausgeprägt sind [20].<br />

Problemlösendes Verhalten (Anpassungsfähigkeit) <strong>und</strong><br />

Intelligenz (Lernfähigkeit): Unter problemlösendem Verhalten<br />

versteht man die Fähigkeit eines Agenten, sein Verhalten<br />

aufgr<strong>und</strong> von Erfahrungen anzupassen. Ist er darüber<br />

hinaus in der Lage, ein internes Modell seiner Umwelt auf-


7<br />

zubauen, zu verfeinern <strong>und</strong> zu verbessern, spricht man<br />

von Lernfähigkeit bzw. Intelligenz. Intelligente Agenten<br />

für verteiltes Planen <strong>und</strong> Schlussfolgern sind ein wichtiger<br />

Forschungsbereich auf dem Gebiet der künstlichen Intelligenz.<br />

Die dabei zu Gr<strong>und</strong>e liegenden Theorien <strong>und</strong> Modelle,<br />

wie z. B. Wissensrepräsentation, mentale Zustände<br />

<strong>und</strong> Planungsalgorithmen, gehen jedoch über den Fokus<br />

dieses Artikels hinaus <strong>und</strong> werden im Folgenden nicht<br />

weiter betrachtet.<br />

3.2 Agenten im Vergleich zu Objekten <strong>und</strong><br />

Komponenten<br />

Die Verwandtschaft zwischen Agenten <strong>und</strong> Objekten wird<br />

stets intensiv diskutiert. Obwohl es offensichtliche Ähnlichkeiten<br />

zwischen der Objekt- <strong>und</strong> der Agentenorientierung<br />

gibt, sind Agenten dennoch keine Objekte. Dies wird besonders<br />

deutlich am Konzept der Autonomie. Obwohl Objekte<br />

ihre Identität („wer“), ihren Zustand („was“) <strong>und</strong> ihr vorgegebenes,<br />

passives Verhalten („wie, wenn aufgerufen“) kapseln,<br />

so haben sie dennoch keine Kontrolle über ihr Verhalten.<br />

Eine öffentliche Methode eines Objekts kann zu jeder Zeit<br />

aufgerufen werden <strong>und</strong> die festgelegten Aktionen werden<br />

stets ausgeführt. Agenten kapseln dagegen zusätzliche Freiheitsgrade<br />

in ihrer Aktionswahl <strong>und</strong> Interaktion („wann“,„mit<br />

wem“ <strong>und</strong> „ob überhaupt“) [21]. Sie besitzen somit die Autonomie,<br />

eine geforderte Leistung entsprechend ihrer aktuellen<br />

Situation zu erbringen. Bei der Interaktion zwischen<br />

Agenten handelt es sich also vielmehr um die Anfrage eines<br />

Dienstes als um den Aufruf einer Methode. Daneben können<br />

Agenten auch von sich aus aktiv werden. Im übertragenen<br />

Sinn ist ein Objekt vergleichbar mit einem Auto, ein Agent<br />

eher mit einem Taxi. Das Auto kann entweder den Fahrwunsch<br />

des Fahrers erfüllen oder es ist defekt. Ein Taxi ist<br />

nicht immer verfügbar, gegebenenfalls muss der Fahrgast<br />

auf das Taxi warten oder ein anderes Taxi nehmen. Darüber<br />

hinaus nimmt ein Taxi nicht immer den Weg, den der Fahrgast<br />

sich wünscht, sondern meist bestimmt der Taxifahrer<br />

den Weg (manchmal ist er sogar wirklich eine Abkürzung).<br />

Wichtig ist, dass es bei diesem Vergleich zwischen Agenten<br />

<strong>und</strong> Objekten nicht um die Frage<br />

geht, ob autonomes Verhalten mit<br />

objektorientierten Programmiersprachen<br />

implementiert werden kann. Entscheidend<br />

ist, dass in der Objektorientierung<br />

das Konzept der flexiblen Kontrolle<br />

eines Objekts über den Aufruf<br />

einer seiner Methoden nicht existiert.<br />

Komponenten weisen eine stärkere<br />

Kapselung, standardisierte Schnittstel-<br />

3 Eine Methode besteht aus (methodenspezifischen)<br />

Konzepten, Notation <strong>und</strong> methodischer<br />

Vorgehensweise [16].<br />

len, eine größere Granularität <strong>und</strong><br />

damit eine bessere Wiederverwendbarkeit<br />

als Objekte auf. In diesen Punkten<br />

sind Agenten mit Komponenten<br />

vergleichbar, integrieren jedoch zusätzlich<br />

Autonomie, Zielorientierung <strong>und</strong> Proaktivität. Darüber<br />

hinaus werden bei der komponentenbasierten Softwareentwicklung<br />

die Beziehungen zwischen den Systemelementen<br />

im Allgemeinen im Entwurf fest vorgegeben, während dies<br />

bei der agentenorientierten Softwareentwicklung nicht der<br />

Fall ist. Somit weisen Agenten im Vergleich zu Komponenten<br />

mehr Aktivität <strong>und</strong> Flexibilität auf.<br />

4. Agentenorientierte Methoden<br />

Die Aufgabe einer agentenorientierten Methode3 ist es, alle<br />

Phasen der Softwareentwicklung für ein agentenorientiertes<br />

System zu unterstützen, ausgehend von der agentenorientierten<br />

Analyse der Problemstellung über den Entwurf bis<br />

hin zur Implementierung. Obwohl seit eineinhalb Jahrzehnten<br />

umfangreiche Arbeiten im Bereich der Theorie von<br />

Agenten, Architekturen, Kommunikationsmechanismen usw.<br />

durchgeführt wurden, gab es weitaus weniger Entwicklung<br />

im Bereich der Spezifikation <strong>und</strong> Anwendung von Methoden<br />

zur agentenorientierten Entwicklung von Systemen. Das<br />

Fehlen einer umfassend evaluierten Methode einerseits <strong>und</strong><br />

der Unterstützung durch industriell einsetzbare CASE-Werkzeuge<br />

andererseits waren nach Ansicht vieler Autoren die<br />

hauptsächlichen Hemmnisse für den umfassenden Einsatz<br />

agentenorientierter Softwareentwicklung. In den letzten<br />

Jahren ist – aufgr<strong>und</strong> dieser Erkenntnis – die Entwicklung<br />

von Methoden, die speziell die Agentensicht unterstützen,<br />

immer mehr in den Mittelpunkt der Forschungstätigkeit<br />

gerückt. Inzwischen stehen eine Reihe von Entwicklungsmethoden<br />

zur Verfügung, die im Folgenden genauer betrachtet<br />

werden sollen.<br />

Nach [21] lassen sich die verfügbaren Entwicklungsmethoden<br />

nach ihren Ansätzen in drei Gruppen unterteilen:<br />

Erweiterungen von objektorientierten Methoden, Erweiterungen<br />

von Methoden aus dem Knowledge Engineering<br />

<strong>und</strong> Methoden, die auf eine rein agentenspezifische Sicht<br />

ausgelegt sind. Die Vor- <strong>und</strong> Nachteile der unterschiedlichen<br />

Ansätze werden in [22] diskutiert <strong>und</strong> sind in Tabelle 1<br />

zusammengefasst.<br />

Tabelle 1: Bewertung der Ansätze für agentenorientierte Methoden.<br />

Ansatz Vorteile Nachteile<br />

Erweiterungen • Konzeptionelle Gemeinsamkeiten • Spezifische Agentensichtweise<br />

objektorientierter zwischen OO <strong>und</strong> AO muss integriert werden<br />

Methoden (z. B. Kapselung) (z. B. Autonomie, Ziele,<br />

• Einfachere Erlernbarkeit<br />

organisatorische Aspekte)<br />

• Vorhandensein einer statischen • Agenteninteraktion findet<br />

<strong>und</strong> einer dynamischen Modellsicht auf höherer Abstraktionsebene<br />

als Methodenaufruf statt<br />

Erweiterungen von • Mittel zur Modellierung • Betrachtung als zentralisiertes,<br />

Knowledge kognitiver Fähigkeiten von wissensbasiertes System<br />

Engineering (intelligenten) Agenten • Keine Betrachtung der Aspekte<br />

Methoden • Mittel zur Modellierung der Verteilung, Organisation,<br />

Wissensbasis von (intelligenten) Interaktion <strong>und</strong> Zielorientierung<br />

Agenten<br />

Agentenspezifische • Schwerpunkt auf Agentenkonzepte • Hoher Einführungsaufwand<br />

Methoden <strong>und</strong> organisatorische Aspekte • Geringe Werkzeugunterstützung<br />

• Erfahrungen aus der Entwicklung • (Noch) keine Standardisierung<br />

realer Agentensysteme


8<br />

Analyse<br />

Damit die Agentenorientierung sich als eigenständiges<br />

Paradigma der Softwareentwicklung etablieren kann, sind<br />

Entwicklungsmethoden erforderlich, die speziell auf die<br />

agentenorientierten Konzepte angepasst sind [8]. Dabei<br />

stellt sich die Frage, wie eine Problemstellung betrachtet<br />

werden muss, um Konzepte wie Autonomie, Zielorientierung<br />

<strong>und</strong> Proaktivität integrieren zu können. Um dies zu erreichen,<br />

muss der Schwerpunkt einer agentenorientierten<br />

Methode auf den Prozessen <strong>und</strong> Abläufen liegen, die zwischen<br />

Agenten stattfinden [17]. Hierfür sind zusätzliche Analyse-<br />

<strong>und</strong> Entwurfskonzepte zur praktischen Unterstützung<br />

des Entwicklers erforderlich. Sie helfen dabei, eine Problemstellung<br />

so zu abstrahieren, dass ein Modell erstellt werden<br />

kann, das die agentenorientierten Gr<strong>und</strong>konzepte widerspiegelt.<br />

Agentenspezifische Methoden verwenden hierzu<br />

u. a. die Rollenanalyse, Use Cases <strong>und</strong> Zielanalyse. Die Rollenanalyse<br />

ist hierbei eine der wichtigsten Vorgehensweisen.<br />

Rollen leiten sich aus den Verantwortlichkeiten <strong>und</strong> Aufgaben<br />

ab, die eine Einheit innerhalb eines Systems übernimmt<br />

[23]. Die Identifikation von Agenten erfolgt dann über die<br />

Zusammenfassung mehrerer Rollen. Beispielsweise könnte<br />

in einem E-Businesssystem ein Agent sowohl die Rolle „Käufer“<br />

als auch „Anbieter“ wahrnehmen. Durch die aufgabenbetonte<br />

Sicht der Rollenanalyse werden bei der Abstraktion<br />

des realen Sachverhalts wieder mehr die „funktionalen“<br />

Aspekte eines Systems berücksichtigt als dies beispielsweise<br />

in der Objektorientierung der Fall ist (durch den erkennbaren<br />

Bruch zwischen Use Cases <strong>und</strong> Klassenidentifikation).<br />

Neben den unterschiedlichen Ansätzen für Analyse <strong>und</strong><br />

Entwurf unterscheiden sich verfügbare Methoden auch in<br />

der Unterstützung der verschiedenen Phasen im Entwicklungsprozess.<br />

In Bild 3 sind die vier Methoden PASSI, MaSE,<br />

Gaia <strong>und</strong> Agent-UML eingeordnet (siehe auch [24]). Die<br />

genannten Methoden werden im Rahmen dieses <strong>und</strong> des<br />

zweiten Teils des Artikels noch genauer betrachtet.<br />

Im Folgenden werden drei Methoden exemplarisch vorgestellt,<br />

welche die agentenorientierte Sichtweise in den<br />

Mittelpunkt stellen <strong>und</strong> die unserer Einschätzung nach gut<br />

verständlich <strong>und</strong> praktisch anwendbar sind. Alle drei Methoden<br />

werden gegenwärtig am <strong>Institut</strong> für <strong>Automatisierungs</strong><strong>und</strong><br />

Softwaretechnik eingesetzt <strong>und</strong> erprobt.<br />

4.1 Gaia<br />

Gaia<br />

Grobentwurf<br />

Ma SE<br />

PASS I<br />

Agent-UML<br />

Feinentwurf<br />

Implementierung<br />

Bild 3: Abdeckung des Entwicklungsprozesses durch verschiedene<br />

agentenorientierte Methoden.<br />

Die Gaia-Methode [8] wurde von Wooldridge, Jennings <strong>und</strong><br />

Kinny auf Basis ihrer langjährigen Erfahrungen bei der Entwicklung<br />

von Agentensystemen konzipiert. Gaia basiert auf<br />

der Abstraktion eines Agentensystems als ein organisatorisches<br />

Modell, bestehend aus verschiedenen interagierenden<br />

Rollen.<br />

Im Analyseprozess werden zunächst die einzelnen Rollen<br />

im System identifiziert <strong>und</strong> die Interaktionen zwischen diesen<br />

Rollen spezifiziert. Die Beschreibung einer Rolle enthält<br />

die Aufgabe der Rolle, ihre Rechte, Aktivitäten <strong>und</strong> verwendete<br />

Protokolle. In der Spezifikation der Aufgabe einer Rolle<br />

werden die möglichen Reihenfolgen <strong>und</strong> Zusammenhänge<br />

aller Aktivitäten sowie einzuhaltende Sicherheitsbestimmungen<br />

in Form von regulären Ausdrücken formal festgelegt.<br />

Aktivitäten sind interne Abläufe einer Rolle. Protokolle<br />

sind Interaktionsmechanismen, mit denen die Abhängigkeiten<br />

<strong>und</strong> Beziehungen zwischen verschiedenen Rollen<br />

beschrieben werden. In der Entwurfsphase werden Rollen zu<br />

Agententypen zusammengefasst. Weiter werden die möglichen<br />

Kommunikationspfade zwischen Agententypen <strong>und</strong><br />

alle Dienste, die mit jeder Rolle eines Agententyps zusammenhängen,<br />

festgelegt. Als Endergebnis liegt ein Systementwurf<br />

vor, der allerdings für eine Implementierung nicht ausreicht<br />

<strong>und</strong> noch mit anderen Methoden weiter verfeinert<br />

werden muss [25].<br />

Gaia ist leicht verständlich <strong>und</strong> daher gut für einen Einstieg<br />

in die agentenorientierte Softwareentwicklung geeignet.<br />

Eine Einschränkung von Gaia ist, dass die Beziehungen<br />

zwischen Agententypen festgelegt sind <strong>und</strong> sich nicht dynamisch<br />

verändern können.<br />

4.2 MaSE – Multiagent Systems Engineering<br />

Die MaSE-Methode [26, 27, 28] besteht aus sechs Analyse<strong>und</strong><br />

Entwurfsphasen, die eng miteinander verzahnt sind <strong>und</strong><br />

den gesamten Entwicklungszyklus abdecken.<br />

In der ersten Phase, der Zielerfassung, wird die Anforderungsbeschreibung<br />

in detaillierte Systemziele überführt. Die<br />

Systemziele werden nach Wichtigkeit strukturiert <strong>und</strong> in<br />

einem Zielhierarchiediagramm dargestellt (Bild 4 links).<br />

Dann werden die Ziele in Rollen übertragen. Dabei können<br />

Ziele mit hoher Kohäsion in einer Rolle zusammengefasst<br />

werden, oder ein Ziel auf mehrere Rollen aufgeteilt werden.<br />

Im zweiten Schritt werden Use Cases <strong>und</strong> Sequenzdiagramme<br />

verwendet, um die Interaktion der verschiedenen<br />

Rollen bei den einzelnen Anwendungsfällen des Systems zu<br />

ermitteln. In der dritten Phase werden aus den Ergebnissen<br />

der Phasen eins <strong>und</strong> zwei alle Rollen ermittelt, verfeinert <strong>und</strong><br />

gefestigt. Damit ist eine systematische Vorgehensweise zur<br />

Identifikation aller Rollen innerhalb des Systems gewährleistet.<br />

Ein Rollenmodell ist in Bild 4 rechts dargestellt: einzelnen<br />

Rollen (in Rechtecken) wurden die Ziele (durch Nummern)<br />

aus dem Zielhierarchiediagramm zugeordnet. Ovale stellen<br />

die Aufgaben einer Rolle dar <strong>und</strong> Pfeile weisen auf verwendete<br />

Kommunikationsprotokolle hin.<br />

In Phase vier werden Agententypen auf Basis von zusammenhängenden<br />

Rollen sowie die Kommunikationsbeziehungen<br />

zwischen den Agententypen ermittelt. In Phase fünf<br />

werden die Kommunikationsprotokolle auf Basis von<br />

Zustandsdiagrammen spezifiziert. Daneben wird die Architektur<br />

der einzelnen Agententypen erstellt. In der letzten<br />

Phase werden in einem Verteilungsdiagramm die Anzahl, die


9<br />

1. Überwache Pumpsystem<br />

<strong>und</strong> informiere Personal<br />

GrenzwertWächter<br />

1.1.1<br />

Temp.Melder<br />

1.1<br />

1.1 Überwache<br />

Temperatur <strong>und</strong><br />

melde Ereignisse<br />

1.2 Überwache<br />

Druck <strong>und</strong><br />

melde Ereignisse<br />

Ermittle<br />

Temperatur<br />

Prüfe<br />

Bereich Grenzwertüberschreitung<br />

Melde<br />

Ereignis<br />

Bild 4: MaSE Zielhierarchiediagramm<br />

(links) <strong>und</strong> Rollenmodell<br />

(rechts).<br />

1.1.1<br />

Überwache<br />

Grenzwerte<br />

1.1.2<br />

Überwache<br />

Schwankung<br />

1.1.3<br />

Informiere<br />

Personal<br />

…<br />

Personal<br />

Zeige An<br />

Ereignismelder<br />

1.1.3<br />

Informiere<br />

Personal<br />

Ereignismeldung<br />

Klassen <strong>und</strong> die Ausführungsorte der Agenten dargestellt.<br />

Als Endergebnis liegt ein detaillierter Systementwurf vor, der<br />

direkt implementiert werden kann.<br />

MaSE weist eine systematischere Vorgehensweise <strong>und</strong><br />

detailliertere Modellierung als Gaia auf. Die meisten Modelle,<br />

die in den einzelnen Phasen erstellt werden, sind dabei an<br />

die UML angelehnt. Allerdings steht durch die Ziel- <strong>und</strong> Rollenanalyse<br />

die Agentensicht stark im Vordergr<strong>und</strong>. Daher erscheint<br />

MaSE gut für den Einsatz in der Praxis geeignet, auch<br />

weil die Methode durch das Werkzeug agentTool unterstützt<br />

wird, das momentan allerdings nur als Prototyp verfügbar ist<br />

(weitere Informationen unter [29]). Die Einschränkungen bei<br />

MaSE sind ähnlich den Einschränkungen bei Gaia.<br />

4.3 PASSI – Process for Agent Societies<br />

Specification and Implementation<br />

Die PASSI-Methode [30] wurde in den letzten Jahren an der<br />

Universität Palermo entwickelt. Die Methode besteht aus<br />

fünf Entwicklungsphasen mit den jeweiligen Modellen <strong>und</strong><br />

unterstützt eine iterative Vorgehensweise.<br />

Bei PASSI handelt es sich ebenfalls um eine umfassende<br />

<strong>und</strong> detailliert ausgearbeitete Methode, die den gesamten<br />

Softwareentwicklungszyklus bis hin zur Implementierung<br />

abdeckt. Die Notation der einzelnen Modelle basiert auf der<br />

UML Notation, wobei die Modellelemente teilweise eine<br />

andere Bedeutung erhalten. Dies hat den großen Vorteil,<br />

dass für die PASSI-Methode ein Plugin für das UML Modellierungswerkzeug<br />

Rational Rose existiert (unter [31]), mit dem<br />

die verschiedenen Modelle <strong>und</strong> die Codegenerierung weitreichend<br />

unterstützt werden.<br />

Die Identifikation von Agenten erfolgt bei der PASSI<br />

Methode nicht wie bei Gaia <strong>und</strong> MaSE über eine Rollenanalyse,<br />

sondern durch Analyse der Systemfunktionalität mit<br />

Hilfe von Use Cases <strong>und</strong> Gruppierung in einzelne Agenten<br />

(Bild 5). Es ist noch zu evaluieren, ob dadurch agentenorientierte<br />

Aspekte ausreichend unterstützt werden können.<br />

Auch bei PASSI ist die Flexibilität der Beziehungen zwischen<br />

Agenten eingeschränkt.<br />

Generell ist bei den vorgestellten Methoden erkennbar,<br />

dass sie die agentenorientierten Gr<strong>und</strong>konzepte zur Erstellung<br />

flexibler, anpassungsfähiger Systeme noch nicht in vollem<br />

Umfang ausschöpfen. Hier besteht sicherlich noch Forschungsbedarf.<br />

Es muss weiter untersucht werden, welche<br />

Betrachtungs- <strong>und</strong> Vorgehensweisen bei der ingenieurmäßigen<br />

Softwareentwicklung tatsächlich agentenorientierte<br />

Konzepte wie Autonomie geeignet abbilden können. Insbesondere<br />

die Methoden MaSE <strong>und</strong> PASSI weisen jedoch<br />

bereits eine gute Unterstützung des Softwareingenieurs auf,<br />

so dass ein Praxiseinsatz durchaus möglich ist.<br />

Eine kommentierte Literaturübersicht über weitere aktuelle<br />

Methoden der agentenorientierten Softwareentwicklung<br />

findet sich in [21].<br />

5. Für welche Probleme ist agentenorientierte<br />

Softwareentwicklung geeignet?<br />

Bei der agentenorientierten Softwareentwicklung wird eine<br />

Aufgabenstellung in autonome Agenten zerlegt, die flexibel<br />

miteinander interagieren können. Diese Denkweise ist für<br />

bestimmte Arten von Problemstellungen besonders geeignet<br />

<strong>und</strong> sie bringt Vorteile, aber auch Nachteile mit sich. In<br />

diesem Abschnitt soll verdeutlicht werden, wann die Agentenorientierung<br />

allgemein nützlich ist <strong>und</strong> welche Eigenschaften<br />

einer Problemstellung auf eine sinnvolle agentenorientierte<br />

Lösung hinweisen.<br />

Im Allgemeinen sind Agenten am besten geeignet für<br />

Anwendungen, die modular, dezentral, veränderbar, unzureichend<br />

strukturiert <strong>und</strong> komplex sind [3]. Im Folgenden werden<br />

Kategorien von Systemen vorgestellt, denen diese<br />

Eigenschaften zugeordnet werden können. Eine reale<br />

Bild 5: Gruppierung<br />

von Use Cases zu<br />

Agenten bei der<br />

PASSI-Methode.<br />

<br />

HW-Schnittstelle<br />

<br />

<br />

Transportband<br />

Sensoren abfragen Aktoren ansteuern Werkstück transportieren


10<br />

Anwendung kann in eine oder mehrere<br />

dieser Kategorien fallen.<br />

5.1 Kategorien von<br />

Anwendungsbereichen<br />

Konventionell:<br />

Änderungen an einem<br />

Systemelement haben<br />

Auswirkungen auf das<br />

Gesamtsystem<br />

Ausführungssequenz<br />

Agentenorientiert:<br />

Unabhängigeres<br />

Hinzufügen, Entfernen<br />

<strong>und</strong> Ändern von<br />

Systemelementen<br />

5.1.1 Dezentrale, verteilte Systeme<br />

Dezentrale Systeme sind Systeme, die<br />

eine natürliche logische Verteilung aufweisen.<br />

Unter logischer Verteilung sind dabei Anwendungen<br />

zu verstehen, die in abgrenzbare „Prozesse“ aufteilbar sind,<br />

die jeweils unterschiedliche Aufgaben erfüllen. Dies fällt in<br />

vielen Fällen zusammen mit einer physikalischen Verteilung.<br />

Zentrale Ansätze für derartige Systeme bergen die Gefahr zu<br />

hoher Komplexität <strong>und</strong> geringer Flexibilität, Robustheit <strong>und</strong><br />

Änderbarkeit. Dezentrale Systeme weisen zudem meist die<br />

Eigenschaft der Modularität auf. Das heißt sie bestehen aus<br />

natürlich abgrenzbaren Teilen, die einen eigenen unabhängigen<br />

Zustand aufweisen. Beispiel hierfür sind industrielle<br />

Anwendungen im Allgemeinen, da sie häufig von Natur aus<br />

aus einzelnen physikalischen Einheiten (Geräten oder Systemteilen)<br />

bestehen.<br />

Bild 6: Größere Änderbarkeit <strong>und</strong> Wartbarkeit eines Agentensystems [3].<br />

Unter komplexen Systemen sind Systeme im Sinne von komplexen,<br />

variierenden Abläufen oder eines komplexen<br />

Gesamtverhaltens zu verstehen. Dabei wird als Maßstab für<br />

Komplexität die Anzahl von unterschiedlichen Verhaltensweisen<br />

genommen, die ein System beherrschen muss. Nach<br />

[3] wächst die Anzahl möglicher verschiedener Interaktionen<br />

zwischen den Elementen des Systems sehr viel schneller<br />

als die Anzahl der Elemente. Bei einer deterministischen<br />

Lösung wird es schnell schwierig, die Komplexität möglicher<br />

Abläufe zur Entwurfszeit zu beherrschen. Ein agentenorientierter<br />

Ansatz ist dann sinnvoll, wenn eine vollständige Festlegung<br />

des Systemverhaltens als Kette von Einzelschritten<br />

nicht praktikabel ist. Beispiele hierfür sind Roboter, Planungssysteme,<br />

Produktions- <strong>und</strong> Fertigungsautomatisierungssysteme.<br />

5.1.4 Kooperative Systeme<br />

5.1.2 Strukturell veränderbare Systeme<br />

Im Allgemeinen wird beim Softwareentwurf eine Architektur<br />

erstellt, in der beschrieben ist, welche Elemente miteinander<br />

interagieren <strong>und</strong> welche Schnittstellen für diese Interaktionen<br />

verwendet werden. Dies führt dann zu Problemen, wenn<br />

nicht alle möglichen Interaktionen <strong>und</strong> somit die erforderlichen<br />

Beziehungen zwischen den Elementen von vorne herein<br />

spezifizierbar sind. Agenten sind von Natur aus für solche<br />

Systeme geeignet. Beispiele sind Handels- <strong>und</strong> Wirtschaftssysteme,<br />

Transportsysteme, Verkehrssysteme <strong>und</strong> <strong>Automatisierungs</strong>anlagen.<br />

Auch wenn alle verfügbaren Strukturinformationen über<br />

das System zur Entwurfszeit vorhanden sind, sind manche<br />

Systeme während ihres Lebenszyklus besonders starken<br />

Änderungen unterworfen. Das bedeutet, ein ursprünglich<br />

wohlstrukturiertes System kann sich während des Lebenszyklus<br />

in ein unzureichend strukturiertes System verwandeln<br />

[3]. Strukturelle Änderungen während des Lebenszyklus<br />

haben beispielsweise ihre Ursache in einer Änderung der<br />

Anforderungen an das System, Änderung der Randbedingungen<br />

(z. B. eine veränderte Systemhardware), Änderung<br />

der Systemumgebung (z. B. externe Systeme). Deshalb kann<br />

es sinnvoll sein, auch bei ausreichender Verfügbarkeit struktureller<br />

Informationen diese nicht explizit in der Architektur<br />

festzulegen. Dadurch wird eine flexiblere Architektur <strong>und</strong><br />

somit größere Änderbarkeit <strong>und</strong> Wartbarkeit erreicht (siehe<br />

Bild 6).<br />

5.1.3 Komplexe Systeme<br />

Kooperative Systeme bestehen aus dynamisch interagierenden<br />

Elementen, zwischen denen umfangreiche, mannigfaltige<br />

Kommunikations- <strong>und</strong> Koordinationsprozesse erforderlich<br />

sind. Dies ist beispielsweise dann der Fall, wenn innerhalb<br />

des Systems individuelle <strong>und</strong> konfliktträchtige Ziele,<br />

Interessen oder Rechte vorliegen [17]. Dadurch werden<br />

Abstimmung, Verhandlung oder Kooperation notwendig.<br />

Beispiele hierfür sind wiederum Systeme aus dem Wirtschafts-<br />

<strong>und</strong> Handelsbereich, Börsensysteme, Beratungs<strong>und</strong><br />

Informationssysteme.<br />

5.2 Vorteile des agentenorientierten Ansatzes<br />

Sicherlich stellt sich in diesem Zusammenhang die Frage<br />

„Was ist das Besondere an der agentenorientierten Softwareentwicklung,<br />

was macht sie für die genannten Anwendungsbereiche<br />

vorteilhafter als andere Ansätze?“. Die Eignung<br />

eines Softwareparadigmas kann für gewöhnlich nicht<br />

quantitativ belegt werden, es gibt jedoch einige wichtige<br />

qualitative Merkmale.<br />

Betrachtet man die allgemeine Evolution der Denkansätze<br />

in der Softwareentwicklung, so kann die Agentenorientierung<br />

als ein natürlicher nächster Schritt betrachtet werden<br />

[7, 17]. Ausgehend von der maschinennahen monolithischen<br />

Programmentwicklung über die strukturierte <strong>und</strong> die<br />

objektorientierte Entwicklung bis hin zur Agentenorientierung<br />

zeigen sich zwei klare Tendenzen:<br />

Eine zunehmende Verschiebung der konzeptionellen<br />

Basis vom Lösungsbereich (der Rechnerarchitektur) hin<br />

zum Problembereich [7]. Die Agentenorientierung ist eine<br />

konsequente Fortsetzung dieser Tendenz <strong>und</strong> bietet<br />

daher geeignete Hilfsmittel zum Verständnis einer komplexen<br />

Aufgabenstellung.<br />

Eine zunehmende Lokalisierung <strong>und</strong> Kapselung der elementar<br />

notwendigen Entscheidungen zur Laufzeit der


11<br />

Tabelle 1. Zunehmende Lokalisierung [32].<br />

Wie verhält sich eine<br />

(Software-) Einheit?<br />

Monolithisches Strukturierte Objektorientierte Agentenorientierte<br />

Programm Entwicklung Entwicklung Entwicklung<br />

Extern Intern Intern Intern<br />

Welchen Zustand hat eine Einheit? Extern Extern Intern Intern<br />

Wann [<strong>und</strong> warum] läuft eine Extern Extern (Aufruf ) Extern (Nachricht) Intern (Ziele)<br />

Einheit ab?<br />

[Extern (Anfrage)]<br />

Software (Tabelle 2). Agenten vervollständigen diese Entwicklung<br />

durch Lokalisierung des „Zwecks“ einer Einheit<br />

in Form von eigenem Kontrollfluss <strong>und</strong> der Möglichkeit,<br />

das Verhalten selbst auszuwählen.<br />

Die Verteilung von Entscheidungsprozessen in autonome<br />

Softwareeinheiten entspricht häufig eher dem natürlichen<br />

Charakter vieler Systeme <strong>und</strong> führt zu einer geringeren<br />

Kopplung zwischen Systemelementen sowie zu einer<br />

Reduktion „zentraler“ Komplexität. Bei lokalen Problemen<br />

können Entscheidungen an der Stelle gefällt werden, wo die<br />

meiste Information über ein Problem vorliegt. Daneben können<br />

verschiedene Sichtweisen oder gegensätzliche Interessen<br />

der Realität besser im Softwaresystem widergespiegelt<br />

werden.<br />

Ein entscheidender Unterschied des agentenorientierten<br />

Ansatzes zur herkömmlichen Softwareentwicklung ist die<br />

Tatsache, das die Gesamtheit der Systemstruktur <strong>und</strong> des<br />

Systemsverhaltens nicht zwingend zur Entwurfszeit vollständig<br />

spezifiziert werden muss, sondern sich zur Laufzeit auf<br />

Basis der aktuellen Situation dynamisch bildet <strong>und</strong> Interaktionen<br />

flexibel im Rahmen festgelegter Variationen stattfinden<br />

können. Durch eine agentenorientierte Entwicklung<br />

kann die Berücksichtigung der Menge möglicher Abläufe<br />

aus der Entwurfsphase in die Laufzeit verschoben <strong>und</strong> dadurch<br />

die Komplexität des Entwurfes reduziert werden.<br />

Weiter wird auf Basis der abstrakten Interaktionen <strong>und</strong><br />

Kommunikationsprotokolle zwischen Agenten (so genannte<br />

Wissensebene statt Methodenaufruf ) die Integration von<br />

neuen, möglicherweise sogar vorher unbekannten Elementen<br />

zur Laufzeit erleichtert.<br />

Zuletzt sind Agenten Softwareeinheiten mit besonders<br />

„starker“ Kapselung. Deshalb folgt die Agentenorientierung<br />

in besonderem Maße dem allgemeinen Prinzip der Modularisierung<br />

<strong>und</strong> unterstützt somit auch allgemeine Qualitätsmerkmale<br />

von Software wie Robustheit, Skalierbarkeit,<br />

Änderbarkeit, Erweiterbarkeit <strong>und</strong> Wiederverwendbarkeit<br />

[7].<br />

5.3 Nachteile des agentenorientierten Ansatzes<br />

Die Flexibilität des Softwaresystems zur Laufzeit ist ein<br />

bedeutender Vorteil des agentenorientierten Ansatzes.<br />

Gleichzeitig ist dies aber auch ein inhärenter Nachteil aufgr<strong>und</strong><br />

der teilweisen Unvorhersagbarkeit des Verhaltens des<br />

Gesamtsystems zur Laufzeit. Die Verteilung von Entscheidungsprozessen<br />

in autonome Einheiten führt zu einer Variabilität<br />

im Verhalten des Systems, die nicht a priori vorhersagbar<br />

ist. Letztendlich wird dadurch die Komplexität des Systems<br />

aus den Abläufen in den einzelnen Elementen heraus<br />

in die Abläufe der Interaktion zwischen den Elementen verlagert.<br />

Die Struktur <strong>und</strong> das Ergebnis der Interaktionen zwischen<br />

Agenten sind nicht vollständig von vorne herein<br />

absehbar, sondern abhängig vom Zusammenspiel zwischen<br />

dem aktuellen internen Zustand der Agenten, ihrer aktuellen<br />

Umgebung (bzw. der Wahrnehmung derselben) <strong>und</strong> der<br />

aktuellen organisatorischen Struktur [7]. Die gr<strong>und</strong>legende<br />

Erkenntnis, dass das Ganze häufig mehr als die Summe seiner<br />

Einzelteile ist, gilt auch hier. Die bewusste Vermeidung<br />

von Festlegungen zur Entwurfszeit hat die Konsequenz, dass<br />

diese ad hoc zur Laufzeit getroffen werden müssen – <strong>und</strong><br />

dies beschränkt die Vorhersagbarkeit.<br />

In vielen Fällen ist diese Flexibilität zur Laufzeit sicherlich<br />

wünschenswert, beispielsweise um unvorhergesehenen<br />

Situationen dynamisch begegnen zu können. Gerade in<br />

technischen Systemen ist aber ein vorhersagbares Verhalten<br />

<strong>und</strong> die Einhaltung von globalen Anforderungen häufig bis<br />

zu einem gewissen Grad unabdingbar. Es gibt eine Reihe von<br />

Möglichkeiten, die Variabilität des Systemverhaltens in agentenorientierten<br />

Systemen zu beschränken <strong>und</strong> somit unerwünschten<br />

Effekten geeignet zu begegnen. Zum einen<br />

besteht die Möglichkeit, durch globale Beschränkungen in<br />

Form von Agenten übergeordnete Ziele vorzugeben. Zum<br />

anderen können mögliche Interaktionen zwischen Agenten<br />

durch strikte Interaktionsprotokolle sowie durch die Festlegung<br />

<strong>und</strong> Einschränkung möglicher organisatorischer Strukturen<br />

begrenzt werden. Weiter können Interaktionsprotokolle<br />

auch mit formalen Methoden spezifiziert werden, um<br />

somit die Korrektheit des Systems gegenüber bestimmten<br />

Anforderungen formal verifizieren zu können (durch Theorembeweise<br />

oder durch Modelchecking) [33, 34].<br />

6. Zusammenfassung<br />

Agentenorientierte Entwicklung ist eine alternative Art der<br />

Analyse, des Entwurfs <strong>und</strong> der Implementierung von Softwaresystemen.<br />

Dabei wird eine Problemstellung unter den<br />

Gesichtspunkten Autonomie, Interaktion, Zielorientierung,<br />

Reaktivität <strong>und</strong> Proaktivität in einzelne Agenten abstrahiert,<br />

um so z. B. verteilte Informationen, Funktionalität <strong>und</strong> Entscheidungsprozesse<br />

beschreiben zu können. Die agentenorientierte<br />

Softwareentwicklung stellt hierfür Konzepte,<br />

Methoden, Vorgehensweisen <strong>und</strong> Werkzeuge zur Verfügung.<br />

Agentenorientierte Softwareentwicklung ist insbesondere<br />

für Systeme geeignet, die von Natur aus eine logische<br />

Verteilung aufweisen, strukturellen Änderungen zur Laufzeit


12<br />

unterworfen sind, komplexe Abläufe bzw. Verhalten aufweisen<br />

oder umfangreiche Kommunikations- <strong>und</strong> Koordinationsprozesse<br />

erfordern. Auf Basis eines agentenorientierten<br />

Lösungsansatzes können flexible, anpassungsfähige Softwaresysteme<br />

entwickelt werden, welche die Verteilung von<br />

Aufgaben, Ressourcen oder Leistungen sowie verschiedene<br />

Sichtweisen oder gegensätzliche Interessen der realen Problemstellung<br />

im Softwaresystem widerspiegeln.<br />

Damit wird auch deutlich, dass die Agentenorientierung<br />

nicht prinzipiell für beliebige Arten von Problemen besser<br />

geeignet ist als andere Ansätze der Softwareentwicklung.<br />

Balzert hat diese Erkenntnis wie folgt zusammengefasst [16]:<br />

„Die in der Softwaretechnik existierenden Paradigmen sind<br />

nicht voneinander isoliert zu betrachten, sondern ergänzen<br />

sich gegenseitig. Letztendlich muss der Ingenieur entscheiden,<br />

welches Paradigma für welches Problem oder Teilproblem<br />

am besten geeignet ist.“ Es handelt sich hier also nicht<br />

um eine Frage des „Entweder-oder“, sondern vielmehr um<br />

ein „Sowohl-als-auch“. Zum Beispiel impliziert die Agentensicht<br />

quer über alle Phasen der Softwareentwicklung zahlreiche<br />

neue, etwa von der Objektsicht nicht abdeckte Anforderungen<br />

<strong>und</strong> Fragestellungen wie Koordination, Kooperation,<br />

dynamische Organisation <strong>und</strong> verteilte Kontrolle [17]. Die<br />

verschiedenen Perspektiven von Agenten- <strong>und</strong> Objektorientierung<br />

decken unterschiedliche Aspekte des Softwareentwurfs<br />

ab <strong>und</strong> können sich somit sinnvoll ergänzen.<br />

Die Agentenorientierung muss für eine breite industrielle<br />

Anwendbarkeit sicherlich noch weiter entwickelt werden.<br />

Theoretische Gr<strong>und</strong>lagen müssen abgegrenzt <strong>und</strong> f<strong>und</strong>iert<br />

werden, Methoden müssen die Agentensicht noch mehr in<br />

den Vordergr<strong>und</strong> stellen <strong>und</strong> praxistauglicher werden. Dennoch<br />

können agentenorientierte Lösungen heute schon<br />

einen wichtigen Beitrag zur Verbesserung der Situation in<br />

der <strong>Automatisierungs</strong>technik leisten, die geprägt ist durch<br />

zunehmende Heterogenität, zu geringe Flexibilität <strong>und</strong> mangelnde<br />

Integration.<br />

In den folgenden Teilen 2 <strong>und</strong> 3 dieses Artikels wird die<br />

agentenorientierte Softwareentwicklung an einem umfassenden<br />

Beispiel veranschaulicht sowie der interne Aufbau<br />

<strong>und</strong> die Realisierung von Agentensystemen erläutert.


13<br />

Agentensysteme in der <strong>Automatisierungs</strong>technik:<br />

Modellierung eines Anwendungsbeispiels<br />

Das Konzept von Agenten ist die Basis eines neuen Ansatzes für die Entwicklung von verteilten, komplexen<br />

<strong>und</strong> kooperativen Anwendungen, der zunehmend den Weg aus der Theorie in die industrielle Praxis findet.<br />

Auch in der <strong>Automatisierungs</strong>technik können Agenten für eine Vielzahl von Anwendungen hilfreich eingesetzt<br />

werden, z.B. in Produktionssystemen, Verkehrsleitsystemen, im Netzwerk- <strong>und</strong> Energiemanagement<br />

<strong>und</strong> in der Prozessautomatisierung. Autonomie, Interaktion, Reaktivität, Zielorientierung, Proaktivität <strong>und</strong><br />

Persistenz sind die zentralen Elemente des agentenorientierten Ansatzes. Es stellt sich jedoch die Frage, wie<br />

diese Konzepte für die praktische ingenieurmäßige Entwicklung von Software angewendet werden. Die Vorgehensweise<br />

bei der agentenorientierten Modellierung wird im vorliegenden Beitrag anhand eines technischen<br />

Anwendungsbeispiels demonstriert <strong>und</strong> erläutert.<br />

Agent systems in industrial automation: Modeling of an application example<br />

The agent concept is the basis of a new approach to the development of distributed, complex and cooperative<br />

applications, that increasingly finds its way out of theory to the praxis. Agents can also be usefully<br />

employed in a large number of applications in the industrial automation area, e.g. production and traffic<br />

engineering systems, network and energy management, and process automation. Autonomy, interaction,<br />

reactivity, goal-orientation, proactivity and persistence are the key points in the agent oriented approach.<br />

The question can remain about how these concepts could be applied in the practical, systematic development<br />

of software. The procedure in the agent oriented modeling is demonstrated and explained in the present<br />

article.<br />

1. Einführung<br />

Die Entwicklung von Software für moderne <strong>Automatisierungs</strong>systeme<br />

ist eine beständige Herausforderung für Ingenieure.<br />

Heutige <strong>Automatisierungs</strong>systeme stehen häufig im<br />

Spannungsfeld einer Reihe von Anforderungen. Dazu<br />

gehören zunehmende Dezentralisierung <strong>und</strong> komplexere<br />

Abläufe sowie die Notwendigkeit zu mehr Flexibilität,<br />

Robustheit, Skalierbarkeit, Anpassbarkeit <strong>und</strong> Integrationsfähigkeit.<br />

Zur Bewältigung dieser Anforderungen ist es notwendig,<br />

die Struktur der Software flexibel <strong>und</strong> ohne großen Aufwand<br />

an strukturelle Änderungen des <strong>Automatisierungs</strong>systems<br />

anpassen zu können. Daneben besteht häufig die Schwierigkeit,<br />

die komplexen Abläufe <strong>und</strong> Verhaltensweisen eines solchen<br />

Systems zu beherrschen, insbesondere, wenn diese zur<br />

Entwicklungszeit nicht vollständig vorhersagbar sind. Vielfach<br />

muss auch die Integration des <strong>Automatisierungs</strong>systems<br />

mit heterogenen Komponenten <strong>und</strong> externen Systemen<br />

bewerkstelligt werden. Aus diesen Gründen wird die<br />

Softwareentwicklung für <strong>Automatisierungs</strong>systeme immer<br />

komplexer <strong>und</strong> aufwändiger.<br />

Eine Alternative zu herkömmlichen Lösungen ist die<br />

agentenorientierte Softwareentwicklung (AOSE). Dabei wird<br />

ein System als eine Menge von autonomen Agenten<br />

betrachtet, die selbstständig innerhalb ihres Entscheidungsrahmens<br />

handeln <strong>und</strong> dabei vorgegebene Ziele verfolgen.<br />

Agenten können miteinander flexibel interagieren <strong>und</strong><br />

durch Verhandlungen kooperieren, um ihre individuellen<br />

Ziele zu erreichen. In der agentenorientierten Denkweise<br />

wird eine Problemstellung unter den Gesichtspunkten Autonomie,<br />

Interaktion, Reaktivität, Zielorientierung, Proaktivität<br />

<strong>und</strong> Persistenz in einzelne Agenten abstrahiert, um so z.B.<br />

verteilte Informationen, Funktionalität <strong>und</strong> Entscheidungsprozesse<br />

beschreiben zu können. Die agentenorientierte<br />

Softwareentwicklung stellt hierfür Konzepte, Methoden,Vorgehensweisen<br />

<strong>und</strong> Werkzeuge zur Verfügung [1].<br />

Die Agentenorientierung ist insbesondere für Systeme<br />

geeignet, die von Natur aus eine logische Verteilung aufweisen,<br />

strukturellen Änderungen zur Laufzeit unterworfen<br />

sind, komplexe Abläufe bzw. Verhalten aufweisen oder<br />

umfangreiche Kommunikations- <strong>und</strong> Koordinationsprozesse<br />

erfordern. Auf Basis eines agentenorientierten Lösungsansatzes<br />

können flexible, anpassungsfähige Softwaresysteme<br />

entwickelt werden, welche die Verteilung von Aufgaben,<br />

Ressourcen oder Leistungen sowie verschiedene Sichtweisen<br />

oder gegensätzliche Interessen der realen Problemstellung<br />

im Softwaresystem widerspiegeln [1].<br />

Um Software agentenorientiert zu entwickeln, ist eine<br />

gr<strong>und</strong>sätzlich andere Denkweise als bei herkömmlichen<br />

Methoden der Softwareentwicklung erforderlich. Der<br />

Schwerpunkt liegt dabei auf Prozessen <strong>und</strong> Abläufen, die<br />

zwischen den aktiven Elementen des Systems stattfinden. In<br />

diesem Beitrag wird die agentenorientierte Denkweise<br />

zunächst anhand einer Reihe von Beispielen aus der <strong>Automatisierungs</strong>technik<br />

verdeutlicht. Anschließend wird die<br />

systematische Vorgehensweise bei der agentenorientierten<br />

Analyse <strong>und</strong> dem Entwurf für ein technisches Anwendungs-


14<br />

beispiel veranschaulicht. Das Anwendungsbeispiel zeigt, wie<br />

die agentenorientierten Gr<strong>und</strong>konzepte Autonomie, Interaktion,<br />

Reaktivität, Zielorientierung, Proaktivität <strong>und</strong> Persistenz<br />

für die Modellierung einer flexiblen, anpassungsfähigen <strong>und</strong><br />

fehlertoleranten Lösung eingesetzt werden.<br />

2. Anwendungsbeispiele in der<br />

<strong>Automatisierungs</strong>technik<br />

Die folgenden Anwendungsbeispiele aus verschiedenen<br />

Bereichen der <strong>Automatisierungs</strong>technik verdeutlichen, wie<br />

neue Lösungen auf Basis eines agentenorientierten Ansatzes<br />

vorteilhaft zur Bewältigung der Herausforderungen in<br />

technischen Systemen eingesetzt werden können.<br />

2.1 Produktionssysteme<br />

Große Produktionsanlagen werden seit langem in der Industrie<br />

für die Fertigung der unterschiedlichsten Güter eingesetzt.<br />

In einem zunehmend dynamischer werdenden Produktionsumfeld<br />

gibt es bei der Entwicklung von Software<br />

zur Automatisierung dieser Anlagen besondere Herausforderungen<br />

[2, 3]. Heutige Produktionsanlagen sollen beispielsweise<br />

flexibel für verschiedene Produkte oder Fertigungsprozesse<br />

ausgelegt bzw. erweiterbar sein (Stückzahl<strong>und</strong><br />

Variantenflexibilität) <strong>und</strong> hohe Produktivität durch flexiblere<br />

Nutzung <strong>und</strong> Skalierung von Kapazitäten aufweisen.<br />

Daneben sollen sie eine hohe Verfügbarkeit durch Robustheit<br />

gegenüber Fehlern aufweisen. Fehler in einem Teil der<br />

Produktionsanlage sollen nicht automatisch zu einem Produktionsstillstand<br />

führen, sondern die Anlage selbst soll<br />

automatisch ihre Abläufe flexibel anpassen können.<br />

Die Steuerung herkömmlicher Produktionssysteme ist<br />

meist sehr stark planorientiert: Zuerst wird der Produktionsprozess<br />

im Detail geplant, dann werden die einzelnen<br />

Schritte ausgeführt [2]. Die strikte Trennung von Planung<br />

<strong>und</strong> Ausführung führt jedoch zu Unflexibilität <strong>und</strong> Störungsanfälligkeit<br />

im laufenden Betrieb. Beispielsweise führt ein<br />

linearer Ablauf im Fehlerfall in einer Produktionsstation oder<br />

bei Verzögerung eines Bearbeitungsschrittes durch lineare<br />

Fortpflanzung dieses unerwarteten Ereignisses zu einer<br />

geringeren Verfügbarkeit der gesamten Anlage. Ein weiterer<br />

Nachteil liegt in der Notwendigkeit der Modifikation des globalen<br />

Ablaufplans, sobald eine neue Produktvariante gefertigt<br />

werden soll.<br />

Produktionsziele<br />

Aufteilung<br />

Werkstück-Agent Station-Agent Transport-Agent Station-Agent<br />

Lokale Ziele<br />

Ausführung<br />

Überwachung<br />

Lokale Ziele<br />

Ausführung<br />

Überwachung<br />

Lokale Ziele<br />

Ausführung<br />

Überwachung<br />

Bild 1: Agentenorienterter Ansatz für Produktionssysteme.<br />

Ein agentenorientierter Ansatz bietet hier eine dezentrale<br />

Lösung der Ablaufplanung. Produktionsstationen, Werkstücke<br />

<strong>und</strong> Transporteinheiten können durch Agenten<br />

repräsentiert werden:<br />

Produktionsstation-Agenten haben lokales Wissen über<br />

Bearbeitungsgänge, Kapazitäten <strong>und</strong> Auslastungsgrad<br />

ihrer Station, steuern <strong>und</strong> überwachen diese autonom. Ihr<br />

Ziel ist ein hoher Auslastungsgrad.<br />

Ein Werkstück-Agent kennt alle notwendigen Bearbeitungsschritte<br />

des Werkstücks im Rahmen des Fertigungsprozesses<br />

<strong>und</strong> ihre möglichen Reihenfolgen. Ein Ziel des<br />

Werkstück-Agenten ist es, alle Bearbeitungsschritte möglichst<br />

schnell abzuschließen.<br />

Die Agenten der Transporteinheiten bieten Wege zwischen<br />

den Produktionsstationen an <strong>und</strong> kennen ebenfalls<br />

ihren Auslastungsgrad.<br />

Das Gesamtverhalten des Systems ergibt sich dann durch<br />

das dynamische Zusammenspiel der einzelnen Agenten, die<br />

sich über Ausschreibungen <strong>und</strong> Verhandlungen (Bild 1)<br />

abstimmen. Damit ist das System in der Lage, sich entsprechend<br />

der einlaufenden Werkstücke, dem Auslastungsgrad<br />

<strong>und</strong> Fehlerzustand der Anlage selbst zu organisieren. Tritt<br />

beispielsweise eine Verzögerung bei einem Bearbeitungsschritt<br />

auf <strong>und</strong> ein Synchronisierungspunkt kann nicht mehr<br />

erreicht werden, können alle von diesem Synchronisierungspunkt<br />

abhängigen Agenten informiert werden <strong>und</strong> ihre<br />

Abläufe neu koordinieren.<br />

Die Vorteile der Flexibilität einer agentenorientierten<br />

Steuerung können allerdings erst dann voll ausgeschöpft<br />

werden, wenn Entscheidungsalternativen in der realen<br />

Anlage existieren. Alternativen bestehen dort, wo Ressourcen<br />

(Produktionsstationen) mit überlappenden Fähigkeiten<br />

oder parallele Transportwege für Werkstücke vorhanden<br />

sind [2].<br />

Ansätze <strong>und</strong> Projekte zu agentenorientierten Produktionssystemen<br />

werden in [4, 5, 6] präsentiert. Ein Beispiel für<br />

die erfolgreiche industrielle Realisierung wird in [3] vorgestellt.<br />

2.2 Energiemanagement<br />

Wichtige Kriterien des K<strong>und</strong>en beim Kauf eines Automobils<br />

sind Komfort <strong>und</strong> Sicherheit. Durch die Einführung elektronischer<br />

Systeme <strong>und</strong> deren Vernetzung (z.B. mit Feldbussystemen<br />

wie CAN) konnten bestehende Funktionen wesentlich<br />

verbessert <strong>und</strong> neue Funktionen realisiert werden. Beispiele<br />

hierfür sind Kommunikations- <strong>und</strong><br />

Telematikfunktionen, passive Sicherheitssysteme<br />

sowie Komfortsitze.<br />

Die zukünftige Integration von<br />

sicherheitsrelevanten elektronischen<br />

Systemen (z.B. Brake-by-Wire) in Fahrzeugen<br />

erfordert eine zuverlässige<br />

Lokale Ziele<br />

Ausführung<br />

Überwachung<br />

elektrische Energieversorgung dieser<br />

Systeme. Dafür ist ein Energiemanagement<br />

erforderlich, welches die elektrischen<br />

Funktionen im Fahrzeug verwaltet<br />

<strong>und</strong> gegebenenfalls nicht sicher-


15<br />

heitsrelevante Funktionen deaktivieren kann. Es muss zu<br />

jeder Zeit sicherstellen, dass im Idealfall alle, aber vor allem<br />

die sicherheitsrelevanten Systeme im Fahrzeug mit Strom<br />

versorgt werden können. Gleichzeitig soll der Akkumulator<br />

geladen werden, so dass die Wiederstartfähigkeit nach dem<br />

Abstellen des Fahrzeuges gewährleistet ist.<br />

Herkömmliche Energiemanagementsysteme basieren auf<br />

einem zentral organisierten Bordnetzsteuergerät, welches<br />

den Zustand des Generators <strong>und</strong> des Akkumulators erfasst<br />

<strong>und</strong> anhand dieser Informationen je nach Auslastung Verbraucher<br />

ab- oder zuschaltet. Das Bordnetzsteuergerät ist<br />

dabei die zentrale Komponente – in ihm laufen die Informationen<br />

über die vorhandene Energie <strong>und</strong> die Zustände aller<br />

Verbraucher zusammen. Auf der Basis dieser Informationen<br />

werden Verbraucher gemäß einer statischen Prioritätenliste,<br />

in der alle Verbraucher eingeordnet sind, zu- oder abgeschaltet<br />

[7]. Diese zentrale Entscheidungsfindung bringt<br />

eine Reihe von Nachteilen mit sich. Der schwerwiegendste<br />

ist, dass das Bordnetzsteuergerät einen Single Point of Failure<br />

bildet. Es muss deswegen red<strong>und</strong>ant ausgelegt werden,<br />

was mit sehr hohem technischen <strong>und</strong> finanziellen Aufwand<br />

verb<strong>und</strong>en ist.<br />

Im Gegensatz dazu bietet ein agentenorientierter Ansatz<br />

eine Lösung mit dezentraler Entscheidungsfindung. Dabei<br />

wird zusätzlich zum Bordnetzsteuergerät jedes Verbrauchersteuergerät<br />

durch einen autonomen Agenten vertreten. Das<br />

Bordnetzsteuergerät stellt in diesem Falle zwar noch die<br />

aktuellen Informationen über den Zustand der Energieversorgung<br />

bereit, die Entscheidungen über die Aktivierung<br />

<strong>und</strong> Deaktivierung von Verbrauchern werden jedoch nicht<br />

mehr zentral <strong>und</strong> statisch gefällt, sondern sind das dynamische<br />

Ergebnis von Verhandlungen zwischen den verteilten<br />

Agenten. Das elektrische Engergiebordnetz wird dadurch<br />

zum virtuellen Markt, auf dem Energiekontigente verhandelt<br />

werden. Im Fall eines Ausfalles des Bordnetzsteuergerätes<br />

können die Agenten der Verbraucher mit Hilfe der noch vorhandenen<br />

Informationen <strong>und</strong> einer geeigneten Notlaufstrategie<br />

die Verfügbarkeit der elektrischen Energie für sicherheitsrelevante<br />

Funktionen gewährleisten. Damit kann ein<br />

Energiemanagement realisiert werden, das ohne die Notwendigkeit<br />

einer red<strong>und</strong>anten zentralen Entscheidungseinheit<br />

die erforderliche hohe Sicherheit der Energieversorgung<br />

bei gleichzeitiger großer Flexibilität gewährleistet [8].<br />

Zusätzlich wird eine bessere Skalierbarkeit des Systems für<br />

unterschiedliche Verbraucheranzahl <strong>und</strong> somit eine einfache<br />

Anpassung an die verschiedenen Ausführungsvarianten<br />

eines Fahrzeugs ermöglicht.<br />

2.3 Logistik<br />

In der Logistik sind häufig Aufgaben zu bewältigen, bei<br />

denen die Koordination gegensätzlicher Interessen oder verteilter<br />

Ressourcen erforderlich ist. Eine agentenorientierte<br />

Lösung ist hier sehr nahe liegend. Ein Beispiel ist der Personal<br />

Travel Assistant (PTA), der im Rahmen des Projekts MOTIV<br />

entwickelt wurde. Mit dem PTA können mehrere Reisende,<br />

Transportmedien <strong>und</strong> Verkehrsformationen koordiniert werden.<br />

So besteht nicht nur die Möglichkeit, die optimale Reiseroute<br />

zu ermitteln, sondern diese auch dynamisch, z.B. an<br />

die aktuelle Verkehrssituation anzupassen. In einem weiteren<br />

Projekt wurde ein Agentensystem für die Koordination<br />

<strong>und</strong> Führung mobiler Teams entwickelt, wie etwa Wartungsteams<br />

von Telekommunikationsunternehmen oder mobile<br />

Service-Teams des ADAC [9].<br />

Im Rahmen des DFG Schwerpunktprogramms „Intelligente<br />

Softwareagenten <strong>und</strong> betriebswirtschaftliche Anwendungsszenarien“<br />

werden eine Reihe von Themen aus der<br />

Logistik bearbeitet, insbesondere für die Organisation <strong>und</strong><br />

Terminplanung in Krankenhäusern sowie für das Supply<br />

Chain Management.<br />

2.4 Anlagenautomatisierungssysteme<br />

<strong>Automatisierungs</strong>systeme für den Einsatz in industriellen<br />

Anlagen sind komplexe, umfangreiche <strong>und</strong> langlebige Hardware-/Software-Systeme,<br />

deren Eigenschaften stark durch<br />

die zu steuernden technischen Prozesse gekennzeichnet<br />

sind. Die Softwarestrukturen in heutigen industriellen <strong>Automatisierungs</strong>systemen<br />

sind historisch gewachsen <strong>und</strong> zeichnen<br />

sich durch statische hierarchische Strukturen mit klar<br />

getrennten Aufgaben, <strong>Automatisierungs</strong>funktionen <strong>und</strong><br />

Informationsstrukturen aus – die so genannte <strong>Automatisierungs</strong>pyramide.<br />

Heutzutage stehen Anlagenautomatisierungssysteme<br />

jedoch neuen Herausforderungen gegenüber.<br />

Die gewünschte Funktionalität, Flexibilität <strong>und</strong> Verfügbarkeit<br />

der Systeme sowie die Notwendigkeit zur nahtlosen Integration<br />

mit anderen Unternehmensanwendungen (z.B. Warenwirtschaftssysteme)<br />

nimmt beständig zu. Daraus resultieren<br />

neben zunehmenden Kommunikationsanforderungen an<br />

das <strong>Automatisierungs</strong>system auch ein zunehmender Aufwand<br />

beim Engineering <strong>und</strong> Life-Cycle Management des<br />

<strong>Automatisierungs</strong>systems.<br />

Auch wenn dies nicht auf den ersten Blick offensichtlich<br />

erscheint, können agentenorientierte Lösungen durch ihre<br />

Flexibilität in Interaktion <strong>und</strong> Organisation einen ganz<br />

erheblichen Beitrag zur Verbesserung der Situation in der<br />

Anlagenautomatisierung leisten. Die gr<strong>und</strong>sätzlichen Möglichkeiten,<br />

Basisideen <strong>und</strong> Vorteile der Integration von Agenten<br />

in bestehende <strong>Automatisierungs</strong>strukturen werden in<br />

[10] <strong>und</strong> [11] diskutiert. Agenten bieten neue Lösungswege<br />

für effizientes, integriertes Engineering von Anlagen <strong>und</strong> für<br />

die nahtlose Interaktion mit Systemen aus anderen Unternehmensebenen<br />

[12]. Daneben sind Agenten ein viel versprechender<br />

Ansatz für die umfassende Diagnose von Anlagen<br />

durch den integrierten Einsatz verschiedener Diagnoseverfahren<br />

[13].<br />

3. Modellierungsbeispiel einer agentenorientierten<br />

Softwareentwicklung<br />

Nach den Beispielen für agentenorientierte Lösungen in der<br />

<strong>Automatisierungs</strong>technik soll nun die agentenorientierte<br />

Softwareentwicklung an einem umfassenden Modellierungsbeispiel<br />

veranschaulicht werden. Im Folgenden wird<br />

der vollständige Entwicklungsprozess bei agentenorientierter<br />

Analyse <strong>und</strong> Entwurf vorgestellt, zusammen mit Erläuterungen<br />

der wesentlichen Schritte <strong>und</strong> Entwurfsentscheidun-


16<br />

gen. Als Beispielanwendung dient die Steuerung einer Eisenbahn.<br />

Das Hauptziel dieses Anwendungsbeispiels ist, die<br />

praktische Anwendung der agentenorientierten Denkweise<br />

<strong>und</strong> Konzepte bei der Entwicklung eines Softwaresystems zu<br />

veranschaulichen, sowie diejenigen spezifischen Merkmale<br />

der Agentenorientierung herauszuarbeiten, die hier zu einer<br />

sinnvollen Lösung führen.<br />

3.1 Der Modellprozess Eisenbahn<br />

Der Modellprozess Eisenbahn wird am <strong>Institut</strong> für <strong>Automatisierungs</strong>-<br />

<strong>und</strong> Softwaretechnik (IAS) in Lehre <strong>und</strong> Forschung<br />

eingesetzt. In der Lehre dient die Eisenbahnanlage als Versuchsanlage<br />

für die internetbasierte Fernsteuerung eines<br />

technischen Prozesses. Die Fernsteuerung wird im Rahmen<br />

eines Online-Praktikumversuches im Fachpraktikum <strong>Automatisierungs</strong>technik<br />

eingesetzt. Daneben wird die Eisenbahnanlage<br />

als Demonstrations- <strong>und</strong> Versuchsmodell für<br />

das Forschungsgebiet „Agenten in der <strong>Automatisierungs</strong>technik“<br />

genutzt. Sie dient als anschauliches Beispiel eines<br />

<strong>Automatisierungs</strong>systems, das mit agentenorientierter Software<br />

gesteuert <strong>und</strong> überwacht werden kann.<br />

3.2 Aufgabenstellung<br />

Für unser Beispiel verwenden wir einen Ausschnitt der Eisenbahnanlage,<br />

bestehend aus den drei Bahnhöfen Stadtbahnhof,<br />

Landbahnhof <strong>und</strong> Hafenbahnhof. Zwischen Stadtbahnhof<br />

<strong>und</strong> Landbahnhof bestehen drei Gleisverbindungen <strong>und</strong><br />

zwischen Hafenbahnhof <strong>und</strong> Stadtbahnhof eine (Bild 2). In<br />

einem Betriebswerk können nicht benötigte oder defekte<br />

Züge abgestellt werden (Bild 2 rechts unten).<br />

3.3 Anforderungen an die Steuerung<br />

L<br />

K<br />

Landbahnhof<br />

= 60 Plätze (2x)<br />

= 30 Plätze (3x)<br />

S1<br />

Hafenbahnhof<br />

S2<br />

Stadtbahnhof<br />

18 min.<br />

360 Personen/St<strong>und</strong>e<br />

Bild 2: Schematische Darstellung der Eisenbahn.<br />

8 min.<br />

180 P./Std.<br />

Für die dargestellte Eisenbahnanlage soll ein Transportsystem<br />

mit folgenden Anforderungen realisiert werden:<br />

Die Bahnhöfe sind durch verschiedene S-Bahnlinien miteinander<br />

verb<strong>und</strong>en. Zwischen dem Stadt- <strong>und</strong> dem Landbahnhof<br />

verkehrt die S-Bahnlinie S1. Eine Anforderung an<br />

die Linie ist, dass jede St<strong>und</strong>e 360 Fahrplätze zur Verfügung<br />

stehen (180 von Land nach Stadt <strong>und</strong> 180 in die Gegenrichtung).<br />

Der zeitliche Abstand zwischen aufeinander folgenden<br />

Fahrten soll gleich groß sein <strong>und</strong> die Wartezeiten der<br />

Fahrgäste für Anschlusszüge sollen minimiert werden.<br />

Eine zweite S-Bahnlinie S2 verbindet den Stadtbahnhof<br />

mit dem Hafenbahnhof. Hier besteht die Anforderung, zu<br />

jeder St<strong>und</strong>e 180 Fahrplätze (90 von Stadt nach Hafen <strong>und</strong><br />

90 in die Gegenrichtung) anzubieten. In gleicher Weise wie<br />

bei S1 sollen die zeitlichen Abstände zwischen Fahrten<br />

gleich lang <strong>und</strong> Wartezeiten möglichst gering sein.<br />

Im Rahmen des Beispiels nehmen wir an, dass ein Zug<br />

unabhängig von seiner Länge 18 Minuten benötigt, um die<br />

Strecke zwischen Land <strong>und</strong> Stadt zurückzulegen <strong>und</strong> 8<br />

Minuten für die Strecke zwischen Stadt <strong>und</strong> Hafen. Für den<br />

Fahrbetrieb stehen folgende Züge zur Verfügung: Drei kurze<br />

Züge K1, K2 <strong>und</strong> K3, mit einer Kapazität von jeweils 30 Personen<br />

<strong>und</strong> zwei lange Züge, L1 <strong>und</strong> L2, mit einer Kapazität von<br />

je 60 Personen.<br />

Die Elemente der Eisenbahn mit sicherheitskritischen<br />

Anforderungen sind Streckenabschnitte <strong>und</strong> Weichen. Es<br />

muss sichergestellt werden, dass nicht zwei Züge gleichzeitig<br />

eine Strecke befahren. Deshalb müssen alle Streckenelemente<br />

(Streckenabschnitte <strong>und</strong> Weichen) vom Zug reserviert<br />

werden, damit ein exklusiver Zugriff gewährleistet ist.<br />

Basierend auf diesen exemplarischen Anforderungen soll<br />

eine automatisierte Steuerung des Fahrbetriebs der Eisenbahn<br />

entwickelt werden. Die Komplexität einer solchen<br />

Steuerung mit automatischer Streckenvergabe <strong>und</strong> Fahrplanverwaltung<br />

wird bereits in diesem einfachen Beispiel<br />

schnell ersichtlich. Während des Betriebes können im<br />

Wesentlichen drei unerwartete Fehlersituationen auftreten,<br />

auf welche die Steuerung dynamisch reagieren muss, um<br />

eine möglichst optimale Verfügbarkeit zu gewährleisten:<br />

Ein Zug hat Verspätung: Diese allen Bahnfahrern nur zu gut<br />

bekannte Situation muss im System propagiert <strong>und</strong> flexibel<br />

gehandhabt werden, um Anschlussverbindungen<br />

möglichst aufrecht zu erhalten.<br />

Ein Zug fällt aus: Andere Züge müssen neu dispositioniert<br />

werden, um die Transportkapazität einer Verbindung<br />

möglichst aufrecht zu erhalten; gegebenenfalls<br />

müssen Fahrpläne angepasst werden.<br />

Eine Strecke fällt aus: Hier muss – falls Ersatzstrecken zur<br />

Verfügung stehen – gleichfalls eine Neudisposition von<br />

Zügen erfolgen <strong>und</strong> evtl. Fahrpläne<br />

angepasst werden.<br />

Die Steuerung muss in der Lage sein,<br />

auf alle möglichen Kombinationen dieser<br />

Fehlersituationen so zu reagieren,<br />

dass zum einen die oben genannten<br />

Anforderungen an die Transportkapazität<br />

einer Verbindung möglichst optimal<br />

erfüllt <strong>und</strong> zum anderen die verfügbaren<br />

Ressourcen des Systems<br />

(Züge <strong>und</strong> Streckenelemente) bestmöglich<br />

verteilt werden.<br />

Es ist leicht ersichtlich, dass die<br />

Gesamtheit der Situationen, die<br />

während des Betriebs auftreten können,<br />

nicht vorhersagbar ist. Somit kann


17<br />

die optimale Auflösung einer bestimmten Fehlersituation<br />

nicht zur Entwurfszeit vollständig bestimmt werden. Durch<br />

einen agentenorientierten Ansatz kann eine Steuerung für<br />

die Eisenbahn entwickelt werden, die auf Basis einiger elementarer<br />

Strukturen, Mechanismen <strong>und</strong> Regeln zur Laufzeit<br />

dynamisch das der jeweiligen Situation angemessene Verhalten<br />

aufweist. Diese Basisstruktur des Systems wird im<br />

Rahmen der folgenden agentenorientierten Analyse <strong>und</strong><br />

des Entwurfs ermittelt <strong>und</strong> festgelegt.<br />

3.4 Agentenorientierte Analyse <strong>und</strong> Entwurf<br />

Für die Analyse <strong>und</strong> den Entwurf der Steuerung verwenden<br />

wir hier die agentenorientierte Methode Gaia [14]. Bei Gaia<br />

werden in der Analysephase ein Rollenmodell <strong>und</strong> ein Interaktionsmodell<br />

ermittelt. In der Entwurfsphase werden ein<br />

Agentenmodell <strong>und</strong> ein Organisationsmodell 1 erstellt. Jedes<br />

dieser Modelle werden wir für unser Beispiel systematisch<br />

entwickeln <strong>und</strong> beschreiben.<br />

3.4.1 Rollenmodell<br />

In der Analysephase betrachten wir zunächst das System<br />

"von außen", um seine Funktionen <strong>und</strong> Zusammenhänge zu<br />

ermitteln. Zu diesem Zweck identifiziert im ersten Schritt die<br />

Rollenanalyse die Verantwortlichkeiten <strong>und</strong> die Aufgaben,<br />

die durch das System gehandhabt werden müssen. Später<br />

werden diese identifizierten Rollen im laufenden System<br />

durch Agenten übernommen. Ein Agent kann während seines<br />

Lebenszyklus unterschiedliche Rollen übernehmen bzw.<br />

eine einzelne Rolle kann auch von mehreren Agenten wahrgenommen<br />

werden. Aufgr<strong>und</strong> dieser Durchgängigkeit des<br />

Rollenkonzeptes über den gesamten Entwicklungsprozess<br />

wird die Entwicklung eines Systems unterstützt, in dem sich<br />

die ursprünglich erkannten Aufgaben <strong>und</strong> Verantwortlichkeiten<br />

auch tatsächlich wieder finden. Bei Gaia wird eine textuelle<br />

Beschreibung einer Rolle verwendet, die folgende Elemente<br />

umfasst:<br />

Protokolle <strong>und</strong> Aktivitäten (Protocols and Activities) – Protokolle<br />

legen fest, wie verschiedene Rollen miteinander<br />

interagieren; Aktivitäten sind Aufgaben, die von einer<br />

Rolle ohne Interaktion erledigt werden. Zum Beispiel<br />

muss ein Zug mit einem Streckenabschnitt interagieren,<br />

um die Erlaubnis zu bekommen, diesen befahren zu dürfen.<br />

Seinen eigenen Fahrplan kann er ohne jegliche Interaktion<br />

ändern.<br />

Rechte (Permissions) – Hier werden die Rechte zum Lesen,<br />

Ändern <strong>und</strong> Erzeugen von Datenelementen spezifiziert.<br />

Wie hier bereits zu erkennen ist, besteht ein agentenorientiertes<br />

System nicht ausschließlich aus Agenten. Passive<br />

Elemente, wie Datenspeicher, müssen nicht als Agenten<br />

modelliert werden. Ein Beispiel für solche Elemente<br />

bei der Eisenbahn sind die Fahrpläne der Züge.<br />

Verantwortlichkeiten (Responsibilities) – Verantwortlichkeiten<br />

werden in zwei Kategorien unterteilt: Lebendigkeit<br />

(Liveness) <strong>und</strong> Sicherheit (Safety). Liveness beschreibt die<br />

Reihenfolge der Aufgaben, die von der Rolle realisiert<br />

werden müssen. Sie setzen sich aus den im ersten Bereich<br />

beschriebenen Protokollen <strong>und</strong> Aktivitäten zusammen.<br />

Safety sind Bedingungen (Invarianten), die eingehalten<br />

werden müssen, um unerwünschte oder sogar gefährliche<br />

Situationen zu vermeiden. Zur Vereinfachung haben<br />

wir die Safety Verantwortlichkeiten im Modell weggelassen.<br />

Bild 3 zeigt das vereinfachte Metamodell der Elemente<br />

bei der agentenorientierten Analyse <strong>und</strong> des Entwurfs mit<br />

Gaia. Damit werden die Zusammenhänge zwischen Agenten,<br />

Rollen, Protokollen, Aktivitäten, Rechten <strong>und</strong> Verantwortlichkeiten<br />

in UML-Notation beschrieben.<br />

Agent<br />

übernimmt ><br />

*<br />

1..*<br />

< interagiert mit<br />

*<br />

Rolle<br />

Protokoll<br />

* *<br />

*<br />

Rechte Verantwortlichkeiten Aktivitäten<br />

Bild 3. Metamodell der Elemente von Gaia.<br />

Wie können Rollen identifiziert werden? Aus der Anforderungsspezifikation<br />

des Transportsystems können direkt Verantwortlichkeiten<br />

abgeleitet werden, die einzelnen Bestandteilen<br />

des Systems zugeordnet sind. Zum Beispiel müssen<br />

die beiden S-Bahnlinien eine gewisse Transportkapazität<br />

<strong>und</strong> eine zeitlich gleichmäßige Verteilung der Fahrten anbieten.<br />

Die Erfüllung dieser Anforderungen impliziert eine<br />

Reservierung der Streckenabschnitte <strong>und</strong> unter Umständen<br />

den Einsatz von mehreren Zügen. Diese nicht-trivialen Aufgaben<br />

kennzeichnen S-Bahnlinien als gute Ansatzpunkte für<br />

die Modellierung von Rollen. Beispielsweise beschreibt die<br />

Rolle S1 die Verantwortlichkeiten der Züge, welche die Verbindung<br />

zwischen Landbahnhof <strong>und</strong> Stadtbahnhof befahren.<br />

Analog beschreibt S2 die Rolle der Züge, die zwischen<br />

Hafenbahnhof <strong>und</strong> Stadtbahnhof verkehren. Um den dynamischen<br />

Einsatz der Züge zu ermöglichen, ist eine weitere<br />

Rolle für Züge sinnvoll, die gerade nicht im Fahrbetrieb eingesetzt<br />

werden. Diese Rolle wird mit dem Namen IDLE<br />

bezeichnet.<br />

Die Sicherheit des Eisenbahnbetriebs hängt davon ab, wie<br />

die Reservierung von Streckenabschnitten <strong>und</strong> Weichen<br />

durch die Züge gehandhabt wird. Gleichzeitig sollte aber<br />

versucht werden, die Zeitspanne zu minimieren, in der ein<br />

Streckenelement unbenutzt reserviert ist, um die Gesamtverfügbarkeit<br />

des Systems zu erhöhen. Die Handhabung dieser<br />

konfliktträchtigen Anforderungen ist eine Aufgabe, welche<br />

die Modellierung von Streckenabschnitten <strong>und</strong> Weichen<br />

als Rollen (mit TSEG <strong>und</strong> TOUT bezeichnet) sinnvoll macht. Im<br />

Gegensatz dazu müssen Bahnhöfe nur die Informationen<br />

über Verspätungen auf einer S-Bahnlinie an Züge anderer<br />

Linien weiterleiten. Das ist eine einfache Aufgabe, für welche<br />

die Modellierung als Rolle nicht erforderlich ist.<br />

Damit haben wir folgende Rollen im System identifiziert:<br />

Die Rollen der S-Bahnlinien S1 <strong>und</strong> S2, die Rolle IDLE für freie<br />

Züge <strong>und</strong> die Rollen TSEG bzw. TOUT für Streckenabschnitte<br />

*


18<br />

bzw. Weichen. Im Folgenden werden die identifizierten Rollen<br />

des Systems detailliert beschrieben. Tabelle 1 zeigt die<br />

Rollenbeschreibung von S1 in Gaia Notation.<br />

In dieser Rollenbeschreibung sind zunächst alle Protokolle<br />

<strong>und</strong> Aktivitäten der Rolle S1 aufgelistet:<br />

FindTrack spezifiziert den Ablauf, wie ein Zug, der gerade<br />

die Rolle S1 wahrnimmt, mit Streckenelementen<br />

(Streckenabschnitte <strong>und</strong> Weichen) interagiert, um einen<br />

vollständigen Weg von seiner gegenwärtigen Position<br />

zum Zielbahnhof zu finden. Dieser Ablauf ist sinnvoll,<br />

denn wenn Streckenelemente nicht verfügbar sind, kann<br />

der Zug selbstständig eine Alternativroute finden.<br />

Um Unfälle zu vermeiden, reserviert der Zug ein Streckenelement,<br />

bevor er es befährt. Das Protokoll ReserveTrack<br />

legt die Interaktion zwischen Zügen <strong>und</strong> Streckenelementen<br />

während einer Reservierung fest.<br />

Die Aktivität DriveTrack repräsentiert die Fahrt eines<br />

Zuges durch ein zuvor reserviertes Streckenelement. Da<br />

hierfür keine Interaktionen benötigt werden, wird diese<br />

Aufgabe nicht als Protokoll modelliert.<br />

Anschließend wird das Streckenelement mit dem Protokoll<br />

ReleaseTrack wieder freigegeben.<br />

Die Aktivität InformDelay wird verwendet, um den Zielbahnhof<br />

zu informieren, wenn der Zug seinen Fahrplan<br />

ändert.<br />

Da die Kapazität eines einzelnen Zuges nicht immer ausreicht,<br />

um die geforderte Transportkapazität einer S-<br />

Bahnlinie zu erfüllen, müssen auch mehrere Züge zusammen<br />

eingesetzt werden können. Das bedeutet, dass mehr<br />

als ein Zug die Rolle der S-Bahnlinie übernimmt. Die Züge<br />

müssen dann ihre Aktionen abstimmen, um gemeinsam<br />

die Anforderungen der Linie zu erfüllen. Das Protokoll<br />

NegotiateGoals beschreibt diesen Ablauf.<br />

Weiter sollen zur optimalen Ressourcenausnutzung<br />

immer die am besten passenden Züge für eine S-Bahnlinie<br />

eingesetzt werden. Sieht sich ein Zug aufgr<strong>und</strong> seiner<br />

Kapazität als geeigneter für die Rolle einer S-Bahnlinie, so<br />

verhandelt er über das Protokoll NegotiateRole mit dem<br />

Zug, der momentan dieser Rolle zugeordnet ist, um die<br />

Rolle zu übernehmen.<br />

Die Rolle S1 greift auf folgende Datenelemente zu: Das<br />

Element TransportCapacity speichert die Information<br />

über die Transportkapazität eines Zuges mit der Rolle S1.<br />

Im Element RoleDB wird die Zuordnung von Rollen zu<br />

Zügen gespeichert. Damit ist RoleDB eine Art schwarzes<br />

Brett, über das ein Zug herausfinden kann, welcher<br />

andere Zug gerade welche Rolle wahrnimmt. Falls ein<br />

Zug sich bei der Interaktion in NegotiateRole entscheidet,<br />

seine Rolle zu ändern, modifiziert er die in RoleDB gespeicherte<br />

Zuordnung. Der Fahrplan der Züge auf der Linie S1<br />

wird im Element TimetableS1 gespeichert <strong>und</strong> von den<br />

der Rolle S1 zugeordneten Zügen modifiziert. Die Änderung<br />

von TimetableS1 kann notwendig werden aufgr<strong>und</strong><br />

von Fehlersituationen im Betrieb, an die sich der Zug<br />

anpassen muss.<br />

Verantwortlichkeiten beschreiben die Zusammenhänge<br />

<strong>und</strong> Abläufe der Protokolle <strong>und</strong> Aktivitäten von S1. In Gaia<br />

wird zur Beschreibung der Verantwortlichkeiten eine Notation<br />

benutzt, die auf regulären Ausdrücken basiert. Die<br />

Hauptverantwortlichkeit von S1 lautet:<br />

((DriveToStadt · DriveToLand) | NegotiateGoals | NegotiateRole)_<br />

Das ‘_’ am Ende zeigt eine endlose Wiederholung der aufgelisteten<br />

Aktivitäten an. Die einzelnen Aktivitäten werden<br />

alternativ (‘|‘)ausgeführt:<br />

Fahre von Land nach Stadt <strong>und</strong> zurück (DriveToStadt • DriveToLand)<br />

Verhandle Ziele mit anderen S1 zugeordneten Zügen<br />

(NegotiateGoals)<br />

Verhandle die Zuordnung zu einer Rolle (NegotiateRole)<br />

Die Aktivitäten DriveToStadt <strong>und</strong> DriveToLand sind weiter<br />

untergliedert in Unteraktivitäten: Das Finden eines Weges<br />

zum Zielbahnhof, die Reservierung der Streckenabschnitte<br />

<strong>und</strong> die Fahrt selbst:<br />

DriveToStadt = (FindTrack(Stadt) • ReserveTrack • Drive-<br />

Track • ReleaseTrack • [InformDelay])+<br />

Nachdem ein Weg von der gegenwärtigen Position zum<br />

Stadtbahnhof gef<strong>und</strong>en wurde, reserviert der Zug die<br />

Streckenabschnitte, die er zu durchfahren beabsichtigt <strong>und</strong><br />

beginnt seine Fahrt. Das ’+’-Symbol am Ende des Ablaufes<br />

zeigt an, dass diese Reihe von Aktivitäten mehrmals durchlaufen<br />

wird, bis der Zielbahnhof erreicht ist. Im Fall einer Fehlersituation<br />

(z.B. wenn ein Streckenelement des geplanten<br />

Wegs nicht mehr verfügbar ist) muss der Zug einen Alternativweg<br />

zum Zielbahnhof finden. Gleichzeitig informiert er<br />

den Bahnhof über die Verzögerung.<br />

Die Modellierung der Rolle von S-Bahnlinie S2 ist der von<br />

S1 sehr ähnlich <strong>und</strong> hat im Gr<strong>und</strong>e dieselben Aktivitäten <strong>und</strong><br />

Protokolle. Sie unterscheidet sich nur in den Zielbahnhöfen<br />

<strong>und</strong> in den benutzten Datenelementen.<br />

Die getrennte Modellierung von Zügen <strong>und</strong> S-Bahnlinien<br />

ist die Basis für den dynamischen Einsatz von Zügen im<br />

System, abhängig von der aktuellen Situation. Um den flexiblen<br />

Einsatz der Züge zu automatisieren, wird eine Rolle für<br />

Tabelle 1: Rollenbeschreibung von ‘S1’ .<br />

Role Schema: S1<br />

Description: S-Bahnverbindung zwischen Landbahnhof, Stadtbahnhof<br />

<strong>und</strong> zurück. Stellt eine Transportkapazität von 360 Personen pro<br />

St<strong>und</strong>e zur Verfügung (180 Personen pro St<strong>und</strong>e in jede Richtung der<br />

Verbindung).<br />

Protocols and Activities<br />

FindTrack, ReserveTrack, DriveTrack,InformDelay,NegotiateGoals,<br />

NegotiateRole<br />

Permissions<br />

Reads: TransportCapacity; Changes: RoleDB, TimetableS1<br />

Responsibilities - Liveness:<br />

S1 = ((DriveToStadt · DriveToLand) | NegotiateGoals | NegotiateRole)_<br />

DriveToStadt = (FindTrack(Stadt) · ReserveTrack · DriveTrack · Release-<br />

Track · [InformDelay])+<br />

DriveToLand = (FindTrack(Land) · ReserveTrack · DriveTrack) · Release-<br />

Track · [InformDelay])+


19<br />

freie Züge (IDLE) benötigt. Diese Rolle nehmen die gerade in<br />

keiner S-Bahnlinie eingesetzten Züge ein <strong>und</strong> suchen nach<br />

neuen Einsatzmöglichkeiten. Dazu überprüft der jeweilige<br />

Zug die gegenwärtigen Zuordnungen von Zügen zu S-Bahnlinien<br />

<strong>und</strong> vergleicht seine eigene Transportkapazität mit<br />

den Anforderungen der Linien. Dabei gibt es drei Kriterien:<br />

Die Rolle einer S-Bahnlinie ist gerade von keinem Zug<br />

übernommen.<br />

Es sind nicht genügend Züge dieser Rolle zugeordnet, um<br />

die geforderte Transportkapazität zu erreichen.<br />

Die eingesetzten Züge sind nicht die effizientesten für<br />

diese Aufgabe.<br />

Die erste Situation ist eindeutig: Falls kein Zug einer<br />

bestimmten Rolle zugeordnet ist, kann der unbenutzte Zug<br />

diese Rolle direkt übernehmen. Die zweite Situation tritt zum<br />

Beispiel auf, wenn nur ein langer Zug der Linie S1 zugeordnet<br />

ist. Da die Fahrt knapp 20 Minuten dauert, kann ein langer<br />

Zug maximal 180 Personen pro St<strong>und</strong>e befördern (3<br />

Fahrten pro St<strong>und</strong>e, 60 Personen pro Fahrt). In diesem Fall<br />

kann ein zweiter langer Zug zusätzlich die Rolle S1 übernehmen,<br />

um die Transportkapazität auf 360 Personen pro<br />

St<strong>und</strong>e zu erhöhen <strong>und</strong> somit die Anforderung der Rolle<br />

erfüllen.<br />

Ein Beispiel für die dritte Situation ist die bestehende<br />

Zuordnung eines langen Zuges zur Linie S2. Da die Fahrt<br />

knapp 10 Minuten benötigt, kann ein langer Zug etwa 360<br />

Personen pro St<strong>und</strong>e befördern (6 Fahrten pro St<strong>und</strong>e, 60<br />

Personen pro Fahrt). Dies ist viel mehr als auf der Linie<br />

benötigt wird <strong>und</strong> somit eine nicht optimale Verwendung<br />

von Ressourcen. Dagegen würde ein kurzer Zug 180 Personen<br />

pro St<strong>und</strong>e befördern (6 Fahrten pro St<strong>und</strong>e, 30 Personen<br />

pro Fahrt), genug, um die Anforderungen der Rolle zu<br />

erfüllen. Der kurze Zug würde die Rolle S2 in diesem Fall<br />

übernehmen <strong>und</strong> den langen für andere Aufgaben verfügbar<br />

machen. Tabelle 2 fasst die Beschreibung der Rolle IDLE<br />

zusammen.<br />

Die Aktivität CheckRoles der Rolle IDLE überprüft die Information<br />

über die Zuordnung von Zügen zu S-Bahnlinien, die<br />

im Element RoleDB gespeichert ist. Findet der Zug eine der<br />

drei oben genannten Situationen vor, übernimmt er entweder<br />

die Rolle direkt (wenn diese frei ist) oder er initiiert das<br />

NegotiateRole Protokoll. Übernimmt der Zug im Verlauf seiner<br />

Aktivitäten eine neue Rolle, wird RoleDB entsprechend<br />

geändert. Die Hauptverantwortlichkeit der Rolle IDLE<br />

besteht somit in der wiederholten Durchführung von<br />

CheckRoles <strong>und</strong> gegebenenfalls von NegotiateRole.<br />

Tabelle 2: Rollenbeschreibung von ‘IDLE’ .<br />

Role Schema: IDLE (Freier Zug)<br />

Description: Rolle eines Zuges, der keiner S-Bahnlinie zugeordnet ist.<br />

Protocols and Activities:<br />

CheckRoles, NegotiateRole<br />

Permissions:<br />

Reads: TransportCapacity, RoleDB; Changes: RoleDB<br />

Responsibilities - Liveness:<br />

IDLE = (CheckRoles · [NegotiateRole])_<br />

In der Rolle IDLE ist besonders deutlich die Umsetzung<br />

der abstrakten agentenorientierten Konzepte Zielorientierung<br />

<strong>und</strong> Proaktivität zu erkennen. Die Ziele der Steuerung –<br />

Erfüllung der Transportkapazitäten bei optimaler Ressourcenausnutzung<br />

– drücken sich in den Regeln aus, nach<br />

denen sich ein gerade nicht eingesetzter Zug neue Aufgaben<br />

sucht. Diese Suche führt er aus eigenem Antrieb aus,<br />

also proaktiv, um das System nach Möglichkeit in einen optimalen<br />

Zustand zu bringen.<br />

Die letzten beiden Rollen des Transportsystems sind die<br />

Rollen TSEG von Streckenabschnitten <strong>und</strong> TOUT von Weichen.<br />

Die Rolle TSEG eines Streckenabschnitts ist in Tabelle 3<br />

beschrieben.<br />

Tabelle 3: Rollenbeschreibung von ‘TSEG’.<br />

Role Schema: TSEG (Streckenabschnitt)<br />

Description: Bahnstrecken werden in einzelne Streckenabschnitte aufgeteilt,<br />

die nacheinander von einem Zug befahren werden.<br />

Protocols and Activities:<br />

ReserveTrack, CheckReservationTimeout, FindTrack, ReleaseTrack<br />

Permissions:<br />

reads: Station, TSEGReservation; changes: TSEGReservation; generates:<br />

TSEGReservation<br />

Responsibilities - Liveness:<br />

TSEG = (ReserveTrack | CheckReservationTimeout | FindTrack(Destination)<br />

| ReleaseTrack)_<br />

Der Streckenabschnitt interagiert über das ReserveTrack<br />

Protokoll mit den Zügen der S-Bahnlinien, um die exklusive<br />

Benutzung zu einem Zeitpunkt zu gewährleisten. Er kontrolliert<br />

seine eigene Reservierungsinformation in TSEGReservation<br />

<strong>und</strong> gibt, falls verfügbar, die Durchfahrerlaubnis für eine<br />

begrenzte Zeitdauer. Ist der Streckenabschnitt bereits reserviert,<br />

wird die Reservierungsanfrage des Zuges abgelehnt.<br />

Die Aktivität CheckReservationTimeout überwacht die Zeitdauer<br />

der Reservierungen für den Streckenabschnitt. Dieser<br />

Mechanismus erhöht die Verfügbarkeit des Systems, weil<br />

dauerhafte Blockierungen von Streckenabschnitten vermieden<br />

werden.<br />

Im Protokoll FindTrack reagiert der Streckenabschnitt auf<br />

die Weganfrage eines Zuges <strong>und</strong> versucht, einen Weg von<br />

seiner gegenwärtigen Position zum gewünschten Zielbahnhof<br />

zu finden. Falls sich der Streckenabschnitt an einem<br />

Bahnhof befindet, ist der Name des Bahnhofs im Element<br />

Station gespeichert.<br />

Die Modellierung der Rolle einer Weiche, TOUT genannt,<br />

ist der eines Streckenabschnitts sehr ähnlich, mit denselben<br />

Interaktionen für Reservierung <strong>und</strong> Wegfindung. Zusätzlich<br />

existiert die Aktivität ChangeDirection, um die Weichenstellung<br />

zu ändern.<br />

Im zweiten Schritt der agentenorientierten Analyse werden<br />

die Abläufe zwischen den Rollen genauer betrachtet.<br />

3.4.2 Interaktionsmodell<br />

Das Interaktionsmodell gibt eine Übersicht über die spezifizierten<br />

Protokolle auf einer abstrakten Ebene. Hier wird


20<br />

festgelegt, wie die einzelnen Rollen zur Bewältigung ihrer<br />

Aufgaben miteinander interagieren. In Gaia wird eine tabellarische<br />

Notation benutzt, die in Tabelle 4 dargestellt wird.<br />

Tabelle 4: Protokollspezifikation in Gaia.<br />

Name des Protokolls<br />

Auslöser<br />

Empfänger<br />

Beschreibung<br />

Tabelle 5 zeigt die Spezifikation des ersten Protokolls<br />

FindTrack. Das FindTrack Protokoll wird durch die Rollen S1<br />

oder S2 ausgelöst <strong>und</strong> von einer der Rollen TSEG oder TOUT<br />

beantwortet. Der Zug macht eine Anfrage, während er einen<br />

Weg von seiner gegenwärtigen Position zum Zielbahnhof<br />

(Destination) sucht. Die Anfrage wird zu den Streckenelementen<br />

in der direkten Nachbarschaft des Zuges geschickt<br />

<strong>und</strong> an alle weiter führenden Streckenelemente weitergeleitet.<br />

Jedes Streckenelement fügt seine ID zur Anfragenachricht<br />

hinzu, bevor diese weitergeleitet wird. Läuft die Nachricht<br />

in einer Schleife, das heißt erreicht sie ein Streckenelement<br />

mehr als einmal, wird sie vernichtet, um unnötige<br />

Anfragen zu vermeiden. Wird ein Streckenabschnitt erreicht,<br />

der im Zielbahnhof liegt, so wird eine Bestätigung entlang<br />

der Reihenfolge der in der Anfragenachricht gespeicherten<br />

IDs zurück zum Zug geschickt.<br />

Tabelle 5: Protokollspezifikation FindTrack.<br />

FindTrack<br />

S1, S2, TSEG, TOUT TSEG, TOUT<br />

(siehe Text)<br />

Tabelle 6 zeigt die Spezifikation des Protokolls Reserve-<br />

Track. Das ReserveTrack Protokoll wird wie bei FindTrack von<br />

S1 oder S2 ausgelöst <strong>und</strong> von TSEG oder TOUT beantwortet.<br />

Ein Zug, der durch ein Streckenelement fahren will, macht<br />

eine Reservierungsanfrage. Abhängig vom gegenwärtigen<br />

Reservierungsstatus wird die Erlaubnis zur Benutzung<br />

erteilt oder die Anfrage wird abgelehnt. Die Protokollspezifikation<br />

von ReleaseTrack entspricht der von ReserveTrack,<br />

wobei ein Streckenelement seine Freigabe lediglich<br />

bestätigt.<br />

Tabelle 6: Protokollspezifikation ReserveTrack.<br />

ReserveTrack<br />

S1, S2 TSEG, TOUT<br />

(siehe Text)<br />

Eingaben<br />

Ausgaben<br />

Destination<br />

Fo<strong>und</strong> | Forward (Add ID)<br />

Train ID<br />

Accept | Decline<br />

In Tabelle 7 ist die Spezifikation des Protokolls Negotiate-<br />

Goals dargestellt. Werden die Rollen S1 oder S2 von mehr als<br />

einem Zug gemeinsam übernommen, muss es einen<br />

Abstimmungsprozess zwischen den Zügen geben, um die<br />

Anforderungen der Rolle zu erfüllen. Jeder der Züge tauscht<br />

mit den anderen seine geplante Verwendung der Ressourcen<br />

(Resource utilization) aus, z.B. die der Streckenabschnitte.<br />

Nachdem die Pläne des anderen bekannt sind, werden<br />

solange neue Vorschläge gemacht, bis eine Strategie gef<strong>und</strong>en<br />

wurde, die von allen Zügen akzeptiert wird. Aufgr<strong>und</strong><br />

der zeitlichen Anforderungen des realen Systems, muss die<br />

Spezifikation dieses Protokolls eine kurze Konvergenzzeit für<br />

diesen Verhandlungsprozess sicherstellen.<br />

Tabelle 7: Protokollspezifikation NegotiateGoals.<br />

NegotiateGoals<br />

S1, S2 S1, S2<br />

(siehe Text)<br />

Die Spezifikation des Protokolls NegotiateRole ist in<br />

Tabelle 8 beschrieben. In NegotiateRole beginnt ein Zug in<br />

der Rolle IDLE eine Interaktion mit einem Zug, welcher der<br />

Rolle S1 oder S2 zugeordnet ist. Er hat das Ziel, dessen Rolle<br />

zu übernehmen. In einer ersten Anfrage sendet der Zug<br />

seine eigene Transportkapazität. Stellt der gegenwärtig der<br />

Rolle zugeordnete Zug die bessere Eignung des freien Zuges<br />

fest, so gibt er seine Rolle S1 oder S2 ab <strong>und</strong> nimmt die Rolle<br />

IDLE an.<br />

Tabelle 8: Protokollspezifikation NegotiateRole.<br />

NegotiateRole<br />

IDLE S1, S2<br />

(siehe Text)<br />

Bild 4 gibt einen Überblick über alle in der Analysephase<br />

im System identifizierten fünf Rollen <strong>und</strong> fünf Protokolle. Die<br />

einzelnen Rollen sind durch Rechtecke dargestellt, die Protokolle<br />

durch Verbindungen zwischen den Rollen. Rollen, welche<br />

die gleichen Protokolle verwenden, sind zur Vereinfachung<br />

zusammengefasst.<br />

3.4.3 Agentenmodell<br />

Resource utilization<br />

Resource utilization<br />

Request role (TransportCapacity)<br />

Accept | Decline<br />

In der Entwurfsphase von Gaia wird aus den Ergebnissen der<br />

Analysephase das Agentenmodell erstellt. Darin werden die<br />

Agententypen <strong>und</strong> die Anzahl der Agenten jedes Typs festgelegt.<br />

Agenten eines bestimmten Typs können eine oder<br />

mehrere der im Analyseprozess definierten Rollen annehmen<br />

(durch einen Pfeil dargestellt).<br />

In den bisher durchgeführten Analyseschritten waren die<br />

aktiven Elemente des Systems mit nicht-trivialen Aufgaben<br />

bereits gut zu erkennen. Es handelt sich um Züge, Streckab-<br />

Negotiate Goals<br />

S1<br />

S2<br />

TSEG<br />

TOUT<br />

Negotiate Role<br />

Find Track, Reserve Track, Release Track<br />

Find Track<br />

IDLE<br />

Bild 4: Übersicht über die Rollen <strong>und</strong> Protokolle der Eisenbahnsteuerung.


21<br />

schnitte <strong>und</strong> Weichen. Diese Elemente übernehmen die<br />

identifizierten Rollen im System. Daher ist es naheliegend,<br />

diese Elemente als Agenten zu modellieren. Bild 5 zeigt das<br />

Agentenmodell der Eisenbahnsteuerung, in dem die drei<br />

Agententypen dargestellt sind: der Agententyp Train für<br />

Züge, der Agententyp Track für Streckenabschnitte <strong>und</strong> der<br />

Agententyp Turnout für Weichen. Agenten vom Typ Train<br />

können die Rollen S1, S1 oder IDLE wahrnehmen. Agenten<br />

vom Typ Track übernehmen die Rolle TSEG <strong>und</strong> Agenten<br />

vom Typ Turnout die Rolle TOUT. Das ‘+‘ zeigt an, dass im<br />

System von jedem Typ mindestens ein Agent existiert.<br />

Flexible dynamische Zuordnung von Zügen zu S-Bahnlinien<br />

für eine möglichst optimale Ressourcenverteilung<br />

<strong>und</strong> Erfüllung der geforderten Transportziele.<br />

Dynamische Wegfindung <strong>und</strong> Streckenbelegung.<br />

Proaktives Suchen freier Züge nach neuen Einsatzmöglichkeiten,<br />

um die Transportkapazitäten oder den Einsatz<br />

der Züge zu optimieren.<br />

Selbstständige Koordination der Züge zur Anpassung an<br />

die aktuelle Betriebssituation.<br />

Das vollständige Modellierungsbeispiel findet sich im<br />

Internet unter der Adresse http://www.ias.unistuttgart.de/agenten.<br />

Train<br />

+<br />

Track<br />

+<br />

Turnout<br />

+<br />

4. Zusammenfassung<br />

S1 S2 IDLE TSEG TOUT<br />

Bild 5: Agentenmodell mit der Zuordnung von Rollen zu Agententypen.<br />

3.4.4 Organisationsmodell<br />

Das letzte Modell im Entwurf ist das Organisationsmodell.<br />

Hier wird festgelegt, welche Kommunikationsbeziehungen<br />

zwischen den Agenten bestehen. Damit wird keine statische<br />

Definition des Informationsflusses vorgegeben, sondern<br />

lediglich mögliche Beziehungen aufgezeigt. Bild 6 zeigt das<br />

Organisationsmodell des Transportsystems: Alle Agententypen<br />

können untereinander interagieren, Agenten vom Typ<br />

Train <strong>und</strong> Track können auch mit Agenten gleichen Typs<br />

interagieren.<br />

Mit dem Organisationsmodell ist die agentenorientierte<br />

Analyse <strong>und</strong> der Entwurf mit der Methode Gaia abgeschlossen.<br />

In den erstellen Modellen sind bereits die wesentlichen<br />

Merkmale der Eisenbahnsteuerung zu erkennen:<br />

Track<br />

Turnout<br />

Train<br />

Bild 6: Organisationsmodell mit möglichen Kommunikationsbeziehungen.<br />

In der <strong>Automatisierungs</strong>technik kann aus einem agentenorientierten<br />

Ansatz häufig eine vorteilhafte Lösung resultieren.<br />

Eine agentenorientierte Lösung ist dann sinnvoll, wenn ein<br />

System logisch verteilt ist, komplexes Verhalten aufweist,<br />

umfangreiche Koordinationsprozesse erfordert oder eine<br />

flexible Struktur benötigt. Viele Systeme in der heutigen<br />

<strong>Automatisierungs</strong>technik weisen diese Eigenschaften auf,<br />

z.B. in der Produktionstechnik, im Energiemanagement, in<br />

der Logistik, bei Verkehrssystemen <strong>und</strong> in der Anlagenautomatisierung.<br />

Im Zentrum dieses Beitrags steht die praktische Anwendung<br />

der agentenorientierten Denkweise für die systematische,<br />

ingenieurmäßige Entwicklung von Software. Das<br />

Modellierungsbeispiel der Eisenbahnsteuerung verdeutlicht,<br />

wie die agentenorientierten Gr<strong>und</strong>konzepte für die<br />

Analyse <strong>und</strong> den Entwurf einer realen Applikation angewendet<br />

werden. Der Schwerpunkt bei der Modellierung liegt auf<br />

der Betrachtung der Aufgaben (Rollen), die durch das<br />

System bewältigt werden müssen <strong>und</strong> der Interaktionen<br />

zwischen den verschiedenen Rollen zur Bewältigung dieser<br />

Aufgaben. Die Rollen werden von den aktiven Elementen<br />

des Systems, den Agenten, wahrgenommen. Durch diese<br />

Vorgehensweise kann ein Modell als Basis für ein agentenorientiertes<br />

System erstellt werden, das die erforderlichen<br />

Eigenschaften Flexibilität, Anpassungsfähigkeit, Robustheit<br />

<strong>und</strong> Fehlertoleranz aufweist.<br />

In der Fortsetzung dieses Beitrages wird die gr<strong>und</strong>sätzliche<br />

Struktur von Agentensystemen erläutert <strong>und</strong> ihre Implementierung<br />

anhand des Anwendungsbeispiels der Eisenbahnsteuerung<br />

demonstriert. Abschließend wird gezeigt,<br />

wie die Vorteile des agentenorientierten Modells der Eisenbahnsteuerung<br />

im Betrieb zum Tragen kommen.


22<br />

Agentensysteme in der <strong>Automatisierungs</strong>technik:<br />

Aufbau, Struktur <strong>und</strong> Implementierung an einem<br />

Anwendungsbeispiel<br />

Der vorliegende Beitrag behandelt zum Abschluss der Reihe über Softwareagenten in der <strong>Automatisierungs</strong>technik<br />

die Aspekte der Realisierung von Agentensystemen. Um eine agentenorientierte Lösung als lauffähiges<br />

Softwaresystem zu implementieren, ist zunächst eine gr<strong>und</strong>legende Struktur für die einzelnen Agenten<br />

<strong>und</strong> eine Basisarchitektur für Agentensysteme erforderlich, die die notwendige Infrastruktur für die Agenten<br />

zur Verfügung stellt. Daneben existiert eine Reihe von Technologien, die dem Entwickler eine umfassende<br />

Unterstützung bei der Implementierung bieten <strong>und</strong> die agentenorientierten Entwicklungskonzepte direkt<br />

auf die Programmebene umsetzen. Diese Aspekte werden zuerst aus allgemeiner Sicht <strong>und</strong> anschließend<br />

anhand der konkreten Implementierung eines technischen Beispiels erläutert.<br />

Agent systems in industrial automation: construction, structure and implementation of an application<br />

example<br />

As a conclusion of the series about software agents, the present article addresses the aspect of realization of<br />

agent systems. In order to implement an agent oriented solution in form of an executable software system,<br />

a basic structure for a single agent and a basic architecture for an agent system are necessary, as they provide<br />

the essential infrastructure needed by the agents. Besides that, there is a number of technologies which<br />

provide the developer with comprehensive support during the implementation, in the task of converting the<br />

agent oriented design concepts directly to program level.These aspects will be explained at first from a general<br />

point of view and sequentially by considering the concrete implementation of a technical example.<br />

1. Einführung<br />

Viele moderne <strong>Automatisierungs</strong>systeme weisen komplexe<br />

Anforderungen wie zunehmende Dezentralisierung, Flexibilität,<br />

Anpassbarkeit <strong>und</strong> Integrationsfähigkeit auf, die einen<br />

agentenorientierten Lösungsansatz sinnvoll erscheinen lassen.<br />

Beispielsweise führt eine agentenorientierte Lösung für<br />

Produktionssysteme, bei der alle beteiligten Elemente der<br />

Fertigungsstraße als autonome, kooperierende Agenten<br />

betrachtet werden, zu größerer Flexibilität <strong>und</strong> Robustheit<br />

des Fertigungsprozesses [1, 2]. Beim Energiemanagement<br />

können die komplexen Abläufe in einem Energieversorgungsnetzwerk<br />

beherrscht <strong>und</strong> optimiert werden, wenn das<br />

Netzwerk als Marktplatz betrachtet wird, auf den Erzeuger<strong>und</strong><br />

Verbraucheragenten dynamisch über verfügbare Energiekontingente<br />

verhandeln. Dieses Prinzip ist sowohl in<br />

großen Stromversorgungsnetzen anwendbar [3] als auch in<br />

abgeschlossenen lokalen Netzwerken, wie zum Beispiel bei<br />

der Energieversorgung im Kraftfahrzeug [4]. Auch in der<br />

Anlagenautomatisierung können Agenten zur Steuerung<br />

von Abläufen, zur Unterstützung des Anlagenfahrers, zur<br />

Diagnose von Fehlerzuständen <strong>und</strong> zur Verbesserung des<br />

Engineerings eingesetzt werden.<br />

Der erste Teil dieser Beitragsreihe (atp 10/2003) behandelte<br />

eine theoretische Einführung in die Agentenorientierung,<br />

ihre gr<strong>und</strong>legenden Konzepte <strong>und</strong> die Vorgehensweise<br />

bei der agentenorientierten Analyse <strong>und</strong> Entwurf [5].<br />

Im zweiten Teil (atp 11/2003) wurde die praktische Anwendung<br />

dieser Gr<strong>und</strong>lagen bei der agentenorientierten Analyse<br />

<strong>und</strong> dem Entwurf für eine Eisenbahnsteuerung veranschaulicht<br />

[6]. Abschließend stellen sich noch wichtige Fragen<br />

in Bezug auf die Realisierung von Agentensystemen:<br />

Wie ist ein einzelner Agent bzw. ein (Multi-)Agentensystem<br />

aufgebaut, <strong>und</strong> wie sieht die gr<strong>und</strong>legende Architektur aus?<br />

Wie muss bei der Implementierung von Agentensystemen<br />

vorgegangen werden, damit sich die Eigenschaften von<br />

Agenten tatsächlich im realisierten System wieder finden?<br />

Die Basiskonzepte der Agentenorientierung Autonomie,<br />

Interaktion, Reaktivität, Zielorientierung, Proaktivität <strong>und</strong><br />

Persistenz scheinen auf den ersten Blick mit den bekannten<br />

Methoden <strong>und</strong> Technologien der Softwaretechnik nur<br />

schwer modellierbar <strong>und</strong> implementierbar zu sein. Mit den<br />

heutigen Mitteln der Programmierung ist es jedoch möglich,<br />

die Agentensicht bei der Implementierung auf die Merkmale<br />

eines Softwaresystems zu übertragen. Hinzu kommt, dass für<br />

eine agentenorientierte Lösung einer realen Problemstellung<br />

diese Merkmale nicht nur wünschenswert, sondern<br />

auch unverzichtbar sind. Die Durchgängigkeit der konzeptionellen<br />

Basis bei Analyse, Entwurf <strong>und</strong> Implementierung ist<br />

ein wichtiger Faktor bei der Softwareentwicklung. Die Vernachlässigung<br />

dieser Tatsache bei der agentenorientierten<br />

Softwareentwicklung birgt die Gefahr in sich, dass ein Softwaresystem<br />

entsteht, welches die agentenorientierten Konzepte<br />

nicht oder nur in unzureichender Weise widerspiegelt<br />

<strong>und</strong> somit nicht die gewünschten Eigenschaften aufweist. Im<br />

Folgenden wird daher zunächst die gr<strong>und</strong>sätzliche Architektur<br />

von Agentensystemen erläutert. Anschließend wird


23<br />

näher auf ihre Realisierung eingegangen, <strong>und</strong> es werden die<br />

verfügbaren Hilfsmittel <strong>und</strong> Technologien vorgestellt, die<br />

den Softwareingenieur bei seiner Arbeit unterstützen. Zum<br />

Abschluss des Beitrags wird anhand des Anwendungsbeispiels<br />

der Eisenbahnsteuerung die Implementierung des in<br />

[6] erstellten Modells erläutert.<br />

2. Aufbau von Agentensystemen<br />

Bei der Realisierung eines agentenorientierten Entwurfs entsteht<br />

ein Agentensystem, bestehend aus einzelnen Agenten,<br />

die miteinander flexibel interagieren, autonom <strong>und</strong> reaktiv<br />

handeln <strong>und</strong> gegebenenfalls dabei eigene Ziele proaktiv<br />

verfolgen sollen. Die gr<strong>und</strong>legenden Mechanismen <strong>und</strong><br />

Architekturprinzipien zur Abbildung der Gr<strong>und</strong>konzepte<br />

von Agenten in einem ausführbaren System sind Gegenstand<br />

des folgenden Abschnitts.<br />

2.1 Wie können agentenorientierte Konzepte in<br />

einem Softwaresystem abgebildet werden?<br />

Letztendlich sind Agenten <strong>und</strong> Agentensysteme Computerprogramme<br />

<strong>und</strong> folgen den gleichen Ausführungsprinzipien<br />

wie andere Programme. Die Erstellung eines Programms<br />

erfolgt meist mit Hilfe von Programmiersprachen, welche die<br />

Gr<strong>und</strong>operationen des Rechners durch mächtigere Sprachkonstrukte<br />

abstrahieren. Diese Sprachkonstrukte bilden die<br />

Basis für die Umsetzung der abstrakten agentenorientierten<br />

Gr<strong>und</strong>konzepte. Die Gr<strong>und</strong>konzepte <strong>und</strong> Mechanismen für<br />

ihre Umsetzung sind:<br />

Autonomie: Unter Autonomie versteht man den Tatbestand,<br />

dass das Verhalten eines Agenten im Wesentlichen<br />

durch den Agenten selbst festgelegt <strong>und</strong> nicht von<br />

„außen” festlegbar ist. Gr<strong>und</strong>lage für die Autonomie eines<br />

Agenten ist daher die Trennung des Nachrichtenaustausches<br />

zwischen Agenten <strong>und</strong> der Nachrichtenbearbeitung<br />

innerhalb eines Agenten. Dies bedeutet auch, dass der<br />

Nachrichtenaustausch zwischen Agenten asynchron stattfinden<br />

muss, damit ein Agent nicht durch Warten auf eine<br />

Antwort blockiert wird. Als möglicher Mechanismus können<br />

Nachrichtenaustausch <strong>und</strong> Nachrichtenbearbeitung<br />

eines Agenten in eigene, parallele Prozesse (Threads)<br />

gekapselt werden. Es wird deutlich, dass der dem Agenten<br />

zu Gr<strong>und</strong>e liegende Kommunikationsmechanismus nicht<br />

wie in der objektorientierten Welt darauf basieren kann,<br />

dass die Funktionalität eines Agenten durch öffentliche<br />

Methoden nach außen zur Verfügung gestellt wird [7]. Der<br />

Agent bietet statt dessen nur eine Schnittstelle für das<br />

Senden <strong>und</strong> Empfangen von Nachrichten an.<br />

Flexible Interaktionen: Agenten interagieren miteinander,<br />

um Informationen auszutauschen, Ressourcen <strong>und</strong> Aufgaben<br />

zu verteilen <strong>und</strong> um zu verhandeln. Hierfür sind<br />

eine Reihe von Gr<strong>und</strong>elementen der Kommunikation<br />

erforderlich. Mögliche Nachrichtenformen sind Informationsübertragung<br />

<strong>und</strong> Informationsabfrage (inform, query,<br />

subscribe, request), Verhandlung (call-for-proposal, propose),<br />

Zustimmung <strong>und</strong> Ablehnung (agree, refuse) [7]. Aus<br />

diesen Kommunikationsprimitiven können Protokolle<br />

aufgebaut werden, die den geregelten Ablauf von Interaktionen<br />

festlegen. Weiter ist ein gemeinsames Verständnis<br />

der Bedeutung der Nachrichten erforderlich. Die<br />

Beschreibung dieser Bedeutungsbasis wird als Ontologie<br />

bezeichnet [8]. Um flexible Beziehungen zwischen Agenten<br />

zu ermöglichen, kann den Agenten zusätzlich eine<br />

Infrastruktur zum Auffinden von Kooperationspartnern<br />

zur Verfügung gestellt werden. Eine mögliche Realisierung<br />

ist beispielsweise eine Art Schwarzes Brett, an dem<br />

Agenten ihre Dienste bekannt geben oder benötigte<br />

Dienste abfragen können.<br />

Reaktivität: Die Aktivität eines Agenten kann zum einen<br />

durch andere Agenten ausgelöst werden. Zum anderen<br />

muss ein Agent möglicherweise auch für ihn relevante<br />

Teile der Systemumgebung (Wahrnehmungsbereich)<br />

beobachten können. In technischen Systemen kann dies<br />

beispielsweise durch Abfrage von Sensoren erfolgen.<br />

Gegebenenfalls können diese Sensoren durch Interrupt-<br />

Handler gekapselt werden, bei denen sich Agenten<br />

anmelden, um im Fall von Zustandsänderungen informiert<br />

zu werden.<br />

Ziele <strong>und</strong> Proaktivität: Ziele sind die Voraussetzung für<br />

Handlungen, die ein Agent ohne externe Aktivierung ausführt.<br />

Die Umsetzung dieser Konzepte kann durchaus<br />

komplex werden, insbesondere wenn die Ziele sehr<br />

abstrakt sind. In technischen Systemen kann die Realisierung<br />

aber auch von ganz einfacher Art sein, beispielsweise<br />

durch Ereignisse, Bedingungen <strong>und</strong> Regeln, die eine<br />

Aktivität auslösen. Ereignisse können beobachtete<br />

Zustandsänderungen in der Systemumgebung sein, die<br />

dann mit gespeicherten Mustern verglichen oder auf die<br />

Regeln angewendet werden. Es kann aber auch ein ablaufendes<br />

Zeitintervall sein, das eine Aktion auslöst.<br />

Persistenz: Zur Sicherstellung eines fortlaufenden Kontrollflusses<br />

muss ein Agent seinen inneren Zustand speichern<br />

können. Die hierfür notwendigen Mechanismen<br />

müssen durch eine Infrastruktur zur Verfügung gestellt<br />

werden.<br />

Hier wird deutlich, dass zur Realisierung der abstrakten<br />

Agentenkonzepte in einem Softwaresystem zusätzlich eine<br />

von einzelnen Agenten unabhängige Infrastruktur benötigt<br />

wird, beispielsweise für den asynchronen Nachrichtenaustausch<br />

oder für das Auffinden von Diensten. Ein Agentensystem<br />

ist demnach häufig mehr als die bloße Ansammlung<br />

von Agenten: Es bildet auch die Basis für agenteninterne<br />

Abläufe <strong>und</strong> solche zwischen Agenten. Inwieweit diese<br />

zusätzlichen Mechanismen benötigt werden, hängt von der<br />

jeweiligen Problemstellung ab.<br />

2.2 Gr<strong>und</strong>legende Struktur eines Agenten<br />

Zur Realisierung eines agentenorientierten Systems ist eine<br />

gr<strong>und</strong>legende Struktur eines Agenten erforderlich, welche<br />

die genannten Mechanismen unterstützt. Ein Agent muss<br />

eine abgeschlossene Softwareeinheit darstellen, die kontinuierlich<br />

mit der Umgebung interagiert. Diese kann auch<br />

andere Agenten beinhalten. Die Interaktion besteht darin,<br />

die Umgebung wahrzunehmen <strong>und</strong> diese durch Handlun-


24<br />

Umgebungsmodell<br />

Ziele<br />

Ziel e Ziel e Fähigkeiten<br />

Agent<br />

Verhalten<br />

Wahrnehmung<br />

Beeinflussung<br />

U<br />

m<br />

g<br />

e<br />

b<br />

u<br />

n<br />

g<br />

Age nt<br />

Age nt Agent<br />

Agent<br />

Management<br />

System<br />

Directory<br />

Facilitator<br />

Message Transport System<br />

Weitere<br />

Agentensysteme<br />

Bild 1: Gr<strong>und</strong>legende Struktur eines einzelnen Agenten.<br />

gen auf Basis der eigenen Fähigkeiten zu beeinflussen. Auch<br />

die Interaktion zwischen Agenten kann als eine Art „Wahrnehmen“<br />

<strong>und</strong> „Handeln“ gesehen werden, da andere Agenten<br />

als Teil der Umgebung betrachtet werden [9].<br />

Die Fähigkeit, selbst zu entscheiden, was wann zu tun ist<br />

<strong>und</strong> auf welche Weise, bildet eine f<strong>und</strong>amentale Eigenschaft<br />

eines Agenten. Das Verhalten wird prinzipiell durch einen<br />

Satz von Zielen unterstützt, die der Agent erreichen soll. Sie<br />

kann auf eine sehr einfache Art <strong>und</strong> Weise durch eine Liste<br />

von Regeln umgesetzt werden, wonach ein Umgebungszustand<br />

eine Aktion auslöst. In flexibleren Ansätzen wird der<br />

Entscheidungsprozess von Interaktionen mit anderen Agenten<br />

abhängig gemacht. Dies erweitert den Entscheidungsprozess,<br />

da ein Überblick über das ganze Agentensystem<br />

einbezogen wird. Bild 1 zeigt die gr<strong>und</strong>legende Struktur<br />

eines Agenten.<br />

2.3 Architektur von Agentensystemen<br />

Die meisten agentenorientierten Systeme bestehen aus<br />

mehreren Agenten, die unterschiedliche Aufgaben übernehmen<br />

<strong>und</strong> kooperieren, um Aufgaben zu lösen. Die flexible<br />

Interaktion zwischen Agenten impliziert unter anderem folgende<br />

Voraussetzungen:<br />

Agenten sind in der Lage zu wissen, welche anderen<br />

Agenten in der Umgebung existieren.<br />

Die Fähigkeiten der Agenten (welchen Dienst oder welche<br />

Funktionalität sie anbieten) sind bekannt.<br />

Den Agenten steht ein Kommunikationsmedium zur Verfügung.<br />

Die Standardisierung dieser architektonischen Elemente<br />

hat den Vorteil, dass Agenten eines (Agenten-) Systems in<br />

der Lage sind, mit Agenten eines anderen Systems zu interagieren.<br />

Ein weithin anerkannter Standard für die Systemarchitektur<br />

von Agentensystemen wurde von der Organisation<br />

Fo<strong>und</strong>ation for Intelligent Physical Agents (FIPA) entwickelt<br />

[10]. Die FIPA Organisation wurde 1996 mit dem Ziel<br />

gegründet, Softwarestandards für heterogene, interagierende<br />

Agenten <strong>und</strong> Agentensysteme zu entwickeln. Einer<br />

der bereits entwickelten Standards ist die Agent Management<br />

Specification [11], in der das in Bild 2 gezeigte Referenzmodell<br />

definiert wird. Darin werden die erforderlichen<br />

Komponenten eines Agentensystems <strong>und</strong> ihr Aufbau festgelegt.<br />

Ein wesentlicher Bestandteil des FIPA Modells ist das<br />

Agent Management System (AMS). Jedes Agentensystem<br />

besitzt nur ein AMS. Das AMS führt ein Verzeichnis mit den<br />

Bild 2: FIPA Agent Management Referenzmodell [11].<br />

Bezeichnern <strong>und</strong> Kommunikationsadressen aller Agenten im<br />

System <strong>und</strong> bietet einen Auskunftsdienst („White Pages“) an.<br />

Wenn ein Agent eine Nachricht an einen anderen Agenten<br />

oder an eine Gruppe von Agenten schicken will, fragt er<br />

beim AMS an <strong>und</strong> erhält die Adressen, an welche die Nachricht<br />

geschickt werden kann. Befindet sich der gewünschte<br />

Agent in einem anderen System, so wird die Adressanfrage<br />

an das AMS dieses Systems weitergeleitet. Die Registrierung<br />

beim AMS ist für jeden Agenten eines Agentensystems zwingend<br />

erforderlich. Der Directory Facilitator (DF) bietet anderen<br />

Agenten einen “Gelbe Seiten”-Dienst („Yellow Pages“) an.<br />

Agenten können einerseits ihre Dienste beim DF anmelden<br />

<strong>und</strong> andererseits dort anfragen, welcher Agent welchen spezifischen<br />

Dienst anbietet oder welche Dienste überhaupt<br />

von anderen Agenten angeboten werden. Der Message<br />

Transport Service (MTS) ist die Standard-Kommunikationsinfrastruktur,<br />

die von Agenten zum Nachrichtenaustausch verwendet<br />

wird. Abgesehen von den Methoden zur Kommunikation<br />

werden hier auch Format <strong>und</strong> Länge der übermittelten<br />

Nachrichten, die Sprache, in der diese codiert sind, sowie<br />

die Semantik der Nachrichten (Ontologie) festgelegt. Eine<br />

Kommunikationssprache für Agenten ist die Agent Communication<br />

Language (ACL).<br />

Codebeispiel 1: Beispiel einer ACL Nachricht.<br />

(inform<br />

sender: agent1<br />

receiver: agent2<br />

content: ok(temperature_sensor_1)<br />

in-reply-to: query(temperature_sensor_1)<br />

reply-with: ok<br />

language: heating_l<br />

ontology: monitor_system<br />

)<br />

Codebeispiel 1 zeigt eine ACL Nachricht, mit der ein<br />

agent1 an agent2 den Status eines Temperatursensors<br />

übermittelt.<br />

3. Technologien zur Realisierung<br />

Zur Unterstützung des Softwareingenieurs bei der Implementierung<br />

von Agentensystemen stehen eine Reihe von<br />

Hilfsmitteln <strong>und</strong> Technologien zur Verfügung, welche die<br />

Realisierung agentenorientierter Software wesentlich


25<br />

Tabelle 1: Rollen <strong>und</strong> ihre Verantwortlichkeiten im Modell der Eisenbahnsteuerung.<br />

Rolle<br />

S1<br />

S2<br />

IDLE<br />

TSEG<br />

TOUT<br />

Verantwortlichkeiten <strong>und</strong> Protokolle<br />

Die Rolle S1 stellt die S-Bahnverbindung zwischen Landbahnhof <strong>und</strong> Stadbahnhof dar.<br />

• Stelle Transportkapazität von 360 Personen pro St<strong>und</strong>e zur Verfügung (180 Personen in jede Richtung)<br />

• Finde dynamisch die am besten geeignete Streckenverbindung, reserviere <strong>und</strong> befahre die Streckenabschnitte (Protokolle FindTrack,<br />

ReserveTrack, ReleaseTrack).<br />

• Informiere den Zielbahnhof bei Verspätung.<br />

• Stimme Aktionen mit anderen Zügen ab, die gleichzeitig die Rolle S1 wahrnehmen (Protokoll NegotiateGoals).<br />

Die Rolle S2 ist S1 sehr ähnlich <strong>und</strong> hat dieselben Aufgaben. Sie unterscheidet sich nur in den Zielbahnhöfen.<br />

IDLE stellt die Rolle eines Zuges dar, der keiner S-Bahnlinie zugeordnet ist.<br />

• Überprüfe proaktiv die Zuordnung von Zügen zu S-Bahnlinien, ob Transportkapazitäten erfüllt <strong>und</strong> Züge effizient eingesetzt werden.<br />

• Verhandle gegebenenfalls mit eingesetzten Zügen, um deren Rolle zu übernehmen (Protokoll NegotiateRole).<br />

Die Rolle TSEG eines Streckenabschnitts interagiert mit den Zügen, um die exklusive Belegung zu einem bestimmten Zeitpunkt zu<br />

gewährleisten.<br />

• Reagiere auf die Weganfrage eines Zuges <strong>und</strong> versuche, einen Weg von der gegenwärtigen Position zum gewünschten Zielbahnhof<br />

zu finden (Protokoll FindTrack).<br />

• Kontrolliere Reservierungsinformation <strong>und</strong> erteile die Durchfahrerlaubnis für eine bestimmte Zeitdauer<br />

(Protokolle ReserveTrack <strong>und</strong> ReleaseTrack).<br />

Die Rolle TOUT einer Weiche entspricht der eines Streckenabschnitts. Zusätzlich existiert die Funktionalität, um die Weichenstellung zu<br />

ändern.<br />

erleichtern. Sie lassen sich in zwei unterschiedliche Kategorien<br />

unterteilen:<br />

Unterstützung durch agentenorientierte Programmiersprachen<br />

<strong>und</strong><br />

Unterstützung in Form von APIs <strong>und</strong> Frameworks.<br />

3.1 Agentenorientierte Programmiersprachen<br />

Mit agentenorientierten Programmiersprachen werden die<br />

agentenorientierten Konzepte direkt durch Elemente einer<br />

Programmiersprache realisiert. Dadurch können Entwurfsstrukturen<br />

leicht auf den Quellcode abgebildet werden. Beispielsweise<br />

ist es auch bei der Objektorientierung einfacher,<br />

einen objektorientierten Entwurf in einer objektorientierten<br />

Programmiersprache wie C++ statt in der strukturierten Programmiersprache<br />

C zu implementieren, da durchgängig dieselben<br />

Gr<strong>und</strong>konzepte (z.B. Klassen) verwendet werden.<br />

Die bekanntesten agentenorientierten Programmiersprachen<br />

[12] sind: AGENT-0 [13], Concurrent METATEM [14] <strong>und</strong><br />

Agent Speak(L) [15]. Bei AGENT-0 wird ein Agent als Satz von<br />

initialen Zielen, Fähigkeiten <strong>und</strong> Ausführungsregeln definiert.<br />

Wenn eine bestimmte Ausführungsregel zutrifft, werden die<br />

entsprechenden Fähigkeiten des Agenten unter Berücksichtigung<br />

der festgelegten Ziele angewendet. Der Nachteil des<br />

Gebrauchs agentenorientierter Programmiersprachen ist ihre<br />

geringe Präsenz am Markt, die hohen Kosten für die Ausbildung<br />

des Entwicklungspersonals <strong>und</strong> die deutliche Unreife<br />

dieser Sprachen. Zurzeit ist kein Projekt bekannt, in dem agentenorientierte<br />

Programmiersprachen bei der Entwicklung von<br />

größeren realen Systemen zum Einsatz kommen.<br />

3.2 Agentenorientierte APIs <strong>und</strong> Frameworks<br />

Eine zweite Form der Entwicklerunterstützung sind umfangreiche<br />

agentenorientierte APIs (Application Programming<br />

Interfaces) <strong>und</strong> Frameworks.Sie ermöglichen die Implementierung<br />

des Agentensystems auf hoher Abstraktionsebene, da<br />

das Agentensystem auf Basis vorhandener Programmbibliotheken<br />

<strong>und</strong> Komponenten realisiert wird. APIs bieten hierfür<br />

eine Reihe agentenspezifischer Funktionalitäten, die dann bei<br />

der Implementierung verwendet werden können. Frameworks<br />

erlauben sowohl die Wiederverwendung von Quellcode als<br />

auch von Architektur. Sie bieten vollständige (teilweise auch<br />

standardisierte) Lösungen für wiederkehrende Aufgaben bei<br />

der Realisierung von Agentensystemen wie Kommunikation,<br />

Synchronisation, Verwaltung von Agenten usw. Die Aufgabe<br />

des Entwicklers beschränkt sich auf die Implementierung der<br />

anwendungsspezifischen Funktionalität.<br />

Solche APIs <strong>und</strong> Frameworks sind häufig in objektorientierten<br />

Programmiersprachen implementiert, was die Einarbeitung<br />

für den Ingenieur (im Gegensatz zur Verwendung<br />

agentenorientierter Programmiersprachen) wesentlich vereinfacht.<br />

Dabei stellt sich natürlich die Frage, wie bei Verwendung<br />

einer objektorientierten Programmiersprache ein<br />

agentenorientiertes System entstehen kann. Die wichtigste<br />

Voraussetzung bei der Entwicklung agentenorientierter<br />

Software ist die agentenorientierte Betrachtung <strong>und</strong> Modellierung<br />

der realen Problemstellung. Erst dadurch wird die<br />

Realisierung von Agentensystemen möglich <strong>und</strong> die Implementierung<br />

stellt dann lediglich die Abbildung der agentenorientierten<br />

Konzepte auf die verwendete Programmiertechnologie<br />

dar. Wie diese Abbildung geschehen kann, zeigt<br />

das Anwendungsbeispiel in Abschnitt 4.<br />

Auch hier kann die Parallele zur objektorientierten Softwareentwicklung<br />

gezogen werden. Ein System kann auf<br />

Basis der objektorientierten Konzepte entwickelt, aber mit<br />

einer nicht-objektorientierten Programmiersprache wie C<br />

implementiert werden. Zwar entsteht ein mehr oder weniger<br />

großer zusätzlichen Aufwand, um die objektorientierten<br />

Konzepte auf die Programmiersprache abzubilden,<br />

gr<strong>und</strong>sätzlich ist es aber möglich. Auf ähnliche Weise können<br />

Systeme auf Basis der agentenorientierten Konzepte analysiert<br />

<strong>und</strong> modelliert werden <strong>und</strong> mit Technologien implementiert<br />

werden, die den Agentenansatz nicht direkt widerspiegeln.<br />

Ein Beispiel für eine agentenorientierte API ist das Aglets<br />

Software Development Kit (als Open Source verfügbar) [16].<br />

Die Aglets API ist in Java implementiert <strong>und</strong> umfasst Basis-


26<br />

klassen für einzelne Agenten, Nachrichten <strong>und</strong> Kommunikationsmechanismen.<br />

Sie bietet eine Infrastruktur zur Implementierung<br />

mobiler Agenten, die zwischen verschiedenen<br />

Rechnern migrieren <strong>und</strong> lokal ausgeführt werden können.<br />

Ein Beispiel für ein Framework ist das Open Source Projekt<br />

JADE (Java Agent DEvelopment Framework) [17]. JADE<br />

unterstützt die Entwicklung von Agentensystemen mit einer<br />

FIPA-Standard konformen Kommunikationsschicht <strong>und</strong><br />

durch Werkzeuge für Konfiguration, Verwaltung <strong>und</strong> Debugging<br />

von Agentensystemen, die auch auf mehrere Rechner<br />

verteilt werden können. Die Lightweight Extensible Agent<br />

Platform (LEAP) [18] ist eine Erweiterung von JADE für den<br />

Einsatz in Systemen mit begrenzten Hardwareressourcen<br />

wie Mobiltelefonen, PDAs oder Pocket PCs. Weitere Beispiele<br />

für APIs <strong>und</strong> Frameworks sind ZEUS [19], JATLite [20], FIPA-OS<br />

[21], AGENTBUILDER [22], JACK [23] <strong>und</strong> Grasshopper [24].<br />

4. Implementierung eines<br />

Anwendungsbeispiels<br />

Nach der allgemeinen Einführung in den Aufbau von Agentensystemen<br />

<strong>und</strong> die Technologien zur Implementierung soll<br />

nun die Realisierung eines Agentensystems an einem einfachen<br />

Anwendungsbeispiel veranschaulicht werden. Als Beispielanwendung<br />

dient die Steuerung einer Eisenbahn. Im Folgenden<br />

werden die wesentlichen Aspekte der Realisierung,<br />

die konkrete Festlegung der Architektur des Agentensystems<br />

<strong>und</strong> die Implementierung der einzelnen Agenten sowie ihrer<br />

Rollen vorgestellt. Das Beispiel zeigt, wie die agentenorientierte<br />

Eisenbahnsteuerung als funktionsfähiges Softwaresystem<br />

implementiert werden kann. Abschließend werden Funktionsweise<br />

<strong>und</strong> Vorteile der agentenorientierten Lösung<br />

anhand einiger Einsatzszenarien demonstriert.<br />

4.1 Anwendungsbeispiel Eisenbahnsteuerung<br />

Im zweiten Teil dieses Beitrags wurden eine agentenorientierte<br />

Analyse <strong>und</strong> ein Entwurf für die Eisenbahnsteuerung<br />

durchgeführt <strong>und</strong> ein agentenorientiertes Modell für die<br />

Steuerung entwickelt [6]. Die Anforderungen der Steuerung<br />

sind im Folgenden noch einmal kurz zusammengefasst:<br />

Die Eisenbahnanlage besteht aus<br />

den drei Bahnhöfen Stadtbahnhof,<br />

Landbahnhof <strong>und</strong> Hafenbahnhof. Zwischen<br />

Stadtbahnhof <strong>und</strong> Landbahnhof<br />

L<br />

bestehen drei Gleisverbindungen, zwischen<br />

Hafenbahnhof <strong>und</strong> Stadtbahn-<br />

K<br />

hof eine (Bild 3). In einem Betriebswerk<br />

können nicht benötigte oder defekte<br />

Züge abgestellt werden (Bild 3 rechts<br />

unten). Zwischen Stadt- <strong>und</strong> Landbahnhof<br />

verkehrt die S-Bahnlinie S1<br />

Landbahnhof<br />

mit 360 Fahrplätzen je St<strong>und</strong>e (180 in<br />

jede Richtung). Eine zweite S-Bahnlinie<br />

S2 verbindet den Stadtbahnhof mit<br />

dem Hafenbahnhof mit 180 Fahrplätzen<br />

je St<strong>und</strong>e (90 in jede Richtung). Ein<br />

Zug benötigt unabhängig von seiner<br />

Länge 18 Minuten, um die Strecke zwischen Land <strong>und</strong> Stadt<br />

zurückzulegen <strong>und</strong> 8 Minuten für die Strecke zwischen Stadt<br />

<strong>und</strong> Hafen. Für den Fahrbetrieb stehen folgende Züge zur<br />

Verfügung: Drei kurze Züge K1, K2 <strong>und</strong> K3, mit einer Kapazität<br />

von jeweils 30 Personen <strong>und</strong> zwei lange Züge, L1 <strong>und</strong><br />

L2, mit einer Kapazität von je 60 Personen.<br />

Während des Betriebes können im Wesentlichen die drei<br />

unerwarteten Fehlersituationen Zugverspätung, Zugausfall<br />

<strong>und</strong> Streckenausfall auftreten, auf welche die Steuerung<br />

dynamisch reagieren muss. Die Steuerung muss in der Lage<br />

sein, diese Fehlersituationen so zu handhaben, dass zum<br />

einen die Transportkapazität jeder Verbindung möglichst<br />

optimal erfüllt wird <strong>und</strong> zum anderen die verfügbaren Ressourcen<br />

des Systems (Züge <strong>und</strong> Streckenelemente) bestmöglich<br />

verteilt werden.<br />

Basierend auf diesen Anforderungen wurde in [6] eine<br />

automatisierte Steuerung des Fahrbetriebs der Eisenbahn<br />

entworfen. Die Komplexität der Steuerung entsteht durch<br />

die Tatsache, dass die Gesamtheit der Situationen im<br />

Betrieb <strong>und</strong> somit die optimale Auflösung einer bestimmten<br />

Fehlersituation zur Entwurfszeit nicht vollständig<br />

bestimmt werden kann. Das im zweiten Teil dieses Beitrags<br />

[6] mit der agentenorientierten Methode Gaia [25]<br />

entwickelte agentenorientierte Modell gibt deshalb lediglich<br />

die elementaren Strukturen, Mechanismen <strong>und</strong><br />

Regeln der Eisenbahnsteuerung vor, auf deren Basis die<br />

Agenten der Steuerung zur Laufzeit dynamisch <strong>und</strong> flexibel<br />

das der jeweiligen Situation angemessene Verhalten<br />

ermitteln.<br />

Der Schwerpunkt bei der agentenorientierten Modellierung<br />

lag auf der Betrachtung der Aufgaben, die durch die<br />

Eisenbahnsteuerung bewältigt werden müssen, ihrer Aufteilung<br />

in so genannten Rollen <strong>und</strong> der Interaktionen zwischen<br />

den verschiedenen Rollen zur Bewältigung ihrer Aufgaben.<br />

Tabelle 1 gibt eine Übersicht über die identifizierten Rollen<br />

im agentenorientierten Modell der Steuerung, ihre Verantwortlichkeiten<br />

<strong>und</strong> die Protokolle, mit denen sie zur Erfüllung<br />

ihrer Aufgaben interagieren.<br />

Bild 4 gibt einen Überblick über die Zusammenhänge der<br />

identifizierten fünf Rollen <strong>und</strong> fünf Protokolle. Die einzelnen<br />

Rollen sind durch Rechtecke dargestellt, die Protokolle durch<br />

Verbindungen zwischen den Rollen. Rollen, welche die glei-<br />

= 60 Plätze (2x)<br />

= 30 Plätze (3x)<br />

S1<br />

Hafenbahnhof<br />

S2<br />

Stadtbahnhof<br />

18 min.<br />

360 Personen/St<strong>und</strong>e<br />

Bild 3: Schematische Darstellung der Eisenbahn.<br />

8 min.<br />

180 P./Std.


27<br />

Negotiate Goals<br />

S1<br />

S2<br />

TSEG<br />

TOUT<br />

Negotiate Role<br />

Find Track, Reserve Track, Release Track<br />

Find Track<br />

IDLE<br />

Bild 4 Übersicht über die Rollen <strong>und</strong> Protokolle der Eisenbahnsteuerung.<br />

Train<br />

+<br />

Track<br />

+<br />

Turnout<br />

+<br />

S1 S2 IDLE TSEG TOUT<br />

Bild 5: Agentenmodell mit der Zuordnung von Rollen zu Agententypen.<br />

chen Protokolle verwenden, sind zur Vereinfachung zusammengefasst.<br />

Die Rollen werden von den aktiven Elementen des<br />

Systems, den Agenten, wahrgenommen. Aktive Elemente im<br />

Modell der Eisenbahnsteuerung sind Züge, Streckenabschnitte<br />

<strong>und</strong> Weichen. Sie werden als Agententypen modelliert.<br />

Bild 5 zeigt das Agentenmodell der Eisenbahnsteuerung,<br />

in dem die drei Agententypen dargestellt sind: der<br />

Agententyp Train für Züge, der Agententyp Track für<br />

Streckenabschnitte <strong>und</strong> der Agententyp Turnout für Weichen.<br />

Agenten vom Typ Train können die Rollen S1, S2 oder<br />

IDLE wahrnehmen. Agenten vom Typ Track übernehmen die<br />

Rolle TSEG <strong>und</strong> Agenten vom Typ Turnout die Rolle TOUT.<br />

Das ‘+‘ zeigt an, dass im System von jedem Typ mindestens<br />

ein Agent existiert.<br />

Das vorgestellte agentenorientierte Modell beschreibt<br />

alle wesentlichen Elemente der Eisenbahnsteuerung <strong>und</strong> ist<br />

die Basis für die Realisierung der Steuerung als Agentensystem.<br />

struktur eine kleine API in Form einiger Hilfsklassen selbst<br />

realisiert <strong>und</strong> diese direkt in das System integriert. Damit<br />

kann die Umsetzung der agentenorientierten Konzepte gut<br />

veranschaulicht werden. Für ein umfangreicheres System ist<br />

allerdings die Verwendung einer bestehenden API oder<br />

eines Frameworks mit entsprechender Unterstützung des<br />

Entwicklers sinnvoll.<br />

Das aus Gaia resultierende agentenorientierte Modell<br />

beschreibt zwar alle gewünschten Eigenschaften des agentenorientierten<br />

Systems, allerdings auf einer hohen Abstraktionsebene.<br />

Für die konkrete Implementierung muss dieser<br />

Entwurf noch weiter verfeinert werden. Da die objektorientierte<br />

Programmiersprache Java für die Implementierung<br />

verwendet wird, beschreiben wir den Feinentwurf mit einem<br />

Klassendiagramm. Bild 6 zeigt den relevanten Ausschnitt aus<br />

diesem Diagramm, das aus dem Gaia-Modell abgeleitet<br />

wurde. Die Agententypen <strong>und</strong> Rollen werden hier durch einzelne<br />

Klassen repräsentiert. Daneben gibt es die Hilfsklassen<br />

Mqueue <strong>und</strong> Clock,welche die Infrastruktur für die Agenten<br />

bereitstellen.<br />

Die Klasse Agent enthält allgemeine Eigenschaften <strong>und</strong><br />

Dienste, die ein Agent für das System bereitstellen muss, z.B.<br />

Kommunikationsmechanismen (durch Austausch von Nachrichten),<br />

mit deren Hilfe die im Modell definierten Protokolle<br />

implementiert werden. Die drei Arten von Agenten, die im<br />

Gaia-Modell identifiziert wurden (siehe Abschnitt 4.1), werden<br />

als Unterklassen Train, Track <strong>und</strong> Turnout der<br />

Klasse Agent realisiert.<br />

Die Klasse Agent hat Assoziationen zu den Hilfsklassen<br />

Clock <strong>und</strong> MQueue. Clock ist ein einfacher Zeitgeber, der<br />

in regelmäßigen Abständen Nachrichten an den Agenten<br />

schickt. Durch diesen Mechanismus wird auf einfache Weise<br />

die dauerhafte Aktivität des Agenten erreicht. Der Agent<br />

kann damit unabhängig von externer Aktivierung (durch<br />

einen Benutzer oder andere Agenten) selbstständig agieren<br />

<strong>und</strong> seine Ziele verfolgen (Proaktivität).<br />

Die Hilfsklasse MQueue bietet dem Agenten einen asynchronen<br />

Kommunikationskanal. Nachrichten, die ein Agent<br />

empfängt, werden von ihm in MQueue in einer Warteschlange<br />

gespeichert <strong>und</strong> können dann vom Agenten<br />

sequentiell abgearbeitet werden. Der Sender muss nicht<br />

warten, bis die Verarbeitung beendet ist, <strong>und</strong> dem Empfänger<br />

wird automatisch signalisiert, wenn eine Nachricht<br />

ankommt.<br />

Die Klasse Role repräsentiert die verschiedenen Rollen,<br />

die ein Agent während des Betriebs annehmen kann. In<br />

4.2 Implementierung<br />

Im letzten Entwicklungsschritt muss<br />

das erstellte Modell als Agentensystem<br />

implementiert werden. Für die Implementierung<br />

wird die Programmiersprache<br />

Java verwendet. In diesem kleinen<br />

Beispiel kommt keines der in Abschnitt<br />

3 genannten umfangreichen agentenorientierten<br />

Frameworks oder APIs<br />

zum Einsatz. Statt dessen haben wir für<br />

die benötigte einfache Agenteninfra-<br />

Clock<br />

Agent<br />

MQueue<br />

Track<br />

Train<br />

Turnout<br />

TSEG<br />

TOUT<br />

S1<br />

Bild 6: Klassendiagramm der Implementierung.<br />

Role<br />

S2<br />

IDLE


28<br />

Codebeispiel 2: Implementierung der Klassen Agent <strong>und</strong> Train.<br />

abstract class Agent {<br />

Role currentRole;<br />

Directory roleDB;<br />

String ID;<br />

Clock timer;<br />

MQueue messageQueue;<br />

synchronized void receive (Message m) {<br />

messageQueue.enqueue(m);<br />

}<br />

void send (Message m, Agent receiver) {<br />

receiver.receive(m);<br />

}<br />

void setRole (Role newRole) {<br />

roleDB.changeEntry(this, newRole);<br />

currentRole = newRole;<br />

}<br />

String getID() {<br />

return ID;<br />

}<br />

}<br />

public class Train extends Agent {<br />

Train(){<br />

currentRole = new IDLE();<br />

// Constructor. Initial role of a<br />

train is IDLE.<br />

}<br />

void driveTrack() {<br />

// Controls the train on the railway.<br />

}<br />

void informDelay(Station destination){<br />

// Informs destination station of a<br />

delay<br />

}<br />

}<br />

unserem Beispiel kann ein Agent zu einem bestimmten Zeitpunkt<br />

nur einer einzigen Rolle zugeordnet sein. Die konkreten<br />

Rollen TSEG, TOUT S1, S2 <strong>und</strong> IDLE sind von dieser<br />

Klasse abgeleitet. Codebeispiel 2 zeigt das Codegerüst der<br />

Klassen Agent <strong>und</strong> Train.<br />

Die aktuelle Rolle eines Agenten ist im Attribut currentRole<br />

vom Typ Role der Klasse Agent abgelegt.Wenn der<br />

Agent eine Nachricht erhält, stellt er sie mit der Methode<br />

enqueue() in MQueue. MQueue leitet die Nachricht an<br />

die Methode processMessage() der aktuellen Rolle des<br />

Agenten weiter. Je nach momentaner Rolle des Agenten<br />

wird die Nachricht unterschiedlich verarbeitet. Hier wird also<br />

Polymorphie verwendet, um das dynamische, flexible Verhalten<br />

der Agenten zu realisieren. In der Klasse Train wird die<br />

Klasse Agent um die spezifische Funktionalität erweitert,<br />

die zur Kontrolle der Züge (driveTrack) notwendig ist.<br />

Die Änderung der Rolle des Agenten zur Laufzeit wird in der<br />

Methode setRole implementiert. Diese ändert die Information<br />

in der Variablen roleDB,erzeugt eine neue Instanz<br />

Codebeispiel 3: Implementierung der Klassen Role <strong>und</strong> IDLE.<br />

public abstract class Role {<br />

Agent currentAgent;<br />

abstract void processMessage(Message m);<br />

}<br />

public class IDLE extends Role {<br />

RoleInfo CheckRoles() {<br />

// Retrieves information from the roleDB<br />

}<br />

synchronized void processMessage(<br />

Message m){<br />

// Process message according to IDLE<br />

requirements.<br />

// The assignment information can be<br />

retrieved,...<br />

RoleInfo result = CheckRoles();<br />

// ...a message can be sent...<br />

currentAgent.send(m, agent_A);<br />

// ... a role change can be performed<br />

(e.g. IDLEàS1)<br />

Role newRole = new S1();<br />

currentAgent.setRole(newRole);<br />

// (...)<br />

}<br />

}<br />

der entsprechenden Rollenklasse <strong>und</strong> ändert die Referenz in<br />

currentRole.<br />

Codebeispiel 3 zeigt das Codegerüst der Klassen Role<br />

<strong>und</strong> IDLE. Die Klasse Role hat eine Methode Process-<br />

Message(), die von jeder ihrer Unterklassen S1, S2 <strong>und</strong><br />

IDLE implementiert werden muss. Die Methode enthält<br />

das Verhalten der Rolle <strong>und</strong> wird vom Agenten aufgerufen,<br />

wenn er eine Nachricht aus der Nachrichtenwarteschlange<br />

abarbeitet. Eine Nachricht kann entweder von einem anderen<br />

Agenten als Teil einer Interaktion oder von Clock (in<br />

regelmäßigen Zeitabständen) stammen.<br />

Als Beispiel für die Implementierung einer Rolle wird in<br />

Codebeispiel 3 die Klasse IDLE gezeigt. Die Hauptverantwortlichkeit<br />

von IDLE, wie sie in Abschnitt 4.1 spezifiziert<br />

wurde, drückt sich in der Codesequenz von ProcessMessage()<br />

aus: Die Abfolge besteht aus:<br />

1. Überprüfung der Zuordnung von Agenten zu Rollen,<br />

2. Nachrichtenaustausch während der Verhandlungen über<br />

die Rolle,<br />

3. möglicher Tausch der Rolle am Ende der Verhandlungen.<br />

Details der Implementierung wurden hier weggelassen.<br />

Die vorgestellte Realisierung der agentenorientierten<br />

Eisenbahnsteuerung hat prototypischen Charakter. Sie ist<br />

keineswegs auf Geschwindigkeit oder minimalen Speicherbedarf<br />

optimiert. Die implementierten Algorithmen sind<br />

stark vereinfacht <strong>und</strong> sehen in der realen Eisenbahnsteuerung<br />

komplexer aus [26]. Das Implementierungsbeispiel orientiert<br />

sich nicht an existierenden Standards für Agentensysteme<br />

(z.B. FIPA), da die Realisierung der dafür notwendi-


29<br />

gen Infrastruktur den Rahmen gesprengt hätte. In diesem<br />

Beispiel ging es uns vielmehr darum, die gr<strong>und</strong>sätzlichen<br />

Schritte <strong>und</strong> Mechanismen zu verdeutlichen, die zur „Übersetzung“<br />

eines agentenorientierten Modells in ein agentenorientiertes<br />

System notwendig sind.<br />

4.3 Szenarien beim Einsatz des Systems<br />

Im Folgenden sollen die Merkmale der entwickelten agentenorientierten<br />

Steuerung anhand einiger Szenarien verdeutlicht<br />

werden. In jedem Szenario wird gezeigt, wie sich<br />

die gr<strong>und</strong>legenden Agentenkonzepte aus Analyse <strong>und</strong> Entwurf<br />

im Verhalten des Systems widerspiegeln.<br />

Zu Beginn der Ausführung wird das Element roleDB<br />

erzeugt, in dem die Rollen der Agenten abgelegt sind. Im Fall<br />

der Züge wertet jeder Agent seine eigene Transportkapazität<br />

aus <strong>und</strong> ermittelt die passende Rolle (siehe Abschnitt<br />

4.1, IDLE Rolle). Nach einer anfänglichen Phase von Interaktionen<br />

zwischen den Agenten zur Festlegung der Rollen<br />

wird die effizienteste Konfiguration erreicht: Die beiden langen<br />

Züge sind der Rolle S1 zugeordnet <strong>und</strong> einer der kurzen<br />

Züge, z.B. K1 ist S2 zugeordnet. Die restlichen Züge K2 <strong>und</strong> K3<br />

warten im Betriebswerk (Bild 7).<br />

Szenario 1: Erreichen gemeinsamer Ziele<br />

Erreicht der Zug K1 auf der Linie S2 aus irgendeinem Gr<strong>und</strong><br />

verspätet den Stadtbahnhof, so ist sein Fahrplan nicht mehr<br />

synchron zu S1. Dies würde für Fahrgäste, die vom Landbahnhof<br />

zum Hafenbahnhof fahren wollen, eine längere<br />

Wartezeit bedeuten. In diesem Fall informiert der Zug von<br />

S2 den Stadtbahnhof über die Verzögerung, der diese Information<br />

wiederum an alle Züge weiterleitet, die im Stadtbahnhof<br />

halten oder in naher Zukunft ankommen werden.<br />

Diese Züge können dann bestimmen, ob sie ihre Fahrpläne<br />

ändern, um auf den verspäteten Zug zu warten. Wird beispielsweise<br />

der Zug K1 in der Rolle S2 zwei Minuten später<br />

als geplant am Stadtbahnhof ankommen, leitet dieser die<br />

Information an L1 weiter, der gerade dort ankommt. Jede<br />

St<strong>und</strong>e muss L1 drei Mal zwischen Land <strong>und</strong> Stadt verkehren,<br />

braucht jedoch nur 54 Minuten (jede 18 Minuten). L1<br />

L<br />

K<br />

= 60 Plätze<br />

= 30 Plätze<br />

Hafenbahnhof<br />

S2<br />

8 min.<br />

180 P./Std.<br />

analysiert seine Ziele <strong>und</strong> entscheidet, dass eine Verspätung<br />

von zwei Minuten wegen des Zeitpuffers im Fahrplan<br />

annehmbar ist. Die Änderung seines Fahrplans wird vorgenommen<br />

<strong>und</strong> das gemeinsame Ziel, die Wartezeit für die<br />

Fahrgäste zu reduzieren, wird erreicht.<br />

Szenario 2: Reaktionsfähigkeit auf Fehler im System<br />

Nehmen wir an, dass L2, der in der Rolle S1 eingesetzt ist<br />

(siehe Bild 7), defekt ist <strong>und</strong> zur Reparatur ins Betriebswerk<br />

gefahren werden muss. Die Anforderungen an die Transportkapazität<br />

von S1 sind nicht mehr erfüllt, da L1, der zweite<br />

lange Zug mit der Rolle S1, maximal 180 Personen pro<br />

St<strong>und</strong>e befördern kann.<br />

Auf seinem Weg ins Betriebswerk gibt L2 die Rolle S1 auf<br />

<strong>und</strong> ändert die Information in roleDB.Die freien Züge K2 <strong>und</strong><br />

K3 (in der Rolle IDLE) erkennen den Wechsel der Zuordnungen<br />

<strong>und</strong> übernehmen gemeinsam mit L1 die Rolle S1. Die<br />

drei Züge müssen nun ihre Aktionen koordinieren, um die<br />

Anforderungen von S1 so gut wie möglich zu erfüllen. Die<br />

Agenten interagieren über das negotiateGoals Protokoll, bis<br />

sie die geeignete Anordnung gef<strong>und</strong>en haben: Die beiden<br />

kurzen Züge fahren im Gegentakt auf den unteren parallelen<br />

Strecken zwischen Land, Stadt <strong>und</strong> zurück. Das heißt ein Zug<br />

startet im Landbahnhof <strong>und</strong> der andere gleichzeitig im<br />

Stadtbahnhof (da in den Bahnhöfen für beide nur ein Gleis<br />

zur Verfügung steht). Mit diesem Fahrplan werden insgesamt<br />

360 Personen befördert, allerdings nicht gleichmäßig<br />

auf beide Richtungen verteilt (150 zu 210). Im Mittel von<br />

zwei St<strong>und</strong>en wird das Ziel erreicht <strong>und</strong> damit die Anforderung<br />

fast erfüllt.<br />

Szenario 3: Optimierung der Ressourcennutzung<br />

Nach einer gewissen Zeit für die Wartung ist L2 wieder fahrbereit.<br />

Er nimmt die Rolle IDLE an <strong>und</strong> prüft die Zuordnungen<br />

von Agenten zu Rollen. Dabei stellt L2 fest, dass K2 <strong>und</strong><br />

K3 für S1 eingesetzt werden <strong>und</strong> beginnt mit beiden das<br />

negotiateRole Protokoll, um die Rolle S1 wieder anzunehmen.<br />

Nachdem die Transportkapazitäten verglichen wurden,<br />

entscheiden K1 <strong>und</strong> K2, ihre Rollen aufzugeben, da sie die<br />

Anforderung der Transportkapazität<br />

nicht vollständig erfüllen <strong>und</strong> zusätzlich<br />

mehr Ressourcen – zwei Strecken<br />

gleichzeitig – als L2 für dieselbe Aufgabe<br />

benötigen. Nachdem sie die Rolle<br />

S1 aufgegeben haben, nehmen K1 <strong>und</strong><br />

K2 wieder die Rolle IDLE an.<br />

K1<br />

L1<br />

Landbahnhof<br />

L2<br />

S1<br />

Bild 7: Ausgangssituation des Eisenbahnbetriebs<br />

Stadtbahnhof<br />

18 min.<br />

360 Personen/St<strong>und</strong>e<br />

K2<br />

K3<br />

Szenario 4: Anpassung an eine sich<br />

ändernde Umgebung<br />

Nachdem die Linie S1 jetzt wieder<br />

durch die beiden langen Zügen L1 <strong>und</strong><br />

L2 bedient wird, tritt eine weitere Fehlersituation<br />

auf: Die obere Strecke zwischen<br />

Landbahnhof <strong>und</strong> Stadtbahnhof<br />

ist nicht mehr verfügbar. Zuvor hatte L1<br />

die obere Strecke für die Verbindung


30<br />

zwischen Land <strong>und</strong> Stadt benutzt <strong>und</strong> befindet sich gerade<br />

im Landbahnhof. Nachdem L1 <strong>und</strong> L2 das Problem erkannt<br />

haben, initiieren sie das negotiateGoals Protokoll, um die<br />

Benutzung der noch verfügbaren Ressourcen abzustimmen<br />

(hier die unteren Strecken). Die Lösung ist die Benutzung der<br />

zweiten unteren Strecke durch L1 im Gegentakt zu L2. Ab<br />

hier sind die Anforderungen der Rolle S1 wieder erfüllt, da<br />

drei Fahrten in jeder Richtung jede St<strong>und</strong>e stattfinden.<br />

Die vorgestellten Szenarien zeigen einen Ausschnitt, aber<br />

keine umfassende Demonstration der Möglichkeiten des<br />

agentenorientierten Transportsystems. Weitere Fehlerszenarien,<br />

gegebenenfalls auch bisher unbekannte, können flexibel<br />

gehandhabt werden. Gerade die Anpassungsfähigkeit<br />

des Systems an unerwartete Situationen ist ein Vorteil des<br />

agentenorientierten Ansatzes. Sicherlich können in diesem<br />

Beitrag nicht alle Aspekte des Systems detailliert dargestellt<br />

werden. Dies betrifft insbesondere die genaue Beschreibung<br />

der Entscheidungsprozesse innerhalb eines Agenten, die<br />

den Rahmen dieses Beitrags sprengen würde. Vielmehr soll<br />

das Beispiel einen Eindruck über den gesamten Entwicklungsprozess<br />

eines agentenorientierten Systems geben, die<br />

Denkweise bei der agentenorientierten Softwareentwicklung<br />

veranschaulichen <strong>und</strong> die spezifischen Merkmale hervorheben.<br />

4.4 Agentenspezifische Merkmale des Systems<br />

Die gezeigten Szenarien veranschaulichen die Umsetzung<br />

der agentenorientierten Gr<strong>und</strong>konzepte Autonomie, Interaktion,<br />

Reaktivität, Zielorientierung <strong>und</strong> Proaktivität in unserem<br />

Beispiel. Sie zeigen, wie die in den Protokollen spezifizierten<br />

Interaktionen zwischen den Agenten ablaufen, um<br />

Verhandlungen über Ressourcen oder gemeinsame Aktivitäten<br />

zu führen. Diese Kooperation ist ein zentrales Merkmal<br />

des agentenorientierten Systems. Der asynchrone Nachrichtenkanal<br />

Mqueue ermöglicht die Trennung zwischen Nachrichtenaustausch<br />

der Agenten <strong>und</strong> der Nachrichtenbearbeitung<br />

innerhalb eines Agenten <strong>und</strong> ist somit die Basis für das<br />

autonome Verhalten der Agenten. Flexibles, dynamisches<br />

Verhalten wird erreicht durch die getrennte Implementierung<br />

der Agenten <strong>und</strong> ihrer möglichen Rollen. Die regelmäßigen<br />

internen Nachrichten des Zeitgebers Clock an die<br />

Agenten ermöglichen eine kontinuierliche Erfassung der<br />

Umgebung <strong>und</strong> Verfolgung der Ziele ohne externe Aktivierung.<br />

Dies ist der Basismechanismus zur Implementierung<br />

von Proaktivität. In den Szenarien ist dieser Mechanismus für<br />

die Agenten notwendig, um Fehler selbstständig zu erkennen<br />

<strong>und</strong> das System anzupassen. Weiter steht in den Szenarien<br />

das Konzept der Zielorientierung im Vordergr<strong>und</strong>. Das in<br />

den verschiedenen Rollen eines Agenten spezifizierte Verhalten<br />

beeinflusst seine Aktionen so, dass die Ziele des<br />

Systems in der bestmöglichen Weise erfüllt werden können.<br />

5. Zusammenfassung <strong>und</strong> Ausblick<br />

Der letzte Schritt einer agentenorientierten Softwareentwicklung<br />

ist die Implementierung des entwickelten Agentensystems.<br />

Die Umsetzung der agentenorientierten Gr<strong>und</strong>konzepte<br />

Autonomie, Interaktion, Reaktivität, Zielorientierung<br />

<strong>und</strong> Proaktivität in ausführbare Programmstrukturen<br />

kann auf Basis der existierenden Mechanismen <strong>und</strong> Technologien<br />

der Softwaretechnik erfolgen. Hierfür ist ein gr<strong>und</strong>legender<br />

Aufbau von Agentensystemen mit Elementen für die<br />

Kommunikation <strong>und</strong> Verwaltung der Agenten erforderlich.<br />

Existierende Standards für Agentensysteme wie der FIPA-<br />

Standard vereinfachen ihren industriellen Einsatz.<br />

Zur Unterstützung des Entwicklers bei der Implementierung<br />

selbst existieren verschiedene agentenorientierte Programmiersprachen,<br />

APIs <strong>und</strong> Frameworks, wobei APIs <strong>und</strong><br />

Frameworks die weitaus größere Praxistauglichkeit aufweisen.<br />

Sie sind häufig in objektorientierten Programmiersprachen<br />

realisiert. Dies ist jedoch kein Nachteil oder Widerspruch<br />

in der agentenorientierten Softwareentwicklung,<br />

weil die agentenspezifischen Konzepte durchaus auf Basis<br />

von objektorientierten Sprachen <strong>und</strong> Technologien realisiert<br />

werden können. Aufgr<strong>und</strong> der Verbreitung objektorientierter<br />

Technologien ist dies sogar ein sinnvoller Weg für die<br />

breite Einsetzbarkeit von Agentensystemen.<br />

Nick Jennings, einer der Pioniere der Agentenorientierung,<br />

hat diesen Zusammenhang folgendermaßen ausgedrückt<br />

[27]: „... it is possible for proponents of other software<br />

engineering paradigms to claim that the key concepts of agentoriented<br />

computing can be reproduced using their technique –<br />

this is <strong>und</strong>oubtedly true. Agent-oriented systems are, after all,<br />

computer programs and all programs have the same set of<br />

computable functions. However, this misses the point.The value<br />

of a paradigm is the mindset and the techniques it provides to<br />

software engineers.“ Entscheidend für die erfolgreiche Entwicklung<br />

von Agentensystemen ist also die konsequente<br />

Umsetzung der agentenorientierten Denkweise während<br />

des gesamten Entwicklungsprozesses. Diese Denkweise<br />

wurde anhand der agentenorientierten Modellierung <strong>und</strong><br />

Implementierung einer Eisenbahnsteuerung veranschaulicht.<br />

Dabei wurden die einzelnen Schritte verdeutlicht, die<br />

bei der agentenorientierten Softwareentwicklung wichtig<br />

sind <strong>und</strong> es wurde gezeigt, wie sich die Agentenkonzepte im<br />

Verhalten des Systems zur Laufzeit ausdrücken.<br />

In dem Anwendungsbeispiel wurde auch deutlich, dass<br />

die Methode Gaia bei der Entwicklung agentenorientierter<br />

Systeme einige Schwächen aufweist. Es ist erkennbar, dass<br />

die Ergebnisse der agentenorientierten Analyse <strong>und</strong> des<br />

agentenorientierten Entwurfs mit Gaia auf einer zu hohen<br />

Abstraktionsebene vorliegen. Sie können nicht direkt für die<br />

Implementierung verwendet werden. Daneben können<br />

einige wichtige Aspekte bei der Softwareentwicklung nicht<br />

explizit im Modell ausgedrückt werden. Dazu gehören die<br />

aus den Anforderungen abgeleiteten Ziele des Systems, die<br />

Entscheidungsprozesse innerhalb der Agenten <strong>und</strong> Elemente<br />

des Systems, die keine Agenten sind (wie z.B. der<br />

Bahnhof im Anwendungsbeispiel). Für einen breiten industriellen<br />

Einsatz der agentenorientierten Softwareentwicklung<br />

müssen Methoden zur Verfügung stehen, die alle relevanten<br />

Aspekte der Aufgabenstellung <strong>und</strong> des Entwicklungsprozesses<br />

berücksichtigen. Dazu gehören auch die<br />

besonderen Anforderungen bei der Entwicklung von Software<br />

für technische Systeme, wie beispielsweise zeitliche<br />

Anforderungen. Deshalb werden am <strong>Institut</strong> für Automati-


31<br />

sierungs- <strong>und</strong> Softwaretechnik (IAS) der Universität Stuttgart<br />

im Forschungsgebiet Agentenorientierte Echtzeitsystem Konzepte,<br />

Methoden <strong>und</strong> Werkzeuge entwickelt, welche die Entwicklung<br />

von agentenorientierten <strong>Automatisierungs</strong>systemen<br />

unterstützen. Dazu gehört insbesondere die Berücksichtigung<br />

von Echtzeiteigenschaften. Hierzu wird die<br />

Erweiterung agentenorientierter Methoden untersucht. Dies<br />

geschieht zum einen auf konzeptioneller Ebene unter<br />

Berücksichtigung der spezifischen Konzepte der <strong>Automatisierungs</strong>technik,<br />

zum anderen auf der Ebene der konkreten<br />

Realisierung von Systemen mit beschränkten Ressourcen<br />

[28].<br />

Ein weiteres Forschungsthema am IAS ist das agentenbasierte<br />

Engineering von <strong>Automatisierungs</strong>systemen. Das<br />

Engineering von <strong>Automatisierungs</strong>systemen ist ein umfangreicher,<br />

vielfältiger <strong>und</strong> komplexer Vorgang mit Tätigkeiten<br />

zur Planung, Errichtung, Inbetriebnahme, Betrieb <strong>und</strong><br />

Instandhaltung technischer Anlagen. Die klassische Arbeitsweise<br />

beim Engineering ist geprägt durch getrennte Sichten<br />

(Gewerke) der einzelnen Ingenieurdisziplinen auf die Anlage<br />

<strong>und</strong> gewerkespezifische Engineering-Prozesse, Werkzeuge<br />

<strong>und</strong> Daten. Die mangelnde Durchgängigkeit der Engineering-Daten,<br />

die fehlende Unterstützung von Engineering-<br />

Prozessen <strong>und</strong> die geringe Möglichkeit der Wiederverwendung<br />

von erstellten <strong>Automatisierungs</strong>lösungen erfordern<br />

neue Konzepte. Komponentenbasierte Ansätze vereinfachen<br />

den Entwurf von <strong>Automatisierungs</strong>anlagen durch die<br />

Integration der Engineering-Daten in ein einziges Modell<br />

unter dem übergeordneten Gesichtspunkt von technologischen<br />

Komponenten, durch das die einzelnen Sichten integriert<br />

werden. Um den Entwicklungsingenieur effektiv zu<br />

unterstützen, ist eine Integration der Daten nicht ausreichend.<br />

Ein weitergehender Ansatz ist der Einsatz von aktiven<br />

Komponenten, die autonom ihre vielfältigen Verknüpfungen<br />

<strong>und</strong> Abhängigkeiten zu anderen Komponenten in der<br />

Anlage handhaben. Zudem können durch Kooperation<br />

Arbeitsabläufe <strong>und</strong> Wiederverwendung von Engineering-<br />

Lösungen unterstützt bzw. automatisiert werden. Basis für<br />

die aktiven Komponenten ist die agentenorientierte<br />

Betrachtung der Arbeitsabläufe beim Engineering. Dadurch<br />

kann eine Engineering-Umgebung geschaffen werden, in<br />

der die statischen Engineering-Daten durch aktive Softwareagenten<br />

repräsentiert werden, die den Entwicklungsingenieur<br />

bei seinen Aufgaben effektiv unterstützen <strong>und</strong> darüber<br />

hinaus Aufgaben der technischen Betriebsbetreuung<br />

selbstständig wahrnehmen [29].<br />

Weitere Informationen zur Forschung am IAS auf<br />

dem Gebiet Agenten in der <strong>Automatisierungs</strong>technik <strong>und</strong><br />

zu dem in diesem Beitrag vorgestellten Anwendungsbeispiel<br />

finden sich auf der Homepage des <strong>Institut</strong>s unter<br />

http://www.ias.uni-stuttgart.de/agenten.<br />

Wir danken allen Mitarbeitern <strong>und</strong> Studierenden des IAS, die uns bei der<br />

Erstellung dieses Beitrags unterstützt haben.<br />

Literatur + Links<br />

Zu diesem Beitrag finden Sie sämtliche Literaturreferenzen im Internet<br />

unter der Adresse http://www.ias.uni-stuttgart.de/agenten<br />

Dipl.-Ing. Thomas Wagner (29) ist seit 2 Jahren als<br />

wissenschaftlicher Assistent am <strong>Institut</strong> für <strong>Automatisierungs</strong>-<br />

<strong>und</strong> Softwaretechnik (IAS) der Universität<br />

Stuttgart auf dem Gebiet Agenten in der<br />

<strong>Automatisierungs</strong>technik tätig. Sein Aufgabenschwerpunkt<br />

ist agentenbasiertes Engineering von<br />

<strong>Automatisierungs</strong>systemen.<br />

Adresse: <strong>Institut</strong> für <strong>Automatisierungs</strong>- <strong>und</strong> Softwaretechnik,<br />

Pfaffenwaldring 47, D-70550 Stuttgart,Tel. (07<br />

11) 6 85-72 95, E-Mail: wagner@ias.uni-stuttgart.de<br />

Prof. Dr.-Ing. Dr. h. c. Peter Göhner (53) ist Leiter des<br />

<strong>Institut</strong>s für <strong>Automatisierungs</strong>- <strong>und</strong> Softwaretechnik<br />

(IAS) an der Universität Stuttgart. Hauptarbeitsgebiete:<br />

Angewandte Softwaretechnik, Komponentenbasierte<br />

Entwicklung von <strong>Automatisierungs</strong>systemen,<br />

Verlässlichkeit von Prozessautomatisierungssystemen,<br />

Web-basierte Aus- <strong>und</strong> Weiterbildung,<br />

Web-Technologien in der <strong>Automatisierungs</strong>technik<br />

<strong>und</strong> Agenten in der <strong>Automatisierungs</strong>technik.<br />

Seit Oktober 2000 ist er Prorektor für<br />

Lehre <strong>und</strong> Weiterbildung der Universität Stuttgart.<br />

Adresse: Siehe oben, Tel. (07 11) 6 85-73 01, E-Mail:<br />

goehner@ias.uni-stuttgart.de<br />

M. Sc. Paulo G. de A. Urbano (27) ist seit 2 Jahren als<br />

wissenschaftlicher Mitarbeiter am <strong>Institut</strong> für <strong>Automatisierungs</strong>-<br />

<strong>und</strong> Softwaretechnik (IAS) der Universität<br />

Stuttgart auf dem Gebiet Agenten in der<br />

<strong>Automatisierungs</strong>technik tätig. Sein Aufgabenschwerpunkt<br />

sind agentenorientierte Echtzeitsysteme.<br />

Adresse: Siehe oben, Tel. (07 11) 6 85-73 21, E-Mail:<br />

urbano@ias.uni-stuttgart.de

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!