Download presentation
Presentation is loading. Please wait.
1
Top Level and Infrastructure Components maurelio & doleron
2
Rollerslam 2.0 x 1.0 Pros –Efficiency in communication –100% Prolog/FLUX Player Specification –Communicative Actions –PIM-Code Compatibility Cons –No distribution
3
Top Level Display GamePhysics Player SimulationInfrastructure FluxCommunicativeAgent Overview
4
Ideal PSM components dependecy
5
Top Level Display GamePhysics Player SimulationInfrastructure CommunicativeAgent FluxCommunicativeAgent FluxInferenceEngine EclipseProlog Java Bridge API
6
Real PSM components dependecy
7
Top Level Display GamePhysics Player SimulationInfrastructure CommunicativeAgent FluxCommunicativeAgent FluxInferenceEngine EclipseProlog Java Bridge API
8
Top Level PIM
9
Specification
10
Specification Service View > Rollerslam > SimulationAdmin --------------------------------------- + setState(s:SimulationState) + getState() : SimulationState simAdmin
11
Specification Type View > SimulationState ----------------------- INITIALIZED PAUSED RUNNING
12
Specification Operation View context Rollerslam::setState(s:SimulationState) post: getState() = s
13
Realization
14
> Rollerslam ----------------------------------------------------------------------------------------------------------------------------- Realization Service View > Simulation Infrastructure > SimulationAdmin > Agent * > Player > Referee > GamePhysics > agents > Display
15
> : Rollerslam ----------------------------------------------------------------------------------------------------------------------------- Realization Instance View infra: Simulation Infrastructure : Display : SimulationAdmin > : GamePhysics: Referee: Player... gfa : Agentr : Agentp1 : Agentp40 : Agent >
16
Realization Operation View context Rollerslam::setState(s:SimulationState) post: infra.setState(s) context SimulationIntrastructure::getState() : SimulationState body: infra.getState()
17
Simulation Infrastructure PIM
18
Specification
19
Specification Service View > Simulation Infrastructure > * agent > Agent -------------------------------------------------------- + getAgentID() : AgentID + sendActions(actions:Message[*]) + getPerceptions() : Message[*] + getSimulationState() : SimulationState > SimulationAdmin --------------------------------------- + setState(s:SimulationState) + getState() : SimulationState simAdmin simulation
20
Specification Service View Invariants context Agent inv: getSimulationState() = simulation.simAdmin.getState() context SimulationInfrastructure inv: agents.getAgentID()-> forAll( id | agents->select(getAgentID() = id)->size() = 1)
21
Specification Type View > SimulationState ----------------------- INITIALIZED PAUSED RUNNING > Message ----------------------- + sender: AgentID + receiver: AgentID[*] > AgentID
22
Specification Life Cycle View RUNNING PAUSED setSimulationState(PAUSED) setSimulationState(RUNNING) INITIALIZED setSimulationState(INITIALIZED) setSimulationState(RUNNING)
23
Specification Operation View context SimulationAdmin::setState(s:SimulationState) post: getState() = s
24
Realization
25
Realization Service View > Simulation Infrastructure --------------------------------- - state : SimulationState --------------------------------- + setState(s:SimulationState) + getState() : SimulationState > Simulation Admin Message msgs *
26
Realization Operation View context SimulationInfrastructure::setState(s:SimulationState) post: state = s context SimulationIntrastructure::getState() : SimulationState body: state context Agent::sendActions(actions : Message[*]) post: simulation.msgs = simulation.msgs->including(actions) context Agent::receivePercepts() : Message[*] body: result = simulation.msgs-> select(x|x.receiver->includes(self.getAgentID())
27
Communicative Agent PIM
28
Specification
29
Specification Service View > Communicative Agent > Agent > OOState > OOState AgentID agentKB kb
30
Specification Type View > OOState > WorldObject * > OID > StringOID ---------------------------- + oid : String > ObjectState > AgentID (from Infra) > Communicative AgentID ------------------ + myID : String
31
Specification Type View > Message (from Infra) > AskAction ------------------ + oids : OID[*] > TellAction ------------------ + objects : WorldObject[*] > AskAllAction
32
Realization
33
Realization Service View > Communicative Agent --------------------------------------------------------------- # processCycle(messages : Message[*]) : Message > Message actions *
34
Realization Algorithmic View actions = processCycle( agent.getPerceptions()) agent.sendActions(actions) [not actions.isEmpty()]
35
processCycle(messages : Message[*]) : Message agentKB(sender).worldObject ->includes(m.objects) foreach message m in messages [m.oclIsKindOf(TellAction)] ret.oclIsKindOf(AskAction) and ret.objects = kb.objects-> select(x |m.objects->includes(x.oid)) ret.oclIsKindOf(AskAction) and ret.objects = kb.objects [m.oclIsKindOf(AskAction)] [m.oclIsKindOf(AskAllAction)]
36
Discussion Negative aspects –Zero test scenarios –incomplete non-functional analisys (stress & code-compliance) –Late project integration (Flux comunicative approach) –No object-funcional abstract layer mapping
37
Discussion Positive aspects –Peformance improvement sense –Code improvements with refactorings –Team knowledge improvement –Flux player implementation –Improvements render strategy to 2D&1/2 renderization
38
Test Scenarios
39
What the player behavior in this case?
40
Test Scenarios And now?
41
Future Work Object-Funcional framework Quantitative metrics to decision support Scenarios automatic testing Continuous integration Artfacts automatic synchronization with tool support
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.