As a software engineer you
are probably familiar with Finite State Machines and their traditional
usage in digital hardware design. You are likely aware that FSM concepts
are also part of the UML modeling capabilities using Statecharts. As
indicated by the
2008 Market Survey provided by Embedded Systems Design magazine,
about one in five embedded projects uses UML. The survey does not
specify whether UML Statecharts is the reason why UML is used.
Unfortunately, the survey does not provide any data about the use of
Finite State Machines for embedded software either, so it is difficult
to assess the opinion software engineers have about FSMs. It could be
stated that the current unpopularity of FSMs (for embedded software)
might be attributed to the fact that FSMs are traditionally a digital
hardware design method, and that they are therefore too complex to even
consider using for embedded software architecture design. Also, there
exists a common misconception that attempting to model and design an
entire system as a single state machine results in 'state explosion'
and unnecessary complexity. Thanks, in part, to
Harel[87]'s Statecharts: A Visual Formalism for Complex Systems,
this misconception should be dispelled entirely. Statecharts introduced
orthogonality/concurrency and the concept of AND states (versus
exclusive OR) and Staccato™ introduces 'partitioning by resource' to
encourage an architecture based on 'a system of Finite State Machines'.
Given this, software engineers should (re)consider using FSM concepts in
their embedded software architecture and module design.