<!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>Towards Fixing Sketchy UML Models by Leveraging Textual Notations: Application to Real-Time Embedded Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Fr´ed´eric Jouault</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>J´erˆome Delatour</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>LUNAM, L'Universit ́e Nantes Angers Le Mans TRAME team, ESEO</institution>
          ,
          <addr-line>Angers</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <fpage>73</fpage>
      <lpage>82</lpage>
      <abstract>
        <p>During the development of real-time embedded system, the use of UML models as blueprints is a common practice with a focus on understandability rather than comprehensiveness. However, further in the development, these models must be completed in order to achieve the necessary validation and verification activities. They are typically performed by using several formal tools. Each tool needs models of the system at a given abstraction level, which are precise and complete enough with respect to how the tool processes them. If UML is appropriate for capturing multiple concerns, its multiple partial views without a global one increase the difficulty of locating inconsistency or incompleteness issues. Therefore, ensuring completeness is time consuming, fastidious, and error prone. We propose an approach based on the use of a UML textual syntax closely aligned to its metamodel: tUML. An initial prototype is described, and examples are given.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Using sketchy models is common during software systems development. Such
models (also called contemplative models) are just drawings that cannot be
automatically processed (e.g., transformed into code, or verified). In the use of
such models as blueprints, the focus is on communication rather than on
completeness. The UML language is a good candidate for that kind of practice. It is
primarily a graphical notation, and it offers a relatively large set of diagrams for
representing various concerns. Moreover, as it is a standard, one can expect that
it is known by developers, and also by stakeholders. Therefore, it helps
communicating a better understanding about the system under study, and supports a
better collaboration with various specialists.</p>
      <p>
        However, such contemplative use of UML models is only partially satisfactory.
Part of the effort to produce them cannot be automatically reused in further
development phases. Going from contemplative to productive models is a key
challenge of model-driven approaches [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In these approaches, development can
be seen as a set of successive model transformations steps in order to produce
code from analysis models. Each step should be partially automated.
      </p>
      <p>In real-time embedded system development, this is even more important.
The reliability and complexity of such systems require numerous verifications
and validations activities all along the development process. These activities
are based on the use of tools such as model checkers, theorem provers, code
generators, and test generators. The use of UML in this context presents some
issues. It has no standard formal semantics, and many semantic variation points.
A many-diagram model may contain inconsistencies, and no global view helps
their discovery. UML is semi-formal: a given drawing may have different
interpretations. UML expressivity is not completely satisfactory for this domain.</p>
      <p>
        Solutions to these issues have been developed. UML extensions have been
defined (e.g., the MARTE1 profile) to adapt it to the real-time domain.
Numerous works propose a variety of translations from part of UML to different formal
languages [
        <xref ref-type="bibr" rid="ref10 ref6 ref9">6,10,9</xref>
        ]. These translations enable detection of some inconsistencies
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], and other verification activities.
      </p>
      <p>
        These solutions require that the verified model parts be precise, complete, and
unambiguous. Other parts may remain sketchy [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. However, it is difficult for
an engineer to go from a sketchy model to a precise one. This typically requires
detailed knowledge of: the UML specification, and the specific semantics given
to it by a given verification tool [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Even if some UML editors assist users, this
work is difficult and long. It is generally necessary to fill-in hundreds of property
sheets accessible from a potentially large number of distinct graphical views.
      </p>
      <p>In this work, we propose an approach to bridge the gap between sketchy
and (partially) precise models. We put some efforts in making it as independent
of specific UML editors as possible. It is based on the use of a specific textual
syntax called tUML that closely follows the UML metamodel structure, as well
as on the use of additional constraints on models. Neither text nor graphical is
better than the other. However, by complementing graphical tools with textual
ones, we can get both their respective advantages.</p>
      <p>
        We illustrate our approach with the pacemaker case study presented in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
It is actually while working on this case study that we initially had the idea to
develop the presented approach. We started by playing the role of the designer
defining a sketchy model. Then, we had to complete it so that it can be verified.
This task is now much easier thanks to our tUML prototype.
      </p>
      <p>Section 2 presents the approach in four steps: an overview of tUML
(Section 2.1), a description of our prototype (Section 2.2), an explanation of its
usage (Section 2.3), and a discussion (Section 2.4). Then, Section 3 compares
tUML to some related works. Finally, we conclude in Section 4.
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Approach</title>
      <p>tUML Presentation
tUML is a textual concrete syntax for a subset of the standard UML metamodel.
A detailed definition and justification of this subset is beyond the scope of this</p>
      <sec id="sec-2-1">
        <title>1 http://www.omgmarte.org/</title>
        <p>
          paper. Roughly, it consists of the parts of the UML metamodel that correspond to
the three following diagrams: 1) class diagrams, 2) composite structure diagrams,
and 3) state diagram. These diagrams are typically the ones used to model
realtime embedded systems. We do not attempt to cover the whole UML metamodel,
but built our subset bottom-up, making sure we can verify what we model [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ].
Additionally, we use a specific action language restricted to what we can verify.
        </p>
        <p>
          In order to illustrate: 1) the tUML textual syntax, and 2) its relations with
