Definition 1.   Partial simulation

Let M be an atomistic model. A partial simulation is an interactive process to simulate a subset of M using a focused approach.

The opposite of partial simulation is the traditional approach, i.e., total simulation, which tries to simulate the main goal of the model (in Java, the main method).  Each partial simulation is a sequence producing one output tape as a result.

Definition 2.   Interactive simulation

Let M be an atomistic model. An interactive simulation is a process, where the user selects the program flow in M to be simulated in ambiguous situations of M.

Definition 3.                                         Selector

Let X be an ambiguous branch (atom) in an interactive partial simulation session.  A selector is a dialog for the user to ask which alternative should be selected in that simulation.

Some typical selections are selecting a type for a variable or an argument or a branch for a condition.

Interactive simulation corresponds to the sequence builder to preprocess the input tape. While the sequence builder is capable of creating batch processes, interactive simulation is a navigation method to traverse the selected contexts. A selector functionality is required by the user to control the simulation process.

Many times a complete simulation of the whole program is too large and complex because of the large amount of information in the model.  This is why more flexible and granular approaches are needed. Partial simulation is intended for a fundamental evaluation of selected critical features of the application. This is discussed next.

We define partial simulation as a functionality that makes it possible for the user to create a focused view to the source code by means of simulating only selected parts of the code.  Partial simulation of source code (PSSC) has not been proposed earlier, because traditionally it has been assumed that a simulation should always be complete, returning all the relevant values from each object. However, it is seldom practical and possible due to the large amount of code information. This mismatch is one reason why Walenstein (2002) has argued that current reverse engineering tools have failed. They don’t focus on the user’s problem in trying to capture all possible information, whether it is relevant or not. [1]

[1] Instead, partial evaluation is seen as a technique for program optimization by specialization.