<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Change-driven Incremental Symbolic Execution of Evolving State Machines</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Amal Khalil School of Computing, Queen's University Kingston</institution>
          ,
          <addr-line>Ontario</addr-line>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-This paper summarizes our research findings on optimizing the symbolic execution of evolving state machines using incremental analysis.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. PROBLEM AND MOTIVATION</title>
      <p>Model Driven Engineering (MDE) is a model-centric
software engineering approach that aims at improving the
productivity and the quality of software artifacts by focusing
on models as first-class artifacts in place of code. MDE has
been widely used for over a decade in many domains such
as automotive and telecommunication industries.
Iterativeincremental development and model-based analysis are central
to MDE in which artifacts typically undergo several iterations
and refinements during their lifetime that may require changes
to their initial design versions. As these models evolve, it
is necessary to assess their quality by repeating the analysis
and the verification of these models after every iteration or
refinement. This process, if not optimized, can be very tedious
and time consuming.</p>
    </sec>
    <sec id="sec-2">
      <title>The IBM Rational Rhapsody framework [1] is one of the</title>
      <p>
        MDE commercial tools that is heavily used in practice (e.g.,
in the automotive industry). Rhapsody Statecharts (also known
as Harel’s Statecharts [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) are a visual state-based formalism
implemented in the IBM Rational Rhapsody framework to
describe the behavior of reactive systems. They extend Mealy
Machines - a type of Finite State Machines (FSMs) that perform
their action only on firing transitions - with state entry and
exit actions and hierarchical composite states with orthogonal
regions.
      </p>
      <p>
        Symbolic execution is a well-known analysis technique
that systematically explores all possible execution paths of
behavioral software artifacts (e.g., programs [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and
statebased models [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ]) using symbolic inputs such that we
can derive precise characterizations of the circumstances in
which a specific path is taken. The output of the analysis is
a symbolic execution tree (SET) which provides the basis for
various types of analysis and verification, including reachability
analysis, guard analysis, invariant checking and instant test case
generation. One of the key challenges of symbolic execution
is scalability, especially when applied to big, complex artifacts
where the size of the output SET becomes very large. Repeating
the entire analysis even after small changes is not the best
solution.
      </p>
    </sec>
    <sec id="sec-3">
      <title>This research introduces two complementary optimization techniques that leverage the similarities between state machine versions to reduce the cost of symbolic execution of the evolved version.</title>
    </sec>
    <sec id="sec-4">
      <title>The motivation is based on a number of facts. First, symbolic</title>
      <p>
        execution has been shown to be a very powerful method for the
analysis of programs and there are already several commercial
code analysis tools built based on it (e.g., CodeSonar [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]).
Similarly, the technique has been adopted and applied in the
context of state-based models (e.g., the IAR visualSTATE
Verificator [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]). Second, there is an interest from our industrial
partner to improve the model-level analysis capabilities of
the IBM Rhapsody tool. Third, research on optimizing the
symbolic execution of evolving programs has been recently
addressed [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ], however to the best of knowledge we are the
first to consider such optimizations for the symbolic execution
of evolving state machines.
      </p>
    </sec>
    <sec id="sec-5">
      <title>II. BACKGROUND AND RELATED WORK</title>
    </sec>
    <sec id="sec-6">
      <title>Although the majority of existing analysis methods for</title>
      <p>
        Statecharts-like models (e.g., UML state machines, UML-RT,
STATEMATE and Simulink Stateflow) make use of some
existing formal verification tools, mainly model checkers such
as SPIN [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ] or SMV [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], there are also approaches that
adopt the symbolic execution analysis technique of programs
and use it in the context of state-based models including:
      </p>
    </sec>
    <sec id="sec-7">
      <title>Modechart specifications (a variation of Harel Statecharts</title>
      <p>
        that incorporates timing constraints in the models) for test
sequences generation [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ];
Labelled Transition Systems (LTSs) for test case
generation [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and test case selection [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ];
Input Output Symbolic Transition Systems (IOSTSs) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
for test purpose definition;
STATEMATE statecharts [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and UML State
Machines [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for verifying temporal properties of
the subject models;
Simulink/Stateflows [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] for analysis and test case
generation of flight software using Java PathFinder and Symbolic
PathFinder;
UML-RT State Machines [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] to support a variety of
analyses for this type of models.
      </p>
      <p>
        In our work, we followed the approach of Zurowska and Dingel
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] with some variations to develop a symbolic execution
module for Rhapsody Statecharts. In contrast to their work
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], our intermediate machine representation of Rhapsody
Statecharts takes the form of Mealy Machines instead of
their Functional Finite State Machines (FFSMs). Additionally,
our symbolic execution module is based on an off-the-shelf
symbolic execution engine, KLEE [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], to symbolically execute
action code encountered in the Statecharts, whereas they use
an in-house symbolic execution engine.
      </p>
      <p>
        In his statement paper “Evolution, Adaptation, and the Quest
for Incrementality”, Ghezzi [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] argues that supporting software
evolution requires building incremental methods and tools to
speed up the maintenance process with the focus on the analysis
and the verification activities. An incremental approach in
such contexts would try to characterize exactly what has been
changed and reuse (as much as possible) the results of previous
processing steps in the steps that must be rerun after the
change. The motivation for this is twofold: time efficiency and
scalability. Given the iterative development approach suggested
by MDD, we believe that this vision needs to be employed by
modern analysis and verification methods.
implement what we call dependency-based symbolic execution
(DSE)1. The dependence analysis allows us to identify the
unaffected parts of an evolved artifact; complete exploration
of these parts is not necessary, and only a single representative
path needs to be found during exploration. Consequently, the
resulting SET is not complete, but it is sufficient to determine
the impact of the change on any SET-based analysis.
      </p>
      <p>A well-known example of applications that can benefit from
such optimization techniques is regression testing which is a
crucial software evolution task that aims at ensuring that no
unintended behavior has been introduced to the system after
the change. A naive approach to regression testing usually
depends on re-running some existing test suite which has been
generated to validate the previous version of the system. This
process is expensive and time consuming and it is usually
supported with some optimization mechanisms including test
case selection and prioritization. Since symbolic execution can
be used to generate these test suites, optimizing the symbolic
execution of the new versions of an artifact can also be added
to these optimization mechanisms.</p>
      <p>
        Existing approaches to alleviate the scalability problem Figure 1 shows the main components of the architecture
imand improve the efficiency of symbolic execution when re- plementing the standard symbolic execution (SE) of Rhapsody
applying on an evolving version of a program are discussed Statecharts and the two proposed optimization techniques of an
in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], Yang et al. present memoized symbolic evolved Rhapsody Statechart: the memoization-based symbolic
execution of source code - a technique that stores the results execution (MSE) and the dependency-based symbolic execution
of symbolic execution from a previous run and reuses them as (DSE). The components of the architecture are listed below
a starting point for the next run of the technique to avoid the with a brief description of the purpose of each component. Full
re-execution of common paths between the new version of a details can be found in a technical report [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
program and its previous one, and to speed up the symbolic SC2MLM - A transformation that transforms a Statechart
execution for the new version. The same idea has been applied model into our MLM representation. The basic structure of
earlier by Lauterburg et al. in [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] but in the context of state- our MLM formalism consists of a set of global variables
space exploration for evolving programs using model checking. (sometimes called attributes), a set of simple states with one
In [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Person et al. introduce DiSE (directed incremental of them marked as an initial state, and a set of transitions
symbolic execution) - a technique that uses static analysis and between these states. Simple states in MLMs do not have
change impact analysis to determine the differences between entry/exit actions. Transitions are characterized in the same
program versions and the impact of these differences on other way as in Rhapsody Statecharts by an event that triggers them,
locations in the program, and uses this information to direct the an optional guard and an action that occurs upon firing them.
symbolic execution to only explore those impacted locations. A More advanced features that are found in Rhapsody Statecharts
similar approach has been proposed by Yang et al. in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] for such as composite states, concurrent states, states with entry/exit
regression model checking. In contrast to all the aforementioned actions, condition connectors and junction connectors need to
approaches, which work for optimizing the analysis of evolving be mapped to fit the structure of the MLMs formalism. Our
programs, our work tries to realize the same concept for current transformation supports the mapping of these specific
evolving state machine models. features.
      </p>
    </sec>
    <sec id="sec-8">
      <title>III. APPROACH AND UNIQUENESS</title>
      <p>
        Inspired by the research work for optimizing the symbolic
execution of evolving programs [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ], we propose two different
optimization techniques that leverage the similarities between
state machine versions to reduce the cost of symbolic execution
of the evolved version. The first technique, called
memoizationbased symbolic execution (MSE), reuses the SET generated
from a previous analysis and incrementally updates the relevant SC2MLM DiffMap - A mapping of the differences
beparts corresponding to the changes made to the new version. tween two Rhapsody Statecharts obtained from the Rhapsody
The second technique integrates a change impact analysis (i.e.,
dependency analysis) technique with the symbolic execution to 1We could also call it regression or partial symbolic execution.
      </p>
      <p>
        MLM2SET - Our standard symbolic execution module that
traverses an MLM model and symbolically executes the action
code encountered in each transition to build the model’s
symbolic state space. We developed an interface to the KLEE
symbolic execution engine [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] to symbolically execute the
action code of each transition. The result from this interface is
a set of variable assignments and path constraints that represent
different feasible paths in the action code.
DiffMerge tool into their MLM correspondences. Currently,
we consider only the following types of model changes:
adding/removing states; adding/removing transitions; updating
the actions of states; and updating transitions. All these types
of changes can be represented as changes to transitions in our
MLM representation. For example, adding/removing states can
be represented by an addition/deletion of transitions connecting
these states with other states in the model; also updating the
entry/exit actions of states can be represented by an update
of their incoming/outgoing transitions, respectively. Therefore,
the output from this component is a set of updated transitions
in the modified version of the model T updated including all
transitions that have been added to, deleted from or updated
in the modified version of the model.
      </p>
      <p>These parameters determine where the exploration starts (i.e.,
the symbolic state to begin the exploration at), which updated
transitions to consider when exploring the state representing the
start symbolic state for the first time, and the set of symbolic
states that have been previously explored so far to be used for
the subsumption checking. The resulting SETs are then merged
with the SET resulting from the previous task. The output from
the component is a memoization-based SET (MSET) of the
modified version of the model M SET modV er that shares all
what can be reused from the old tree SET baseV er but also
contains the modifications resulting from the SE of the parts
of the new version of the model that are found changed.</p>
    </sec>
    <sec id="sec-9">
      <title>MLM2MSET - The main component of our MSE technique.</title>
      <p>
        The three inputs to this component are: 1) the MLM
representation of the modified version of the model M LM modV er, 2)
the set of transitions that have been updated in the modified
version of the model T updated, and 3) the SET to be reused
(i.e., SET baseV er). Two successive tasks are performed by
this component. The first task is to load and explore the input
SET baseV er in order to remove all the edges representing any
transition belonging to the set of updated transitions T updated
(note that removing an edge leads to removing the entire subtree
rooted at the target node of the edge). The second task is to
re-explore the SET resulting from the previous task to find all
symbolic states representing states with outgoing transitions
belonging to T updated. For each of these symbolic states, we MLM2DSET - The main component of our DSE technique.
symbolically execute M LM modV er based on some parameters. The two inputs to this component are: 1) the MLM
represenDependency Analysis - A component for computing the set
of transitions that have an impact or are impacted by any of the
updated transitions found in T updated. The two inputs to this
component are: 1) the MLM representation of the modified
version of the model M LM modV er and 2) the set of transitions
that are found to have been updated in the modified version of
the model T updated. In this component, we first explore the
input MLM model to compute all the dependences that exist
between its transitions, then identify the transitions that have
a dependency with any of the input updated transitions. The
output is the union of the input updated transitions set and their
dependences. We developed the algorithms implementing the
definitions presented in [
        <xref ref-type="bibr" rid="ref24 ref25">24, 25</xref>
        ] for computing the dependencies
