<!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>
      <journal-title-group>
        <journal-title>International Workshop on OCL and Textual Modeling, June</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Analysis of the Object Constraint Language</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jordi Cabot</string-name>
          <email>jordi.cabot@icrea.cat</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel Calegari</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robert Clarisó</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Gogolla</string-name>
          <email>gogolla@uni-bremen.de</email>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Antonio Vallecillo</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Edward D. Willink</string-name>
          <xref ref-type="aff" rid="aff5">5</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>SWOT analysis</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>ICREA</institution>
          ,
          <addr-line>Barcelona</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>ITIS Software, Universidad de Málaga</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Instituto de Computación, Facultad de Ingeniería, Universidad de la República</institution>
          ,
          <country country="UY">Uruguay</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Universitat Oberta de Catalunya</institution>
          ,
          <addr-line>Rambla del Poblenou 156, 08018 Barcelona</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>University of Bremen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff5">
          <label>5</label>
          <institution>Willink Transformations Ltd</institution>
          ,
          <addr-line>Reading, England</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <volume>25</volume>
      <issue>2021</issue>
      <abstract>
        <p>The Object Constraint Language (OCL) is a textual language to describe constraints or queries over software models defined by applying the Unified Modeling Language (UML). Using OCL, it is possible to specify, for instance, integrity constraints in the form of class invariants, operation pre-conditions, or post-conditions. This paper presents a SWOT analysis (Strengths, Weaknesses, Opportunities, and Threats) of OCL, considering both its current state and future perspectives: specification, tool support, applications, competitors, and the community around it. This analysis was the result of the panel discussion at the 20th International Workshop on OCL and Textual Modeling (OCL'21).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        The Object Constraint Language (OCL) [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ] is a textual modeling notation defined as an
OMG standard (currently in its version 2.4). OCL is a complement to the graphical models in
the Unified Modeling Language (UML), augmenting UML and other types of models to define
complex expressions, queries, and constraints over software models.
      </p>
      <p>To discuss recent findings related to OCL, the community organizes a yearly meeting, the
“International Workshop on OCL and textual modeling”. Previous editions of the OCL workshop
have included panels where the discussion has focused on potential improvements of the OCL,
either in its syntax, semantics, standard library, or tools. Some of these panel discussions have
been published in the workshop proceedings, e.g., from the OCL workshops that took place in
https://jordicabot.com/ (J. Cabot); https://www.fing.edu.uy/~dcalegar/ (D. Calegari);</p>
      <p>In the OCL’21 workshop, the panel focused on analyzing the current state of the OCL,
the tool ecosystem, and the community. This analysis used the SWOT matrix framework, a
strategic planning technique where the status of a given initiative is studied from four diferent
perspectives: Strengths, Weaknesses, Opportunities, and Threats. Each SWOT perspective can
be classified according to two axes, as displayed in Table 1:
• Factors that are internal (inherent to the initiative) versus factors that are external
(environment, competitors, …).
• Positive factors (that represent an advantage to the initiative) versus negative factors
(detrimental to the initiative).</p>
    </sec>
    <sec id="sec-2">
      <title>2. SWOT analysis</title>
      <p>
        In the following, we describe the result of the SWOT analysis. Each SWOT dimension is
discussed in a diferent subsection. Then, a final subsection discusses controversial topics, i.e.,
aspects that can be considered both an advantage or a disadvantage.
2.1. Strengths
• OCL provides a useful and (mostly) well-defined notation for expressing constraints and
Boolean expressions on UML models. Besides, OCL is easy to use, e.g., the core concept is
the navigation through a class structure via a simple dot notation.
• OCL applies to many diferent tasks in the context of software modeling: model querying,
code generation, testing, verification and validation, model transformation, …
• OCL is a “technology-independent” language for defining constraints. Thus, it can be
used in a wide variety of projects using diferent technology stacks.
• OCL is very close to First-Order Logic (FOL). It provides an underlying formal semantics
and makes it more amenable to computer scientists or developers with a background
in logic. Furthermore, it is possible to adapt and/or reuse tools and solvers for FOL to
analyze OCL specifications. For instance, we can benefit from eficient SAT-based solvers
through a reduction to finite structures.
• Moreover, OCL has an important property: it is a side-efect free language, i.e., evaluating
an OCL constraint does not alter the model in any way. It facilitates a high-quality robust
analysis.
• OCL counts on three complete implementations: USE [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], Eclipse OCL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and Acceleo [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        OCL dialects, such as EOL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], also help to experiment with new features and
mechanisms.
• OCL is the best available language of its kind. There is a lack of suitable general-purpose
alternatives. Paraphrasing Bran Selic’s comment regarding UML: “OCL is the worst
modeling language, except for all the others.”
2.2. Weaknesses
• Tool ecosystem
– Implementations of OCL could be improved: some OCL tools are incomplete or
incompatible with the standard.
– Many existing tools are research prototypes developed by academics. It means that
interoperability, documentation, and support are lacking, hampering industrial or
realistic use.
– Even though a few tools exist (e.g., verification and validation tools or a Java code
generator in Eclipse OCL), there is a lack of a complete ecosystem of tools that use
OCL as input to provide valuable services. It would provide value to dedicating time
to formalize the OCL expressions.
• Complexity of the OCL language: The OCL 2.4 specification is 262 pages long and ofers
some features that are complex to understand and/or implement.
      </p>
      <p>– Multivalued Boolean expressions (true, false, null, invalid) increase the complexity
of evaluating properties. For instance, special values need to be taken into account
when considering short-circuits.
– OCL features a complicated type system. In particular, navigation through a class
structure is easy, but understanding the type of the results at the end of the navigation
chain can be hard due to complicated typing rules.
– OCL includes a complex hierarchy of collection types. The choice of operations and
the type hierarchy among them sometimes creates confusion, e.g., OrderedSet is not
a subclass of Set.
– OCL sometimes seems to ofer too much expressive power, as there are many ways
to write the same constraint. This is good for people learning and writing OCL
expressions, but bad for building tools as the tools need to cope with all these
potential variations.
• Shortcomings of the OCL: Although OCL includes almost all desirable features, it still
presents some limitations and unresolved issues. For example:
– There are no modularity mechanisms, which could help in the definition of large
specifications.
– There are no constructs for importing or reusing other specifications completely or
partially: each OCL specification should be complete on its own.
– As a consequence of the previous shortcomings, there are no reusable OCL libraries
besides the OCL standard library. In particular, there is no library of standard
mathematical functions.
• There is a strong dichotomy between OCL’s “divine” and “material” nature, which are
impossible to reconcile.</p>
      <p>– Under its “divine” nature in the Heaven of logic, it works under the umbrella of
ifrst-order logic as a side-efect free language, with commutative logical operators,
and where datatypes are unbounded and perfect (e.g., no overflow or rounding
issues).
– Under its “material” nature, which appears when used down in Earth as part of
the realization of modeling languages, some issues need to be considered:
shortcircuit evaluation of expressions under the presence of errors or float precision and
rounding.</p>
      <p>– Frustration occurs when OCL is used in one world with the nature of the other.
• Community
– The team that supports OCL is very small. Despite being a “community” project, it
basically rests on the shoulders of one single person. And it has been like this for a
while with no perspective for a short-term improvement.
– The community behind the language is also small. Moreover, it consists mostly of
academic researchers with little industrial backing that could help popularize the
language or provide more resources to support it.
2.3. Opportunities
• OCL enables defining incompletely specified software systems, which is useful for
prototyping and exploring alternatives. It is possible to abstract implementations with
class structures and OCL expressions, e.g., defining (partial) class invariants and (partial)
operation contracts that leave some parts of the behavior unspecified.
• Some aspects that have been identified as a weakness in the OCL specification ( e.g., the
lack of libraries and import mechanisms or the lack of a library of standard mathematical
operations) are also an opportunity to improve the language.
• Verification and validation : Currently, not all the potential reasoning and analysis
capabilities are being exploited.</p>
      <p>– OCL could be used as the basis for much further analysis and automation tasks
that could, for instance, provide the better model analysis (validation, verification,
testing, instantiation).
– OCL could benefit from improved tool support for interactive runtime analysis and
verification, e.g., tools that interactively suggest candidate fixes for modeling faults
or that let users test alternative constraints.
• Synergies with other modeling languages
– Software development is mostly textual-based, which generates a favorable
ecosystem to all textual languages, like OCL.
– OCL could be used as a modular add-on to other modeling languages and DSLs. The
experience with ATL and QVT are two success stories. OCL saves users the need to
learn yet another constraint language, and its functional nature makes it suitable
for easy integration in many contexts.
– In particular, we could explore other rule-based languages (e.g., RuleML, Web
semantics) and communities to find potential synergies.
– Another alternative is exploring SysML as a potential area of collaboration. The
systems community seems to be more open to modeling than some subcommunities
within the software engineering domain.
– As a query language, it may have good opportunities to be used in developing
domains where some extensions might make sense from a semantic point of view
to specify constraints or query models. Examples of these domains include stream
processing and big data, which need to deal with unbounded models.
2.4. Threats
• Tools are fading rather than strengthening: several valuable tools are no longer under
active development, and others are no longer being maintained. Moreover, there is a lack
of organizations that maintain and mature the tools.
• Slow (or none) adoption of open source projects.
• The level of abstraction of programming languages is rising, lessening the value of
languages like OCL. While this is a threat for OCL, it is probably a positive side-efect of
the existence of OCL.
• Few UML modelers know or use OCL and do not acknowledge the need for OCL. Rigor
and formality are either explicitly neglected (when sketching models) or even realized in
Java.
• Many users still do not understand the two distinct (and irreconcilable) natures of OCL.</p>
      <p>
        Namely, OCL is a side-efect free language, not to be used for programming. Still, many
people ask for mechanisms that allow creating object instances. The identity of OCL and
how to use and implement it needs to be better clarified. Otherwise, this “paranoia” can
kill OCL.
• Related to the previous misconception and considering that OCL is used in various
contexts (query language, verification, …), maybe we are asking too much from OCL: it is
perhaps as good as it should be, but no more.
• Related approaches such as Alloy [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] (based on relational logic) ofer powerful analysis
capabilities, both in terms of verification and validation.
2.5. Controversial topics
• OCL is unique in the sense that it includes a 4-valued logic [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]: besides true and false, the
values null and invalid are also supported. Nevertheless, it is unclear whether having
a 4-valued logic is a competitive advantage or a disadvantage versus other modeling
languages. On the one hand, it allows the precise specification of diferent types of
situations, e.g., distinguishing the lack of information from an error. On the other hand,
it is not intuitive for newcomers to the language, and some tools do not properly support
it in the OCL ecosystem.
• OCL is not a language on its own, but fundamentally an add-on language that can be
embedded into a modeling language (e.g., UML) in which it provides navigability, query,
Expressiveness brings complexity in some aspects of the language (navigation,
types, collections, 4-valued logic): this hurts tool development
Lack of industrial tool support
Lack of desirable features (libraries, importing, modularity) in the language
Lack of a complete tool ecosystem that adds value to existing OCL constraints
OCL supports describing incomplete specified systems
Room for improvement in future versions of the language
Improved verification and validation (e.g., interactive analysis)
Potential synergies with other languages (SysML, RuleML, business rules)
Lack of organisations involved in OCL tool development and maintenance
Lack of awareness about the need for OCL in UML
Misconceptions about the usage scenarios for OCL
      </p>
      <p>Strong competition from Alloy on the verification &amp; validation side
and constraint specification features to other modeling languages. It allows OCL to add
value to the extended modeling languages and makes OCL a reusable notation with
well-grounded semantics. On the contrary, not being a stand-alone language hinders its
wide adoption — particularly when OCL does not provide mechanisms to be incorporated
into other modeling languages in a modular and reusable manner. Note that with so
many textual notations of the UML, it should be somehow feasible to easily combine UML
and OCL expressions in a single textual model.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Conclusions</title>
      <p>This paper has presented a discussion of the current state of OCL and its future trends using
the SWOT analysis framework. Table 2 provides a summary of the findings.</p>
      <p>These results indicate relevant opportunities for future research and collaborations concerning
OCL and issues that the OCL community should address.</p>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgments</title>
      <p>The authors would like to thank the attendees of the OCL workshop for the interesting
discussions during the panel.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>OMG</given-names>
            <surname>,</surname>
          </string-name>
          <article-title>Object constraint language (OCL) version 2</article-title>
          .4,
          <year>2014</year>
          . URL: https://www.omg.org/ spec/OCL/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <article-title>Object constraint language (OCL): A definitive guide</article-title>
          , in: M.
          <string-name>
            <surname>Bernardo</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Cortellessa</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Pierantonio (Eds.),
          <article-title>Formal Methods for Model-Driven Engineering -</article-title>
          12th
          <source>International School on Formal Methods for the Design of Computer</source>
          , Communication, and
          <source>Software Systems</source>
          , volume
          <volume>7320</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2012</year>
          , pp.
          <fpage>58</fpage>
          -
          <lpage>90</lpage>
          .
          <source>doi:1 0 . 1 0</source>
          <volume>0 7 / 9 7 8 - 3 - 6 4 2 - 3 0 9 8 2 - 3</volume>
          \ _ 3 .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Brucker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dania</surname>
          </string-name>
          , G. Georg,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Teniente</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Panel discussion: Proposals for improving OCL</article-title>
          , in: A.
          <string-name>
            <surname>D. Brucker</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Dania</surname>
          </string-name>
          , G. Georg, M. Gogolla (Eds.),
          <source>Proc. of the 14th International Workshop on OCL and Textual Modelling</source>
          , co-located
          <source>with MODELS</source>
          <year>2014</year>
          , Valencia, Spain,
          <year>September 30</year>
          ,
          <year>2014</year>
          , volume
          <volume>1285</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>99</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1285</volume>
          / paper09.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Brucker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , G. Daniel,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. S.</given-names>
            <surname>Herrera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Hilken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Tuong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. D.</given-names>
            <surname>Willink</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Wolf</surname>
          </string-name>
          ,
          <article-title>Recent developments in OCL and textual modelling</article-title>
          , in: A.
          <string-name>
            <surname>D. Brucker</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>A. S.</given-names>
          </string-name>
          Herrera (Eds.),
          <source>Proc. of the 16th International Workshop on OCL and Textual Modelling</source>
          , co-located
          <source>with MODELS</source>
          <year>2016</year>
          ,
          <article-title>Saint-</article-title>
          <string-name>
            <surname>Malo</surname>
          </string-name>
          , France, October 2,
          <year>2016</year>
          , volume
          <volume>1756</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>157</fpage>
          -
          <lpage>165</lpage>
          . URL: http: //ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1756</volume>
          /paper12.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Brucker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vallecillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. D.</given-names>
            <surname>Willink</surname>
          </string-name>
          , Workshop in OCL and
          <article-title>textual modelling - report on recent trends and panel discussions</article-title>
          , in: M.
          <string-name>
            <surname>Seidl</surname>
          </string-name>
          , S. Zschaler (Eds.),
          <source>Proc. of STAF 2017 Collocated Workshops</source>
          , Marburg, Germany,
          <source>July 17-21</source>
          ,
          <year>2017</year>
          , volume
          <volume>10748</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2017</year>
          , pp.
          <fpage>297</fpage>
          -
          <lpage>301</lpage>
          .
          <source>doi:1 0 . 1 0</source>
          <volume>0 7 / 9 7 8 - 3 - 3 1 9 - 7 4 7 3 0 - 9</volume>
          \ _ 2
          <fpage>6</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Brucker</surname>
          </string-name>
          , G. Daniel,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ponsard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Ramon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. D.</given-names>
            <surname>Willink</surname>
          </string-name>
          ,
          <article-title>Emerging topics in textual modelling</article-title>
          , in: A.
          <string-name>
            <surname>D. Brucker</surname>
          </string-name>
          , G. Daniel, F. Jouault (Eds.),
          <source>Proc. of the 19th International Workshop in OCL and Textual Modeling (OCL</source>
          <year>2019</year>
          )
          <article-title>co-located with MODELS 2019, Munich</article-title>
          , Germany,
          <year>September 16</year>
          ,
          <year>2019</year>
          , volume
          <volume>2513</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>91</fpage>
          -
          <lpage>104</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2513</volume>
          /paper8.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Büttner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Richters</surname>
          </string-name>
          ,
          <article-title>USE: A UML-based specification environment for validating UML and OCL</article-title>
          , Sci. Comput. Program.
          <volume>69</volume>
          (
          <year>2007</year>
          )
          <fpage>27</fpage>
          -
          <lpage>34</lpage>
          .
          <source>doi:1 0 . 1 0</source>
          <volume>1 6</volume>
          / j . s
          <source>c i c o . 2 0 0 7 . 0 1 . 0 1 3 .</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Foundation</surname>
          </string-name>
          ,
          <source>Eclipse OCL (Object Constraint Language)</source>
          ,
          <year>2021</year>
          . URL: https://projects. eclipse.org/projects/modeling.mdt.ocl.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Obeo</surname>
          </string-name>
          ,
          <string-name>
            <surname>Acceleo</surname>
            <given-names>OCL</given-names>
          </string-name>
          ,
          <year>2021</year>
          . URL: https://wiki.eclipse.org/Acceleo/OCL.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Polack</surname>
          </string-name>
          ,
          <source>Epsilon Object Language (EOL)</source>
          ,
          <year>2021</year>
          . URL: https: //www.eclipse.org/epsilon/doc/eol/.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Jackson</surname>
          </string-name>
          ,
          <article-title>Software abstractions: logic, language, and analysis</article-title>
          , MIT press,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>