Preliminary test page. Sorry
Hi Folks!
This is the home of my FSMBuilder project.
What I
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.
What is
the FSMBuilder?
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.
Who
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.
Does
FSMBuilder follow the Mealy or Moore approach?
FSMBuilder
uses its own, mixed model.
Who uses
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
progams“?
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.
Why does
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.
Can
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.