in conventional Extended Finite State Machines (EFSMs),
which can also be applied to our MLMs.
tation of the modified version of the model M LM modV er
and 2) the set of transitions that are found to have been
updated or impacted in the modified version of the model
T updated + T impacted. The main task performed by this
component is similar to the standard SE technique except that
the state-space exploration of the input model M LM modV er
is guided by the input set of updated and impacted transitions
T updated + T impacted. Two modes of exploration are defined:
full and partial. A full exploration mode requires a complete
exploration of all execution paths of an explored transition
and is applied for all transitions that are found to have been
updated or impacted. However, a partial exploration mode
requires the execution of only one representative path of an
explored transition and is applied to transitions that are found
neither updated nor impacted. The output from the component
is a dependency-based SET (DSET) of the modified version of
the model DSET modV er that can be smaller/equal in size to
the standard SET of the same model, depending on the amount
of savings gained from the partial exploration of the input list
of updated/impacted transitions.
      </p>
    </sec>
    <sec id="sec-10">
      <title>IV. RESULTS AND CONTRIBUTIONS</title>
    </sec>
    <sec id="sec-11">
      <title>The performance of the standard symbolic execution of the</title>
      <p>base versions of the three models took from 11 to 14 min and
the numbers of the symbolic states and the symbolic execution
paths of the resulting symbolic execution trees ranged from
approximately 2000 to 6000 symbolic states and from 1000 to
5000 symbolic execution paths.</p>
    </sec>
    <sec id="sec-12">
      <title>To measure the effectiveness and the performance of the</title>
      <p>proposed optimization techniques compared with the standard
