A great number of simulators are either continuous or
discrete. Since in software projects both mechanisms are
presented, we decided for a hybrid approach in which [27]:
• At a higher level of abstraction, the structure of the
software process, activities, interactions and artifacts are
best modeled by a discrete event approach;
• At a lower level of abstraction, the behavior of the
activities and the factors that influence the simulated
project are best modeled by a continuous approach.
In the simulator component, aspects of discrete events are
used to represent individual objects (e.g. process areas, and
artifacts), actions (“give training or mentoring”, “make an
investment”), conditions of triggers and destroyers, and the
rules executed at the start or at the end of an action. The
continuous characteristics are represented through continuous
rules, which are performed at each step of the simulation,
whether the actions that define them are currently active.
The simulator runs in a loop. For each time step, it looks
whether the conditions of triggers and destroyers were
satisfied, executes continuous rules, generates log, and gives
feedback to the players. If triggers or destroyers conditions are
satisfied, the rules associated to the actions are checked.
Continuous rules are fired every clock tick, whether their
respective action is active. The log is generated for the object
types defined in the XML file. The calculations of performance
feedback are defined by the instructor. The detailed
communication between the simulation engine and the
simulator is shown in Fig. 2, using a simplified UML diagram