Preliminary test page. Sorry
This is the home of my FSMBuilder project.
will find here?
This page contains description about the FSMBuilder, why I created it and what it is good for. Also some background information is provided.
FSMBuilder is a little Java Swing Application that can be used to create Finite State Machines and generate portable ANSI-C code from it.
What is a
Finite State Machine?
A Finite State Machine (abbr. FSM) is an abstract model that consist of states and transitions (connections between states) that cause a switch from one state to another if an event occurs. FSMs can be used to describe the behaviour of many real-word things, from mouse traps to soda machines, from logic circuits to video games. How an FSM reacts, depends on its network of states and transitions.
invented the FSM model?
In literature two people are spooking around: Mealy and Moore. Those guys defined two slightly different approaches to FSMs many decades ago. One of them made up an FSM which output depends only on states. The other one conceived FSMs which outputs depends on state and input actions. I don't know who really was the first FSM inventor. But Mealy or Moore could be it.
FSMBuilder follow the Mealy or Moore approach?
FSMBuilder uses its own, mixed model.
FSMs and who not?
FSMs are widely accepted and used in hardware design. Though, they're also very useful for software design, many software programmers reinvent FSM-like constructs over and over. They're tinkering if-elseif-switch-case-whatever constructs together until it works. That's error-prone and boring. Wouldn't it be nice to have a tool for this job, where you can draw your program on a worksheet? It would! So, here we go...
Huh? I'm a
programmer, not an Artist. What did you mean with “drawing
With FSMBuilder you can develop a visual representation of your program's behaviour (or parts of it). After you're done, simply click on a menu entry and FSMBuilder spits out pure ANSI-C source code that can be compiled with any standard-compliant C compiler.
FSMBuilder generates ANSI-C code?
Because ANSI-C is the most common programming language in the world. Nearly all systems, from biggest servers to smallest 8-bit embedded controllers can compile it. And because I'm an embedded systems developer that needs a program exactly like this :-)
And why it
is written in Java?
Because Java is the easiest-to-use but still most versatile and stable language/system in the world. It's the only way to build a little GUI application like this, which runs on any OS with little or no changes. With few code added, FSMBuilder can execute as a part of a web page or can be embedded into another application. Today, there are much reasons to write desktop applications in Java.
I find applications similar to FSMBuilder on the web?
Yes, there are many, but none fits my needs. I seeked the net for a long time but couldn't find any program that simply converts FSMs into pure ANSI-C code without much overhead. There are FSM to XML converters, exotic language to FSM compilers that can generate FSMs in various languages. Commercial, big and bloated systems that convert UML class diagrams into code but can't handle FSMs or generate code which is bound to a specific operating system. All were unsuited. Therefore, after all searches, I decided to build my very own one.