The dynamic behavior of an entity is a sequence of snapshots, each of which represents a stable state of the entity. They are very like the frames in a movie. Note that a snapshot represents a stable state of an entity at a certain point in time instead of the state of the model. A model may be mutable during the execution of an action. Different entities in the model have their own snapshots over time, and when entity has a snapshot, it doesn't mean another entity is also in a stable state at that time.
A change causes a transition between two states of an entity, so it is associated with two snapshots: a predecessor and a successor. Both of the states are stable, but the change may take some time during which the state is volatile. Other entities are not allowed to access the variables of this entity if it is in a change. A number of changes are associated with a specific entity.
Time is an important property of a change, which specifies when a change occurs. It is usually a nonnegative integer with representing the creation time of the entity. Because of this, the time is relative to the life of the entity. The execution environment may maintain a global time for internal use, but entities in an execution of the model only have the knowledge of their local time.
A history is constituted by a sequence of changes of an entity over time, which starts from the creation of the entity and ends with its destruction. Because the history is for a single entity, every change in the history is associated with the same entity. History is a sequential chain of changes. The successor snapshot of a change (except the last one) is the predecessor of the next change.
The execution of an entity can be viewed as an entity in its own right, which allows us to focus more on the dynamic behavior of the entity. It has its own identity and history. A change in the history of such an execution is a step in the execution. An execution snapshot is a stable stage between steps. Step is the subclass of change, and execution snapshot is a subclass of snapshot. Steps can access other snapshots, but the access must be synchronized; so each of them keeps a record of referents -- the snapshots that are to be synchronized with it. And of course, the accessed snapshots also keep records of these accessors in attributes.