Machine control system development typically relies on the developer’s experience and trial-and-error. This ad hoc approach can undermine the very success of the system development, with a lengthy and costly development period and, possibly, an endless cycle of upgrade and maintenance.