By
Miro Samek, President, Quantum Leaps, Chapel Hill, NC, USA
Description
Practical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language
(UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open
source, event-driven infrastructure, called QP that enables direct manual coding UML statecharts and concurrent event-driven applications
in C or C++ without big tools.
This book is presented in two parts. In Part I, you get a practical description of the relevant state
machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques
and state-machine design patterns, all illustrated with executable examples. In Part II, you find a detailed design study of a generic
real-time framework indispensable for combining concurrent, event-driven state machines into robust applications. Part II begins with
a clear explanation of the key event-driven programming concepts such as inversion of control (”Hollywood Principle”), blocking versus
non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state
machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition
from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts.
The lightweight
QP event-driven infrastructure goes several steps beyond the traditional real-time operating system (RTOS). In the simplest configuration,
QP runs on bare-metal microprocessor, microcontroller, or DSP completely replacing the RTOS. QP can also work with almost any OS/RTOS
to take advantage of the existing device drivers, communication stacks, and other middleware. The accompanying website to this book contains
complete open source code for QP, ports to popular processors and operating systems, including 80x86, ARM Cortex-M3, MSP430, and Linux,
as well as all examples described in the book.
Audience:
Embedded programmers; real-time system architects; code developers using C or C++