|
Your application lives in a world of asynchronous, unordered events: mouse clicks, timeouts, messages, and OS signals. And you're ready for them. You've carefully designed your objects. You're using robust patterns that facilitate reuse and anticipates future product direction. Your dynamic models allow your objects to recover from all but the most catestrophic events. Your application is ready for anything. But there's a hitch. Your detailed state diagrams are only pictures. How are you going to translate your drawings into code? A transition matrix is cryptic while switch statements means your state machine logic is scattered all over your code. The state pattern looks like a great solution but that means writing and maintaining a class for each state - too much work. Enter SMC - The State Machine Compiler. Now you put your state diagram in one file using an easy-to-understand language. SMC generates the state pattern classes for you. No more hand-maintained transition matrices. No more widely scattered switch statements. Instead, the state diagram is in one place, coded directly from the picture to the SMC language and is easily maintained. SMC uses the state pattern to its fullest extent. In the real world, events don't always happen when they should. Dealing with unexpected events is a must for a robust application. By combining virtual methods with the state pattern, SMC allows you to define "Default" transitions - transitions which allow your objects to handle unexpected events, recover and continue providing service (rather than crashing, burning and getting you into trouble). SMC is a Java application. That means SMC will work on any platform where Java 1.5.0 or better is supported. |
||||||||||||||||
|
Version 5.1.0: PHP and Scala Added.
SMC v. 5.1.0 release package adds PHP and Scala
generation to its list of programming languages.
This release also includes the new Jump
transition as well as the following bug fixes:
Check the SMC project's Latest News to find out the latest, report bugs, ask questions, make suggestions or to learn how you can help improve this great tool. |
|
|||||||||||||||
|
See how easy it is to put SMC generated state machines into your code. This page walks you through the steps to using the State Machine Compiler. This page comes in fourteen flavors: C , C++ , C# , Groovy , Java , Lua , Objective-C , Perl , PHP , Python , Ruby , Scala , Tcl and VB.net . | |||||||||||||||
| Step into the picture gallery and check out the finite state machine pictures at all levels of detail, both the raw, SMC-generated version to the human-edited improvements. |
|
|||||||||||||||
|
Step in, close the door and place a call. The SMC Telephone Demo is a Java applet driven by an SMC-generated finite state machine . You can watch the FSM do its thing while placing your call. | |||||||||||||||
|
And when all else fails (and only then), READ THE MANUAL! | |||||||||||||||
| Got questions? Then check out the Frequently Asked Questions (FAQ) page. Can't find your question? Then e-mail it to me and I will send you the answer and add it to the FAQ. |
|
|||||||||||||||
|
Alright, you're gonna bite. This page has the download links for SMC. | |||||||||||||||
|
Stand up and and give them a hand! Who? Why those intrepid folks who have contributed to SMC, that's who! Find out who all make SMC the success that it is. | |||||||||||||||
| Is there some feature you would like to see added to SMC? Is there an irritating bug you would like to see fixed? Then make a wish. Or better yet, go here to make submit a feature request and here to submit a bug report. |
|
|||||||||||||||
|
|
SourceForge.net has many other open source software downloads available. Surf over and check it out! | |||||||||||||||
|
|
And in case you were wondering, SourgeForge provides all the servers, networks and software necessary to make SMC possible - without asking for anything in return! Well I'm asking. You can now donate to the SMC project and 100% of the donation goes to SourceForge.net. If you want SMC to keep going, then we all have to keep SourceForge going. |
|||||||||||||||
|
|
If you have any comments or questions, contact me. | |||||||||||||||