Generic State Machine engine (GSMe) L. Andolfato |
PRIMA project for the VLT Interferometer VLT SW Platform (Linux, GNU C/C++, CCS/EVH) Workstation Software Framework (WSF): State Machine framework for the development of workstation applications Generic State Machine engine WSF Experience L. Andolfato |
Generic State Machine engine WSF Model Dependent Engine L. Andolfato | In a model dependent engine the SM is embedded in the engine. Examples: State Pattern, switch, etc. Changing the model -> recompile the application Application size depends on the model size
Generic State Machine engine WSF Model Representation L. Andolfato |
Generic State Machine engine WSF Example L. Andolfato |
UML Tools -> Statecharts Statecharts reduce the visual complexity of a SM Important features: Composite (Compound) States Orthogonal Regions Initial/Final pseudo-states History State Entry/Exit/Trans/Do Actions State Pattern architecture supports very few of them Generic State Machine engine Statechart Features L. Andolfato |
Is there a standard semantic for Statecharts? Is UML Statecharts semantic completely defined? Generic State Machine engine Statecharts Semantic L. Andolfato | No, Statecharts syntax was defined in the famous paper by D. Harel “Statecharts: A Visual Formalist For Complex Systems” The semantic was not completely specified. Different tools/standards introduced different semantics: Statemate, Rhapsody, UML. UML Statecharts semantic is NOT completely specified. SCXML semantic is specified (the algorithm is provided with the standard).
Generic State Machine engine WSF based Applications L. Andolfato | Despite all these architectural issues, WSF helped in the development of several control applications: ProjectNumber of Applications PRIMA12 APE12 NGC6 DL1 AO Instrument(s)In progress E-ELT Enclosure prototype for VLTIn progress > 31
ACS State Machine generator Based on Linux, Java, ACS Generates from Rational ROSE/MagicDraw models using oAW Supports limited number of Statecharts features Only one application generated Generic State Machine engine Others SM based tools L. Andolfato | SPARTA State Machine framework Based on Linux, C++, SPARTA Supports limited number of Statecharts features Supports inheritance Does not generate from SM model
Generic State Machine engine Comparison L. Andolfato | EngineWSFACSSPARTAGSMe Model Independent Engine No Yes Statecharts Features 60%40%30%90% Standard Semantic~~UML~UML SCXML InheritanceNo Yes Graphical/Text model representation Yes/Yes ROSE,EA,MD/txt Yes/No ROSE,MD No/NoYes/Yes MD/SCXML MultiplatformNo VLT No ACS No SPARTA Yes VLT, ACS
Generic State Machine engine Data Flow L. Andolfato |
Interpreted or compiled programming language? Generic State Machine engine Model Independent Engine L. Andolfato | Examples: VLT: TCL and C/C++ ACS: Python and Java/C++ Qt: ECMAScript and C++ Both! SCXML Engines: Fully interpreted: SM logic (states, transitions) and actions/data Partially interpreted: SM logic only, actions/data are compiled
At the moment we are iterating on Requirements analysis Design Java Prototype for the SCXML Engine and Parser Generic State Machine engine Current Status / Planning L. Andolfato | Planning for this year UML to SCXML transformation (definition and implementation) Development of Java adapters for ACS Finalize the Java Engine and Parser Code Generator for ACS
More info: nericStateMachineEnginehttps://websqa.hq.eso.org/sdd/bin/view/MDD/MddGe nericStateMachineEngine Generic State Machine engine Questions? L. Andolfato | Thank you!