<!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 Flexible Model Analysis and Constraint Development: A Small Demo Based on Large Real-Life Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Matthias Sedlmeier</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Gogolla</string-name>
          <email>gogollag@informatik.uni-bremen.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Database Systems Group, University of Bremen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This contribution discusses the handling of a larger model on an abstract level employing the standardized modeling languages UML and OCL and an accompanying tool. We represent real-world data in form of a large object model and perform data analysis, veri cation, and validation tasks on the modeling level in order to obtain feedback about the original data. The tool allows to explore larger object diagrams interactively in a exible way through a combination of visual and textual techniques. Furthermore, model invariants can be created in a versatile fashion by iteratively considering relevant object diagram fractions and evolving OCL expressions.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Modeling and model management approaches have found their way into
mainstream software production. Thus they are applied to large and complex systems,
and approaches and tools have to deal with large models. In this contribution,
we discuss an approach handling larger object models representing real-world
data in a design tool originally elaborated for model validation and veri cation.
The aim is to perform analysis, veri cation, and validation on the modeling level
in terms of the languages UML [5] and OCL [8].</p>
      <p>Working on the modeling level (in contrast to working on the code level or
working with \production" systems as databases or programming languages) gives a
high degree of abstraction through the available advanced modeling and
validation options. UML and OCL have in contrast to traditional (relational query)
languages the advantage of providing abstraction support for (a) di erent
collection kinds (as sequences or ordered sets), (a) powerful operations (as closure
or iterate), and (c) a mixture of textual and visual exploration mechanisms. Our
approach gives interactive and direct feedback through the combination of
textual and visual aspects, in particular for exploring model properties and model
constraints. For large object models we support the exploration of queries and
invariants that involve aggregation functions (that are of relevance in larger states
only) like the minimum or the average, as these functions are fully integrated
into OCL.</p>
      <p>Regarding larger object models, [4] identi es queries and expressions (e.g. in
form of OCL) as an important eld of activity. Our demo could further be part
of an MDE tool benchmark focusing on queries [1]. Furthermore, structuring
and slicing large class and objects models as in [7] is applicable in our context.
The rest of paper is structured as follows. Section 2 describes our process for
obtaining our example model, in particular a large object model. Section 3
discusses the exploration of large object models by combining visual and textual
techniques. Section 4 puts forwards an interactive process for constraint
determination. Finally, Section 6 concludes our work and indicates further research.
2</p>
      <p>Development Process for Class and Object Model
This section describes a real-life example for studying a large model. We wanted
to obtain a model containing a UML class diagram and a large UML object
diagram that can be handled interactively and exible in UML modeling and
veri cation tools. We employ the UML and OCL design tool USE (Uml-based
Speci cation Environment) [3]. The tool supports model validation and veri
cation for various UML diagram kinds, among them class and object diagrams,
and OCL (Object Constraint Language) constraints in form of class invariants
and operation contracts. Recently, the capabilities of USE have been improved in
particular for handling large object diagrams (more e cient handling of object
collections and evaluation of OCL expressions).</p>
      <p>Our goal was not to compete w.r.t size with production tools as e.g. database
systems. We aimed at an interactive development process exploring properties
in the underlying data (in technical terms, in the employed object diagram) and
exploring model constraints that have to be applied.</p>
      <p>The German Federal Statistical O ce (Destatis)1 provides a municipal directory
called GV100 of about 20.000 German administrative units, e.g., towns or
villages, including about 60.000 structural connections based on a census in 2011.
This directory can be o cially obtained on the Destatis web portal as a
monolithic column-oriented ASCII le together with record descriptions in natural
language required to interpret the provided data2.</p>
      <p>The ASCII records contain information about federal states (German:
Bundesland), districts (Bezirk), counties (Kreis), municipalities associations
(Gemeindeverband) as well as municipalities (Gemeinde). Furthermore, the hierarchical
connections between those units are given as well as the places of administration.
We have complemented this data with additional geographical position
information provided by the OpenGeoDB project3 and obtain municipality records
pro1 https://www.destatis.de/DE/Startseite.html
2 https://www.destatis.de/DE/ZahlenFakten/LaenderRegionen/Regionales/</p>
      <p>
        Gemeindeverzeichnis/Administrativ/Archiv/GV100ADQ/GV100AD3108.html
3 http://opengeodb.org/wiki/OpenGeoDB
viding information about area, population, male population, female population,
zip code as well as geographical information in form of longitude and latitude.
Figure 1 shows the process that we have applied in order to obtain an initial
version of the class and object diagram. We started with the manual extraction
of a data schema based on the Destatis GV100 record descriptions (
        <xref ref-type="bibr" rid="ref1">1</xref>
        ). As an
intermediate representation, we have created this schema with the graph editor
yEd in a UML/ER like modeling language (as in [6]). Moreover, we consider
geographical information from the OpenGeoDB project.
      </p>
      <p>
        In the next step, we perform an automatic transformation of the UML/ER
schema into a valid USE speci cation (
        <xref ref-type="bibr" rid="ref2">2</xref>
        ) describing a USE class model (
        <xref ref-type="bibr" rid="ref3">3</xref>
        ).
Figure 2 shows the central elements of the resulting UML class diagram. This
model contains those classes and associations required for instantiating an object
model. We have enriched the USE speci cation by OCL constraints and queries
for veri cation and validation purposes (
        <xref ref-type="bibr" rid="ref4">4</xref>
        ), which are manually elaborated by
analyzing the given record descriptions as well as the concrete ASCII records.
For the schema at hand, we semi-automatically extract the instance data as
CSV les by means of Destatis record descriptions (
        <xref ref-type="bibr" rid="ref5">5</xref>
        ). The CSV data is then
automatically transformed into USE data manipulation statements formulated
in SOIL (
        <xref ref-type="bibr" rid="ref6">6</xref>
        ), which are interpreted by USE to instantiate the object model (
        <xref ref-type="bibr" rid="ref7">7</xref>
        ).
SOIL (`Simple Ocl-like Imperative Language`) is the USE \programming"
language based on OCL. From this point on, we are able to interactively work in
a exible way with the class model including the object diagram employing the
USE graphical interface, the command line interface and a combination of them
in order to apply veri cation and validation tasks based on OCL constraints and
queries.
      </p>
      <p>administeredFederalState</p>
      <p>FederalState federalState
federalState</p>
      <p>district
federalState federalState
administeredDistrict</p>
      <p>District
native_fs_id : String district
district district
administeredCounty</p>
      <p>county
county native_fsC_iodu:nStytring
native_district_id : String
county county
districtAdministration</p>
      <p>Exploring Object Models Visually and Textually
This section will explain the various interactive, but powerful options that USE
o ers to explore a large object diagram. The considered object diagram contains
about 80.000 objects and links, as indicated in Fig. 3. Naturally, these objects
do not t on a single screen. USE allows to choose speci c instances to
create clearly arranged object model fractions. USE o ers various object selection
mechanisms [2], which e ectively help to lter the desired subset. The techniques
from [2] have been substantially extended in order to cope with object models
showing the example's complexity. In USE, one can obtain fractions of the overall
state tting the developer's needs.
First, it is possible to start with an empty object diagram to prevent long display
times. We can then choose to show successively objects either by their type or
by their properties.</p>
      <p>Second, in addition to this simple ltering method, USE o ers sophisticated
object selection based on link path length, OCL query expressions and views.
The latter method enables the developer to select objects speci cally within a
table view. The chosen set of objects can then be shown, hidden or cropped. A
corresponding example is shown in Fig. 4, where a speci c FederalState object
(Schleswig-Holstein) and a Municipality object (Kiel) are manually selected by
check boxes. Besides the objects, also all connecting links show up.
Third, selection via link path length enables the designer to show only those
objects, which are reachable from a given object over a speci ed number of link
segments.</p>
      <p>Fourth, the most exible selection mechanism is provided via OCL query
expressions, which allows the developer to show, hide or crop arbitrary sets of objects
based on OCL query results being either single objects or object collections.
Figure 5 shows an object model fraction containing only those federal states holding
municipalities, which have a population above 100.000 and are located east of a
xed longitude and south of a xed latitude. The example OCL expression only
returns 3 objects, depending on the restrictness of the expression large object
collections can be obtained.
Thus the model exploration options available in USE allow a combination of
textual and visual techniques. The example object model display in Fig. 6 was
created by evaluating multiple OCL expressions exploring the shown objects.
USE provides the possibilities to construct object models stepwise with di erent
OCL queries. This exibility of switching between visual selection and evaluation
of textual OCL expressions is, to the best of our knowledge, unique to USE.
4</p>
    </sec>
    <sec id="sec-2">
      <title>Interactive Determination of Invariants</title>
      <p>This section discusses how OCL model invariants can be developed interactively
by considering the system state, formulating a hypothetical invariant, checking
the assumed invariant against the state, and possibly revising the formulation
of the invariant when the system state does not satisfy it and thus the
invariant cannot be validated. We follow an empirical approach, where we rst make
assumptions about rules, which should apply in the model application context.
We therefore explore the schema information as well as the system state. Based
on these assumptions we formulate an invariant, which we check by considering
the system state in USE. If the invariant holds, we accept it as part of our USE
model. If it does not hold, we analyze the result in order to determine, if our
condition is invalid due to wrong premises or if the given object model (in the
example determined by the Destatis information) is actually inconsistent. In the
rst case, we check if it is reasonable to adapt the invariant and start again. In
the second case, we accept, that the underlying information (in the example the
Destatis data) is possibly to a certain degree faulty and extend the USE
speci cation with a modi ed invariant preventing the faulty information to go into
the validation process (e.g., by weakening an invariant by adding an implication
with a weakening premise).</p>
      <p>In the example, the longitude and latitude attributes are not part of the original
Destatis data but the information was taken from the OpenGeoDB project.
This does not have any e ect on the evaluation of the GV100 records. In fact,
we would able to partly check the OpenGeoDB data, too.
4.1</p>
      <sec id="sec-2-1">
        <title>Invariant popGreaterThanZero</title>
        <p>We assume, that all municipalities have a population (pop) greater than zero:
context Municipality inv popGreaterThanZero:</p>
        <p>population &gt; 0
We realize, that this invariant does not hold in the rst inspection. USE allows us to
check, which instances violate invariants either by the Class Invariant View or by the
interactive shell check -d command. This is again an example where USE supports
the developer through visual and textual techniques.</p>
        <p>Through the analysis, we recognize, that all objects breaking our condition have the
same municipality type assigned. This type classi es all assigned municipalities
explicitly as uninhabited territory (German: `gemeindefreies Gebiet, unbewohnt'). Based on
this insight, we adapt our condition and accept it as part of our USE speci cation.
context Municipality inv popGreaterThanZero:
(type.name &lt;&gt; 'gemeindefreies Gebiet, unbewohnt') implies
(population &gt; 0) and (male_population &gt; 0)
This invariant holds in the system state, from which we can conclude, that the Destatis
data is valid in this speci c context.
4.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Invariant malePopLessPop</title>
        <p>Our premise is, that the male population must always be less than the overall
population. This assumption is valid, because we explored the system state and validated, that
there are no \all-male municipalities" in Germany (the best pro-male ratio is 1:3.47 in
Freistatt, Niedersachsen and the best pro-female ratio is 1:2.13 in Hamm,
RheinlandPfalz ). Computations like the best pro-male ratio can be formulated as OCL queries.
In this case the ratio is determined by the following OCL expression:
Municipality.allInstances.collectNested(m|</p>
        <p>Sequence{m.federalState.name, m.name, m.population, m.male_population,
m.population-m.male_population})
-&gt;collectNested(t|</p>
        <p>
          Sequence{t-&gt;at(
          <xref ref-type="bibr" rid="ref1">1</xref>
          ), t-&gt;at(
          <xref ref-type="bibr" rid="ref2">2</xref>
          ), t-&gt;at(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ), t-&gt;at(
          <xref ref-type="bibr" rid="ref4">4</xref>
          ),t-&gt;at(
          <xref ref-type="bibr" rid="ref5">5</xref>
          )
        </p>
        <p>
          t-&gt;at(
          <xref ref-type="bibr" rid="ref4">4</xref>
          ).oclAsType(Integer) / t-&gt;at(
          <xref ref-type="bibr" rid="ref5">5</xref>
          ).oclAsType(Integer)})
-&gt;asSequence()
-&gt;sortedBy(t|t-&gt;at(
          <xref ref-type="bibr" rid="ref6">6</xref>
          ).oclAsType(Real))
-&gt;select(t|t-&gt;at(
          <xref ref-type="bibr" rid="ref3">3</xref>
          ).oclAsType(Integer) &gt; 0)-&gt;last
Taking the last invariant into account, we de ne:
context Municipality inv malePopLessPop:
type.name &lt;&gt; 'gemeindefreies Gebiet, unbewohnt' implies
population &gt; male_population
The invariant is true in the considered system state. We accept it and conclude, that
the Destatis data is correct in this context.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>4.3 Invariant zipCodeExemplary</title>
        <p>The Municipality class has a boolean attribute called zip code exemplary. This
attribute indicates, that a single municipality can have multiple zip codes, but only one
exemplary zip code is held in the attribute zip code. However, we expect, that there
must be municipalities having only one zip code, which we know from everyday life.
context Municipality inv notAllZipCodeExemplary:</p>
        <p>not Municipality.allInstances.forAll(zip_code_exemplary)</p>
        <sec id="sec-2-3-1">
          <title>4.4 Invariants Based on Geographical Information</title>
          <p>As we mentioned above, we enrich the Destatis data by geographical information. We
try to assign the longitude and latitude value to each municipality by matching their
names. This method is neither exact nor does it cover all instances. We also do not
know, if the OpenGeoDB coordinates are always correct, since we did not compare
them with third-party sources. However, we may assume, that all coordinates must
be within the most northern, southern, eastern and western points of Germany. The
following list explores the corresponding limits for all compass directions in the World
Geodetic System 1984 format4.</p>
          <p>Based on this information, we postulate, that all longitude values must be in the stated
interval. This should hold analogously for the latitude values. Given that, we derive 4
4 http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84 n.pdf
direction location latitude/longitude
most northern List, Sylt, Schleswig-Holstein 55.050000, 08.400000
most southern Haldenwanger Eck, Oberstdorf, Bavaria 47.270108, 10.178319
most eastern Deschka, Neieaue, Saxony 51.266667, 15.033333
most western Isenbruch, Selfkant, North Rhine-Westphalia 51.050000, 05.866667
similar invariants respecting the fact, that longitude and latitude values are not always
present. All 4 invariants hold in the system state and we add them to the USE model.
context Municipality inv northLimit: -- analogously for south, east, west
latitude &lt;&gt; null implies latitude &lt;= 55.05
4.5</p>
        </sec>
        <sec id="sec-2-3-2">
          <title>Derived Properties Employing Aggregate Functions</title>
          <p>Instead of using longitude and latitude coordinates as constants, we can compute the
bordering rectangle of a federal state with derived attributes as indicated in Fig. 7.
The derived attributes for a federal state make use of the association with roles names
federalState and municipality. This association indicates the municipalities that
constitute the federal state. All municipalities of a federal state are considered there, and
the most western (eastern, northern, southern) coordinates are computed. Another
independent association is the one with role name federalStateAdministration. In a
constraint one can now check that the coordinates of a federal state administration are
consistent with the bordering rectangle of the federal state.
Another use of the bordering rectangle is a check about the plausibility of the bordering
rectangles for di erent federal states. One can determine whether two federal states
possess or do not possess common points (overlapping bordering rectangles). With
that one can check that the actual present coordinates are such that, for example,
the most northern state `Schleswig-Holstein' and the most southern states
`BadenWuerttemberg' and `Bavaria' do not have common points. We refrain from showing
the detailed OCL expressions. But we emphasize that the derived attributes and the
accompanying constraints only make sense in the presence of large object models as
the attributes and constraints rely on aggregate function (here min() and max()) that
apply in particular for large object collections.
The practical experiences in our demo explores the capability of USE to handle larger
object models with good performance. All discusssed expressions evaluate in
magnitudes of at most few minutes. We have shown, how a large UML object model was
employed for analyzing real-world data. The demo shows that analyzing data on the
modeling level brings advantages w.r.t. to ease of formulating expressions due to the
available abstraction mechanisms. We were able to browse and analyze the model and
perform primary validation tasks. We used the provided textual and visual object
exploration and selection mechanisms including OCL queries. In fact, our approach has
an initial setup cost, but we obtain insight on a formal level with standardized modeling
languages.</p>
          <p>Further experiments will identify limitations with regard to the size of objects and
links. Future work will also elaborate on fragmentation and slicing techniques for
object models in order to handle representative slices of the original data. Another topic
is the improvement of the visualization options for large object models, e.g., selection
mechanisms by link kind (only association, binary and ternary associations,
aggregation, composition). Naturally, more case studies and comparison with existing solutions
must give feedback about the applicability of the proposal.</p>
        </sec>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>A.</given-names>
            <surname>Benelallam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Rath</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Izso</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          .
          <article-title>Towards an open set of real-world benchmarks for model queries and transformations</article-title>
          . In D. S. Kolovos,
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          , J. de Lara, I. Rath, and M. Tisi, editors,
          <source>Proc. 2nd WS Scalability in Model Driven Engineering BigMDE@STAF2014</source>
          , volume
          <volume>1206</volume>
          <source>of CEUR Workshop Proceedings</source>
          , pages
          <volume>14</volume>
          {
          <fpage>22</fpage>
          . CEUR-WS.org,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          , L. Hamann, J. Xu,
          <string-name>
            <surname>and J. Zhang.</surname>
          </string-name>
          <article-title>Exploring (Meta-)Model Snapshots by Combining Visual and Textual Techniques</article-title>
          . In F. Gadducci and L. Mariani, editors,
          <source>Proc. Workshop</source>
          Graph Transformation and
          <article-title>Visual Modeling Techniques (GTVMT'</article-title>
          <year>2011</year>
          ). ECEASST,
          <string-name>
            <surname>Electronic</surname>
            <given-names>Communications</given-names>
          </string-name>
          , journal.ub.tuberlin.de/eceasst/issue/view/53,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Hilken</surname>
          </string-name>
          .
          <article-title>Model Validation and Veri cation Options in a Contemporary UML and OCL Analysis Tool</article-title>
          . In A. Oberweis and R. Reussner, editors,
          <source>Proc. Modellierung</source>
          , pages
          <volume>203</volume>
          {
          <fpage>218</fpage>
          . GI, LNI
          <volume>254</volume>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Lara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Rath</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Varro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>A research roadmap towards achieving scalability in model driven engineering</article-title>
          .
          <source>In Proc. 1st WS Scalability in Model Driven Engineering (BigMDE</source>
          <year>2013</year>
          ). ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>J.</given-names>
            <surname>Rumbaugh</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Jacobson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          .
          <source>The Uni ed Modeling Language 2</source>
          .0
          <string-name>
            <given-names>Reference</given-names>
            <surname>Manual.</surname>
          </string-name>
          Addison-Wesley, Reading,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>M.</given-names>
            <surname>Sedlmeier</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          .
          <article-title>Model Driven ActiveRecord with yEd</article-title>
          . In T. Welzer,
          <string-name>
            <given-names>H.</given-names>
            <surname>Jaakkola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Thalheim</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kiyoki</surname>
          </string-name>
          , and N. Yoshida, editors,
          <source>Proc. Int. 25th Int. Conf. Information Modelling and Knowledge Bases (EJC'2015)</source>
          , pages
          <fpage>65</fpage>
          {
          <fpage>76</fpage>
          . IOS Press, Amsterdam,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. D. Struber, M. Selter, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Taentzer</surname>
          </string-name>
          .
          <article-title>Tool support for clustering large metamodels</article-title>
          . In D. D.
          <string-name>
            <surname>Ruscio</surname>
            ,
            <given-names>D. S.</given-names>
          </string-name>
          <string-name>
            <surname>Kolovos</surname>
          </string-name>
          , and N. Matragkas, editors,
          <source>Proc. Workshop</source>
          Scalability in Model Driven Engineering (BigMDE
          <year>2013</year>
          ). ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>J.</given-names>
            <surname>Warmer</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Kleppe</surname>
          </string-name>
          .
          <article-title>The Object Constraint Language: Precise Modeling with UML</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2003</year>
          . 2nd Edition.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>