A basic problem of software development is how to derive executable so
ftware components from requirements, and how this process could be sys
tematized. The object-oriented approach provides a common paradigm thr
oughout the software development process from analysis to implementati
on, enabling a smooth shift from one phase to another and use of a wid
e spectrum of tools. Current object-oriented CASE tools support variou
s graphical notations for modeling an application from different persp
ectives, for consistency checking between models, for storing models i
n a repository, and for generating documents and code from models. How
ever, the level of built-in automation is relatively low as far as the
actual development process is concerned. In object-oriented analysis
and design, or OOAD, dynamic modeling aims at specifying the dynamic b
ehavior of objects. For an object whose role is to control other objec
ts, specification of its dynamic behavior can often be given in the fo
rm of a finite-state machine. A simple state machine consists of state
s associated with actions, and transitions associated with events. The
actions of a state are executed when this state becomes the object's
current state.