<!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>Optimizing the Symbolic Execution of Communicating and 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 describes research investigating two complementary optimization techniques that leverage the similarities between state machines versions to reduce the cost of symbolic execution of the evolved version.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. RESEARCH 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>
      <p>
        The IBM Rational Rhapsody framework [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is one of the
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>
      <p>This research introduces two complementary optimization
techniques that leverage the similarities between two successive
state machine versions to reduce the cost of symbolic execution
of the evolved version.</p>
      <p>
        This research is motivated by a number of facts. First,
symbolic 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-2">
      <title>II. RELATED WORK</title>
      <p>
        Although the majority of existing analysis methods for
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:
Modechart specifications (a variation of Harel Statecharts
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.
      </p>
      <p>
        Existing approaches to alleviate the scalability problem
and improve the efficiency of symbolic execution when
reapplying on an evolving version of a program are discussed
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
execution of source code - a technique that stores the results
of symbolic execution from a previous run and reuses them as
a starting point for the next run of the technique to avoid the
re-execution of common paths between the new version of a
program and its previous one, and to speed up the symbolic
execution for the new version. The same idea has been applied
earlier by Lauterburg et al. in [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] but in the context of
statespace exploration for evolving programs using model checking.
In [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Person et al. introduce DiSE (directed incremental
symbolic execution) - a technique that uses static analysis and
change impact analysis to determine the differences between
program versions and the impact of these differences on other
locations in the program, and uses this information to direct the
symbolic execution to only explore those impacted locations. A
similar approach has been proposed by Yang et al. in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] for
regression model checking. In contrast to all the aforementioned
approaches, which work for optimizing the analysis of evolving
programs, our work tries to realize the same concept for
evolving state machine models.
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. PROPOSED SOLUTION</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
two successive state machine versions to reduce the cost of
symbolic execution of the evolved version. The first technique,
called memoization-based symbolic execution (MSE), reuses
the SET generated from a previous analysis and incrementally
updates the relevant parts corresponding to the changes made
to the new version. The second technique integrates a change
impact analysis (i.e., dependency analysis) technique with the
symbolic execution to implement what we call
dependencybased 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
SETbased 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>
    </sec>
    <sec id="sec-4">
      <title>IV. RESEARCH METHOD</title>
      <p>
        To start, we decided to consider individual state machines
only. Under this assumption, we have developed the approach
described in Section IV-A. The extension of the approach
to collections of communicating state machines is subject to
ongoing work. Our research methodology involved three phases:
the design phase; the implementation phase; and the validation
phase. In the sequel, we firstly provide a brief description
of what has been accomplished toward the completion of
our proposed research for individual state machines; a more
thorough description of this part of the research can be found
in a technical report [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Secondly, we explain our plan for
extending this work for communicating state machines.
      </p>
      <sec id="sec-4-1">
        <title>A. Accomplished Work for Individual State Machines</title>
        <p>Research Design The first phase involves defining the
architecture of our standard symbolic execution of Rhapsody
Statecharts and its optimizations. Figure 1 shows the main
components of the architecture implementing the standard
symbolic execution (SE) of Rhapsody Statecharts and the two
proposed optimization techniques of an evolved Rhapsody
Statechart: the memoization-based symbolic execution (MSE)
and the dependency-based symbolic execution (DSE). The
components of the architecture are listed below with a brief
description of the purpose of each component.</p>
        <p>SC2MLM - A transformation that transforms a Statechart
model into our Mealy-like Machine (MLM) representation.</p>
        <p>The basic structure of our MLM formalism consists of a
set of global variables (sometimes called attributes), a set
of simple states with one of them marked as an initial state,
and a set of transitions between these states. Simple states
1We could also call it regression or partial symbolic execution.
in MLMs do not have entry/exit actions. Transitions are
characterized in the same way as in Rhapsody Statecharts
by an event that triggers them, an optional guard and
an action that occurs upon firing them. More advanced
features that are found in Rhapsody Statecharts such as
composite states, concurrent states, states with entry/exit
actions, condition connectors and junction connectors need
to be mapped to fit the structure of the MLMs formalism.</p>
        <p>Our current transformation supports the mapping of these
specific features.</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.
        </p>
        <p>SC2MLM DiffMap - A mapping of the differences
between two Rhapsody Statecharts obtained from the
Rhapsody 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>MLM2MSET - The main component of our MSE
technique. 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 symbolically execute M LM modV er
based on some parameters. 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
The second plug-in implements the SC2MLM DiffMap
component.</p>
        <p>The third plug-in realizes our symbolic execution
components: MLM2SET, MLM2MSET and MLM2DSET.</p>
        <p>
          Research Validation To validate the correctness of the
implementation and to measure the effectiveness and the
performance of the proposed optimization techniques, we
decide to run our evaluation on three industrial-sized models
from the automotive domain. The first model, the Air Quality
System (AQS), is a 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 non-proprietary 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 composite states in the three models are
nested up to the third level. Additionally, the third one has
a composite state with two orthogonal regions. The goal of
such an evaluation is to answer the following three research
questions:
        </p>
        <p>RQ1. How effective are our optimizations (i.e., how much
do they reduce the resource requirements of the
symbolic execution of a changed state machine model)
compared to standard SE of a changed state machine
model?
RQ2. Does the SET generated from MSE match the one</p>
        <p>generated from standard SE?
RQ3. What aspects influence the effectiveness of each
technique?
task. The output from the component is a
memoizationbased 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>
        <p>Dependency 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.</p>
        <p>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.</p>
        <p>
          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.
        </p>
        <p>MLM2DSET - The main component of our DSE
technique. 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 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.</p>
        <p>Two modes of exploration are defined: full and partial.</p>
        <p>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>
        <p>Research Implementation The second phase is the
development of the architecture designed in the first phase. Our current
implementation consists of three Eclipse plug-ins, summarized
as follows.</p>
        <p>For RQ1, we consider the following three correlated
variables: 1) the time taken to run each technique, 2) the
number of symbolic states and 3) the number of execution
paths in the resulting SETs. For RQ2, we compare the total
number of symbolic states in the SETs resulting from standard
SE and MSE. We also perform manual inspection of a subset
of the two SETs to ensure their equivalence. For RQ3, we
consider the following two aspects: 1) change impact and 2)
model characteristics. To measure the impact of the change, we
define a change impact metric (CIM) as the percentage of the
maximal paths of the MLM model involving the change. The
lower the value of this metric is, the lower the impact of the
change on the model and the higher the opportunity to benefit
from a previous analysis results, and vise versa. For model
characteristics, we identify the following two features that
appear likely to have an impact on the effectiveness of DSE: 1)
the number of transitions in the subject model with multi-path
guards or action code and 2) the number of transitions that have
The first plug-in implements the SC2MLM and the “De- a dependency with other transitions in the model. We speculate
pendency Analysis” components and it has been developed that the first aspect has more influence on the effectiveness of
in the context of the IBM Rhapsody RulesComposer MSE, whereas the second aspect impacts the effectiveness of
Eclipse framework. DSE.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Ongoing Work for Communicating State Machines</title>
        <p>The results of applying our proposed approaches on
