<!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>Verifying Modelling Languages using Lightning: a Case Study</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Loc Gammaitoni</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pierre Kelsen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fabien Mathey</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Luxembourg</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>The formal language Alloy was developed to provide fully automatic analysis of software designs. By providing immediate feedback to users it allows early detection of design errors. The main goal of the Lightning tool is to apply the power of Alloy's automatic analysis to the domain of software language engineering. The tool allows to represent abstract syntax, concrete syntax and semantics of a modelling language in Alloy. In this paper we describe the veri cation capabilities of Lightning with the help of a concrete modelling language, namely the language of structured business processes.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        The formal language Alloy was developed to "capture the essence of software
abstractions simply and succinctly, with an analysis that is fully automatic,
and can expose the subtlest of aws" [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. By allowing continuous automatic
analysis during the design process software modellers can uncover design errors
quickly. This design process, which could aptly be called "agile modelling", also
stimulates the modellers since it provides immediate feedback.
      </p>
      <p>
        The goal of the Lightning tool[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is to apply the power of the Alloy language
and its tool, the Alloy Analyzer, to the domain of software language engineering.
It was already shown earlier [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] that Alloy is a suitable language for de ning
syntax and semantics of modelling languages . The Lightning tool can be viewed
as a rst practical validation of ideas presented in that work.
      </p>
      <p>
        One can consider Lightning as an important step towards a language
workbench based on Alloy. The emphasis of the tool is currently on automatic
validation of language de nitions using Alloy's SAT-based analysis. All basic
components of a modelling language can be de ned in the tool: abstract syntax,
concrete syntax and semantics. Concrete syntax is currently restricted to
visualising language models. Semantics can be speci ed in the style of operational
semantics and its execution can be visualised as well. All speci cations of
language components and accompanying transformations are de ned in Alloy. The
tool is, however, not limited to language speci cations expressed in Alloy since
it allows importing metamodels expressed in Ecore (feature not described in the
present paper). For Lightning to become a full- edged language workbench [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
more sophisticated editor support has to be provided (only exists in rudimentary
form in the present version) as well as code generation facilities to interface with
existing programming languages.
      </p>
      <p>The main purpose of this paper is a description of the veri cation capabilities
of the Lightning tool. We will examine how the tool assists the user in writing
correct language speci cations.</p>
      <p>This paper is organised as follows: we rst describe the case study we will
use in this paper. In section 3 we introduce the Lightning tool. We then
describe how Lightning assists the user in designing the abstract syntax (section
4), concrete syntax (section 5), and semantics (section 6). We wrap up the paper
with a discussion of our contribution in the context of related work and present
concluding remarks and future work in the nal section.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Case Study</title>
      <p>In this paper, we illustrate Lightning's veri cation features by designing a
Structured Business Process (SBP) language.</p>
      <p>SBPs consist of tasks representing actions performed towards the completion
of the process and of control nodes structuring the process. Those tasks and
control nodes are interconnected using transitions so that the following holds:
{ The process has a unique start and end, represented by the Start and End
control nodes, so that no transition is incoming to Start or outgoing from
End.
{ Each task has exactly one incoming and one outgoing transition.
{ XOR and AND are control nodes used to delimit blocks representing the
nesting of processes. The di erence between XOR and AND is purely
semantical. While AND means that all sub-processes (outgoing transitions)
need to be processed, XOR speci es that exactly one of them has to be
processed.
{ XOR and AND control nodes have one incoming and more than one outgoing
transition if they are used to open a new block (in which case they are called
XOR split and AND split), or more than one incoming and one outgoing
transition if they are used to close a new block (in which case they are called
XOR join and AND join)
{ A Block opened by an AND split or XOR split needs to be closed by an</p>
      <p>AND join or XOR join, respectively.</p>
      <p>{ The process is acyclic (all tasks are traversed at most once)
An example business process representing a model expressed in this language is
represented in g. 1 using traditional notation from the business process
community.</p>
      <p>
        This choice of case study is based on the fact that:
{ The SBP's speci cation has been formalized in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], thus providing a precise
description of the syntax and semantics of this language.
{ It has su cient complexity to illustrate the usefulness of our tool.
{ It is practically relevant since many existing business processes are
expressible in this form [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>This case study has been implemented using Lightning in the context of a
master thesis. The concrete veri cation examples presented in this paper have
actually been encountered during that work.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Lightning</title>
      <p>The Lightning tool is a language workbench based on Alloy. It is distributed as
an Eclipse plugin 1. It provides support to formally express all the components
of a language (Abstract Syntax, Concrete Syntax, and Semantics), and allows
to verify these using Alloy's SAT based model nding mechanism. Amongst the
notable features of Lightning are :
{ A complete Alloy editor (with outline, error markers and syntax highlighting)
{ Ecore support
{ An editor allowing to modify generated instances.</p>
      <p>
        The signature trait of Lightning, however, is to allow incremental language
development (depicted in g. 2) by coupling the instance generation of Alloy with
the domain speci c visualization and model execution induced by the concrete
syntax and semantics de nition, respectively . This approach facilitates the
identi cation of design errors [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>In the following sections, we will delve into the details of the design process
shown in g. 2 and describe associated veri cation tasks.
1 Freely available at : http://lightning.gforge.uni.lu</p>
      <p>Design</p>
      <p>SM
3
2
1
error
detection</p>
      <p>Language model
generation</p>
      <p>Legend
ASM: Abstract Syntax Model
CSM: Concrete Syntax Model
SM : Semantics Model
In Lightning the abstract syntax of a language consists of an Alloy model de ning
the set of valid language models. We can view this model as the metamodel of the
language. In our SBP case study, the abstract syntax model (ASM) de nes
concepts of the language (Tasks, Flows, Control nodes, ...), relations between those
concepts (e.g., Flows have Nodes as source and target), and well-formedness rules
expressed as constraints (e.g., to ensure acyclicity of the process). The following
is an excerpt of the abstract syntax model:
1 abstract s i g Nodefg
2 abstract s i g C on t r ol extends Nodefg
3 one s i g S t a r t extends Nodefgf t h i s not in Flow . t a r g e t g
4 one s i g End extends Nodefgf t h i s not in Flow . s o u r c e g
5 s i g Task extends Nodefg
6 s i g AND JOIN , AND SPLIT , XOR JOIN , XOR SPLIT extends C on t r ol fg
7 s i g Flowf
8 s o u r c e : Node ,
9 t a r g e t : Node
10 g
11 f a c t a c y c l i c f
12 a l l n: Node j n not in n . ^ ( ( ~ t a r g e t ) . s o u r c e )
13 g</p>
      <p>Listing 1.1. Abstract Syntax Model excerpt
We can use Alloy's instance generation mechanism to verify the abstract syntax.
This scenario corresponds to the cycle labelled 1 in g. 2. Figure 3 depicts one
of the language models thus obtained from our SBP speci cation. Although it
is still possible to interpret this model correctly, it is a bit tedious since it is
not presented in the traditional way but re ects the structure of the abstract
syntax. The more complex a language model is (in terms of number of elements
and links present), the harder it becomes to comprehend it. This is why it is
advised to start de ning the concrete syntax of a language (transit to cycle 2 in
g. 2) once its models become hard to check through their default visualization.</p>
      <p>
        In the next section we de ne how domain speci c visualizations are speci ed
in Lightning.
The Concrete Syntax of a language consists of an Alloy model de ning a
transformation from the previously de ned Abstract Syntax Model (ASM) to a
predened Visual Language Model (VLM). This de nition follows the approach that
Kleppe describes in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. This VLM, named LightningVLM and also expressed
in Alloy, consists of:
{ A set of visual elements that can be linked and composed
{ Layout and color declarations that can be used as properties of visual
elements
{ Well-formedness rules that enforce that any instance can be correctly
rendered once interpreted by the tool (by preventing the presence of cyclic
compositions, for example)
      </p>
      <p>The transformation model enforces that all of its instances contain a given
ASM instance and its corresponding VLM instance via the use of mapping rules
and integration predicates; these predicates specify the values of elds of atoms
in the VLM instance. The VLM instance can then be interpreted by Lightning
in order to be rendered graphically. This process is the essence of the concrete
syntax support the tool provides and is depicted in g. 4. Note that in the current
version of Lightning the concrete syntax is used only for visualisation and cannot
be directly edited.</p>
      <p>
        In order to be processed in a reasonable time, the Alloy model de ning this
ASM to VLM transformation can be written following a sub-syntax of Alloy,
such that interpretation can be used rather than SAT-solving. This approach
called functional module is introduced in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>Below we provide a selection of the mapping rules and their integration
predicates (pre xed with the prop keyword) de ned in order to provide a concrete
syntax to our SBP language.
1 / each t a s k i s represented by a r e c t a n g l e , and each node has i t s
corresponding l a b e l /
2 one sig Transformation f
3 mapTask: Task one &gt; one RECTANGLE,
4 mapNodeText: Node one &gt; one TEXT
5 g
6 / a t a s k i s represented by a r e c t a n g l e with a white
7 background t h a t contains the corresponding t e x t /
8 pred prop mapTask ( n: Task , r : RECTANGLE) f
9 r . l a y o u t = VERTICAL LAYOUT
10 r . c o l o r = WHITE</p>
      <p>Once the concrete syntax is de ned in this way, it becomes easier to detect
errors in an instance model. Figure 5 depicts the language model previously
shown in g. 3, visualized this time using its concrete syntax de nition.</p>
      <p>Only one glance at g. 5 su ces to notice that our SBP language is
underspeci ed. Indeed, in this language model, two XOR splits are converging into
a single join. Moreover this join, which is an AND join, doesn't have the same
nature than the converging splits. In order to x this design error, we need to
associate splits and joins together. We do this via the de nition of control boxes:
1 s i g ControlBox f
2 s p l i t : Control ,
3 j o i n : C o n t r o l
4 gf (
5
6
7
8
9
10
11 g
// SPLIT AND JOIN HAVE SAME NATURE
s p l i t in AND SPLIT and j o i n in AND JOIN) or
( s p l i t in XOR SPLIT and j o i n in XOR JOIN)
// PAIRING EACH SPLIT WITH A GIVEN JOIN
a l l s : ( s u c c [ s p l i t ] ) j s in ( p r e d s [ j o i n ] )
a l l j : ( pre [ j o i n ] ) j j in ( s u c c s [ s p l i t ] )</p>
      <p>Adding the concept of a control box to the abstract syntax and repeating
the instance generation shows us that the error has been well identi ed and
xed. The error processing we just discussed illustrates a transit to the cycle
1 of g. 2., i.e., to the case where an error found in the visualisation reveals
an error in the underlying abstract syntax. Of course the transformation model
describing the visualisation may be faulty itself. In this case the error in the
visual representation may point to an error in the concrete syntax model. This
situation corresponds to a transit to the cycle 2 of g. 2, leading to redesigning
the Concrete Syntax model. Checking if the error seen in the concrete syntax
visualization is also present in the concrete-syntax-less visualization (described
in the previous section) allows to decide whether or not the error has been
introduced by the concrete syntax de nition.
6</p>
    </sec>
    <sec id="sec-4">
      <title>Semantics De nition</title>
      <p>Lightning currently o ers the possibility to de ne the operational semantics of
languages.</p>
      <p>The semantics de nition in Lightning consists of:
{ a Semantics Model (SM) in which the concepts of state and trace are de ned.</p>
      <p>A step predicate is speci ed that expresses the condition that one state
follows another state in the trace.
{ a Semantics visualization transformation model, reusing most of the rules
present in the ASM to VLM transformation but adding rules to represent
the properties of the semantics state.</p>
      <p>For our case study each state consists of a set of nodes that are currently
active in the execution of the business process. The corresponding eld of the
Alloy signature is called currentNodes. That is, for a given state s, the expression
s.currentNodes denotes the set of active nodes in state s. The visualisation
represents the currently active nodes by highlighting them in the business process
model.</p>
      <p>To verify the correctness of the operational semantics, one can visualize its
possible executions. To illustrate this veri cation, let us consider the following
predicate as a rst attempt to de ne the semantics of XORs:
1 pred XORNodes( c u r r e n t : Node , s2 : S t at e ) f
2 c u r r e n t in XOR SPLIT and one node: c u r r e n t . ( ~ s o u r c e ) . t a r g e t j node
in s2 . currentNodes
3 g</p>
      <p>This predicate ensures that given a current node that is a XOR SPLIT, the
set of current nodes belonging to the next semantics state contains exactly one of
the nodes directly following the XOR SPLIT (mutual exclusion). Figure 6 gives
an example of an erroneous execution.</p>
      <p>Although the transition from (a) to (b) is performed as expected, the
transition from (b) to (c) shows us that our XOR semantics is underspeci ed. Indeed,
the predicate previously shown enforces that only one of the nodes directly
following an active XOR SPLIT should be part of the current nodes. This predicate
thus does not specify the state of the other nodes, thus allowing extraneous nodes
to appear in the set of current nodes for a given state. To x this, one simply
needs to enforce that the set of current nodes of a given state is contained in the
set of successors of all the current nodes present in the previous semantics state
(code omitted for lack of space).</p>
      <p>The example above illustrates the case where an error in the concrete syntax
representation of the semantic state points to an error in the underlying semantic
model. This case corresponds to the cycle 3 of g. 2.
7</p>
    </sec>
    <sec id="sec-5">
      <title>Discussion and Related Work</title>
      <p>
        The term "language workbench" was made popular by Martin Fowler [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]; it
denotes a tool that supports the e cient de nition, reuse and composition of
languages and their IDEs [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The Lightning tool may be viewed as a language
workbench that is based on the formal language Alloy (although not a
fulledged one as mentioned in the introduction). Because of its formal basis it
di ers from existing language workbenches such as MetaEdit+[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], MPS[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ],
and Spoofax[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Few workbenches currently support formal semantic analysis;
notable exceptions are Kermeta [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and Atom 3 [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] for which some formal analysis
is available via a translational semantics (to Maude for Kermeta [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and to Alloy
for AToM3 2, [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]).
      </p>
      <p>Our work is based on the premise that developing modelling languages
bene ts from the lightweight formal modelling approach o ered by Alloy because
it gives language developers immediate feedback on design decisions using
automatic formal analysis and thus allows to detect design errors early. We can thus
view Lightning as an attempt to provide agile modelling of software languages
in a way similar to the initial intent of Alloy, namely providing agile modelling
of software designs.</p>
      <p>Because our tool is based on Alloy it also inherits the inherent limitations
of Alloy. Indeed veri cation is based on instance nding via SAT solving. The
e ectiveness of this approach intimately depends on the small scope hypothesis,
stating that most of the design errors can be found in small models. Assuming
the small scope hypothesis holds, the approach will allow to reduce the scopes of
signatures in Alloy so that a correct answer can be found in reasonable time. Of
course a negative answer in the search of a counterexample does not exclude the
possibility that there may be one but may point instead to the need for trying
out larger scopes, resulting of course in longer running times.</p>
      <p>
        In the context of language design, though every aspect of a language is written
in Alloy, the performance limitations of Alloy we just mentioned only apply
to the generation of language models (ASM instances). The visualisation and
semantics, bene ting from functional modules, can be processed e ciently [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
8
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>We have presented in this paper how Lightning allows the application of a
lightweight veri cation technique based on Alloy from the earliest stages of a
domain speci c language design process to its completion. In particular we have
given concrete examples of veri cation tasks that were carried out during the
design of a language for structured business processes.</p>
      <p>Regarding future work much remains to be done. One obvious hindrance to
the use of our tool is the fact that it requires prior knowledge of Alloy. We are
currently trying to see to what extent we can provide graphical interfaces to
most of the modelling tasks in the tool. In particular we have already partially
implemented such an interface for de ning transformations.</p>
      <p>
        Another fundamental question that needs to be investigated concerns
performance. Indeed, once the metamodel becomes a bit larger (with, say, tens of
signatures) Alloy's instance generation tends to slow down appreciably. Recent
work on model slicing (such as [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ]) in the context of UML/OCL models)
suggests that in many cases instance generation can be made more e cient by
generating instances for subparts of the metamodel and then combining these
partial instances into an instance of the whole metamodel. We plan to investigate
this type of approach in the context of our work.
2 A newer version of the tool named AToMPM [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] is available
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>1. Lightning tool web site, http://lightning.gforge.uni.lu.</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>2. Kermeta tool web site, http://www.kermeta.org.</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Moussa</given-names>
            <surname>Amrani</surname>
          </string-name>
          .
          <article-title>A formal semantics of kermeta</article-title>
          .
          <source>Formal and Practical Aspects of Domain-Speci c Languages: Recent Developments</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Juan De Lara and
          <string-name>
            <given-names>Hans</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          .
          <article-title>Atom3: A tool for multi-formalism and meta-modelling</article-title>
          . In Fundamental approaches to software engineering, pages
          <volume>174</volume>
          {
          <fpage>188</fpage>
          . Springer,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Sebastian</surname>
          </string-name>
          et al.
          <source>Erdweg</source>
          .
          <article-title>The state of the art in language workbenches</article-title>
          . In Martin Erwig, Richard F. Paige, and Eric Wyk, editors,
          <source>Software Language Engineering</source>
          , volume
          <volume>8225</volume>
          of Lecture Notes in Computer Science, pages
          <volume>197</volume>
          {
          <fpage>217</fpage>
          . Springer International Publishing,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Martin</given-names>
            <surname>Fowler</surname>
          </string-name>
          .
          <article-title>Language workbenches: The killer-app for domain speci c languages</article-title>
          . http://martinfowler.com/articles/languageWorkbench.html.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Lo</surname>
          </string-name>
          <article-title>c Gammaitoni and Pierre Kelsen</article-title>
          .
          <article-title>Domain-speci c visualization of alloy instances</article-title>
          .
          <source>In ABZ</source>
          , pages
          <volume>324</volume>
          {
          <fpage>327</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Lo</surname>
          </string-name>
          <article-title>c Gammaitoni and Pierre Kelsen. Functional Alloy Modules</article-title>
          .
          <source>Technical Report TR-LASSY-14-02</source>
          , University of Luxembourg; http://hdl.handle.net/10993/16386.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Daniel</given-names>
            <surname>Jackson</surname>
          </string-name>
          .
          <article-title>Software abstractions</article-title>
          . MIT Press Cambridge,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Lennart</surname>
            <given-names>CL</given-names>
          </string-name>
          <article-title>Kats and Eelco Visser. The spoofax language workbench: rules for declarative speci cation of languages and IDEs</article-title>
          .
          <source>In ACM Sigplan Notices</source>
          , volume
          <volume>45</volume>
          , pages
          <fpage>444</fpage>
          {
          <fpage>463</fpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Steven</surname>
            <given-names>Kelly</given-names>
          </string-name>
          , Kalle Lyytinen, and
          <string-name>
            <given-names>Matti</given-names>
            <surname>Rossi</surname>
          </string-name>
          .
          <article-title>Metaedit+ a fully con gurable multi-user and multi-tool CASE and CAME environment</article-title>
          .
          <source>In Advanced Information Systems Engineering</source>
          , pages
          <fpage>1</fpage>
          <lpage>{</lpage>
          21. Springer,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Pierre</given-names>
            <surname>Kelsen</surname>
          </string-name>
          and
          <string-name>
            <given-names>Qin</given-names>
            <surname>Ma</surname>
          </string-name>
          .
          <article-title>A lightweight approach for de ning the formal semantics of a modeling language</article-title>
          .
          <source>In Model Driven Engineering Languages and Systems</source>
          , pages
          <fpage>690</fpage>
          {
          <fpage>704</fpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>Anneke</given-names>
            <surname>Kleppe. Software Language</surname>
          </string-name>
          <article-title>Engineering: Creating Domain-Speci c Languages Using Metamodels</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Asadullah</surname>
            <given-names>Shaikh</given-names>
          </string-name>
          , Robert Clariso, U e Kock Wiil, and
          <string-name>
            <given-names>Nasrullah</given-names>
            <surname>Memon</surname>
          </string-name>
          .
          <article-title>Veri cation-driven slicing of uml/ocl models</article-title>
          .
          <source>In Proceedings of the IEEE/ACM international conference on Automated software engineering</source>
          , pages
          <volume>185</volume>
          {
          <fpage>194</fpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>Asadullah</given-names>
            <surname>Shaikh</surname>
          </string-name>
          , U e Kock Wiil, and
          <string-name>
            <given-names>Nasrullah</given-names>
            <surname>Memon</surname>
          </string-name>
          . Uost:
          <article-title>Uml/ocl aggressive slicing technique for e cient veri cation of models</article-title>
          .
          <source>In System Analysis and Modeling: About Models</source>
          , pages
          <volume>173</volume>
          {
          <fpage>192</fpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Eugene</surname>
            <given-names>Syriani</given-names>
          </string-name>
          , Hans Vangheluwe, Raphael Mannadiar, Conner Hansen, Simon Van Mierlo, and Huseyin Ergin.
          <article-title>Atompm: A web-based modeling environment</article-title>
          . In Demos/Posters/StudentResearch@ MoDELS, pages
          <volume>21</volume>
          {
          <fpage>25</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. Silvano Colombo Tosatto, Guido Governatori, and
          <string-name>
            <given-names>Pierre</given-names>
            <surname>Kelsen</surname>
          </string-name>
          .
          <article-title>Towards an abstract framework for compliance</article-title>
          .
          <source>Proceedings of the 17th IEEE International EDOC 2013 Conference Workshops</source>
          , pages
          <volume>79</volume>
          {
          <fpage>88</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>Markus</given-names>
            <surname>Voelter</surname>
          </string-name>
          and
          <string-name>
            <given-names>Vaclav</given-names>
            <surname>Pech</surname>
          </string-name>
          .
          <article-title>Language modularity with the mps language workbench</article-title>
          .
          <source>In 34th International Conference on Software Engineering (ICSE)</source>
          , pages
          <fpage>1449</fpage>
          {
          <fpage>1450</fpage>
          . IEEE,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. Thomas De Vylder.
          <article-title>Feature modelling: A survey, a formalism and a transformation for analysis</article-title>
          . University of Antwerp.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>