one, we first prepared a set of 67 different modified versions
for the three models. Second, we ran standard SE, MSE and
DSE on each modified version and recorded the time taken to
run each technique and the size of their generated symbolic
execution trees. Third, we compared the results of standard SE
with the results of MSE and DSE.</p>
      <sec id="sec-12-1">
        <title>A. Results</title>
      </sec>
    </sec>
    <sec id="sec-13">
      <title>Figures 2a and 2b show the average and the standard</title>
      <p>deviation values of the amount of savings in execution times
and in the numbers of symbolic states and execution paths
gained from applying MSE (resp. DSE) on all the modified
versions of the three given models.</p>
    </sec>
    <sec id="sec-14">
      <title>The architecture presented in Figure 1 is implemented using three Eclipse plug-ins, summarized as follows.</title>
    </sec>
    <sec id="sec-15">
      <title>Interestingly, in some modified versions, both MSE and</title>
      <p>DSE achieved savings up to 99%. However, on average, and
based on the values presented in Figure 2a, we can see that,
on average, MSE achieved an average savings ranged from
The first plug-in implements the SC2MLM and the “De- 48% to 76%, while DSE achieved an average savings ranged
pendency Analysis” components and it has been developed from 5.5% to 96%.
in the context of the IBM Rhapsody RulesComposer
Eclipse framework. As the gaps between the average savings gained for the
The second plug-in implements the SC2MLM DiffMap three models are more significant for the DSE than they are
component. for MSE, we believe that DSE is more sensitive to the subject
The third plug-in realizes the three symbolic execution models.</p>
      <p>components: MLM2SET, MLM2MSET and MLM2DSET.</p>
      <p>To measure how effective are our optimizations compared
