<!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>Extending iStar2.0 Metamodel to Define Data Structures </article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Xavier Franch</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universitat Politècnica de Catalunya</institution>
          ,
          <addr-line>Barcelona</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <fpage>28</fpage>
      <lpage>34</lpage>
      <abstract>
        <p>   iStar2.0 provides a recommendation for the core constructs defined in the i* language, which are articulated around a metamodel. When applying iStar2.0 to a particular domain, it can be necessary to extend this metamodel in order to represent more specialized concepts. One of these domains is that of data structures, as implementation of abstract data types. In this paper, we build upon previous work on using i* to describe data structures from an intentional point of view, by introducing new constructs in iStar2.0 and adding them to the iStar2.0 metamodel. We illustrate the approach using some well-known abstract data types (sequences, functions, …) and the data structures implementing them (linked lists, heaps, hash tables, …).</p>
      </abstract>
      <kwd-group>
        <kwd> 1  iStar2</kwd>
        <kwd>0</kwd>
        <kwd>data structures</kwd>
        <kwd>abstract data type</kwd>
        <kwd>metamodel</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
    </sec>
    <sec id="sec-2">
      <title>2. Constructs to be added to the iStar 2.0 metamodel</title>
      <p>
        Although at a first glance it may seem counter-intuitive to use i* to describe data structures, we