the standard graphical notation, we use the pacemaker case study introduced in
[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. In this case study, a pacemaker is designed as a UML model, of which a full
description does not belong here. Therefore, we only briefly mention what is
necessary to understand this paper. A Cardiologist active object is responsible for
applying a heart-assistance policy such as TriggeredPacing by piloting Leads.
A Lead active object brokers access to actual physical leads placed on the heart
of the patient. Cardiologist and Lead are software components that are part
of an implanted PulseGenerator. The overall System consists of a
PulseGenerator, which can communicate with an external DeviceControlMonitor. We
reuse three figures from [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], which correspond to our three UML metamodel
parts of interest: classes, composite structure, and state machines.
Classes. Figure 1 (corresponding to Figure 9 from [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]) is a partial view of class
Cardiologist, and related interfaces in the standard class diagram notation.
Cardiologist implements interface ICardiologist_Provided2, which defines
messages it can receive from its controller. It also implements interface
ILead_Required, which defines messages it can receive from Leads. Cardiologist uses
interface ILead_Provided, which defines messages it can send to Leads.
        </p>
        <p>Listing 1 is an excerpt of the corresponding tUML definition. Class
Cardiologist is defined as implementing two interfaces (line 1), and using a third one
2 All interface names from original case study have been simplified to increase clarity.</p>
        <p>Listing 1. Cardiologist excerpt
1 class C a r d i o l o g i s t behavesAs S M C a r d i o l o g i s t implements</p>
        <p>,→IC ar dio log ist _P rov ide d , I L e a d _ R e q u i r e d {
// [ ports ]
private operation an al yse Mod e ( ) ;
private operation g e n e r a t e P u l s e ( ) ;
public operation g e t A c c e l e r a t i o n ( ) ;
stateMachine S M C a r d i o l o g i s t {
region Region0 {</p>
        <p>
          // [ state machine contents ]
2
3
4
5
6
7
8
9 }}}
10 usage Usage0 of I L e a d _ P r o v i d e d by C a r d i o l o g i s t ;
+ dcm:DeviceControlMonitor[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
        </p>
        <p>
          System
&lt;&lt;ClientServerPort&gt;&gt;
+pgCom:I_DCM[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
pg:PulseGenerator[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
+dcmCom:I_GP[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]
(line 10). These interfaces have the same names as those in Figure 1. Lines 3 to
5 contain the definitions of operations owned by the class. Comments starting
with two slashes end with the line. They are used here to stand for actual ports
(line 2) and state machine contents (line 8), which are not detailed. Lines 6 to 9
correspond to an element not shown in the class diagram: a state machine (not
detailed here) that specifies the behavior of this active object.
        </p>
        <p>
          Composite Structure. Figure 2 (Figure 5 in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]) is a partial view of the
System’s architecture in the standard composite structure diagram notation.
This architecture consists of a DeviceControlMonitor named dcm owning a
port called pgCom, a PulseGenerator named pg owning a port called dcmCom,
and a connector between the ports.
        </p>
        <p>
          Listing 2 is an excerpt of the corresponding tUML definition. Class System is
defined at lines 1-4 as consisting of a PulseGenerator part at line 2, a
DeviceControlMonitor part at line 3, and a connector at line 4. Class PulseGenerator
is defined at lines 5-9 with a port at line 7. This class is also composite but its
parts (line 6) and connectors (line 8) are not detailed here. Class
DeviceControlMonitor is defined at lines 10-11, and only contains a port (line 11).
State Machines. Figure 3 (Figure 12 in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]) is a partial view of a composite
substate of Cardiologist’s behavioral state machine in the standard state
diagram notation. State TriggeredPacing is composed of states StartingPulse
and WaitingPulse, as well as of an initial pseudo-state. It also contains four
transitions: 1) one transition from the initial pseudo-state to StartingPulse,
2) one transition from StartingPulse to WaitingPulse triggered after a given
        </p>
        <p>
          Listing 2. System composite structure
