Real-Time Systems Development

The use of Finite State Machines (FSM) is at the base of several software design methods, and they can provide strong support during both design and implementation phases of software development. This chapter focuses on the use of Finite State Diagrams (FSD) for specifying the dynamic operation of software. Before planning an FSD, it is usual to draw up a context diagram to define the system perimeter. The transformation of FSDs into runnable code is deferred until the following chapter.
Before any design activity can take place some clear and exact decisions have to be taken about the system perimeter. This is often referred to as establishing the system context and may not be entirely straightforward. For example, when confronted by an obvious, free-standing piece of equipment, such as a microwave oven or digital camera, it is often misleading to assume that the system perimeter should be the cabinet casing as most of the equipment controlled by the software is located inside the cabinet. The designer needs to establish what is in the system, and what is outside, from a functional point of view. In addition, it is convenient to treat countdown timers as if they are external devices with both input and output channels. So the first step is to isolate the central system controller, and then analyse its input and output data. This leads to an understanding of what data streams the system will have...