individual evolving state machines showed a significant reduction
in the resources required to symbolically execute a modified
version of a state machine model compared with the standard
method. This motivates us to extend our approaches to handle a
system of asynchronously communicating state machines. This
requires us to extend the functionalities of each of the
components in Figure 1 to handle a system of communicating state
machines. Examples of such functionalities include, but are not
limited to, extending our current MLM formalism to represent
a system of communicating MLMs (CMLMs); updating our
current SC2MLM component to map the information related to
the communication topology of a communicating state machine
into their corresponding elements in our extended CMLMs
formalism; building an algorithm for composing the individual
MLMs corresponding to each individual state machine resulting
from our SC2MLM component; and updating our dependency
analysis component to consider the communication dependency
between the communicating state machines.</p>
        <p>
          V. CURRENT STATUS AND EXPECTED CONTRIBUTIONS
The part of the proposed framework considering individual
state machines has been already developed and evaluated [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ].
Currently, we work on the part considering communicating
state machines.
        </p>
        <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 IV, (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>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>ACKNOWLEGMENT</title>
      <p>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.
CodeSonar,</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>I. Rational</surname>
          </string-name>
          , “Rhapsody System Designer, http://www01.ibm.com/software/awdtools/rhapsody/.”
        </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 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 id="ref27">
        <mixed-citation>
          [27]
          <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,”</article-title>
          <source>in 18th International Conference on Model Driven Engineering Languages and Systems (MODELS)</source>
          .
          <source>ACM/IEEE</source>
          ,
          <year>2015</year>
          , p. to appear.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>