1 class System {
2 public composite pg [
          <xref ref-type="bibr" rid="ref1">1 −1</xref>
          ] unique : P u l s e G e n e r a t o r ;
3 public composite dcm [
          <xref ref-type="bibr" rid="ref1">1 −1</xref>
          ] unique : D e v i c e C o n t r o l M o n i t o r ;
4 connector Connector0 between dcm . pgCom and pg . dcmCom ; }
5 class P u l s e G e n e r a t o r {
6 // [ parts ]
87 p//ub[lciconcnoemctpoorssitebeptwoeretn dcpmaCrotsm ][
          <xref ref-type="bibr" rid="ref1">1 −1</xref>
          ];
9 }
10 class D e v i c e C o n t r o l M o n i t o r {
11 public composite port pgCom [
          <xref ref-type="bibr" rid="ref1">1 −1</xref>
          ]; }
time (currentMode.RP), and two transitions from WaitingPulse to
StartingPulse triggered: 3) by SensedPulse message, with generatePulse effect, and
4) after a given time (currentMode.pulseDelay), with the same effect.
        </p>
        <p>
          Listing 3 is an excerpt of the corresponding tUML definition. State
TriggeredPacing is defined at lines 1-9 as consisting of region Region0. This region
itself consist of an initial pseudo-state (line 7), two states StartingPulse (lines
8) &amp; WaitingPulse (line 9), and four transitions (lines 3-6). Each transition has
a name. Each transition with a trigger refers to an event by name (escaped
between double quotes because they contain spaces). Events are defined in a part
of the model not shown here. Finally, the two transitions having an effect specify
it as an empty opaque behavior (lines 5-6), with only its name specified.
Now that tUML has been presented, we will describe its current prototype
implementation. Eclipse Modeling3 has been used in the following way:
– Eclipse UML provides the UML abstract syntax implementation (very
close to the standard), on top of EMF (Eclipse Modeling Framework). Tools
based on Eclipse UML (e.g., Papyrus) are directly compatible with tUML.
– TCS [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] is used to define the textual syntax. It provides three elements: 1)
an extractor from Eclipse UML abstract syntax to concrete tUML textual
syntax, 2) an injector from tUML textual syntax to Eclipse UML, and 3) an
editor (see Figure 4) tuned for tUML textual syntax.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>3 http://www.eclipse.org/modeling/</title>
        <p>Listing 3. Cardiologist state machine except
1 state T r i g g e r e d P a c i n g {
2 region Region0 {
3 Initial0 −&gt;S t a r t i n g P u l s e : Transition0 ;
54 WSatiatritnignPguPluslese−&gt;−&gt;S tWaarittiinnggPPuullssee :: TTrraannssiittiioonn12 :: ”” TSEE −− cSuernrseendtPMuoldsee ”. RP/” / ;
,→opaqueBehavior g e n e r a t e P u l s e ; ;
6 WaitingPulse −&gt;S t a r t i n g P u l s e : Transition3 : ” TE − currentMode .</p>
        <p>
          ,→pulseDelay ” / opaqueBehavior g e n e r a t e P u l s e ; ;
7 i n i t i a l pseudoState Initial0 ;
8 state S t a r t i n g P u l s e ;
9 state Wa iti ngP uls e ; }}
– ATL [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] transformations are used to implement four elements: 1) constraints
(in OCL) to check on tUML models, 2) qualified names computation and
resolution whereas TCS only supports simple names by itself, 3) visualization
in the form of a PlantUML4 export, and 4) bridges with other tools.
Other tools could have been used (e.g., Xtext), but we prefer familiar ones.
        </p>
        <p>
          The PlantUML export enables graphical rendering of tUML models.
Figures 1 and 3 have actually been generated through this process. Figure 2 is
however still the original from [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] because PlantUML cannot properly render it
yet. A non-standard context diagram can also be rendered. It is a
specialization of the communication diagram in which a non-ordered list of all exchanged
messages (with directions) is shown on each edge.
        </p>
        <p>Our prototype notably has the following limitations. Conversions between
