<!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>A Model-Based Approach to Managing Feature Binding Time in Software Product Line Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Armaya'u Zango Umar</string-name>
          <email>a.umar1@lancaster.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Lancaster University Lancaster</institution>
          ,
          <country country="UK">United Kingdom</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Software Product Line Engineering (SPLE) is a software reuse paradigm for developing software products, from managed reusable assets, based on analysis of commonality and variability (C &amp; V) of a product line. Many approaches of SPLE use a feature as a key abstraction to capture the C&amp;V. Recently, there have been increasing demands for the provision of flexibility about not only the variability of features but also the variability of when features should be selected (i.e., variability on feature binding times). Current approaches to support variations of feature binding time mostly focused on ad hoc implementation mechanisms. In this paper, we ifrst identify the challenges of feature binding time management and then propose an approach to analyze the variation of feature binding times and use the results to specify model-based architectural components for the product line. Based on the specification, components implementing variable features are parameterized with the binding times and the source codes for the components and the connection between them are generated.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>INTRODUCTION</title>
      <p>
        Software Product Line Engineering (SPLE) is a software reuse
paradigm for developing software products from managed reusable
assets. The reusable assets are engineered based on analysis of
commonality and variability (C &amp; V) of a family of software products in
a specific problem area, known as a domain. The approach uses a
feature as a key abstraction [
        <xref ref-type="bibr" rid="ref16 ref19 ref26">16, 19, 26</xref>
        ]. The commonality represents
the set of mandatory features, the shared traits, which manifest in
all the products of the product line. On the other hand, a feature in
the variability category can be one of the optional/alternative
features or forms a part of an inclusive OR group. Composition rules
are also used to constrain the selection of features in the variability
category. A feature model[
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] is widely used to present C &amp; V
information of a product line compactly(see Fig.1 for example). Each
product in the product line is derived from a selection of a valid
combination of features —a process known as product configuration .
The phase, in the product life cycle, of which a feature is selected
and bound to a product is known as feature binding time[
        <xref ref-type="bibr" rid="ref31 ref33">31, 33</xref>
        ].
Engineers used the results of C &amp; V analyses to design a Product
Line Architecture (PLA) - a generic software architecture that can
      </p>
      <p>Application
Email</p>
      <p>Graduate
Text Message Under Graduate</p>
      <p>Payment
Sub-degree
Composition Rule
Contact Validation Requires Messaging Service
Graduate Requires Payment</p>
      <p>Legend</p>
      <p>Optional
OR group</p>
      <p>Alternative Group
Composed-of relationship
be tailored to produce a potentially unique architecture for each of
the products of a product line.
1.1</p>
    </sec>
    <sec id="sec-2">
      <title>Background</title>
      <p>
        Recently there have been increasing demands for flexibility of not
only the variability of features but also the variability of when
features should be selected (i.e., variability of feature binding time).
This is often the case when products of a product line have to be
conifgured for delivery to multiple product lines[
        <xref ref-type="bibr" rid="ref13 ref2">2, 13</xref>
        ]. Fig.1 presents
an example of enterprise software for tertiary institutions of an
anonymous country. The product line, referred to as Educational
Product Line (EduPl), was initiated by our partner university in that
country. The vision of the product line is to provide software
products to sister universities, other higher institutions, and Enterprise
Resource Planning (ERP) vendors. The educational institutions in
the country have common and centralized regulatory agencies
which make their core operations largely the same- hence a product
line. In this example, a customer institution placing a direct order,
through their IT department, requires the binding of Messaging
Service and Contact Validation to be decided at product
configuration time. Other customers, who are ERP vendors, require the
same Messaging Service and Contact Validation to be decided at
installation time after their salesman negotiates with customers over
the product price. Yet still, customers hitherto deselected a feature
may demand the same feature at operation time when their
services evolved. For example, customer institution starting graduate
courses should select and bind (to be downloaded or made available
in a memory stick) the Graduate feature to their product already
in operation. As such, the product line engineers of EduPl should
develop the core assets to support the diferent binding times of
these features.
      </p>
      <p>
        The above example exposes three distinctive challenges: 1) how
