Stat-Tool is a new object-oriented framework for statistical computation. Stat-Tool can be seen as an independent module, dynamically performing computations on data streams. The main benefits of this client/stream-processor architecture is extensibility and separation of statistical and simulation code. Adding a new statistical capability, simply consists in developing and registering a separate module. Stat-Tool can either execute the analyses locally, or dynamically distribute them on heterogeneous computers; performance are further increased with buffering and mapping techniques.
The programmer creates entities which are composed of variables. Each variable is linked to the statistical module via a bidirectional data stream; once the link is established, different statistical analyses may be chosen. The samples can be transfered either in a discrete or in a continuous form. Internally, Stat-Tool associates a handler to each data stream, which executes incoming instructions, and manages the workers. A worker is a module capable of a specific statistical analysis. Extending the tool consists in coding new worker classes.
The distributed version is a natural extension of the tool and is composed of a master (linked to the main program) which can spawn slaves. To improve the performance, the samples are buffered on a data stream basis. The buffer size can be modified by the programmer and is a compromise based on the frequency of result requests, the network overhead and the processing time of each sample. This version also incorporates a mapper-module which decides where to create the handlers.
Stat-Tool is implemented as C or C++ libraries and the distributed version uses PVM for communication.