Cruise control has been used by a number of authors to illustrate software
design methodologies. This problem statement is derived from the one Booch
used to describe object-oriented programming [Booch86] and the one Birchenough
and Cameron later used to compare JSD to OOD:
A cruise-control system exists to maintain the speed of a car, even over
varying terrain, when turned on by the driver. When the brake is applied,
the system must relinquish speed control until told to resume. The system
must also steadily increase or decrease speed to reach a new maintenance
speed when directed to do so by the driver.
This is the block diagram of the hardware for such a system. There are several
There is one output from the system:
- System on/off:
If on, denotes that the cruise-control system should maintain the
- Engine on/off:
If on, denotes that the car engine is turned on; the cruise-control
system is only active if the engine is on.
- Pulses from wheel:
A pulse is sent for every revolution of the wheel.
Indication of how far the accelerator has been pressed.
On when the brake is pressed; the cruise-control system temporarily reverts
to manual control if the brake is pressed.
- Increase/Decrease Speed:
Increase or decrease the maintained speed; only applicable if the
cruise-control system is on.
Resume the last maintained speed; only applicable if the cruise-control
system is on.
Timing pulse every millisecond.
Digital value for the engineer throttle setting.
- Design considerations
Updated Halloween 95 by
Comments to maintainer