argue that we may find similar situations in other i*-related research lines. One of the most investigated
areas in this context is the use of i* to model and reason about software architectures: software
components are modelled as actors and their connections are modelled as dependencies (e.g., a goal to
be fulfilled, a message to be sent as part of a call, a method to be offered to the outside) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Similar
approaches are applied in domains and types of systems as product lines [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], business intelligence [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
and service-oriented systems [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. In our work on data structures, i* is used to describe software
components (the data structures and their corresponding abstract data types) with the goal of improving
their understanding and ultimately, informing their selection in the context of a particular program with
particular requirements, as we have done in the past also in the context of software packages [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Under this assumption, the constructs that we need to add to the iStar 2.0 metamodel are:
1. Modules. The need for having modules is clearly exposed in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and comes from the modular
nature of abstract data types and data structures [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. While in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] we proposed the existence of only
one generic type of module, we now advocate to distinguish among specification and implementation
modules because: (i) the type of intentional elements is not the same in specifications as in
implementations, (ii) the link among specifications and implementations is more evident given this distinction.
      </p>
      <p>
        2. Links. In [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], we proposed to use the iStar 2.0 participates-in link to establish that an
implementation (i.e., a data structure) implements an abstract data type. While this need prevails, we
propose a new, different type of link specific for this situation, implements, since participates-in is too
generic. It must be remarked that we considered the option to establish this link not at the level of actors,
but at the level of modules. However, we discarded this option to provide a uniform treatment with
respect to specialization (see below), which is established at the level of actors. Since one module
introduces only one actor, this decision does not have a significant impact on the resulting models.
      </p>
      <p>
        3. Specialization. The framework presented in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] proposes specialization to structure the different
abstract data types both at the level of specialization and implementation. While iStar 2.0 offers a
specialization construct at the level of actors, it does not detail how this construct is refined at the level
of intentional elements (as it also happened with the seminal i* [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]). For this reason, we adopted the
approach presented in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] that fits to the needs of the data structure modeling problem.
      </p>
      <p>
        4. Efficiency signature. In the context of data structure selection, the establishment of their
asymptotic efficiency [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] traditionally plays an important role. However, this concept is quite low level
(i.e., typically appearing related to code either in ad-hoc languages [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] or as annotations [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]) and it is
difficult to reconcile with the intentional perspective that i* provides. While an option could be simply
getting rid of it, we think that not including it makes the proposal incomplete and forces the potential
adopted of the approach to complement it with additional information. Therefore, we propose:
 A specification module should declare the parameters used for measuring the asymptotic
efficiency of data structures (typically, number of elements).
 An implementation module should declare the asymptotic efficiency of those critical operations
implemented following the strategy of the chosen data structure.
      </p>
      <p>
        Figure 1 presents an example that illustrates the constructs defined above. There appear three modules,
namely two specifications and one implementation. We adopt UML’s package symbol to represent the
modules in an intuitive form. We do not graphically distinguish between specification modules and
implementation modules since we did not find any intuitive graphical way; instead, we simply use labels
(even if Moody advises about the risk of doing so [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]). The two specification modules define one
abstract data type each, modelled as actors, which are linked through an iStar 2.0 specialization link
(isa). The parent module defines the concept of Function as abstract data type (i.e., an abstract data type
that keeps a correspondence from keys into values [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]) and three dependencies which, according to
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], are left open in the depender side. These dependencies establish that the depender (i.e., a software
component integrating a Function instance) can add, remove and access to individual elements, while
for that, such depender needs to provide the concept of Key. The module declares in addition the
Function’s efficiency signature, which in this case only establishes the magnitude n representing
number of elements in order to establish time efficiency later on. The child specification module
declares Mapping as a specialization of Function and redefines one of the operations; according to [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
the redefinition is established by name and graphically highlighted using a color code (yellow). The
semantics of the redefinition is not part of the model, but according to [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], it can be defined
equationally as:
 In Functions, access(insert(F, &lt;k, v&gt;), k) = &lt;k, v&gt;
 In Mappings, look-up(insert(F, &lt;k, v&gt;), k) = v
We refer to [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] for more details. Therein, we may find other specializations for Functions, as for
instance Sets, in which accessing is redefined as membership (also shown in Section 4).
Figure 1: Example of representation of concepts needed when modeling abstract data types and data 
structures using extended iStar 2.0. 
      </p>
      <p>
        The implementation module shows the intentional view and efficiency signature of a particular
implementation strategy for mappings, i.e. using a Hash Table, as established by the implements link
among the corresponding actors. The most remarkable quality that this implementation offers is Fast
Look-Up to the elements therein, as the efficiency signature (enclosed in a red-line rectangle) shows
with a constant big-Oh asymptotic time [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The price to pay is that the depender needs to estimate the
Approximate Size of the data structure and needs to provide an appropriate Hash Function.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Extending the iStar 2.0 metamodel </title>
      <p>Figure 2 shows the extension of the iStar 2.0 metamodel with the constructs presented in Section 2,
while Table 1 compiles the necessary integrity constraints. Details follow:</p>
      <p>1. Modules. The metamodel includes an abstract class Module with two specializations, namely
Specification and Implementation. In any case, each type of module includes only one actor and open
dependencies, both incoming (what the specification or implementation offers to its customers) and
outgoing (representing the requirements that the specification or implementation poses onto its
customers), being both sets disjoint (IC1). It is worth remarking that, due to their abstract nature,
specifications cannot include dependencies with qualities or tasks as dependum (IC2).</p>
      <p>2. Links. The implements link is added to the metamodel, looking similar to the specialization link
provided by iStar 2.0 (see below). Two integrity constraints (IC3 and IC4) ensure that implements links
an implementation to a specification. Multiplicities also make clear that an implementation can
implement only one specification.</p>
      <p>
        3. Specialization. As said, iStar 2.0 offers the is-a link to represent specialization at the level of
actor. In addition, we add a new association linking intentional elements. We call such association
reinforces, which is one of the three cases defined in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] for specialization of intentional elements and
is characterized by integrity constraint IC6 (which restricts the permitted type changes of intentional
elements; we refer to this article for a detailed explanation of the meaning). Besides, IC5 forces the
dependencies to which the intentional element belongs, to refer to the same actor.
      </p>
      <p>
        4. Efficiency signature. An efficiency signature consists of a list of pairs that slightly differ
depending on the type of module. In specifications, the second component of the pair is an identifier
which usually stands for number of elements to store in the data structure. In implementations, the
second element is a valid asymptotic expression (see [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] for details in such valid expressions) using
one or more of the identifiers introduced in the specification.
Figure 2: Extending the original iStar 2.0 metamodel (in salmon) to include new constructs (in blue). 
IC3 
IC4 
IC5 
      </p>
      <p>IC6 
Table 1  Summary of integrity constraints for the extended metamodel </p>
      <p>ID  Integrity constraint 
IC1 
IC2 
context IntentionalElement inv: incoming‐&gt;size() + outgoing‐&gt;size() = 1 
context Module inv: spec? implies (not elem‐in‐&gt;exists(type=quality or type=task) and 
                                                                not elem‐out‐&gt;exists(type=quality or type=task)) 
context Actor inv: spec &lt;&gt; null implies module.spec? = false 
context Actor inv: impl‐&gt;notEmpty() implies spec.module.spec? = true 
context IntentionalElement inv: super &lt;&gt; null implies 
                       (incoming.actor.super = super.incoming.actor or outgoing.actor.super = super.outgoing.actor) 
context IntentionalElement inv: super &lt;&gt; null and type &lt;&gt; super.type implies </p>
      <p>((type = task or type = resource) implies (super.type = goal or super.type = quality) and 
                     (type = goal implies super.type = quality)) </p>
    </sec>
    <sec id="sec-4">
      <title>4. Example: a hierarchy of data structures and their abstract data types </title>
      <p>dependencies reflect the characteristics of these implementations. We show also the Heap for the
Priority Queue type of queue which demands to know the Approximate Size of the data structure.
Similarly, for Functions, we show two general implementation strategies, namely using Hash Tables
and AVL Trees (which allow to Get Ordered List of elements in the Function, provided that a Greater
Than operation exists) and we refine the general concept of hash table into several strategies that differ
in many respects, as illustrated in the dependencies that appear in the corresponding modules. Last, we
present three main implementation strategies for graphs that apply to any graph variant, therefore we
establish the implements link associating to the most general graph specification.</p>
      <p>As an important remark, we would like to stress that this hierarchy is at the intentional level and not
at the code level. This means that we should not think that every extended iStar 2.0 implementation
module will yield to exactly one software component. The purpose of this hierarchy is not organizing
code, but organizing a collection of abstract data types and data structures in a way that their similarities
and differences at the intentional level become clearer.</p>
      <p>
        Figure 3: Abridged view of a hierarchy of abstract data types and data structures as presented in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. 
 
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusions and future work </title>
      <p>
        In this paper we have continued our previous work on using i* to describe data structures [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] in two
different ways: (i) identifying and consolidating the constructs to be added onto iStar 2.0 for modeling
in this particular domain; (ii) extending the iStar 2.0 metamodel [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] in order to support these constructs.
To illustrate the proposal and to validate the adequacy of these constructs, we have modelled a hierarchy
of data structures (and their corresponding specifications) that are usual to find in a typical data structure
course. In fact, we foresee the context of teaching as the one that can benefit the most from our approach,
and in this direction, we have conducted a first experiment evaluating our original proposal in a bachelor
course on algorithms and data structures with promising results [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. We plan to run a similar
experiment with the new proposal presented in this paper.
      </p>
      <p>
        There are other approaches that propose the use of modeling languages to describe abstract data
types or data structures. For instance, Hoang et al. propose the use of class diagrams from iUML-B, an
extension to UML using Event-B theories [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Contrary to our proposal, Hoang et al.’s work focus on
validation issues and not in improving understandability and providing a unified view of the full
spectrum of abstract data types and data structures.
      </p>
      <p>
        As future research, we would like to apply the ideas presented in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] to drive the selection of data
structures in a particular context, with concrete functional and non-functional requirements. At the
functional level, requirements can be compared against intentions appearing in the specification
modules to find the best matches. In a subsequent step, in order to choose the best data structure,
nonfunctional requirements can be compared against both the intentions and the efficiency signature. We
also foresee the use of metrics over the resulting models [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ][
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] as a way to compute emerging
properties of the solution, such as complexity of the solution (e.g., the more different data structures are
combined, the more complex is the resulting program). Also, we want to face the challenge of
integrating this graphical and intentional view provided by iStar 2.0 with the classical equational
definition of abstract data structures. Furthermore, we want to add detail to the concept of Measurable
Concept included in the metamodel as to capture complex conditions that may be required by modern
uses of advanced data structures, e.g. memory usage or energy consumption for data structures in a
mobile app development context [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Last, from a technical point of view, we want to implement the
iStar 2.0 extension with the piStar tool2 [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] that we have used in the paper for diagramming the iStar
2.0 actors and intentional elements.
      </p>
    </sec>
    <sec id="sec-6">
      <title>References </title>
      <p>2 https://www.cin.ufpe.br/~jhcp/pistar/</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <article-title>Using i* to Describe Data Structures</article-title>
          ,
          <source>in: Proceedings of the Thirteenth International iStar Workshop</source>
          , iStar'
          <fpage>20</fpage>
          , CEUR Workshop Proceedings,
          <volume>2641</volume>
          ,
          <year>2020</year>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>54</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Dalpiaz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <source>J. Horkoff, iStar 2</source>
          .
          <article-title>0 Language Guide</article-title>
          .
          <source>arXiv preprint arXiv:1605.07767</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <article-title>Incorporating Modules into the i* Framework</article-title>
          , in
          <source>: Proceedings of the 22nd International Conference on Advanced Information Systems Engineering</source>
          , CAiSE'
          <volume>10</volume>
          , Lecture Notes in Computer Science,
          <volume>6051</volume>
          ,
          <year>2010</year>
          , pp.
          <fpage>439</fpage>
          -
          <lpage>454</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Maté</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Trujillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <article-title>Adding Semantic Modules to improve Goal-oriented Analysis of Data Warehouses using I-star</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>88</volume>
          (
          <year>2014</year>
          ):
          <fpage>102</fpage>
          -
          <lpage>111</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>L.</given-names>
            <surname>López</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Marco</surname>
          </string-name>
          .
          <source>Specialization in the iStar2.0 Language. IEEE Access</source>
          <volume>7</volume>
          (
          <year>2019</year>
          ):
          <fpage>146005</fpage>
          -
          <lpage>146023</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Soares</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Pimentel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Castro</surname>
          </string-name>
          et al.,
          <source>Automatic Generation of Architectural Models from Goal Models, in Proceedings of the 24th International Conference on Software Engineering &amp; Knowledge Engineering, Knowledge Systems Institute, SEKE'12</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>444</fpage>
          -
          <lpage>447</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>I.</given-names>
            <surname>Ayala</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Amor</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Horcas</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Fuentes</surname>
          </string-name>
          ,
          <article-title>A Goal-driven Software Product Line Approach for Evolving Multi-agent Systems in the Internet of Things, Knowledge-Based Systems 184 (</article-title>
          <year>2019</year>
          ),
          <fpage>104883</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Lavalle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Maté</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Trujillo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rizzi</surname>
          </string-name>
          ,
          <article-title>Visualization Requirements for Business Intelligence Analytics: A Goal-Based, Iterative Framework</article-title>
          ,
          <source>in: Proceedings of the 27th International Requirements Engineering Conference</source>
          , RE'19, IEEE Computer Society,
          <year>2019</year>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>119</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>H.</given-names>
            <surname>Estrada</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Martínez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Pastor</surname>
          </string-name>
          et al.,
          <article-title>A Service-oriented Approach for the i* Framework</article-title>
          , in
          <source>: Proceedings of the Third International iStar Workshop</source>
          , iStar'
          <fpage>08</fpage>
          , CEUR Workshop Proceedings,
          <volume>322</volume>
          ,
          <year>2008</year>
          , pp.
          <fpage>21</fpage>
          -
          <lpage>24</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <article-title>On the Lightweight Use of Goal-Oriented Models for Software Package Selection</article-title>
          ,
          <source>in: Proceedings of the 17th International Conference on Advanced Information Systems Engineering</source>
          , CAiSE'
          <volume>05</volume>
          , Lecture Notes in Computer Science,
          <volume>3520</volume>
          ,
          <year>2005</year>
          , pp.
          <fpage>551</fpage>
          -
          <lpage>566</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.H.</given-names>
            <surname>Liskov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.V.</given-names>
            <surname>Guttag</surname>
          </string-name>
          ,
          <source>Abstraction and Specification in Program Development</source>
          , MIT Press,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>E.S.K.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <article-title>Modelling Strategic Relationships for Process Reengineering</article-title>
          ,
          <source>PhD. thesis</source>
          , University of Toronto,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.E.</given-names>
            <surname>Knuth</surname>
          </string-name>
          ,
          <source>The Art of Computer Programming</source>
          , Vol.
          <volume>1</volume>
          :
          <string-name>
            <given-names>Fundamental</given-names>
            <surname>Algorithms</surname>
          </string-name>
          (3rd ed.), Addison Wesley Longman Publishing Co., Inc.,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J.T.</given-names>
            <surname>Schwartz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.B.K.</given-names>
            <surname>Dewar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Dubinsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Schonberg</surname>
          </string-name>
          ,
          <article-title>Programming with Sets: An Introduction to</article-title>
          SETL. Springer,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>P.</given-names>
            <surname>Botella</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Burgués</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Huerta</surname>
          </string-name>
          , G. Salázar, Modeling
          <string-name>
            <surname>Non-Functional</surname>
            <given-names>Requirements</given-names>
          </string-name>
          , in: Proceedings of Jornadas de Ingeniería de Requisitos Aplicada,
          <string-name>
            <surname>JIRA</surname>
          </string-name>
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16] D. Moody, The “Physics” of Notations:
          <article-title>Toward a Scientific Basis for Constructing Visual Notations in Software Engineering</article-title>
          ,
          <source>Transactions on Software Engineering</source>
          <volume>35</volume>
          (
          <issue>6</issue>
          ),
          <year>2009</year>
          , pp.
          <fpage>756</fpage>
          -
          <lpage>779</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J.J.</given-names>
            <surname>Martin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Data</given-names>
            <surname>Types</surname>
          </string-name>
          and
          <string-name>
            <given-names>Data</given-names>
            <surname>Structures</surname>
          </string-name>
          , Prentice-Hall,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          , Estructuras de Datos: Especificación, Diseño e Implementación.
          <source>Editorial UPC</source>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ruíz</surname>
          </string-name>
          ,
          <article-title>Goal-oriented Models for Teaching and Understanding Data Structures</article-title>
          ,
          <source>in: Proceedings of the 40th International Conference on Conceptual Modeling, ER'21, Lecture Notes in Computer Science</source>
          ,
          <year>2021</year>
          , in press.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>T.S.</given-names>
            <surname>Hoang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Snook</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Dghaym</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Butler</surname>
          </string-name>
          ,
          <article-title>Class-Diagrams for Abstract Data Types</article-title>
          , in: D.
          <string-name>
            <surname>Hung</surname>
          </string-name>
          , D. Kapur (eds) Theoretical
          <source>Aspects of Computing - ICTAC 2017, Lecture Notes in Computer Science</source>
          ,
          <volume>10580</volume>
          ,
          <year>2017</year>
          , pp.
          <fpage>110</fpage>
          -
          <lpage>117</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          ,
          <article-title>A Method for the Definition of Metrics over i* Models</article-title>
          , in
          <source>: Proceedings of the 21st International Conference on Advanced Information Systems Engineering</source>
          , CAiSE'
          <volume>09</volume>
          , Lecture Notes in Computer Science,
          <volume>5565</volume>
          ,
          <year>2009</year>
          , pp.
          <fpage>201</fpage>
          -
          <lpage>215</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>X.</given-names>
            <surname>Franch</surname>
          </string-name>
          , G. Grau,
          <string-name>
            <given-names>C.</given-names>
            <surname>Quer</surname>
          </string-name>
          ,
          <article-title>A Framework for the Definition of Metrics for Actor-dependency Models</article-title>
          ,
          <source>in: Proceedings of the 14th International Requirements Engineering Conference</source>
          , RE'06, IEEE Computer Society,
          <year>2006</year>
          , pp.
          <fpage>359</fpage>
          -
          <lpage>360</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>R.</given-names>
            <surname>Saborido</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Morales</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Khomh</surname>
          </string-name>
          et al.,
          <article-title>Getting the most from Map Data Structures in Android</article-title>
          ,
          <source>Empirical Software Engineering</source>
          <volume>23</volume>
          ,
          <year>2018</year>
          , pp.
          <fpage>2829</fpage>
          -
          <lpage>2864</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>J.</given-names>
            <surname>Pimentel</surname>
          </string-name>
          , J. Castro, piStar Tool -
          <article-title>A Pluggable Online Tool for Goal Modeling</article-title>
          ,
          <source>in: Proceedings of the 26th International Requirements Engineering Conference</source>
          , RE'18, IEEE Computer Society,
          <year>2018</year>
          , pp.
          <fpage>498</fpage>
          -
          <lpage>499</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>