Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...
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>