16.08.2013 Aufrufe

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

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.

186 KAPITEL 7. OBJEKTORIENTIERTE MODELLE<br />

¯ reaktive Verhaltensmuster.<br />

Das Agentenmodell soll dabei so angelegt sein, daß es relativ einfach um zusätzliche Eigenschaften<br />

erweitert werden kann, z.B.<br />

¯ eine explizite Wissensrepräsentation,<br />

¯ Lern- <strong>und</strong> Adaptionsfähigkeit sowie<br />

¯ <strong>die</strong> Fähigkeit, verschiedene Rollen annehmen zu können.<br />

Diese Eigenschaften sind notwendig, wenn Agenten zusätzliche Aufgaben übernehmen sollen,<br />

wie z.B. <strong>die</strong> Optimierung von Performanz <strong>und</strong> Ressourcenauslastung. In <strong>die</strong>sem Fall muß<br />

der Agent Ressourcen zuteilen <strong>und</strong> deren Vergabe planen können, wo<strong>für</strong> er Informationen über<br />

<strong>die</strong> verfügbaren Mechanismen zur Parallelisierung <strong>und</strong> Konfiguration des <strong>Daten</strong>flußgraphen,<br />

sowie Wissen über mögliche Auswirkungen <strong>die</strong>ser Schritte benötigt.<br />

7.6.1 Das Objektmodell<br />

...<br />

...<br />

...<br />

...<br />

Sequence<br />

Functor<br />

AgentRelation<br />

active: bool<br />

syncMode: bool<br />

preFunction: (*)<br />

postFunction: (*)<br />

sequenceList<br />

*<br />

functorList<br />

*<br />

Identifikation<br />

name: string<br />

cycleDepth: integer<br />

Bearbeitungsstatus<br />

agentMode: enum<br />

nextAgentMode: enum<br />

activeCycleNum: integer<br />

currentCycleNum: integer<br />

complCycleIdx: integer<br />

SequenceAgent<br />

currentCycleTime: TimeAbs<br />

complCycleTime: TimeAbs<br />

Arbeitsmodus<br />

run (threadMode)<br />

setMode (agentMode,execMode)<br />

callCycle (cycleTime,useCond)<br />

fixCycleTime () : TimeAbs<br />

notify (message)<br />

Interne Methoden<br />

preCycle (cycleInst: AgentCycle): ErrorState<br />

startCycleCond (cycleInst: AgentCycle): ErrorState<br />

callSequences (cycleInst: AgentCycle): ErrorState<br />

callFunctors (cycleInst: AgentCycle): ErrorState<br />

postCycle (cycleInst: AgentCycle): ErrorState<br />

AgentCycle<br />

cycleList<br />

cycleStartTime: TimePointAbs<br />

* sequStartTime: TimePointAbs<br />

funcStartTime: TimePointAbs<br />

cyclePostTime: TimePointAbs<br />

cycleEndTime: TimePointAbs<br />

*<br />

actionState<br />

ActionState<br />

methodId: enum<br />

cycleTime: TimeAbs<br />

state: enum<br />

Abbildung 7.7: Klassendiagramm <strong>für</strong> <strong>die</strong> Agentenklasse ËÕÙÒ ÒØ. In ihr werden <strong>die</strong> wesentlichen<br />

Objektassoziationen <strong>und</strong> Verhaltensmuster von Agenten <strong>für</strong> <strong>die</strong> dynamische Sensordatenauswertung<br />

definiert.<br />

Der Objektentwurf stützt sich im wesentlichen auf das in Abschnitt 4.4 vorgestellte Agentenmodell.<br />

Ein Sequenzagent verwaltet eine Liste mit Sequenzen ËÔ <strong>und</strong> eine mit Funktoren<br />

Ô, <strong>die</strong> zyklisch zu aktualisieren bzw. zu bearbeiten sind. Davor <strong>und</strong> danach können zusätzliche<br />

Aktionen <strong>für</strong> <strong>die</strong> Überwachung <strong>und</strong> Konfiguration des Systems installiert werden. Im<br />

laufenden System können <strong>die</strong>sen Listen beliebige Sequenzen bzw. Funktoren hinzugefügt <strong>und</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!