textual and abstract syntax currently work on whole models, and graphical
information is not synchronized yet. Fine-grain synchronization would be helpful
but is not mandatory in our approach. Apart from tools based on Eclipse UML,
only a Rhapsody import has been implemented so far.
2.3</p>
        <sec id="sec-2-2-1">
          <title>Using tUML to Fix Sketchy Models</title>
          <p>The previous sections gave an overview of tUML and of its prototype
implementation. This section will give an overview of how they can be used to fix sketchy
models. Before creating models and fixing them, it is first necessary to consider
how they will be used (e.g., for code generation, or verification). Then, an expert
can define what a correct model precisely is in that context. This will typically
lead to a list of custom validation constraints. This work does not need to be
performed for each model, but only for each usage of models (e.g., for a given
code generator, or for a given verification tool).</p>
          <p>The user typically follows the five-step process described below:
1. Creating Sketchy Model. A modeling tool is first used to create a sketchy
model. This is generally done with a graphical UML editor.
2. Converting to tUML. Using the extraction tool presented previously, the
user serializes the model in tUML.</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>4 http://plantuml.com/</title>
        <p>3. Identifying Problems. Issues are identified by applying standard UML
constraints, as well as custom constraints if applicable. They are shown in
the tUML editor. If no problem is identified, then we can go to step 5
4. Fixing Problems. The user can tune the model in order to fix problems.</p>
        <p>This is often easier to do textually because all information is presented at
once. In comparison, a graphical editor often requires opening various
property sheets. Then, we go back to step 3 in order to check if the tackled issues
are fixed, and if some issues remain.
5. Use Fixed Model. Now that all identified problems have been fixed, the
model can be used in four notable ways: 1) reloading the model in the
original UML tool, or another one, 2) generating code, 3) verifying the
model using formal methods, and 4) rendering the model using tools such
as PlantUML (see prototype description).</p>
        <p>
          Our pacemaker example was initially created as a sketchy model, not to be
automatically processed. Later, we decided to attempt to use some verification
tools [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. We defined five specific constraints in addition to the standard ones.
tUML helped us discover and pinpoint (see error markers in Figure 4) more than
thirty issues mostly in the modeling of communication. We can notably mention:
1) opaque behaviors with no body (e.g., in Listing 3, which is not obvious on
Figure 3), 2) undetailed communications (e.g., call to private operation
generatePulse with no body), and 3) use of non-defined signals in triggers. To fix
them, we select a language for opaque behaviors, and we fill-in the blanks.
2.4
        </p>
        <sec id="sec-2-3-1">
          <title>Discussion</title>
          <p>After presenting tUML, its implementation, and its usage, we now discuss the
advantages and drawbacks of our approach. Firstly, tUML has all the benefits
of a textual language, such as: 1) global search and replace, 2) relatively easy
editing with no need to click through numerous property pages, 3) support for
diff/patch and text-based version control systems, and 4) no need to focus on
graphical layout (indentation being much easier). Other advantages of tUML
when compared with the standard UML graphical notation include:
– Transparency. All model elements are immediately visible, and no aspect
of the model is hidden away in property sheets accessible via multiple clicks.
– Global view. Whereas the graphical notation fragments the model into
separate diagrams, tUML provides a single global view.
– Reduced redundancy. There is no need to duplicate elements (even
partially) across various diagrams.
– Proximity to metamodel. The textual syntax of tUML follows the UML
metamodel very closely.</p>
          <p>Proximity to the UML metamodel notably has the advantage that it is
relatively easy to figure out where a given aspect of the UML metamodel can
be accessed. Moreover, this enables relatively precise reporting of errors as text
markers, even though they are actually identified on the abstract syntax.
Graphical editors cannot always do this. For instance, in Papyrus, some errors on class
members are shown on their owning class in the class diagram.</p>
          <p>Although this is not due to the textual nature of tUML, the automatic
generation of views presents some advantages as well. Even though tUML models
typically come from graphical UML editors, this has the advantage of
reformulating the models in a different way, possibly helping to spot issues. Moreover,
the non-standard context diagram is especially helpful in finding messages that
are missing (e.g., when their emission or reception are not properly modeled).</p>
          <p>Of course, tUML also has some limitations:
