Reactis helps engineers build better software faster by automating many
verification and validation tasks in a model-based design process.
Over the past decade, many engineering organizations have deployed
model-based design to address the exploding complexity of embedded control
software. In model-based design, executable visual models of embedded
control software are developed in advance of system implementation. The
models may be used to drive the development of control software, and may
also serve as a basis for software and system testing. One benefit of
model-based design is that it allows engineers to begin debugging and
validation activities at design time, when the cost of detecting and
dealing with design defects is much smaller than at the software and system
implementation level. Another is that models may be used as a baseline for
assessing implementation behavior during system testing and validation. For
these reasons, judicious use of modeling can lead to quite dramatic
over-all reductions in the cost of control-system development, especially
when robust tool support is available.
The Reactis tool suite of Reactive Systems, Inc., substantially enhances
the gains organizations realize from model-based design by automating many
testing and validation activities. Reactis works with models implemented
in the Simulink/Stateflow notation offered by MathWorks. Using Reactis,
generate tests from a model that thoroughly exercise the model (structural testing);
- find runtime errors (e.g. overflow errors, divide-by-zero errors) in a model;
- execute the model and track coverage (e.g. MC/DC);
- perform functional tests to check whether or not a model can violate its requirements;
- use a Reactis test suite as an oracle to check whether code conforms to a model.
Reactis also includes an array of sophisticated model debug features (e.g.
breakpoints, scopes, reverse execution). In this paper, we discuss how Reactis
and model-based design may be used to automate different verification and
validation activities in your software quality assurance process. In
particular, we show how the tool may be used to develop more robust models, how
it can streamline software and system testing, and how it may be used to support
the reverse-engineering of models from legacy code.