to identify the set of features that should be selectable at diferent
binding times; 2) how to engineer and instantiate reusable assets
to support such selections; and 3) how to maintain the feature
dependencies (e.g., require and mutual exclusion) throughout the
diferent phase (e.g., product configuration time, installation time,
or operation time) of feature selection. Without addressing these
challenges, the product line assets have to go through an ad hoc
adaptation to serve requests for varying binding times [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Ad-hoc adaptations of binding times, through hacks, can induce
architectural degradation [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ], which afects maintainability and
adaptability. Also, it can slow-down the time-to-market, increase
production costs, and afect the quality of the products. Equally
suboptimal is to develop separate assets for the diferent categories of
customers; i.e., splitting, supposedly, a single asset-based into a set
of parallel asset-based. This approach, clearly adds up to production
and maintenance costs because a product line company has to
maintain multiple assets for the diferent categories of customers.
      </p>
      <p>
        The proliferation of software provider-consumer relationships
has aggravated the demands for flexibility in the selection of
features at diferent times. The provider is a product line company that
has to deliver partially configured products to consumers that are
separate product lines [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In the literature, the terms Product Line
of Product Line (PoPs) and Multi-Product Lines (MPLs) are used to
depict the software provider-consumer relationship as a form of
associations between product lines of separate logical boundaries
[
        <xref ref-type="bibr" rid="ref14 ref17 ref30 ref6">6, 14, 17, 30</xref>
        ]. Hartman et al [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ] used the term Software Supply
Network (SSN) to qualify the associations between the multiple
product lines as a network of independent stakeholders engaged in
a software supplier-customer relationship.
      </p>
      <p>
        There have been attempts to address the challenge of providing
lfexible feature binding time [
        <xref ref-type="bibr" rid="ref27 ref27 ref34 ref4 ref7 ref8">4, 7, 8, 27, 27, 34</xref>
        ]. However, some of
these approaches addressed flexibility at a fine granular level (e.g.,
lfexible composition of low-level model elements such as states and
transitions in state diagram )[
        <xref ref-type="bibr" rid="ref34">34</xref>
        ]. Others proposed some ad hoc
manipulations that are only tenable in some specific development
environments [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. All in all, a comprehensive approach to address
the flexibility of feature binding time selection is largely absent.
      </p>
      <p>In this paper, we describe our initial ideas for supporting flexible
feature binding time in SPLE. We first elaborate the challenges to
set the context and provide the overview of the approach with
examples.
1.2</p>
    </sec>
    <sec id="sec-3">
      <title>Challenges for Varying binding times</title>
      <p>In the following we elaborate more on the three challenges we have
identified with examples:</p>
      <p>C1 How to proactively discover features whose binding time
need to vary and use this knowledge in the design of reusable
assets. By ’proactive’ we mean that we should check with the
potential customers of the product line to find out binding
time requirements before developing the core assets.
Identifying diferent binding time requirements entails careful
analysis on where and how the customers would use the
product (i.e., the usage contexts of the customers).</p>
      <p>
        C2 How to develop product line assets to support the diferent
binding times. The challenge is not only about supporting
diferent binding times for the diferent features but also
about supporting diferent binding time of the same feature
and at the same variation point. A variation point is a place
where diferent variants can be bound for diferent product
configurations[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        C3 How to maintain consistency between feature selection and
binding time instantiation. For example, when a parent
feature is selected with a late binding time, its child features
should all be selected at not earlier than the parent feature’s
binding time and we should make sure there are no other
features that require one of the child features at an earlier
binding time. Supporting flexibility in the feature binding
time requires a robust management of feature dependencies
[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] with their diferent binding time.
      </p>
      <p>
        To address the above challenges, we propose an approach to
manage the variations of feature binding time. Our work is based
on feature binding unit analysis - an approach initially proposed to
address dynamic reconfiguration of software systems in a dynamic
software product line (DSPL) [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. Specifically, we adapted feature
binding unit analysis as a guideline on how to decompose product
line architecture to match the boundaries of features that must be
bound together. We extend this approach with flexible connection
mechanisms between components of separate binding units. We
also propose a means to instantiate product line assets with the
diferent binding time. Fig.2 shows the activities and work products
of the proposed approach, which are explained in the following
section.
2
      </p>
    </sec>
    <sec id="sec-4">
      <title>OVERVIEW OF THE APROACH</title>
      <p>To illustrate the approach, the following elaborates on some of
the features in Fig.1: The Account Creation feature is to create an
account with the institution’s portal. The system can optionally
validate an applicant’s contact using Contact Validation. The
Contact Validation feature requires Messaging Service to send randomly
generated token to the applicant’s email or a Short Message Service
(SMS) to the applicant’s mobile telephone. Email and Text Message
are inclusive OR features and are the specialization of Messaging
Service. An institution could optionally charge application fees
through the Payment feature. There are diferent types of
applications: Undergraduate, Graduate and Sub-degree. Both Graduate and
Sub-degree require Payment.
2.1</p>
    </sec>
    <sec id="sec-5">
      <title>Process Activities</title>
      <p>SPLE consists of two major engineering processes: Domain
Engineering (DE) and Application Engineering (AE). DE is the process
of developing assets for reuse while AE is the process of deriving a
specific product from the reusable assets. The following activities
fall within the two engineering processes.</p>
      <p>
        2.1.1 Feature Modeling. In DE process, feature modeling
kickstarts the engineering activities of which a feature model is
developed. Detailed on feature modeling activity can be found in
[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>Feature Model
Feature Binding Graph</p>
      <p>Binding Time</p>
      <p>Selected Components(SC)
Instantiated Binding Time (IBT)
Feature Modeling</p>
      <p>Feedback
Design Object Modelling
Component Based Design
(Meta Model Instantiation)
Component Selection +</p>
      <p>Binding Time Instantiation</p>
      <p>CoCnonssiisstteenncycyChCechkienkging
Feature Binding Unit Analysis
Domain Object Modelling</p>
      <p>Feature Model</p>
      <p>Domain Object Model
Concrete Components and their Relationships</p>
      <p>Implemented Metamodel
PL Components</p>
      <p>Report</p>
      <p>SC+IBT</p>
      <p>NAME
PL</p>
      <p>Activity
Data Flow</p>
      <p>
        Product Line
Assets Generation and
Manual Intergratiom
2.1.2 Feature Binding Unit Analysis . To engineer the core assets
to support diferent binding time of features, the indivisible binding
units must be established. As depicted in Fig.2, a feature model
serves as input to binding unit analysis. A feature binding unit
(FBU) is a set of features that share the same binding time (all the
features in the same binding unit must be bound together for the
correct behavior of the product)[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. Feature binding unit
identification starts with the identification of a service feature. Each service
feature represents a major functionality of the system that may be
added/removed as a service unit. In EduPL(Fig.3), Account Creation
and Application are examples of service features. Beginning from
the service feature, an engineer should identify the constituents of
a binding unit by traversing the feature model along the feature
relationships and its composition rules (i.e., cross-tree constraints
such as require/mutual exclusion). Each binding unit is assigned a
name, in a capital letter, similar to the name of the major feature
in the unit. For example, ACCOUNT and VALIDATION are the
names assigned to the binding units containing Account Creation
and Contact Validation respectively (see Fig.3).
      </p>
      <p>
        In our approach, in addition to analysis of C &amp; V of the
product features, we also analyze C &amp; V of the diferent product usage
contexts [
        <xref ref-type="bibr" rid="ref12 ref22 ref25">12, 22, 25</xref>
        ]. We aim to capture the binding time of
features in terms of product lifecycle (i.e., when and how each of the
feature binding happens), by examining diferent usage contexts
of the products and in anticipation of product evolution. There
are many recognized binding time of features [
        <xref ref-type="bibr" rid="ref31 ref33">31, 33</xref>
        ]. In this
paper, we focus on three binding times that are most visible to the
product line customer (i.e. when a feature is included in a product
configuration and made available to a customer): (i) Product
configuration (order) time(PT) (ii) Installation (deployment) time (IT) and
(iii) Operation time (OT). The output of feature binding analysis
is a binding unit graph (see the upper part of Fig.4). In Fig. 4, the
dotted lines represent a variable binding time. For example,
binding between VALIDATION and ACCOUNT could happen at either
product configuration time, installation time, or even at operation
time.
      </p>
      <p>
        2.1.3 Domain Object Modeling. A feature model and other
domain analyses (e.g. noun phrase analysis) are also inputs to a
Domain Object Modeling activity (see Fig.2). A domain object model is
a product line’s model of conceptual classes or objects and their
relationships; it is an input to Design Object Model. Detail of domain
object modeling activity can be found in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
      <p>
        2.1.4 Design Object Modeling. A design object model is an
embodiment of functionalities required for the product line[
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. In the
design object model, a domain engineer captures concrete domain
design, in terms of object based components and their
responsibilities that can be mapped to the identified binding units. As shown
in Fig.2, the feature binding graph and the binding time
information are important inputs for organizing design object model. Our
approach is not limited to Object-Oriented(OO) component, it can
be used with non-OO architecture description approaches. For the
variation of binding time to be feasible, the mapping between
binding units and the variation points in the design object model must
be established explicitly. In Fig. 4, the mapping between binding
units (depicted as the bubble with the optional or the alternative
icon) and the corresponding variation points identified in the
object model (denoted by the filled rectangle) is depicted with dotted
arrows.
      </p>
      <p>
        2.1.5 Abstract (meta) Component Modeling and Implementation.
Following Model-Driven approach [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], the captured components
and their relationship (see the bottom part of Fig. 4) must be
described in abstract terms (i.e. Metamodeling). A metamodel defines
the possible constructs of a model in terms of abstract syntax and
static semantic [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ]. The purpose is to enable machine processing
of the model generically (i.e. Metaprogramming). The metamodel
has to be implemented in some sort of infrastructure. Fig.5 depicts a
metamodel of the EduPL in Ecore. Ecore is a metamodeling language
that is part of Eclipse Modeling Framework (EMF)1 infrastructure.
      </p>
      <p>
        The metamodel in Fig.5 has Component as its metaclass which is
a generalization over the component type of the intending model
(the EduPl architectural model in this case). The specialized
metaclasses are Service, Data, View and Control components. A Service
component carries out computing services or functions[
        <xref ref-type="bibr" rid="ref35">35</xref>
        ], for
example, the generation of random token for user’s contact validation
in the implementation of the Contact Validation feature. A view
component receives input from the end user and displays output
from the system (e.g. an application form). A control component
controls or coordinates other components[
        <xref ref-type="bibr" rid="ref35">35</xref>
        ]; as such it controls
the behavior of the system or subsystem. A data component
represents an entity that can be saved and retrieved from a permanent
storage (e.g. an applicant information). The discrimination between
component types is useful for determining a suitable connection
mechanism between the diferent type of components and also for
imposing architectural constraints (e.g. a view component should
not access data component directly).
      </p>
      <p>Notice from Fig.5, we elevate Port and Connector with first-class
status in the metamodel, in contrast to their usual relegation to
the second-class elements at the implementation level. In essence,
we abstract over concrete ports and connector by generating them
and configuration scripts (as the connection mechanism) based
on the instantiated binding time. For example, if the bindings of
1https://www.eclipse.org/modeling/emf/</p>
      <p>ValidationManager and MessageHandler have to be decided at
product configuration time, we can generate procedure call ports and
tightly coupled connector between these components and the
AccountCreationController component. If, however, the bindings of
ValidationManager and MessageHandler have to be decided at
installation time, we may generate event ports, event connector, and
configuration scripts to remove the dependency between the
components. In this way, we make it possible to include/exclude the
ValidationManager and MessageHandler components from the
product configuration at installation time. In the case of operation time
binding, we should generate message ports, connectors, and
conifguration scripts to make it possible to compile the components
separately and include/exclude them at operation time.</p>
      <p>
        2.1.6 Component Based Design (Metamodel Instantiation). The
component-based product line architecture is then modeled as
instances of the implemented metamodel. A mapping has to be
established between the instantiated components and the features they
implement in the feature model. Deselecting a feature from the
feature model removes the corresponding model component. We
assume the existence of the mapping tool such as the commercial
feature model connector of Pure Variant2 or the open-source tool
developed by Czarnecki et al [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Those tools embed a model repair
algorithm to fix an ill-formed model automatically. For example, the
domain engineer should design concrete components to correspond
to the design object model depicted at the bottom of Fig.4. The
engineer should also mark ValidationManager and MessageHandler as
variable components and their binding will be determined by the
application engineer in the application engineering process.
      </p>
      <p>2.1.7 Component Selection and Binding Time Instantiation.
During Application Engineering process, the application engineer
selects features from the feature model, which triggers the removal of
components mapped to the deselected feature. The engineer also
instantiates the required binding time of features on the components
whose features are selected.</p>
      <p>2.1.8 Consistency Checking. Binding time instantiation triggers
the consistency checking process. In case of an error, the application
engineer may have to change feature selections or binding time
selections.</p>
      <p>2.1.9 Assets Generation and Manual Code Integration. We
generate the skeleton implementation from the architectural components.
Based on the instantiated binding time, we also generate concrete
ports and the connectors for the components. We do not intend
to generate every implementation artifacts from the model as we
believe the separation of high-level architectural concerns and
lowlevel implementation is useful for our approach to scale in practice.
3</p>
    </sec>
    <sec id="sec-6">
      <title>RELATED WORK</title>
      <p>
        Traditionally, usage context analyses [
        <xref ref-type="bibr" rid="ref12 ref25">12, 25</xref>
        ] are used to discover
various operational contexts of products of the product line.
Goaldriven analysis [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] is also used to expose the coverage of broad
objectives of which products of a product line were meant to achieve.
2https://www.pure-systems.com/products/extensions/pure-variants-connector-foremf-feature-mapping-307.html
Feature Binding Graph
      </p>
      <p>ACCOUNT
........................</p>
      <p>VALIDATION</p>
      <p>MESSAGE
APPLICATION
GRADUATE
These analyses expose the implications of goals and contexts on
the selection of, mainly non-functional, features of the product line
but have not considered the variations of binding time between the
diferent goals and contexts.</p>
      <p>
        In the implementation, Chakravarthy et al [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] proposed a
combination of design patterns and Aspect-Oriented Programming (AOP)
to achieve binding time flexibility. In their approach, the same
feature is implemented as diferent aspects, each aspect for one target
binding time at the same variation point. This approach can be
useful if the variation is fixed and features can be bound to stable
variation interfaces. However, the approach limits reusability
because multiple implementations of features have to be maintained.
Dolstra et al [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] discussed how developers manipulated a
combination of pre-processor, compiler, and linker to achieve binding time
lfexibility in the retrofitted Linux kernel. The approach described in
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] is ad-hoc and only attainable if the development environment
supports separate building and linking of modules.
      </p>
      <p>
        Most researches in binding time management fall within a
research theme of DSPL [
        <xref ref-type="bibr" rid="ref1 ref10 ref15 ref21 ref23">1, 10, 15, 21, 23</xref>
        ] and have an explicit focus
on reconfigurations of features at runtime, often based on changes
in the execution context of a software product; they largely ignore
pre-runtime variation. DSPL is efective when most of the
variations exist only when the product is in operation (e.g., in robotic
domain)[
        <xref ref-type="bibr" rid="ref21 ref29 ref9">9, 21, 29</xref>
        ]. In contrast, in some domains such as enterprise
software, management of variations at diferent phases of a
software lifecycle, the focus of this paper, is non-trivial. Specifically,
this paper is about supporting flexibility of variations at diferent
phases of a software lifecycle.
      </p>
      <p>
        Model-driven approaches have the potential to manage
variations by mapping features in the feature model to model elements
[
        <xref ref-type="bibr" rid="ref3 ref5">3, 5</xref>
        ]; i.e. model elements are annotated with a presence condition
of features from the feature model. For example, In [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], a feature
from the feature model can be mapped to class diagram and activity
diagram via annotations. These approaches include support for
enforced variations as well consistent product derivation.
However, their support to addressing variations of binding time [
        <xref ref-type="bibr" rid="ref27 ref34">27, 34</xref>
        ],
focus on fine granular variations which make these approaches
dififcult to scale. In contrast, we emphasize modeling coarse-grained
components that are critical to the architecture of the product line.
      </p>
      <p>In summary, managing variations of feature binding time need
to be further investigated
4</p>
    </sec>
    <sec id="sec-7">
      <title>CONCLUSION AND FUTURE WORK</title>
      <p>We identified the challenges of managing feature binding time in
SPLE and sketch our idea to address them. Our approach is a
generative framework where variable components are parameterized
with three possible binding times (product configuration time,
installation time and operation time). Assets are generated based
on the binding time that has been instantiated during application
engineering process. For future works, we shall define concepts of
connection mechanisms that are platform/middleware agnostic and
the first transformation (after passing consistency checking) should
generate a model with those concepts. Subsequent transformations
should then be defined for each of the target platform/middleware.
In model-driven parlance, we aim at multistage transformations
from the Platform Independent Model (PIM) to Platform Specific
Models (PSMs). For the consistency checking, we shall either
deifned consistency rules in Object Constraint Language (OCL) 3 or
transform the PIM model into another form that allows its
properties to be checked (e.g. using Theorem prover).</p>
    </sec>
    <sec id="sec-8">
      <title>ACKNOWLEDGEMENT</title>
      <p>This work is funded by National Information Technology
Development Agency (NITDA)-Nigeria.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>L.</given-names>
            <surname>Baresi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Guinea</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Pasquale</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>Service-Oriented Dynamic Software Product Lines</article-title>
          .
          <source>Computer</source>
          <volume>45</volume>
          , 10 (Oct
          <year>2012</year>
          ),
          <fpage>42</fpage>
          -
          <lpage>48</lpage>
          . https://doi.org/10.1109/
          <string-name>
            <surname>MC</surname>
          </string-name>
          .
          <year>2012</year>
          .289
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Jan</surname>
            <given-names>BoschPetra</given-names>
          </string-name>
          and
          <string-name>
            <surname>Bosch-Sijtsema</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>ESAO: A holistic ecosystem-driven analysis model</article-title>
          .
          <source>In Software Business. Towards Continuous Value Delivery(ICSOB</source>
          <year>2014</year>
          ),
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Lassenius and</article-title>
          K. Smolander (Eds.).
          <source>Lecture Notes in Business Information Processing LNBP</source>
          , Vol.
          <volume>182</volume>
          . Springer, Cham, Paphos, Cyprus,
          <fpage>179</fpage>
          -
          <lpage>193</lpage>
          . https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -08738-2_
          <fpage>13</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Buchmann</surname>
          </string-name>
          and
          <string-name>
            <given-names>Bernhard</given-names>
            <surname>Westfechtel</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Mapping feature models onto domain models: ensuring consistency of configured domain models</article-title>
          .
          <source>Software and Systems Modeling</source>
          <volume>13</volume>
          ,
          <issue>4</issue>
          (
          <year>2014</year>
          ),
          <fpage>1495</fpage>
          -
          <lpage>1527</lpage>
          . https://doi.org/10.1007/ s10270-012-0305-5
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Venkat</given-names>
            <surname>Chakravarthy</surname>
          </string-name>
          , John Regehr, and
          <string-name>
            <given-names>Eric</given-names>
            <surname>Eide</surname>
          </string-name>
          .
          <year>2008</year>
          .
          <article-title>Edicts: Implementing Features with Flexible Binding Times</article-title>
          .
          <source>In Proceedings of the 7th international conference on Aspect-oriented software development (AOSD '08)</source>
          . ACM, Brussels, Belgium,
          <fpage>108</fpage>
          -
          <lpage>119</lpage>
          . https://doi.org/10.1145/1353482.1353496
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Krzysztof</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          and
          <string-name>
            <given-names>Michal</given-names>
            <surname>Antkiewicz</surname>
          </string-name>
          .
          <year>2005</year>
          .
          <article-title>Mapping features to models: A template approach based on superimposed variants</article-title>
          .
          <source>In GPCE 2005: International Conference on Generative Programming and Component Engineering (Lecture Notes in Computer Science)</source>
          , Vol.
          <volume>3676</volume>
          .
          <fpage>422</fpage>
          -
          <lpage>437</lpage>
          . https://doi.org/10.1007/11561347_
          <fpage>28</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Ferruccio</given-names>
            <surname>Damiani</surname>
          </string-name>
          , Ina Schaefer, and
          <string-name>
            <given-names>Tim</given-names>
            <surname>Winkelmann</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>Delta-oriented multi software product lines</article-title>
          .
          <source>In (SPLC'14)Proceedings of the 18th International Software Product Line Conference</source>
          . ACM, Florence, Italy,
          <fpage>232</fpage>
          -
          <lpage>236</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A</given-names>
            <surname>Van der Hoek</surname>
          </string-name>
          .
          <year>2004</year>
          .
          <article-title>Design-time product line architectures for any-time variability</article-title>
          .
          <source>Science of computer programming 53</source>
          ,
          <issue>3</issue>
          (
          <year>December 2004</year>
          ),
          <fpage>285</fpage>
          -
          <lpage>304</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Eelco</given-names>
            <surname>Dolstra</surname>
          </string-name>
          , Gert Florijn, and
          <string-name>
            <given-names>Eelco</given-names>
            <surname>Visser</surname>
          </string-name>
          .
          <year>2003</year>
          .
          <article-title>Timeline Variability: The Variability of Binding Time of Variation Points</article-title>
          .
          <source>Technical Report UU-CS-2003-052</source>
          . Reseach Institute of Computer Science and Mathematics, University of Groningen, Utrecht University, Groningen, The Netherlands.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>L.</given-names>
            <surname>Gherardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Hunziker</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Mohanarajah</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>A Software Product Line Approach for Configuring Cloud Robotics Applications</article-title>
          .
          <source>In 2014 IEEE 7th International Conference on Cloud Computing</source>
          .
          <fpage>745</fpage>
          -
          <lpage>752</lpage>
          . https://doi.org/10.1109/CLOUD.
          <year>2014</year>
          .104
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hallsteinsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hinchey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Park</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Schmid</surname>
          </string-name>
          .
          <year>2008</year>
          .
          <article-title>Dynamic Software Product Lines</article-title>
          .
          <source>Computer 41</source>
          , 4 (April
          <year>2008</year>
          ),
          <fpage>93</fpage>
          -
          <lpage>95</lpage>
          . https://doi.org/10.1109/
          <string-name>
            <surname>MC</surname>
          </string-name>
          .
          <year>2008</year>
          .123
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Herman</surname>
            <given-names>Hartmann</given-names>
          </string-name>
          , Aart Matsinger, and
          <string-name>
            <given-names>Tim</given-names>
            <surname>Trew</surname>
          </string-name>
          .
          <year>2009</year>
          .
          <article-title>Supplier independent feature modelling</article-title>
          .
          <source>In Proceedings of the 13th International Software Product Line Conference. ACM</source>
          , San Francisco, California, USA,
          <fpage>191</fpage>
          -
          <lpage>200</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Herman</given-names>
            <surname>Hartmann</surname>
          </string-name>
          and
          <string-name>
            <given-names>Tim</given-names>
            <surname>Trew</surname>
          </string-name>
          .
          <year>2008</year>
          .
          <article-title>Using Feature diagrams with Context Variability to model Multiple Product Lines for Software Supply Chains</article-title>
          .
          <source>In 12th International Software Product Line Conference</source>
          . IEEE, Limerick, Ireland,
          <fpage>12</fpage>
          -
          <lpage>21</lpage>
          . https://doi.org/10.1109/SPLC.
          <year>2008</year>
          .15
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Herman</surname>
            <given-names>Hartmanna</given-names>
          </string-name>
          , Mila Keren, Aart Matsinger, Julia Rubin,
          <string-name>
            <given-names>Tim</given-names>
            <surname>Trewa</surname>
          </string-name>
          , and
          <string-name>
            <surname>Tali</surname>
          </string-name>
          Yatzkar-Hahamb.
          <year>2013</year>
          .
          <article-title>Using MDA for integration of heterogeneous components in software supply chains</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>78</volume>
          ,
          <issue>12</issue>
          (
          <year>December 2013</year>
          ),
          <fpage>2313</fpage>
          -
          <lpage>2330</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G</given-names>
            <surname>Holl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P</given-names>
            <surname>Grünbacher</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R</given-names>
            <surname>Rabiser</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>A systematic review and an expert survey on capabilities supporting multi product lines</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>54</volume>
          ,
          <issue>8</issue>
          (
          <year>August 2012</year>
          ),
          <fpage>828</fpage>
          -
          <lpage>852</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>P.</given-names>
            <surname>Istoan</surname>
          </string-name>
          , G. Nain, G. Perrouin, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Jezequel</surname>
          </string-name>
          .
          <year>2009</year>
          .
          <article-title>Dynamic Software Product Lines for Service-Based Systems</article-title>
          .
          <source>In 2009 Ninth IEEE International Conference on Computer and Information Technology</source>
          , Vol.
          <volume>2</volume>
          .
          <fpage>193</fpage>
          -
          <lpage>198</lpage>
          . https://doi.org/10.1109/ CIT.
          <year>2009</year>
          .54
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Kyo</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Kang</surname>
            , Sajoong Kim,
            <given-names>Jaejoon</given-names>
          </string-name>
          <string-name>
            <surname>Lee</surname>
            , Kijoo Kim,
            <given-names>Euiseob</given-names>
          </string-name>
          <string-name>
            <surname>Shin</surname>
            , and
            <given-names>Moonhang</given-names>
          </string-name>
          <string-name>
            <surname>Huh</surname>
          </string-name>
          .
          <year>1998</year>
          .
          <article-title>FORM: A feature-oriented reuse method with domain-specific reference architectures</article-title>
          .
          <source>Annals of Software Engineering</source>
          <volume>5</volume>
          ,
          <issue>1</issue>
          (
          <year>December 1998</year>
          ),
          <fpage>143</fpage>
          -
          <lpage>168</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Niloofar</given-names>
            <surname>Khedri</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ramtin</given-names>
            <surname>Khosravi</surname>
          </string-name>
          .
          <year>2015</year>
          .
          <article-title>Towards managing data variability in multi product lines</article-title>
          .
          <source>In Model-Driven Engineering and Software Development (MODELSWARD)</source>
          ,
          <year>2015</year>
          3rd International Conference on.
          <source>IEEE</source>
          , 1-
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Alexander</surname>
            <given-names>Knüppel</given-names>
          </string-name>
          , Thomas Thüm, Stephan Mennicke, Jens Meinicke, and
          <string-name>
            <given-names>Ina</given-names>
            <surname>Schaefer</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Is there a mismatch between real-world feature models and product-line research?</article-title>
          .
          <source>In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering - ESEC/FSE</source>
          <year>2017</year>
          .
          <volume>291</volume>
          -
          <fpage>302</fpage>
          . https://doi.org/10.1145/3106237. 3106252
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>KwanwooLee</surname>
          </string-name>
          ,
          <string-name>
            <surname>Kyo</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Kang</surname>
            , and
            <given-names>Jaejoon</given-names>
          </string-name>
          <string-name>
            <surname>Lee</surname>
          </string-name>
          .
          <year>2002</year>
          .
          <article-title>Concepts and Guidelines of Feature Modeling for Product Line Software Engineering</article-title>
          . In Software Reuse: Methods, Techniques, and
          <string-name>
            <surname>Tools</surname>
          </string-name>
          , Cristina Gacek (Ed.).
          <source>Lecture Notes in Computer Science</source>
          , Vol.
          <volume>2319</volume>
          . Springer-Verlag, Berlin Heidelberg,
          <fpage>62</fpage>
          -
          <lpage>77</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>James</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Hess William E. Novak Kyo C. Kang</surname>
            , Sholom G. Cohen and
            <given-names>A. Spencer</given-names>
          </string-name>
          <string-name>
            <surname>Peterson</surname>
          </string-name>
          .
          <year>1990</year>
          .
          <article-title>Feature-oriented domain analysis (FODA) feasibility study</article-title>
          .
          <source>Technical Report CMU/SEI-90-TR-21</source>
          . Carnegie-Mellon University, Pennsylvania , USA.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>Jaejoon</given-names>
            <surname>Lee</surname>
          </string-name>
          and
          <string-name>
            <given-names>K. C.</given-names>
            <surname>Kang</surname>
          </string-name>
          .
          <year>2006</year>
          .
          <article-title>A feature-oriented approach to developing dynamically reconfigurable products in product line engineering</article-title>
          .
          <source>In 10th International Software Product Line Conference (SPLC'06)</source>
          . 10 pp.-
          <fpage>140</fpage>
          . https: //doi.org/10.1109/SPLINE.
          <year>2006</year>
          .1691585
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Jaejoon</given-names>
            <surname>Lee</surname>
          </string-name>
          , Kyo C. Kang, Pete Sawyer, and
          <string-name>
            <given-names>Hyesun</given-names>
            <surname>Lee</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>A holistic approach to feature modeling for product line requirements engineering</article-title>
          .
          <source>Requirements Engineering in Software Product Lines</source>
          <volume>19</volume>
          ,
          <issue>4</issue>
          (November
          <year>2014</year>
          ),
          <fpage>377</fpage>
          -
          <lpage>395</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>J.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Kotonya</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Robinson</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>Engineering Service-Based Dynamic Software Product Lines</article-title>
          .
          <source>Computer</source>
          <volume>45</volume>
          , 10 (Oct
          <year>2012</year>
          ),
          <fpage>49</fpage>
          -
          <lpage>55</lpage>
          . https://doi.org/10. 1109/
          <string-name>
            <surname>MC</surname>
          </string-name>
          .
          <year>2012</year>
          .284
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>Jaejoon</given-names>
            <surname>Lee</surname>
          </string-name>
          and
          <string-name>
            <given-names>Dirk</given-names>
            <surname>Muthig</surname>
          </string-name>
          .
          <year>2009</year>
          .
          <article-title>Feature Oriented Analysis and Design for Dynamically Reconfigurable Product Lines</article-title>
          . In Applied Software Product Line Engineering, Sooyong Park Kyo C. Kang, Vijayan Sugumaran (Ed.). Auerbach, New York,
          <volume>315</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>Kwanwoo</given-names>
            <surname>Lee</surname>
          </string-name>
          and
          <string-name>
            <given-names>Kyo C.</given-names>
            <surname>Kang</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Usage Context as Key Driver for Feature Selection</article-title>
          .
          <source>In Software Product Lines: going Beyond</source>
          ,
          <source>Jan Bosch and Jaejoon Lee (Eds.). Lecture Notes in Computer Science</source>
          , Vol.
          <volume>6287</volume>
          . Springer-Verlag, Berlin Heidelberg,
          <fpage>32</fpage>
          -
          <lpage>46</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>Kwanwoo</given-names>
            <surname>Lee</surname>
          </string-name>
          , Kyo C. Kang, Wonsuk Chae, and Byoung Wook Choi.
          <year>2000</year>
          .
          <article-title>Featurebased approach to object-oriented engineering of applications for reuse</article-title>
          .
          <source>Software - Practice Experience 30, 9 (July</source>
          <year>2000</year>
          ),
          <fpage>1025</fpage>
          -
          <lpage>1046</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Carlos</surname>
            <given-names>Parra</given-names>
          </string-name>
          , Xavier Blanc, Anthony Cleve, and
          <string-name>
            <given-names>Laurence</given-names>
            <surname>Duchien</surname>
          </string-name>
          .
          <year>2011</year>
          .
          <article-title>Unifying design and runtime software adaptation using aspect models</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>76</volume>
          ,
          <issue>12</issue>
          (
          <year>December 2011</year>
          ),
          <fpage>1247</fpage>
          -
          <lpage>1260</lpage>
          . https://doi.org/10.1016/j.scico.
          <year>2010</year>
          .
          <volume>12</volume>
          .005
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Dimitrios</surname>
            <given-names>S.Kolovos Richard F.</given-names>
          </string-name>
          <string-name>
            <surname>Paige</surname>
            and
            <given-names>Fiona A.C.</given-names>
          </string-name>
          <string-name>
            <surname>Polack</surname>
          </string-name>
          .
          <year>2014</year>
          .
          <article-title>A tutorial on metamodelling for grammar researchers</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>96</volume>
          ,
          <issue>4</issue>
          (
          <year>December 2014</year>
          ),
          <fpage>396</fpage>
          -
          <lpage>416</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>C.</given-names>
            <surname>Schlegel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Hassler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lotz</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Steck</surname>
          </string-name>
          .
          <year>2009</year>
          .
          <article-title>Robotic software systems: From code-driven to model-driven designs</article-title>
          .
          <source>In 2009 International Conference on Advanced Robotics. 1-8.</source>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Reimar</surname>
            <given-names>Schröter</given-names>
          </string-name>
          , Norbert Siegmund, and
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Thüm</surname>
          </string-name>
          .
          <year>2013</year>
          .
          <article-title>Towards modular analysis of multi product lines</article-title>
          .
          <source>In Proceedings of the 17th International Software Product Line Conference co-located workshops on - SPLC '13 Workshops</source>
          . Tokyo, Japan,
          <fpage>96</fpage>
          -
          <lpage>99</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Mikael</surname>
            <given-names>Svahnberg</given-names>
          </string-name>
          , Jilles van Gurp,
          <string-name>
            <given-names>and Jan</given-names>
            <surname>Bosch</surname>
          </string-name>
          .
          <year>2005</year>
          .
          <article-title>A taxonomy of variability realization techniques</article-title>
          .
          <source>Software: Practice and Experience</source>
          <volume>35</volume>
          ,
          <issue>8</issue>
          (
          <year>July 2005</year>
          ),
          <fpage>705</fpage>
          -
          <lpage>754</lpage>
          . https://doi.org/10.1002/spe.652
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Richard</surname>
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Tylor</surname>
          </string-name>
          , Nenad Medvidovic', and
          <string-name>
            <surname>Eric</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Dashofy</surname>
          </string-name>
          .
          <year>2010</year>
          .
          <article-title>Software Architecture: Foundations, Theory, and Practice</article-title>
          . John Wiley and Son Sons Inc.
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <surname>J. van Gurp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bosch</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Svahnberg</surname>
          </string-name>
          .
          <year>2001</year>
          .
          <article-title>On the notion of variability in software product lines</article-title>
          .
          <source>In Proceedings Working IEEE/IFIP Conference on Software Architecture. IEEE</source>
          ,
          <fpage>45</fpage>
          -
          <lpage>54</lpage>
          . https://doi.org/10.1109/WICSA.
          <year>2001</year>
          .948406
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>Jon</surname>
            <given-names>Whittle</given-names>
          </string-name>
          , Praveen Jayaraman, Ahmed Elkhodary, Ana Moreira, and
          <string-name>
            <given-names>João</given-names>
            <surname>Araújo</surname>
          </string-name>
          .
          <year>2009</year>
          .
          <article-title>MATA: A unified approach for composing UML aspect models based on graph transformation</article-title>
          .
          <source>Transactions on Aspect-Oriented Software Development VI</source>
          <volume>5560</volume>
          (
          <year>2009</year>
          ),
          <fpage>191</fpage>
          -
          <lpage>237</lpage>
          . https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -03764-
          <issue>1</issue>
          _
          <fpage>6</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>Rebecca</given-names>
            <surname>Wirfs-Brock and Alan McKean</surname>
          </string-name>
          .
          <year>2002</year>
          .
          <article-title>Object Design: Roles, Responsibilities, and</article-title>
          <string-name>
            <given-names>Collaborations. Pearson</given-names>
            <surname>Education</surname>
          </string-name>
          , Greenwich,
          <string-name>
            <surname>CT</surname>
          </string-name>
          , USA.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>