Achieving ISO 26262 Compliance with Reactis
Achieving ISO 26262 Compliance with Reactis
Achieving ISO 26262 Compliance with Reactis
RSITR 4.1
June 14, 2012
www.reactive-systems.com
Contents
1 Introduction 1
3 Reactis 5
3.1 Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Reactis Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Reactis Validator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
8 Conclusions 28
About Reactive Systems, Inc.
Reactive Systems, founded in 1999, is a privately held company based in Cary, NC. The com-
pany’s Reactis product line provides automated testing and validation tools to support the
development of embedded control software. Reactis, Reactis for C Plugin, and Reactis Model
Inspector support model-based design with Simulink and Stateflow while Reactis for C sup-
ports a C code process. Reactis Tester automatically generates comprehensive yet compact
test suites from a Simulink model or C code. Reactis is used at companies worldwide in the
automotive, aerospace, and heavy-equipment industries.
This white paper discusses how Reactis ® a , an automated testing and vali-
dation tool, may be used to comply with the ISO 26262 standard. The stan-
dard prescribes a system of steps to manage the functional safety of auto-
motive electronics. Part 6 (ISO 26262-6) addresses product development at
the software level and is the focus of this paper. When using a model-based
design process employing MATLAB ®/ Simulink ®/ Stateflow ® b , Reactis
automates a number of the verification activities mandated by ISO 26262.
Reactis offers a number of model navigation capabilities that facilitate de-
sign walk-throughs and inspections at both the architectural and unit levels.
The Reactis Validator component lets you formalize safety requirements
as assertions and then check for violations using semi-formal verification.
These checks can be performed on both architectural design models and
unit design models. Reactis Tester can automatically generate test suites
that aim to maximize statement, branch, and modified condition/decision
(MC/DC) coverage. Finally, Reactis offers extensive support for back-to-
back testing (in which the behavior of code is compared to the behavior of
a model).
a Reactis is a registered trademark of Reactive Systems, Inc.
b MATLAB, Simulink, and Stateflow are registered trademarks of The MathWorks, Inc.
1. Introduction
Safety-critical functions in automobiles are increasingly being performed by programmable
electronic systems. Systems which were formerly controlled using other means (mechanical,
hydraulic, pneumatic, electrical, etc.) are ever more likely to be controlled by embedded soft-
ware. In addition, automakers continue to add new safety features, such as electronic stability
control and autonomous emergency braking. These trends are driving an explosive growth in
both the amount and complexity of safety-critical software embedded in the typical car. This
in turn is making it ever more difficult to minimize the risk posed by embedded automotive
software.
ISO 26262 is a new (published in 2011) international standard which addresses the the
safety of electrical and electronic systems within road vehicles. Part 6 of the standard (a.k.a.
ISO 26262-6) prescribes best practices for ensuring the safety of the software component of a
safety-related system. In the rest of this document, we will show how Reactis can help you
comply with the ISO 26262-6 software validation requirements.
ISO 26262 is based on the concept of a safety lifecycle, shown in Figure 1, which consists
of 6 phases: management, development, production, operation, service, and decommission.
The goal of the standard is to maximize product safety by requiring specific steps to be taken
during each of the phases. This ensures that safety is taken into consideration from the earliest
conception of a vehicle to the point when the vehicle is retired from use. This document fo-
cuses primarily on the development phase, since this is the step in which embedded software
is designed, developed, and validated.
Figure 2: The ISO 26262 automotive safety integrity levels (ASILs) are A, B, C, and D, where
ASIL level A represents the least amount of risk and level D represents the most.
A second key concept in ISO 26262 is the automotive safety integrity level (ASIL), a measure-
ment of the risk imposed by a specific system component. As risk increases, more stringent
methods must be employed to ensure safety. As shown in Figure 2, there are four ASIL val-
ues, named A-D, in which A is the minimum amount of risk, and D is the maximum. The
ASIL for each component in a system is determined by three factors: severity, probability, and
controllability.
Severity is a measure of the health consequences of an event. There are four classes of sever-
ity, ranging from no injuries to life-threatening injuries.
Probability is the likelihood of the conditions under which a particular failure would result
in a safety hazard. The probability of each condition is ranked on 5 point scale ranging
Controllability is a measure of the probability that harm can be avoided when a hazardous
condition occurs, either due to actions by the driver, or by external measures. If the
brakes fail to engage when the brake pedal is pressed, for example, the driver could use
the emergency brake instead. The controllability of a hazardous situation is ranked on a
four point scale from controllable in general to difficult to control or uncontrollable.
Once the severity, probability, and controllability have been determined, Table 4 of Part 3
(ISO 26262-2) is used to determine the ASIL.
2.2. V Model
The software development phase in ISO 26262 is subdivided into sub-phases according
to a V-Model, as shown in Figure 3. The “V” shape is due to the fact that the testing and
verification steps are performed in reverse order from design and implementation. Reactis
can be used during each of the testing and verification steps.
3. Reactis
Reactis is an automated debugging and test-generation tool which discovers defects in Simulink/Stateflow
models and C programs using a Simulate/Test/Validate paradigm. Using Reactis, engineers
may:
• Generate test suites from Stateflow/Simulink models or C code. The tests comprehen-
sively exercise all parts of a model or program (structural testing).
• Find run-time errors, such as memory errors, overflow errors, divide-by-zero errors, etc.
• Interactively execute a model or program while tracking progress towards full coverage
of a variety of coverage targets including MC/DC targets.
• Perform functional tests to determine if a model or program can ever violate any of its
requirements, including safety properties.
• Replay a specific execution sequence which triggers a defect in order to understand,
diagnose, and fix a bug.
• Perform back-to-back comparisons of model and code to ensure that they are function-
ally equivalent.
Reactis consists of three basic components, as shown in Figure 5. These components are
Simulator, Tester, and Validator.
3.1. Simulator
Reactis Simulator is an interactive execution environment which supports debugging and vi-
sualization. In addition to basic debugging features, such as single-stepping and breakpoints,
Simulator provides a number of advanced debugging features, including reverse-stepping
and the ability to plot the values of a variable or signal over time. Simulator also performs a
large number of runtime error checks as it executes a model/program, so that bugs such as
reading from memory which has been de-allocated trigger an immediate pause in execution.
When an error occurs, you can step backwards while inspecting variable values, making it
easier to trace an error back to its original source.
In addition to debugging, Simulator also allows you to visualize test coverage and inspect
models or code. Colored annotations indicate the coverage status of all coverage targets in the
model/code, including MC/DC targets. This makes it is easy to comprehend which parts of
a program require additional testing.
opment plan which includes, among other things, the development of one or more models,
the implementation of software based on those models, and plans to confirm that the imple-
mentation behaves the same as the model. For tool selection, you will need to decide what
language the models and implementation will use, and which tools will be used throughout
the software development phase. If you decide to use Stateflow/Simulink as a modeling lan-
guage and C as an implementation language, then we’ll show how Reactis makes an excellent
choice as a support tool.
Clause 6. Safety requirements specification. The primary objective of the safety requirements
specification phase is to identify all software-based functions which could potentially impact
safety by either (a) directly producing an unsafe state, such as a software module which con-
trols traction while braking, or (b) failing to correctly handle a hardware or software fault.
The requirements for each identified software component must be determined, including such
things as timing requirements and the interface between the software component and other
system components.
Clause 7. Architectural design. During this phase, a high-level design for each software
component is developed. The conformance of the architectural design to the safety require-
ments must be verified. If the architectural design is in the form of a Stateflow/Simulink
model, then Reactis can do this for you automatically, once Reactis Validator objectives have
been created for each safety requirement.
Clause 8. Software unit design and implementation. During the software unit design and
implementation phase, each subsystem is designed and implemented. Reactis Validator can
be used to ensure the correctness of any models created during this phase.
Clause 9. Unit testing. The goal of unit testing is to individually test the correctness of each
low-level software module. Reactis is extremely useful during this phase, which is covered in
more detail in Section 4.5.
Clause 10. Integration testing. The purpose of integration testing is to validate the safety of
software systems comprised of multiple units. Once again, Reactis will prove to be very useful
during this phase. More details on integration test requirements are given in Section 4.6.
Clause 11. Safety requirements verification. Safety requirements verification is performed
in order to ensure that the embedded software works correctly in its target environment. Al-
though Reactis is not intended for use in the final target environment, the use of Reactis during
the previous phases will minimize the number of issues which arise during target environ-
Requirement Description
The software architectural design phase is covered by Clause 7 of ISO 26262-6. Figure 4.2
lists the requirements of this phase. Most of these requirements pertain to the design itself.
Only the last requirement (7.4.18) covers the testing and validation of the design. In a model-
based development process, some or all of the software architectural design will be in the
form of an executable model. Verification of these models must be done to satisfy ISO 26262-6
requirement 7.4.18.
Figure 9 shows the methods recommended to verify the safety of software architectural
designs by Table 6 of ISO 26262-6 (requirement 7.4.18). For designs captured as models (con-
sisting of Simulink, Stateflow, C Code, Embedded MATLAB), Reactis offers a number of capa-
bilities to assist with the verification. For undertaking design walk-throughs and inspections
(1a and 1b), Reactis offers:
Requirement Description
Figure 10: ISO 26262-6 Software unit design and implementation requirements.
The software unit design and implementation phase is covered by Clause 8 of ISO 26262-6. The
requirements which must be satisfied during this phase are listed in Figure 10. Any models
created during this phase must be verified in order to satisfy ISO 26262-6 requirement 8.4.5.
Figure 11 shows the methods recommended to verify the safety of software unit designs
by Table 9 of ISO 26262-6 (requirement 8.4.5). For unit designs captured as Simulink models,
Reactis offers the same capabilities enumerated above for conducting walk-throughs and in-
spections of architectural designs (1a and 1b). Reactis Validator can also be used in a similar
fashion to test compliance of unit designs to their software safety requirements. The underly-
ing guided simulation technology employed to perform the check is a semi-formal verification
technique (1c) that employs a combination of data- and control-flow analysis, static code anal-
ysis, and semantic code analysis (methods 1e, 1f, 1g, 1h).
Figure 11: Software unit design verification methods recommended by ISO 26262-6, Table 9
(requirement 8.4.5).
Figure 12: An overview of ISO 26262-6 software testing methods and metrics.
The testing methods and metrics recommended by ISO 26262-6 are shown in Figure 12.
Requirement Description
The objective of software unit testing is to demonstrate that all software units conform
to their design and do not contain any undesired functionality. A software unit is the smallest
testable section of source code. These units are then combined to form a completely functional
system. Testing at the unit level prior to testing the system as a whole makes it easier to
identify and fix bugs in the code, since the cause of any erroneous behavior found during unit
testing must be within the source code unit under test.
Clause 9 of ISO 26262-6 specifies which unit testing methods should be used, how test
cases should be derived, and what coverage metrics should be used to assess the effectiveness
of unit testing.
Figure 14: Unit testing methods recommended by ISO 26262-6, Table 10 (requirement 9.4.3).
The unit-testing methods recommended by Table 10 of ISO 26262-6 (requirement 9.4.3) are
shown in Figure 14. There are five methods, which can be explained as follows:
Figure 15: Unit test-case generation methods recommended by ISO 26262-6, Table 11 (require-
ment 9.4.4).
−1, would be chosen as one of the test cases. As discussed in Section 4.5.1, Reactis allows
requirements to be captured as assertions and user-defined targets. Once this is done, Reactis
will automatically find input values which lead to assertion violations and cause targets to be
covered.
1b Equivalence classes are ranges of input values for which the behavior of a unit under test
should be similar. Equivalence class partitioning is a form of white-box testing in which the set of
possible values for each input is partitioned into subsets based on the behavioral requirements
of a unit under test. Once the equivalence classes are determined, a representative value is
selected for each equivalence class and a test is generated for the chosen value. The underlying
approach of Reactis Tester to generate test suites that maximize different coverage criteria is
based on equivalence classes. Here the different equivalence classes are determined by the
coverage targets of the model. For each target Reactis selects one test step to represent the
equivalence class of all possible steps that might exercise the target.
1c Boundary values are the minimum and maximum possible value for an input. For exam-
ple, if an input x is an 8-bit signed integer, the maximum value of x is 127 and the minimum
value is −128. Reactis automatically generates test cases for boundary values by analyzing
the type of each input.
1d Error guessing refers to the use of domain-specific expertise and prior experience to
choose input values which are likely to trigger errors. Reactis supports this by allowing input
values to directly specified using its user-defined input feature.
Figure 16: Unit test coverage metrics recommended by ISO 26262-6, Table 12 (require-
ment 9.4.5).
once. The decision coverage is equivalent to the branch coverage for all the if, while, for,
and do. . .while statements in the unit under test.
1c Modified Condition/Decision Coverage (MC/DC) is coverage metric which ensures that
each condition in a decision can independently effect the outcome of the decision. The MC/DC
standard defines a condition to be a maximal sub-expression of a decision which does not con-
tain any boolean operators. For example, consider the following statement:
This statement contains the decision 50 < x && x < 100, which is composed as the logical
and of two conditions, 50 < x and x < 100. Reactis supports the MC/DC metric for both C
and Simulink/Stateflow.
Requirement Description
10.4.1 Integration planning
10.4.2 Test planning and execution X
10.4.3 Integration testing methods X
10.4.4 Test case generation X
10.4.5 Requirements testing X
10.4.6 Test coverage metrics F
10.4.7 Production release components
10.4.7 Test environment
X Supported by Reactis
F Supported in future release of Reactis
Figure 17 lists the requirements which must be satisfied during software integration and
testing.
Although unit testing will find many defects in a software system, it is likely that there
will be some bugs which arise due to incorrect communications between separate units. The
Figure 18: Integration test coverage metrics recommended by ISO 26262-6, Table 15 (require-
ment 10.4.6).
The integration test metrics recommended by ISO are listed in Figure 18. While Reactis
currently doesn’t directly support function or call coverage for C code, these will be supported
in the near future.
Requirement Description
The last phase of software verification under ISO 26262 is the verification of software safety
requirements phase, during which the embedded software is tested to ensure that it operates
safely in the target operating environment. Figure 19 lists the requirements which must be
satisfied during software safety verification. Since the testing in this phase should be per-
formed on the actual target hardware, the best use of Reactis is to generate tests from the
model and/or C code which are then exported from Reactis and used to test the embedded
Figure 20: An ISO 26262 model-based development process. Numbers indicate the relevant
clause of ISO 26262-6.
In the reference process, executable models are produced as components of the architec-
tural and unit designs, which are used to guide the implementation of the software. During
the testing phases, the conformance of the implementation is confirmed via testing. Reactis
can help during all of these phases.
During the architectural design phase (ISO 26262-6 clause 7), Reactis can be used during
walk-throughs, inspections, and to verify architectural designs by testing them against their
safety requirements (ISO 26262-6 requirement 7.4.18). The architectural design phase is de-
Models can serve as an essential part of the architectural or unit-level design of a system.
When models are used in an architectural design, ISO 26262-6 requirement 7.4.18 requires
verification to be done. Similarly, when models are used in a unit-level design, ISO 26262-
6 requirment 8.4.5 requires verification of the models. During the verification process, each
model will be tested against safety requirements which were identified during the previous
development phase (safety requirements specification). Reactis Validator can be used to perform
requirements-based testing on Simulink/Stateflow models.
For example, a cruise control system would typically be required to disengage during
braking. This requirement can be represented by an assertion that it is never the case that
the brake signal and the cruise control’s active signal are ever true at the same time. Figure 22
shows such an assertion being created in Reactis.
Each validator objective you add will appear as part of the model schematic in Reactis.
Recall that, as noted in Section 3.3, the objectives only appear within Reactis and are stored in
a separate file, so that the model itself is never modified. Figure 23 shows an annotated cruise
control model loaded in Reactis, to which four objectives have been added (these are shown in
the magnified portion of the screen). The brake assertion whose creation is shown in Figure 22
is represented by the lightning bolt in the lower left corner of the magnified region.
Once the model has been annotated with Validator objectives, a check for violations of any
requirements can be launched from the Reactis Validator menu entry “Check Assertions”, or
by launching Reactis Tester. Reactis will automatically generate tests based on the assertions
and the model. These tests will include any tests that lead to an assertion violation or cover
a user-defined target. In addition to Validator objectives, the tests will also aim to maximize
the number of built-in targets (such as MC/DC) exercised. A test suite with a high level of
MC/DC coverage and no assertion violations gives assurance that the model is conforming to
the checked requirements.
Depending on the test parameters and model size, generating a test suite can take any-
where from a few seconds to multiple hours. As testing proceeds, a progress dialog shows the
current coverage status for each coverage objective and estimated time remaining.
During test suite generation, Reactis may detect runtime errors or assertion violations,
in which case it will remember the inputs which lead to the erroneous behavior. When this
happens, you can use Reactis Simulator to debug your model and determine the cause of the
error. The result of executing a test suite is shown in Figure 23. Note that the Speed assertion
is colored yellow, which indicates that an assertion violation occurred. When this assertion is
hovered over, Reactis displays blue lines showing the inputs to the assertion and text giving
the test and step number when the violation occurred. As shown in Figure 23, the inputs to
the assertion are the signals active and speed, and the first violation occurred at step 962 of test
29.
A generic back-to-back comparison process is shown in Figure 24. For the sake of brevity,
the implementation is referred to simply as code. As shown in Figure 24, there are four fun-
damental activities involved in back-to-back testing. These are (1) generating tests from the
model, (2) executing tests on the code. (3) generating tests from the code, and (4) executing
tests on the model.
There are four basic ways to perform such testing with Reactis, depending primarily on
how the code is to be executed. Code can be tested using Reactis for C, the Reactis for C
Plugin, the Reactis runtests utility, or an external tool. Each of these approaches has its own
unique advantages and disadvantages, which need to be considered before deciding which
approach to use.
1. Generate a test suite from the model. Reactis Tester is used to generate the test suite from
the model, as described in Section 6. The test suite will be in the form of a Reactis test
suite (.rst) file.
2. Load the C code in Reactis for C. The C code must be loaded in Reactis for C before it can
be tested. Reactis for C uses its own internal C compiler, so it must know where each
source file is located. Reactis stores this information in a special file with extension .rsm.
A graphical editor eases the creation and editing of .rsm files.
Additionally, you will need to define at least one test harness. A test harness specifies a
top-level entry function to call, how to pass test inputs into the code under test, and how
to read test outputs from the code. Reactis for C includes a graphical editor for creating
test harnesses, which are stored in files with extension .rsh.
3. Test the C code. Once the program is loaded in Reactis for C, testing is ready to pro-
ceed. The test suite produced from step 1 is loaded into Reactis Simulator and executed
using the code and test harness from step 2. Any output differences or runtime errors
which occur as the test suite is executed will be automatically flagged by Reactis. The
debugging features of Reactis Simulator can then be used to determine the cause of any
deviations.
4. Generate a test suite from the C code. In this step, Reactis Tester is used to create a test
suite which maximizes structural coverage of the implementation under test. The test
harness from step 2 will be used, so no additional work is required. Optionally, Reactis
Validator can be used to generate additional tests based on assertions and user-defined
targets which have been added to the C code.
5. Test the model. In this step, the model is executed using tests generated from the im-
plementation. The test suite produced from step 4 is loaded into Reactis Simulator and
executed using the model from step 1. Reactis will automatically flag any output differ-
ences or runtime errors, which can then be debugged with Reactis Simulator.
The advantages of using Reactis for C are that (1) the test suites (.rst files) produced by
Reactis from the Simulink model can be directly re-used in Reactis for C, and (2) Reactis for C
will automatically detect many types of runtime errors (such as memory errors) while execut-
ing tests, (3) Reactis Simulator can be used to debug any errors that occur, and (4) Reactis for
C can be used to generate tests from the implementation. The disadvantages of the approach
are (1) there will be some effort involved in creating a test harness in Reactis for C, and (2) the
Reactis for C execution environment will likely differ to some degree from the target execution
environment.
Figure 26: Using the Reactis for C Plugin to perform back-to-back testing.
If the C code implementation is wrapped in a Simulink S-function, the Reactis for C Plugin
can be used, as shown in Figure 26. The recommended testing process consists of five steps
(numbered 1-5 in Figure 26):
1. Generate a test suite from the model. Reactis Tester is used to generate the test suite from
the model, as described in Section 6. The test suite will be in the form of a Reactis test
suite (.rst) file.
2. Load the C code in Reactis for Simulink. The C code must be loaded in Reactis for Simulink
before it can be tested. First, you will need to create a “wrapper” model and S-function
which has the same the same top-level input and output ports as the model. If you
are using an automated code-generation tool to create the C code, your tool likely can
create the wrapper model automatically. Finally, in order to test the C code within the
S-function, you will need to create a .rsm file (see step 2 of Section 7.1).
3. Test the C code. Once the wrapper model for the implementation is loaded in Reactis,
testing is ready to proceed. The test suite produced from step 1 is loaded into Reactis
Simulator and executed. Any output differences or runtime errors which occur as the
test suite is executed will be automatically flagged by Reactis. The debugging features
of Reactis Simulator can then be used to determine the cause of any deviations.
4. Generate a test suite from the C code. In this step, Reactis Tester is used to create a test suite
which maximizes structural coverage of the S-function source code, which includes all
of the implementation C code. Optionally, Reactis Validator can be used to generate
additional tests based on assertions and user-defined targets which have been added to
the C code or the top-level of the wrapper model.
The advantages of this approach include all the advantages of using Reactis for C stan-
dalone. One additional advantage is that no test harness will be required to test the S-function.
The downside is that there will be work required to create S-function wrapper code for the
implementation, unless you are using an automated code generator, in which case the code
generator will probably produce S-function wrapper code.
Figure 27: Using the Reactis runtests utility to perform back-to-back testing.
A third approach which also requires the implementation to be in the form of Simulink S-
function is to test the implementation within MATLAB using the runtests command (included
in the Reactis distribution), as shown in Figure 27. The testing process depicted in Figure 27
consists of five steps:
1. Generate a test suite from the model. Reactis Tester is used to generate the test suite from
the model, as described in Section 6. The test suite will be in the form of a Reactis test
suite (.rst) file.
2. Export the test data to a .m or .mat file. In this step, the test data is exported to a format
which can be processed within MATLAB. This is done by loading the model under test
and .rst file in Reactis and then using Reactis Simulator’s test suite export feature. The
test data can be exported as either a MATLAB script (.m) or MATLAB binary data (.mat).
The only user input required is to select the format of the exported test data and name
of the file which will contain the exported data.
3. Load the code in MATLAB. The implementation code must be loaded in MATLAB before
it can be tested. First, you will need to create a “wrapper” model and S-function which
4. Test the C code. Once the wrapper model for the implementation is loaded in MATLAB,
testing is ready to proceed. Reactis includes a MATLAB script called runtests which auto-
mates the testing of MATLAB models. The model from step 3 is executing using the test
data contained in the .mat file produced during step 2. Any output differences which
occur as the test suite is executed are flagged for investigation. Since the S-function in is
the form of binary code, direct debugging of output differences may prove difficult. A
better option is to use the Reactis for C Plugin as a debugging tool.
The advantage of the runtests approach is that the S-function will execute faster, because
MATLAB compiles S-functions into native machine code which is then directly executed by
the CPU, while the Reactis for C Plugin generates virtual machine code which is necessarily
slower. There are two primary disadvantages. First, the errors which would trigger an im-
mediate error in the Reactis for C Plugin will typically not have any immediate effect in the
compiled S-function. Instead such errors are likely to produce corrupt values in the program
leading to an eventual crash or invalid output which is much more difficult to debug. One
option for debugging such cases is the Reactis for C Plugin. Second, Reactis will not be able to
generate any tests from, or measure coverage of the compiled S-function. Hence, there is the
possibility of latent code defects which are not being reached during testing.
Figure 28: Exporting a Reactis test suite for use with an external tool.
If the implementation is coded in a language other than C and is not in the form of an
S-function, or you want to do testing using a specialized target environment, then Reactis can
export the test suite to comma-separated value (.csv) format for use by an external tool. This
approach is shown in Figure 28, and consists of three steps (labeled 1-3 in Figure 28):
Figure 29: Importing test data from an external tool for use with Reactis.
Figure 29 shows how test data produced by an external tool can be used within Reactis.
As indicated by the numbers in Figure 29, there are four steps required to do this:
1. Generate a test suite from the code. The external testing tool is used to generate a test suite
from the implementation code.
2. Export the test data to a .csv file. The test data generated by the external tool is converted
to comma-separated value format and stored in a (.csv) file.
3. Import test data. The .csv test data produced during step 2 is imported into Reactis.
Reactis includes a test data import utility that lets you easily map test data onto model
inputs and outputs. You will need to make sure that each column in the .csv file is
mapped to the appropriate model component.
4. Execute tests with model. At the click of a button, Reactis Simulator will execute all tests
in the imported test suite with the model. Any runtime errors or output differences
which occur will be flagged. Additionally, you can visually inspect the model after all
tests have been executed to see which targets in the model were covered, or generate a
coverage status report.
The advantage of using an external tool is the very high degree of flexibility in testing it
allows, such as the ability to perform testing using specialized hardware. Testing can be done
at a level which is close to the final target on which the software will be deployed.
8. Conclusions
For organizations which are using Simulink/Stateflow and C to develop software using model-
based design, Reactis provides excellent support for the validation and testing activities re-
quired by ISO 26262-6. In particular, Reactis does the following:
• Supports most of the coverage metrics recommended by ISO 26262, including the most
stringent (MC/DC).
• Detects a variety of runtime errors during the testing process, including memory errors.
Furthermore, this detection occurs immediately, not at some point in the future when
the memory error triggers an observable malfunction.
• When errors are found, produces a specific sequence of inputs which leads to the error.
Reverse single-stepping with value inspection helps determine the defect in the source
code which caused the error.
• Presents coverage data both textually (in the form of a customizable report that can be
incorporated into work products required by ISO 26262), and graphically (via a browser
which allows you to examine a Simulink/Stateflow model or C code and quickly iden-
tify which parts of a system require additional testing).
Please see the Reactive Systems web site at www.reactive-systems.com for ordering infor-
mation and for instructions on how to download a free 30-day evaluation copy of the software.