## Modeling Software with Finite State Machines: A Practical Approach

*Modeling Software with Finite State Machines: A Practical Approach* explains how to apply finite state machines to software development. It provides a critical analysis of using finite state machines as a foundation for executable specifications to reduce software development effort and improve quality.

It discusses the design of a state machine and of a system of state machines. It also presents a detailed analysis of development issues relating to behavior modeling with design examples and design rules for using finite state machines. This text demonstrates the implementation of these concepts using StateWORKS software and introduces the basic components of this software.

Review By: Dmitri Ilkaev

07/13/2007

"Modeling Software with Finite State Machines: A Practical Approach" discusses the design of a state machine and of complex systems consisting of multiple state machines. The strength of the book is its presentation of a comprehensive analysis of using finite state machines as a foundation for executable specifications to reduce software development effort and improve quality. It presents a detailed review of development issues relating to behavior modeling with design examples and design rules for using finite state machines.

While the second and third parts of the book illustrate a very practical approach of the design and implementation of the state machines, the first part summarizes the evolution of software development methods and analyzes their limitations. This part is less connected to the main topic of the book, is more generic, and mostly illustrates the author’s views on the modern software development landscape.

The book also contains: numerous examples; a link to a free, unlimited, time-licensed download of StateWORKS development tools; source code of all examples; and additional technical notes not found in the book. The introduction to the virtual finite state machine method presented in the book is very sound and helps to jumpstart design and development activities.

The book will be helpful to multiple categories of software developers and engineers. Through the book, a less experienced reader can obtain a comprehensive understanding of the basic principles and design of the state machines, while a developer who already works in the field will be able to gather a good set of practical recommendations and working examples for a specific implementation.