View Source Document

Chris Pressey.md

Commentary by Chris Pressey

This work is distributed under a CC-BY-ND-4.0 license, with the following explicit exception: the ratings may be freely used for any purpose with no limitations.

Reactive Systems

Synchronous Programming of Reactive Systems

A good point in here is when they make the distinction between the "reactive kernel" and the rest of the system, the interface and data mangement components.

Statecharts

I would rate this as "classic" except that, unlike most classics, it is easy to understand even on the first reading.

Even if you're not sold on the visual formalism Harel presents, it's worth thinking about what it means to have a formal description of the reactive behaviour of a system, and what it means to combine such formal descriptions hierarchically and in parallel.

For motivating why one should care about the reactive behaviour of their app (or other system) in the first place, see "State Machines for Event-Driven Systems" by Miro Samek.

State Machines for Event-Driven Systems

Samek makes a very persuasive case for using state machines to describe the reactive behaviour of software. Ad-hoc introduction of state variables (especially boolean flags), as opposed to stepping back and thinking about the thing as a finite state-transition system, is a common beginner mistake that leads to "spaghetti state" and, quite often, bugs (where a state that simply shouldn't exist, is entered, with undefined behaviour).

It seems that most of this article was originally published as "Who Moved my State?" in the "The Embedded Angle" column of Dr Dobbs Journal in 2003. There were a couple of followup articles, including "Back to Basics" and "Dj Vu". Nowadays these seem to only be available in archive.org's WayBack machine.

Misunderstandings about state machines

A very unusual whitepaper. Not many whitepapers contain this much polemic. However, underneath it there are a number of keen observations.

Embedded State Machine Implementation, 12/2000

A very straightforward and easy-to-understand article on some methods for developing a state machine-based control program.