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.7.0 or better is supported. |
|||||||||||||||||
Version 7.6.0: Bug Fix.
Release fixes SMC bug 238.
When |
|||||||||||||||||
Version 7.5.0: Minor Bug Clean-up.
This release fixes the following bugs:
|
|||||||||||||||||
Version 7.4.0: Minor Bug Clean-up.
This release fixes the following bugs:
|
|||||||||||||||||
Version 7.3.0: Yet more bug stomping.
This release fixes the following bugs:
|
|||||||||||||||||
Version 7.2.0: More bug stomping.
This release fixes the following bugs:
|
|||||||||||||||||
Version 7.1.0: Bug stomping.
This release fixes the following bugs:
|
|||||||||||||||||
Version 7.0.0: smc-maven-plugin.
SMC is now back up on Maven Central Repository
along with a new smc-maven-plugin. This allows
Java Maven projects to automatically compile .sm
files and include the generate source into the
overall build. The SMC plugin supports all the
same options as the command line.
The downside is that the artifact only contains
the Java library needed to run an
application. This is due to the fact that Maven
is Java-centric and does not really support other
target languages easily. This means that SMC will
continue to be released to SourceForge in the
same manner as before.
The artifact includes the module example-java-ex6
which shows how a Java Maven project's POM can
use the smc-maven-plugin.
SMC Maven identifiers are:
SMC Programmer's Manual Section 14: Pluggin In
shows how to connect a Java Maven project to the
smc-maven-plugin and depend upon the Java library
module.
This release fixes the following bug:
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
,
JavaScript
,
Lua
,
Objective-C
,
Perl
,
PHP
,
Python
,
Ruby
,
Scala
,
Tcl
and
VB.net
.
* In Java, the state machine can be implemented using either the State Pattern or a transition table (using java.lang.invoke.MethodHandle). |
||||||||||||||||
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. |