– Verbose. All model elements have to appear in a single text file. Therefore,
even though they are visible, details of interest may actually be drowned
in unnecessary details. Global view is thus both an advantage and a
drawback. To mitigate this issue, generation of partial textual views should be
investigated. Synchronization with the whole model may become an issue.
– Non-standard. Because it is not standard, tUML needs to be learned even
by UML experts. This adds one difficulty to its usage.
– Incomplete. Only a subset of UML is currently supported. This subset is
especially targeted at real-time embedded systems. Using tUML in other
contexts may prove difficult (e.g., if one needs activities).
– Textual. Finally, even though most advantages of tUML are due to its
textual nature, some users may not accept to type UML code.
3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Related Work</title>
      <p>UML is best known for its graphical notation, but tUML is not the first proposed
UML textual notation. The OMG has notably standardized two of its ancestors5:
– HUTN initially seems to provide a solution since it promises automatic
derivation of a human-usable textual notation from any metamodel.
However, this genericity leads to relatively verbose syntaxes.</p>
      <sec id="sec-3-1">
        <title>5 http://www.omg.org/spec/HUTN/, and http://www.omg.org/spec/ALF/</title>
        <p>– Alf defines a specific textual syntax for a UML subset. The OMG thus
acknowledges the fact that HUTN is not fully adapted to this kind of use.
Unfortunately, Alf is limited to a different subset of UML, which is not
adapted to real-time embedded systems. tUML is thus significantly different
from Alf. Notably, Alf only provides activities to specify behavior, whereas
tUML focuses on state machines. Moreover, Alf specifies a new metamodel
that is closer to its concrete syntax than the standard UML metamodel.
Although a bidirectional mapping to the standard UML metamodel is also
provided, such a gap between textual and graphical notations may make the
job of fixing models for formal verification purposes more difficult.</p>
        <p>Most non-standard textual UML notations aim at producing sketchy models
by leveraging auto-layout tools. We cannot describe them all6 here, but two
notable ones are:
– TextUML7 is relatively close to tUML but does not follow the UML
metamodel as closely (notably wrt. its action language).
– PlantUML has the advantage of being less verbose and more permissive
than all other mentioned approaches. However, its objective is only to
automatically generate visual diagrams. It does not follow the standard
metamodel. Moreover, it is so permissive that many elements (e.g., class
members, and transition labels) can be represented by arbitrary text. Apart from
following very strict conventions, there is no way to guarantee that these
elements actually follow the UML syntax.</p>
        <p>
          Some approaches like UML/P [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] also offer a textual representation of UML
models, and specific constraints to check them. However, the supported UML
subset differs: UML/P is not specific to real-time embedded systems, and notably
includes additional diagrams that our approach [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] is not yet able to verify. It
also seems to lack composite structure diagram, which we need.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <p>In this paper, we have presented an approach that helps fixing incomplete UML
models to make them suitable as input for verification and validation activities
and tools. This approach relies on tUML: a specific textual notation for UML
that notably follows its metamodel very closely. A prototype implementation has
been used on a couple of case studies (including the pacemaker one presented
here), and half a dozen different models. tUML significantly helped in discovering
issues, and therefore in fixing them.</p>
      <p>We have so far demonstrated the worth of the approach, but its development
is still in progress. It should be further studied and refined, notably by applying
it to more case studies, including industrial ones. This would lead to a complete
evaluation. This should bring out more kinds of constraints to check on models,
6 See http://modeling-languages.com/uml-tools/#textual for a bigger list.</p>
      <sec id="sec-4-1">
        <title>7 https://github.com/abstratt/textuml/</title>
        <p>as well as help figuring out in which direction the supported UML subset should
be extended. All sketchy models issues cannot be resolved automatically. It could
nonetheless be useful to provide quick fixes8 in order to not only pinpoint issues,
but also partially automate their resolution.</p>
        <p>A possible extensions of our work on tUML would be to propose it to the
