The State Machine Compiler
-
Upload
francois-perrad -
Category
Technology
-
view
4.709 -
download
0
description
Transcript of The State Machine Compiler
![Page 2: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/2.jpg)
The State Machine Compiler
Introduction Basic concepts Advanced concepts More features A case study : a Telephone Conclusion
![Page 3: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/3.jpg)
FSM are everywhere
FSM : Finite State Machine Not a new technology Strong theorical base Reactive systems / Transformational
systems Event driven Applications :
Telephones, automobiles, communication networks, avionic systems, man-machine interface
![Page 5: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/5.jpg)
A SourceForge project
Some facts : registered in 2000 ~500 downloads / month ~100 bugs (closed) written in Java mature codebase well documented 3 developers Licence MPL
See : http://www.ohloh.net/projects/7339?p=SMC
![Page 6: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/6.jpg)
The State Machine Compiler
Introduction Basic concepts Advanced concepts More features A case study : a Telephone Conclusion
![Page 7: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/7.jpg)
A Compiler A input source .sm (yacc-like syntax) A output source (readable) in your language Currently 14 target languages :
C, C++, C#, Groovy, Java, Lua, Objective-C, Perl, PHP, Python, Ruby, Scala, Tcl and VB.net
An Object Oriented design : your class has a member which is the FSM generated class
A small RunTime Library Parser & Lexer of SMC are written with SMC The root of SMC is ATN (Augmented Transition
Network) Robert C. Martin (uncle bob) is the author of the
initial SMC implementation
![Page 9: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/9.jpg)
A Reflexive Transition
// State
Idle {
// Trans Next State Actions
Timeout Idle {}
}
![Page 11: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/11.jpg)
A Transition with Actions
// State Idle {
// Trans Run
// Next State Running
// Actions { StopTimer("Idle"); DoWork(); }
}
![Page 12: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/12.jpg)
Transition Guards
// State Idle { // Trans Run
// Guard condition [ctxt.isValid()]
// Next State Running
// Actions { StopTimer("Idle"); DoWork(); }
Run Idle { RejectRequest(); } }
![Page 13: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/13.jpg)
Transition Arguments// State Idle { // Transition Run(msg: const Message&)
// Guard condition [msg.isValid()] // Next State Running
// Actions { StopTimer("Idle"); DoWork(msg); }
Run(msg: const Message&) // Next State Actions Idle { RejectRequest(msg); }
}
![Page 14: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/14.jpg)
Entry and Exit Actions
// State
Idle
Entry { StartTimer("Idle", 1); CheckQueue(); }
Exit { StopTimer("Idle"); }
{
// Transitions
}
![Page 15: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/15.jpg)
the State Machine Compiler
Introduction Basic concepts Advanced concepts More features A case study : a Telephone Conclusion
![Page 16: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/16.jpg)
Advanced Features
Map : state container only one level (multiple with UML)
Push/Pop with stack context see UML History
Default state factorisation of common behavior
in a map No concurrency (ie //)
![Page 18: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/18.jpg)
the State Machine Compiler
Introduction Basic concepts Advanced concepts More features A case study : a Telephone Conclusion
![Page 19: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/19.jpg)
More features
Event management is yours Graphviz output generation HTML table generation Dynamic trace Namespace support Reflection/Introspection (for MMI)
![Page 21: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/21.jpg)
the State Machine Compiler
Introduction Basic concepts Advanced concepts More Features A case study : a Telephone Conclusion
![Page 22: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/22.jpg)
A Telephone
Go to the WEB Play with the demo (Applet Java)@ http://smc.sourceforge.net/SmcDemo.htm
![Page 23: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/23.jpg)
the State Machine Compiler
Introduction Basic concepts Advanced concepts More Features A case study : a Telephone Conclusion
![Page 24: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/24.jpg)
all contributions welcomed
Eclipse plugin Debian packaging Pluggable language support New target language Regression test …
![Page 25: The State Machine Compiler](https://reader038.fdocuments.us/reader038/viewer/2022102519/555a4ccfd8b42ad56a8b48dd/html5/thumbnails/25.jpg)
Bibliography / Webography
- SMC : http://smc.sourceforge.net/- Robert C. Martin, "Agile Software Development" - http://en.wikipedia.org/wiki/Finite_state_machine- http://en.wikipedia.org/wiki/Statechart- D. Harel, "Statecharts: A Visual Formalism for Complex
Systems" - http://www.uml.org/- http://fr.wikipedia.org/wiki/Grafcet- NF C03-190 - Diagramme fonctionnel "GRAFCET" - http://en.wikipedia.org/wiki/Augmented_transition_network