to standard SE of a changed state machine model (i.e., how
much they reduce the resource requirements of the symbolic
execution of a changed state machine model) and to investigate
what aspects influence the effectiveness of each technique, we
ran our evaluation on three industrial-sized models from the
automotive domain.</p>
    </sec>
    <sec id="sec-16">
      <title>The first model, the Air Quality System (AQS), is a</title>
      <p>
        proprietary model that we obtained from our industrial partner
that is responsible for air purification in the vehicle’s cabin. The
second and the third models, the Lane Guide System (LGS)
and the Adaptive Cruise Control System (ACCS), are
nonproprietary models designed at the University of Waterloo [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
The LGS is an automotive feature used to assist drivers in
avoiding unintentional lane departure by providing alerts when
certain events occur. The ACCS is an automotive feature used
to automatically maintain the speed of a vehicle set by the
driver through the automatic operation of the vehicle. The three
models are nested up to the third level. Additionally, the third
one has two orthogonal regions.
      </p>
    </sec>
    <sec id="sec-17">
      <title>We also notice from that the standard deviation values of</title>
      <p>the achieved savings, shown in Figure 2b, are higher for MSE
than they are for DSE, which means that the effectiveness of
MSE is more influenced by the changes made in each modified
version that it is for DSE.</p>
    </sec>
    <sec id="sec-18">
      <title>As the results from our experiments on individual evolving</title>
      <p>state machines look promising and show a significant amount
of savings from both optimization techniques, we are currently
working on extending our techniques to handle a system of
asynchronously communicating state machines.</p>
      <sec id="sec-18-1">
        <title>B. Contributions</title>
        <p>The proposed research aims to improve the current
stateof-the-art in the area of model-based analysis in an
evolutionary software development environment. Our contributions
specifically include (1) the development, formalization and
proof-of-concept implementation of the proposed optimization
techniques mentioned in Section III, (2) an evaluation that
will provide the results showing the benefits of our research
methodology and (3) an actual example of research that can
enrich the analysis capabilities of existing MDE tools.</p>
        <p>STDV
MSE
DSE</p>
      </sec>
    </sec>
    <sec id="sec-19">
      <title>ACKNOWLEGMENT</title>
    </sec>
    <sec id="sec-20">
      <title>This work is supervised by Dr. Juergen Dingel and was partially funded by NSERC (Canada), as part of the NECSIS Automotive Partnership with General Motors, IBM Canada and Malina Software Corp.</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>I. Rational</surname>
          </string-name>
          , “Rational Rhapsody Developer, http://www03.ibm.com/software/products/en/ratirhap/.”
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D.</given-names>
            <surname>Harel</surname>
          </string-name>
          , “
          <article-title>Statecharts: A visual formalism for complex systems</article-title>
          ,”
          <source>Science of Computer Programming</source>
          , vol.
          <volume>8</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>274</lpage>
          ,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J. C.</given-names>
            <surname>King</surname>
          </string-name>
          , “
          <article-title>Symbolic execution and program testing,” Communications of the ACM</article-title>
          , vol.
          <volume>19</volume>
          , no.
          <issue>7</issue>
          , pp.
          <fpage>385</fpage>
          -
          <lpage>394</lpage>
          ,
          <year>1976</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>C.</given-names>
            <surname>Gaston</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Le Gall</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Rapin</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Touil</surname>
          </string-name>
          , “
          <article-title>Symbolic execution techniques for test purpose definition,” in Testing of Communicating Systems</article-title>
          . Springer,
          <year>2006</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>K.</given-names>
            <surname>Zurowska</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Dingel</surname>
          </string-name>
          , “
          <article-title>Symbolic execution of uml-rt state machines</article-title>
          ,”
          <source>in Proceedings of the 27th Annual ACM Symposium on Applied Computing. ACM</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>1292</fpage>
          -
          <lpage>1299</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>G. CodeSonar</surname>
          </string-name>
          , “GRAMMATECH CodeSonar, http://www.grammatech.com/codesonar/.”
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>I. visualSTATEl</surname>
          </string-name>
          , “IAR visualSTATE, https://www.iar.com/iar-embeddedworkbench/add-ons-and-integrations/visualstate/.”
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Person</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Rungta</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Khurshid</surname>
          </string-name>
          , “
          <article-title>Directed incremental symbolic execution,” in ACM SIGPLAN Notices</article-title>
          , vol.
          <volume>46</volume>
          , no. 6. ACM,
          <year>2011</year>
          , pp.
          <fpage>504</fpage>
          -
          <lpage>515</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>G.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. S.</given-names>
            <surname>Pa</surname>
          </string-name>
          <article-title>˘sa˘reanu, and</article-title>
          <string-name>
            <given-names>S.</given-names>
            <surname>Khurshid</surname>
          </string-name>
          , “Memoized symbolic execution,”
          <source>in Proceedings of the 2012 International Symposium on Software Testing and Analysis. ACM</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>144</fpage>
          -
          <lpage>154</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Mikk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lakhnech</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Siegel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G. J.</given-names>
            <surname>Holzmann</surname>
          </string-name>
          , “Implementing Statecharts in PROMELA/SPIN,” in
          <source>2nd IEEE Workshop on Industrial Strength Formal Specification Techniques</source>
          ,
          <year>1998</year>
          . Proceedings. IEEE,
          <year>1998</year>
          , pp.
          <fpage>90</fpage>
          -
          <lpage>101</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Latella</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Majzik</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Massink</surname>
          </string-name>
          , “
          <article-title>Automatic verification of a behavioural subset of UML statechart diagrams using the spin modelchecker</article-title>
          ,
          <source>” Formal Aspects of Computing</source>
          , vol.
          <volume>11</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>637</fpage>
          -
          <lpage>664</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>E.</given-names>
            <surname>Clarke</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Heinle</surname>
          </string-name>
          , “Modular translation of Statecharts to SMV,” Carnegie Mellon University, Pittsburgh, PA,
          <source>Tech. Rep.</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>N. H.</given-names>
            <surname>Lee</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. D.</given-names>
            <surname>Cha</surname>
          </string-name>
          , “
          <article-title>Generating test sequences using symbolic execution for event-driven real-time systems</article-title>
          ,
          <source>” Microprocessors and Microsystems</source>
          , vol.
          <volume>27</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>523</fpage>
          -
          <lpage>531</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>L.</given-names>
            <surname>Frantzen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Tretmans</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Willemse</surname>
          </string-name>
          ,
          <source>Test generation based on symbolic specifications</source>
          . Springer,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>T.</given-names>
            <surname>Jéron</surname>
          </string-name>
          , “
          <article-title>Symbolic model-based test selection</article-title>
          ,
          <source>” Electronic Notes in Theoretical Computer Science</source>
          , vol.
          <volume>240</volume>
          , pp.
          <fpage>167</fpage>
          -
          <lpage>184</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Thums</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Schellhorn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ortmeier</surname>
          </string-name>
          , and W. Reif, “
          <article-title>Interactive verification of statecharts,” in Integration of Software Specification Techniques for Applications in Engineering</article-title>
          . Springer,
          <year>2004</year>
          , pp.
          <fpage>355</fpage>
          -
          <lpage>373</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>M.</given-names>
            <surname>Balser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bäumler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Knapp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Reif</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Thums</surname>
          </string-name>
          , “
          <article-title>Interactive verification of uml state machines,” in Formal methods and software engineering</article-title>
          . Springer,
          <year>2004</year>
          , pp.
          <fpage>434</fpage>
          -
          <lpage>448</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C. S.</given-names>
            <surname>Pasareanu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schumann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Mehlitz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lowry</surname>
          </string-name>
          , G. Karsai,
          <string-name>
            <given-names>H.</given-names>
            <surname>Nine</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Neema</surname>
          </string-name>
          , “
          <article-title>Model based analysis and test generation for flight software</article-title>
          ,
          <source>” in Third IEEE International Conference on Space Mission Challenges for Information Technology</source>
          ,
          <year>2009</year>
          . SMC-IT
          <year>2009</year>
          . IEEE,
          <year>2009</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>90</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>C.</given-names>
            <surname>Cadar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Dunbar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Engler</surname>
          </string-name>
          , “
          <article-title>Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs</article-title>
          .” in OSDI, vol.
          <volume>8</volume>
          ,
          <issue>2008</issue>
          , pp.
          <fpage>209</fpage>
          -
          <lpage>224</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>C.</given-names>
            <surname>Ghezzi</surname>
          </string-name>
          , “
          <article-title>Evolution, adaptation, and the quest for incrementality,” in Large-Scale Complex IT Systems</article-title>
          . Development, Operation and Management. Springer,
          <year>2012</year>
          , pp.
          <fpage>369</fpage>
          -
          <lpage>379</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>S.</given-names>
            <surname>Lauterburg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sobeih</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Marinov</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Viswanathan</surname>
          </string-name>
          , “
          <article-title>Incremental state-space exploration for programs with dynamically allocated data,”</article-title>
          <source>in Proceedings of the 30th international conference on Software engineering. ACM</source>
          ,
          <year>2008</year>
          , pp.
          <fpage>291</fpage>
          -
          <lpage>300</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>G.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. B.</given-names>
            <surname>Dwyer</surname>
          </string-name>
          , and G. Rothermel, “Regression model checking,”
          <source>in IEEE International Conference on Software Maintenance (ICSM</source>
          <year>2009</year>
          ). IEEE,
          <year>2009</year>
          , pp.
          <fpage>115</fpage>
          -
          <lpage>124</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>A.</given-names>
            <surname>Khalil</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Dingel</surname>
          </string-name>
          , “
          <article-title>Incremental Symbolic Execution of Evolving State Machines using Memoization and Dependence Analysis</article-title>
          ,” Queen's University,
          <source>Tech. Rep. 2015-623</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>42</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>K.</given-names>
            <surname>Androutsopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Harman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Li</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Tratt</surname>
          </string-name>
          , “
          <article-title>Control dependence for extended finite state machines</article-title>
          ,” in Fundamental Approaches to Software Engineering. Springer,
          <year>2009</year>
          , pp.
          <fpage>216</fpage>
          -
          <lpage>230</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>V.</given-names>
            <surname>Chimisliu</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Wotawa</surname>
          </string-name>
          , “
          <article-title>Improving test case generation from uml statecharts by using control, data and communication dependencies,” in 13th International Conference on Quality Software (QSIC)</article-title>
          . IEEE,
          <year>2013</year>
          , pp.
          <fpage>125</fpage>
          -
          <lpage>134</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A. L. J.</given-names>
            <surname>Dominguez</surname>
          </string-name>
          , “
          <article-title>Detection of feature interactions in automotive active safety features</article-title>
          ,
          <source>” Ph.D. dissertation</source>
          , University of Waterloo,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>