OMG as an extension of Alf, which notably lacks support for state machines.
8 A technique coming from programming environments (see http://wiki.eclipse.
org/FAQ_What_is_a_Quick_Fix%3F).</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. B´ezivin, J.,
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Using ATL for Checking Models</article-title>
          .
          <source>Electronic Notes in Theoretical Computer Science</source>
          <volume>152</volume>
          ,
          <fpage>69</fpage>
          -
          <lpage>81</lpage>
          (
          <year>Mar 2006</year>
          ),
          <source>proceedings of the International Workshop on Graph and Model Transformation (GraMoT</source>
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Broy</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cengarle</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>UML formal semantics: lessons learned</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          <volume>10</volume>
          (
          <issue>4</issue>
          ),
          <fpage>441</fpage>
          -
          <lpage>446</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Delatour</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Champeau</surname>
          </string-name>
          , J.:
          <article-title>Embedded Systems: Analysis and Modeling with SysML, UML and AADL, chap</article-title>
          .
          <source>Case Study Modeling using MARTE</source>
          , pp.
          <fpage>139</fpage>
          -
          <lpage>156</lpage>
          . Wiley-ISTE,
          <string-name>
            <surname>West</surname>
            <given-names>Sussex</given-names>
          </string-name>
          ,
          <source>England (Apr</source>
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. G´erard,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Feiler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Rolland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.F.</given-names>
            ,
            <surname>Filali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Reiser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.O.</given-names>
            ,
            <surname>Delanote</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Berbers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Pautet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Perseil</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.: UML</surname>
          </string-name>
          &amp;
          <article-title>AADL '2007 Grand Challenges</article-title>
          .
          <source>SIGBED Rev</source>
          .
          <volume>4</volume>
          (
          <issue>4</issue>
          ) (Oct
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Gogolla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuhlmann</surname>
          </string-name>
          , M., Hamann, L.:
          <article-title>Consistency, Independence and Consequences in UML and OCL Models</article-title>
          . In: Dubois,
          <string-name>
            <surname>C</surname>
          </string-name>
          . (ed.)
          <source>Tests and Proofs, Lecture Notes in Computer Science</source>
          , vol.
          <volume>5668</volume>
          , pp.
          <fpage>90</fpage>
          -
          <lpage>104</lpage>
          . Springer Berlin Heidelberg (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Gro¨nniger, H.,
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Considerations and Rationale for a UML System Model. UML 2 Semantics</article-title>
          and Applications p.
          <volume>43</volume>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , B´ezivin, J.,
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>TCS: a DSL for the specification of textual concrete syntaxes in model engineering</article-title>
          .
          <source>In: Proceedings of the 5th international conference on Generative programming and component engineering</source>
          . pp.
          <fpage>249</fpage>
          -
          <lpage>254</lpage>
          . ACM (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Teodorov</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Delatour</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Le Roux</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dhaussy</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          : Transformation de mod`
          <article-title>eles UML vers Fiacre, via les langages interm´ediaires tUML et ABCD</article-title>
          .
          <source>G´enie logiciel 109</source>
          ,
          <fpage>21</fpage>
          -
          <lpage>27</lpage>
          (
          <year>Jun 2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , Liu,
          <string-name>
            <given-names>Y.</given-names>
            , Andr´e, E´.,
            <surname>Choppy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Sun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Wadhwa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Dong</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.:</surname>
          </string-name>
          <article-title>A Formal Semantics for Complete UML State Machines with Communications</article-title>
          . In: Johnsen,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Petre</surname>
          </string-name>
          ,
          <string-name>
            <surname>L</surname>
          </string-name>
          . (eds.)
          <source>Integrated Formal Methods, Lecture Notes in Computer Science</source>
          , vol.
          <volume>7940</volume>
          , pp.
          <fpage>331</fpage>
          -
          <lpage>346</lpage>
          . Springer Berlin Heidelberg (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Lund</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Refsdal</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stølen</surname>
          </string-name>
          , K.:
          <article-title>4 Semantics of UML Models for Dynamic Behavior</article-title>
          . In: Giese,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Karsai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Rumpe</surname>
          </string-name>
          ,
          <string-name>
            <surname>B.</surname>
          </string-name>
          , Scha¨tz, B. (eds.)
          <source>Model-Based Engineering of Embedded Real-Time Systems, Lecture Notes in Computer Science</source>
          , vol.
          <volume>6100</volume>
          , pp.
          <fpage>77</fpage>
          -
          <lpage>103</lpage>
          . Springer Berlin Heidelberg (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Rumpe</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          : Agile Modellierung mit UML : Codegenerierung, Testfa¨lle, Refactoring. Springer Berlin, 2nd edn.
          <source>(Jun</source>
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Selic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>The pragmatics of model-driven development</article-title>
          .
          <source>IEEE Softw</source>
          .
          <volume>20</volume>
          (
          <issue>5</issue>
          ),
          <fpage>19</fpage>
          -
          <lpage>25</lpage>
          (
          <year>Sep 2003</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>