<!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>Consistent Extra-Functional Properties Tagging for Component and Connector Models</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Shahar Maoz</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Oliver Ringert</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Rumpe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael von Wenckstern</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Fraunhofer FIT</institution>
          ,
          <addr-line>Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>School of Computer Science, Tel Aviv University</institution>
          ,
          <country country="IL">Israel</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Software Engineering, RWTH Aachen University</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-We present a model-driven approach for adding extra-functional properties to component and connector (C&amp;C) models. The approach is based on a tagging mechanism that allows non-invasive extensions of existing languages and their models, here C&amp;C models, with attributes for extra-functional properties. Importantly, our language extension provides means for integrated formal analyses of the consistency of tagged values. Consistency ranges from type-safety and units of quantitative measures to complex dependencies across component hierarchies as well as between component definitions and their instances. We provide a framework for defining and checking rich consistency rules of extra-functional property values based on selection, aggregation, and comparison operators. Our work allows for independent definition and organization of tagged properties to support reuse across models and development stages. The approach is implemented within the MontiCore framework for the C&amp;C architecture description language MontiArc.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Component and connector (C&amp;C) models are used in many
application domains of software engineering, from
cyberphysical and embedded systems to web services and
enterprise applications. Their structure consists of components at
different containment levels, their typed interaction points,
and connectors between them [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. In addition to expressing
functional properties, also extra-functional properties (EFPs)
play an important role in successful development of C&amp;C
models [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]–[
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. Typical examples of EFPs include
worst-case-execution-time, memory and power consumption,
security properties, and traceability [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
      </p>
      <p>
        We are interested in consistent definition of EFPs for C&amp;C
models, commonly expressed in C&amp;C architecture description
languages (C&amp;C ADLs) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Previous works in this direction
have extended the meta-models of languages or defined special
language profiles for adding EFPs to ADLs [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. These
extension mechanisms are typically invasive to the language
definition and thus impede extensibility. One approach for
extending modeling languages without modifying their
metamodel are tagging languages [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The first contribution of
this paper is a tagging language for non-invasive extension
of C&amp;C models with EFPs. This new language supports the
tagging of C&amp;C elements in component definitions as well as
in their instances.
      </p>
      <p>
        The consistency of EFP values is crucial throughout the
life-cycle of a system. Consistency checks of EFPs have been
investigated for various development steps of C&amp;C models,
e.g., property definition [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], refinement and subtyping [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ],
evolution [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and deployment [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. The second contribution
of this paper is a framework for defining rich consistency
rules for tagged EFP values in the context of C&amp;C
models. Our consistency rules are specific to an EFP and C&amp;C
element and consist of selection, aggregation, and comparison
operators. Rules select relevant C&amp;C model elements,
aggregate their EFP values, and compare them to determine the
consistency of the checked element’s EFP value.
      </p>
      <p>
        We implemented our ideas within MontiCore [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] for the
C&amp;C architecture description language MontiArc [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>The next section presents our running example. Sect. III
presents necessary background. The two main contributions,
our tagging language and our consistency framework, are
presented in Sect. IV and Sect. V. We present the implementation
and a discussion in Sect. VI, related work in Sect. VII, and a
conclusion in Sect. VIII.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RUNNING EXAMPLE</title>
      <p>
        As running example we use an excerpt of a wind turbine
example adapted from [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], as shown in Fig. 1 and Lst. 1.
The turbine controller (component type TurbineCtrl)
contains two brake controllers (component type BrakeCtrl) to
compute force on the turbine and merge the calculated result
with brake commands from the main controller MainCtrl.
      </p>
      <p>A team of engineers developing the controller deals with
various EFPs including the traceability of component
implementations to the requirements catalog and the power
consumption of components. The component BrakeCtrl
is a safety relevant component and thus requires traceability
for safety audits. This extra-functional property is added to
the component type definition. As a requirement the power
consumption of TurbineCtrl is limited to 4W .</p>
      <p>The team created an implementation of component type
BrakeCtrl that consumes power of 1W and is traceable. In
an attempt to improve safety and provide different instances
for subcomponents brCoA and brCoB, the team uses an
existing implementation that consumes 2010mW . The chief
architect decides to update the power consumption defined for
type BrakeCtrl to the new value of 2010mW .</p>
      <p>A team member is unsure whether these updates are enough
and the C&amp;C model is consistent with respect to its EFPs. She
is right to doubt consistency: on the component type level
the power consumption of TurbineCtrl (4W ) is smaller
than two times the power consumption of BrakeCtrl
component type
BrakeCtrl traceable, power=2010mW
brCoB power=2010mW
c
l
rceaC foaC
o
F
c
l
rceaC foaC
o
F
r
reeg em
M
r
reeg em
M
(2010mW )1. In addition, the component instance brCoB is
not traceable despite what its type BrakeCtrl dictates.</p>
      <p>Our solution allows the engineers to add the described
properties to the C&amp;C model and component type definitions
and to check their consistency.</p>
    </sec>
    <sec id="sec-3">
      <title>III. PRELIMINARIES We start off with background on C&amp;C models, extrafunctional properties, and tagging languages.</title>
      <sec id="sec-3-1">
        <title>A. Component and Connector Models</title>
        <p>
          Component and connector models describe components,
their points of interaction, and their hierarchical composition.
We repeat a definition of C&amp;C models as, e.g., given in
[
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], in Def. 1, which represents the essence of component
models [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] as formalized by ADLs ACME [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], AADL [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ],
and MontiArc [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], or used in the tools AutoFOCUS [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and
Simulink [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Definition 1 (Component and Connector model [15]): A</title>
        <p>C&amp;C model is a structure cncm = hCmps; Ports; Cons;
Types; subs; ports; typei where</p>
        <p>Cmps is a set of named components, cmp 2 Cmps has a
set of ports ports(cmp) Ports and a (possibly empty)
set of immediate subcomponents subs(cmp) Cmps,
1Note, the described instantiation with (1W for brCoA) could be consistent
(depending on the other subcomponents), but the component types are not!
Ports is a disjoint union of input and output ports where
each port p 2 Ports has a name, a type type(p) 2 Types,
and belongs to exactly one component p 2 ports(cmp),
Cons is a set of directed connectors con 2 Cons, each
of which connects two ports con:src; con:tgt 2 Ports of
the same type, which belong to two sibling components
or to a parent component and one of its immediate
subcomponents, and</p>
        <p>Types is a finite set of type names.</p>
        <p>
          C&amp;C models from Def. 1 are well-formed iff no component
is its own (transitive) subcomponent and has at most one direct
parent and subcomponents are connected legally (see [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and
[
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] for complete definitions).
        </p>
        <p>
          While some formalisms directly express C&amp;C models, e.g.,
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ], others provide component and connector type
definitions and their instantiation to define C&amp;C models, e.g.,
[
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. We use excerpts of component type definitions of
the ADL MontiArc in Def. 2.
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Definition 2 (Component Type Definition): A compo</title>
        <p>nent type definition is a structure ct = hcType; CPorts;
CSubs; CConsi 2 CTDefs where
cType uniquely identifies the component type,
CPorts is a set of input and output port definitions where
each port p 2 CPorts has a name and a type,
CSubs N ame CTDefs is a set of named
subcomponent declarations, and
CCons is a set of directed connector definitions con 2
CCons, each of which connects two port definitions
con:src; con:tgt of the same type, which belong to two
sibling subcomponent declarations or to a component
type definition and one of its subcomponent declarations.</p>
        <p>
          A component type t 2 CTDefs is instantiated to a C&amp;C
model by creating a component for c with subcomponents,
that are instances of t:CSubs with connectors according
to t:CCons. For a more detailed definition including
wellformedness rules and instantiation see [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>B. Extra-Functional Properties</title>
        <p>
          Extra-functional properties are attributes of a system or
subsystem that do not directly describe functionality. Various
definitions of extra-functional properties exist [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ],
[
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. Typical examples of extra-functional properties
include worst-case-execution-time, memory consumption,
security properties, usability, maintenance, interoperability,
testability, understandability, modifiability, reusability, correctness,
flexibility and also legal, economic, or cultural constraints [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ],
[
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Extra-functional properties can be quantitative, e.g.,
memory consumption, or qualitative, e.g., a security level or a
Boolean property indicating whether software is portable [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ].
        </p>
        <p>In this paper we focus on quantitative properties with
clear mathematical semantics such as power consumption,
traceability, or modes of encryption.</p>
      </sec>
      <sec id="sec-3-5">
        <title>C. Tagging Language</title>
        <p>
          Greifenberg et al. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] presented a mechanism to derive
tagging languages for domain specific modeling languages.
The mechanism uses two languages: the tag model, which
decorates the domain specific model with additional
information, and the tag schema, which defines the tag types that are
used in the tag model.
        </p>
        <p>
          Defining a tagging language based on this mechanism has
the following advantages: (1) The model will be kept clean
and, therefore, easy to read, not polluted with extra
information; (2) Inherent separation of concerns [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], as different
people can decorate the domain specific model with their
own separated tagging models; and (3) The tagging language
references the elements by their concrete syntax as they are
defined in the domain specific model.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. C&amp;C TAGGING LANGUAGE</title>
      <p>This section presents our first contribution, namely, the C&amp;C
tagging language, which allows one to add extra-functional
properties (encryption, ASIL level, traceability, memory usage,
power consumption, latency, etc.) from different domains
(security, safety, runtime, etc.) to existing C&amp;C models, without
changing them. Our tagging language enables tagging of all
C&amp;C elements from Def.s 1 and 2:
1) component definitions CTDefs, e.g., BrakeCtrl, and
instances Cmps, e.g. brCoA;
2) port definitions CPorts, e.g.,
BrakeCtrl.pitch</p>
      <p>Brake, and port instances Ports; and
3) connector definitions CCons, e.g.,
brCoA.brakeControl -&gt; parkController.brakeContolA,
and connector instances Cons.</p>
      <sec id="sec-4-1">
        <title>A. Tag Schema Definitions</title>
        <p>1 tagschema EmbeddedTagSchema {
2 tagtype traceable for ComponentInstance,</p>
        <p>ComponentDefinition;
3 tagtype power: Power for ComponentInstance,</p>
        <p>ComponentDefinition; // power consumption
4 tagtype encryption: [AES, RSA, DES, 3-DES]+</p>
        <p>for PortDefinition; // list of values
5 tagtype encryption: [AES, RSA, DES, 3-DES] for</p>
        <p>PortInstance; // one value
6 tagtype reliability: Number for</p>
        <p>ConnectorInstance;
7 }
8 }</p>
        <p>Listing 2. Definition of example schema EmbeddedTagSchema for
tagging C&amp;C models and type definitions.
1 conforms to EmbeddedTagSchema;
2 tags Example1 {
3 tag BrakeCtrl with traceable;
4 tag TurbineCtrl with power = 4W;
5 tag BrakeCtrl with power = 2010 mW;
6 tag MainCtrl.pitchBrake with encryption = [AES</p>
        <p>, RSA];
7 tag BrakeCtrl.pitchBrake with encryption = [</p>
        <p>DES, 3-DES];
Listing 3. Tag model for tagging concrete EFPs values to component
type definitions
1 conforms to EmbeddedTagSchema;
2 tags Example2 for turbineCtrl {
3 tag brCoA with traceable;
4 tag brCoA with power = 1 W;
5 tag brCoB with power = 2010 mW;
6 tag main.pitchBrake, brCoA.pitchBrake with</p>
        <p>encryption = AES;
7 tag brCoB.pitchBrake with DES;
8 tag brCoA.brakeControl -&gt; parkController.</p>
        <p>brakeControlA with reliability = 0.8;
9 }</p>
        <p>Listing 4. Tag model for tagging concrete EFPs values to component
instances</p>
        <p>The tag schema defines the types of the tags used to decorate
C&amp;C models. One may view tag schemes as meta-models.</p>
        <p>
          Similar to Greifenberg et al. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], we have the following tag set (+ sign in L. 4) containing one or more values of the
types: (1) simple tags, when one only cares whether a C&amp;C enumeration defined inside square brackets; whereas, in
conelement is or is not tagged with this information, similar to trast, tags for port instances contain exactly one enumeration
Java’s marker interface; (2) valued tags, decorating a C&amp;C value. This is due to the fact that a defined port can support
element with a tag containing a value, such as Boolean, multiple encryption modes, whereas a concrete port instance
Number, String, enumeration value or a JScience2 quantity en-/decrypts its data using one concrete algorithm.
(e.g. Power or DataAmount); and (3) complex tags to
store several values, such as estimated worst-case-execution B. Tag Model Definitions
time [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ] wcet = {time=800ms, confidence=50%}. After the tag schema is defined, C&amp;C elements can be
        </p>
        <p>Since complex tags consist of several simple or valued tags, tagged with it. Listings 3 and 4 tag C&amp;C element definitions
the rest of this paper handles only the simple and value tags. (Example1) and instances (Example2). Tag models have a</p>
        <p>The EmbeddedTagSchema in Lst. 2 defines a tag schema header and body (e.g., Lst. 3, ll. 1-2 and ll. 3-8), containing
for C&amp;C models used in an embedded context. It contains one additional information which is added to the C&amp;C elements.
simple tag traceable, which can be applied for compo- Every header starts with conforms to followed by the
nent instances and definitions, and three valued tags power, tag schema name to which the tag model definition conforms
encryption, and reliability. All defined tags start to. The header also includes the tags keyword and the tag
with tagtype, have a name, and end with for plus the model’s name (e.g., Example1). Additionally, the header
C&amp;C element to which the tag type can be applied; the valued may contain an optional list of C&amp;C elements (a comma
tag types have after the name additionally a colon followed separated list of names after the for keyword) to address
by a data type. The data type of a valued tag can depend these C&amp;C elements’ children directly in the body.
on the element decorated with it. This is the case for the A body is a container for several tag definitions starting
encryption tag, where port definitions are tagged with a with a tag keyword and ending with a semicolon. Each tag
definition has at least one C&amp;C element name and one tag
2see http://jscience.org/api/javax/measure/quantity/Quantity.html type name separated by the with keyword (e.g., Lst. 3, l. 3).
Valued tag types must additionally include the tag type’s value,
preceded by an equals sign (e.g., Lst. 3, l. 4). Multiple values
are assigned by using a comma separated list inside square
brackets (e.g., Lst. 3, l. 6).</p>
        <p>Line 3 in Lst. 3 adds the traceable tag to the
component instance turbineCtrl.brCoA, because the context is
turbineCtrl3 (l. 1). Line 8 in Lst. 4 shows that the domain
expert decorating C&amp;C elements needs no knowledge about
the C&amp;C meta-model and directly uses the concrete syntax of
the C&amp;C model (e.g., Lst. 1, l. 8).</p>
        <p>V. CONSISTENCY OF EXTRA-FUNCTIONAL-PROPERTIES</p>
        <p>We now present the second contribution of our paper,
namely, a framework for the definition of rich consistency rules
for tagged extra-functional property values.</p>
        <p>We distinguish between the consistency of EFP tags with
their tag schema and the more interesting consistency of
tagged EFP values in the context of the C&amp;C model. Our
rules for checking the consistency of tags and their schema are
independent of the specific semantics of the respective EFP.</p>
        <p>In contrast, the consistency rules for values in the context of
the C&amp;C model are very specific to the expressed EFP.</p>
      </sec>
      <sec id="sec-4-2">
        <title>A. Consistency of Tags and Tag Schema</title>
        <p>The following rules check for consistency of tags and their
tagging schema:
1) tag type names are unique per C&amp;C model element kind
2) tagged C&amp;C elements exist uniquely and are of the kind
defined in the schema
3) every C&amp;C element is tagged at most once per tag type
4) the tag value is of the data type defined in the schema
5) the unit of the tag is compatible with the unit in the
schema, e.g., W and mW but not W and s
6) for complex tags the above applies to every value.</p>
        <p>Note that rule 3 does not allow to tag a C&amp;C element twice
for the same EFP. While one could define strategies to resolve
possible inconsistencies, e.g., considering maximal or minimal
values, we added this rule to avoid inconsistencies.</p>
      </sec>
      <sec id="sec-4-3">
        <title>B. Consistency of Tags and C&amp;C Models</title>
        <p>In addition to the consistency of tags with their tag schema,
the consistency of a tagged EFP value may also depend on
its context in the C&amp;C model. More advanced examples of
consistency relate to component instantiation and composition
in C&amp;C models. It is important to note that the consistency of
a tagged EFP value may depend on multiple other C&amp;C model
elements and their relation. In addition, consistency may be
very specific to the EFP type, e.g., allowing subsets of values
or defining their bounds.</p>
        <p>To address the challenge of ensuring consistency of tagged
EFP values, we define a general framework based on
consistency rules. First, each rule defines what tag of which kind
of C&amp;C model element it checks. Second, the rule specifies
how to select relevant C&amp;C model elements for the check.
Third, the rule defines how to aggregate tagged values over the
selected elements. Finally, the aggregated value is compared to
the value of the checked element, to determine its consistency.
We summarize the structure of consistency rules in Def. 3</p>
      </sec>
      <sec id="sec-4-4">
        <title>Definition 3 (EFP Value Consistency Rule): A consistency</title>
        <p>rule is a structure consisting of:
checks name of tag and element checked by rule;
selection selects relevant C&amp;C elements to check consistency;
aggregation aggregates values of selected elements; and
comparison compares values to decide consistency.</p>
        <p>The next two subsections illustrate consistency definition
rules according to Def. 3. Sect. V-B1 presents example rules
for the consistency of EFP values in the context of component
type instantiation. Sect. V-B2 presents example rules in the
context of composition.</p>
        <p>1) Instantiation Consistency Examples: Instantiation
consistency checks whether the EFPs of C&amp;C model instances
conform to the EFPs of their type definitions. To simplify the
definition of rules, we employ a general operator typeOf :
Cmps ! CTDefs, which given a component instance returns
its uniquely determined component type.</p>
        <p>Rule 1 (InstTrace): If the component type definition is
traceable, all instances have to be traceable:
checks: tag traceable of c 2 Cmps
selection: t := typeOf (c) 2 CTDefs
aggregation: v := t:traceable
comparison: v ) c:traceable
In our example, component type BrakeCtrl is tagged as
traceable in Lst. 3, l. 3. while component instance brCoB
is not tagged as traceable. It will thus be reported by
Rule 1 as inconsistent.</p>
        <p>Rule 2 (InstPower): The power consumption of an instance
is at most the power consumption of its type:
checks: tag power of c 2 Cmps
selection: t := typeOf (c) 2 CTDefs
aggregation: v := c:power
comparison: v t:power</p>
        <p>In our example, both component instances of type
BrakeCtrl pass the check of Rule 2 with 1W 2010mW
for brCoA and 2010mW 2010mW for brCoB (see Lst. 3,
l. 5 and Lst. 4, ll. 4-5).</p>
        <p>Rule 3 (InstEncryption): The encryption of a port instance
must be in the encryption set of the port definition:
checks: tag encryption of p 2 Ports
selection: pt := THE 4pt 2 typeOf (p:parent5):CPorts :
pt:name = p:name
aggregation: v := pt:encryption
comparison: p:encryption 2 v</p>
        <p>In our example, the port instances main.pitchBrake
and brCoB.pitchBrake pass Rule 1, while port
instance brCoA.pitchBrake violates Rule 3: AES 2= v =
fDES; 3-DESg (see Lst. 4, l. 6 and Lst. 3, l. 7).</p>
        <p>3turbineCtrl is the top-level instance of the component type
TurbineCtrl defined in Lst. 1
4Definite description operator THE x : P (x) returns x satisfying P (x).
5The parent of a port is the component it belongs to.</p>
        <p>2) Composition Consistency Examples: Composition
consistency checks whether the EFPs of C&amp;C model elements are
consistent across their composition. The following example
rules address consistency on the type level. Similar rules can
be defined on the instance level.</p>
        <p>Rule 4 (CompPower): The combined power consumption of
all subcomponents is at most the power consumption of the
composed component:
checks: tag power of c 2 CTDefs
selection: S := c:CSubs
aggregation: v := P
(name;ct)2S
c:power</p>
        <p>ct:power
comparison: v</p>
        <p>In our example, the component type TurbineCtrl
contains subcomponents brCoA and brCoB of type BrakeCtrl
and v = 2010mW + 2010mW + : : : 6 4W , i.e., the tagged
value of 4W violates Rule 4 and is thus inconsistent.</p>
        <p>Rule 5 (CompEncryption): A receiver port must support at
least one encryption of its sender ports.</p>
        <p>checks: tag encryption of p 2 CPorts
selection: P := fp0 j 9con 2 CCons : (p0 = con:src ^
p = con:tgt)g
aggregation: v :=</p>
        <p>T p:encryption
p02P
comparison: v \ p:encryption 6= ;</p>
        <p>In our example, the port BrakeCtrl.pitchBrake
supports encryption DES and 3-DES (Lst. 3, l. 7), and is a
receiving port for MainCtrl.pitchBrake with encryption
AES and RSA (Lst. 3, l. 6). Rule 5 will report port
BrakeCtrl.pitchBrake as inconsistent.</p>
        <p>The above examples of Rule 1 to Rule 5 show the
expressiveness of consistency rules of our framework that cover
various EFPs and C&amp;C element relations.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>VI. IMPLEMENTATION AND DISCUSSION</title>
      <sec id="sec-5-1">
        <title>A. Implementation</title>
        <p>
          We implemented the tagging language together with its EFP
consistency checks in MontiArc [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], a textual C&amp;C modeling
framework. The workflow of processing MontiArc models is
as follows: (1) The parser converts the textual input model
to an abstract syntax tree (AST); (2) The AST is traversed
to store all model definitions as symbols in the symbol table
(ST); (3) Based on the AST and the model definition symbols,
all C&amp;C instances’ symbols are created by (a) resolving the
component extension chains, (b) binding all generics, and (c)
recursively instantiating all subcomponent hierarchies.
        </p>
        <p>
          Although the MontiArc tagging language is based on the
same concepts and concrete syntax as the one presented in
Greifenberg et al. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], our approach adds tags to the ST
while their method enriches the AST directly. Decorating
the ST has the following advantages: (1) The ST represents
the semantic model [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], and, thus, in contrast to the
AST (see ArcConnector and ArcSimpleConnector
in [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]), each C&amp;C element in Def. 1 and Def. 2 is represented
by exactly one symbol; (2) Since MontiArc’s AST is a mixture
of C&amp;C model definitions and instantiations for
readability purposes, it is not possible to tag chains of instances
(e.g., turbineCtrl.brCoA.brakeControl) differently
as both of them are represented by the same AST node; the ST
solves this problem by providing separate symbols for C&amp;C
definitions and for all C&amp;C instances; and (3) Contrary to the
AST, the ST is a graph with additional references making
it possible to easily navigate through it and execute more
complex selections as needed for consistency checks, e.g., in
Rule 5.
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>B. Discussion</title>
        <p>The ST’s resolving mechanism – containing bidirectional
navigation together with symbol filtering and adaption – as
well as the ability to add several different EFP tags to the same
C&amp;C element symbol, allows to check constraints between
different EFPs, such as time vs. data amount. We consider
this to be a nice property of our work.</p>
        <p>
          Regarding composition, the complex tag is a composition
of tags (which can be complex themselves). This way, it is
possible to logically group EFPs (e.g., power consumption and
confidence) as is suggested by Shaw [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ] and implemented by
Sentilles et al. [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
        </p>
        <p>
          It is important to note that extra-functional properties may
evolve, together with knowledge about a system [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
They may also depend on the viewpoint of stakeholders [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ],
which can be solved by tagging the extra-functional tags again
with the stakeholders name. Since it is possible to tag elements
or tags several times, one tag can be tagged by different
stakeholders. Since all the tags (including tags of tags) are
stored in the same ST, consistency constraints can also be
expressed between tags of tags with the same concepts shown
in Sect. V. For simplicity, in this paper we did not discuss the
tagging of one element multiple times. Rather than multiple
tagging, we consider organizing ownership by using separate
tag models. Meta-model approaches cannot easily do it but it
is natural in our approach.
        </p>
        <p>Note that depending on the EFP type and its composition
and instantiation semantics, the consistency of composition
on the type level and the consistency of instantiation, do not
guarantee consistency of instance composition. Our presented
port encryption semantics in Rule 3 and Rule 5 still allow for
inconsistent instance compositions. We believe that a unified
framework, as the one we have presented, is a first step towards
reasoning about EFP consistency.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>VII. RELATED WORK</title>
      <p>
        Espinoza et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] annotate UML/MARTE models with
quantitative EFPs. One of their main goals is to distinguish
sources of EFPs, e.g., requirement vs. measurement during
test. This could be done with complex tags containing the
actual value and the value source.
      </p>
      <p>
        Grunske [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] presents an evaluation framework for EFPs
consisting of four elements: usage profile, evaluation model,
composition algorithm, and evaluation algorithm. We focus on
solutions for the composition and evaluation parts.
      </p>
      <p>
        Sentilles et al. [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] present a meta-model for integrating
non-functional properties into C&amp;C models. Their model
allows to specify multiple values per attribute with validity
conditions, dependencies, and version information. Since our
models are all text-based, external version control mechanisms
such as Git or SVN can handle EFP’s history. All the other
information, e.g., validity condition or dependencies, can be
expressed via complex tags. Finally, the complete information
tagging is available in the symbol table for consistency checks.
      </p>
      <p>
        Leveque et al. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] present a way to express refinement
of attribute values for instances and subtypes of components.
Similar rules can be defined in our framework. For MontiArc,
one can formulate EFP consistency constraints for refinements
of port types (Java-like inheritance and generics) as well as for
refinements of components (inheritance of component types).
      </p>
      <p>
        Cicchetti et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] introduce a framework for evolution of
EFP values and present, as an example, how the change of the
worst-case-execution time (WCET) of a component requires
updating the WCET of its parent component. It is possible to
extend our framework to support similar evolution scenarios.
      </p>
      <p>
        Sapienza et al. [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] motivate the benefit of composing EFPs
of components in embedded system design. They present a
general classification of property composability and provide
many examples. In their terminology, our rules for consistency
of composed components compute non-emergent, directly
composable properties. Additional types of composition
identified by Sapienza et al. [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] require further information beyond
the tagging language and C&amp;C model.
      </p>
    </sec>
    <sec id="sec-7">
      <title>VIII. CONCLUSION</title>
      <p>We presented a mechanism to enrich existing C&amp;C models
with consistent extra-functional properties. The strengths of
our approach are: (1) All EFPs are stored in separate files to
avoid model pollution, (2) The tag schema is used to validate
tag models to avoid tagging mistakes (typos, wrong units,
wrong C&amp;C element, etc.), (3) EFP-specific consistency rules
between tagged C&amp;C elements (C&amp;C definitions as well as
C&amp;C instantiations) can be defined and verified.</p>
      <p>We illustrated the two main contributions, our tagging
language and consistency rule framework, using several
examples. The examples cover many scenarios of consistency
defined also in related work.</p>
      <p>
        As future work we consider the application of
extrafunctional property tags to C&amp;C views, with corresponding
verification between views and models, extending [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
Acknowledgements Part of this work was done while Shahar Maoz was on sabbatical
as visiting scientist at MIT CSAIL. This research was supported by a Grant from the
GIF, the German-Israeli Foundation for Scientific Research and Development.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Cavano</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>McCall</surname>
          </string-name>
          .
          <article-title>A framework for the measurement of software quality</article-title>
          .
          <source>SIGSOFT Softw. Eng. Notes</source>
          ,
          <volume>3</volume>
          (
          <issue>5</issue>
          ):
          <fpage>133</fpage>
          -
          <lpage>139</lpage>
          , Jan.
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Ciccozzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Leveque</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Sentilles</surname>
          </string-name>
          .
          <article-title>Evolution management of extra-functional properties in component-based embedded systems</article-title>
          .
          <source>In CBSE</source>
          , pages
          <fpage>93</fpage>
          -
          <lpage>102</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>E. W.</given-names>
            <surname>Dijkstra</surname>
          </string-name>
          .
          <article-title>A discipline of programming</article-title>
          , volume
          <volume>1</volume>
          . prentice-hall
          <source>Englewood Cliffs</source>
          ,
          <year>1976</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>H.</given-names>
            <surname>Espinoza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Dubois</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gérard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L. M.</given-names>
            <surname>Pasaje</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Petriu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C. M.</given-names>
            <surname>Woodside</surname>
          </string-name>
          .
          <article-title>Annotating UML models with non-functional properties for quantitative analysis</article-title>
          .
          <source>In MoDELS Int. Workshops</source>
          , pages
          <fpage>79</fpage>
          -
          <lpage>90</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P. H.</given-names>
            <surname>Feiler</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. P.</given-names>
            <surname>Gluch</surname>
          </string-name>
          .
          <article-title>Model-Based Engineering with AADL: An Introduction to the SAE Architecture Analysis</article-title>
          &amp;
          <string-name>
            <given-names>Design</given-names>
            <surname>Language. Addison-Wesley</surname>
          </string-name>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler</surname>
          </string-name>
          .
          <source>Domain-Specific Languages. Addison-Wesley</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Garlan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. T.</given-names>
            <surname>Monroe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Wile</surname>
          </string-name>
          . Acme:
          <article-title>An architecture description interchange language</article-title>
          .
          <source>In CASCON</source>
          , pages
          <fpage>169</fpage>
          -
          <lpage>183</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Glinz</surname>
          </string-name>
          .
          <article-title>On non-functional requirements</article-title>
          .
          <source>In RE</source>
          , pages
          <fpage>21</fpage>
          -
          <lpage>26</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>T.</given-names>
            <surname>Greifenberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Look</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Roidl</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Engineering Tagging Languages for DSLs</article-title>
          . In MoDELS, pages
          <fpage>34</fpage>
          -
          <lpage>43</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>L.</given-names>
            <surname>Grunske</surname>
          </string-name>
          .
          <article-title>Early quality prediction of component-based systems - A generic framework</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>80</volume>
          (
          <issue>5</issue>
          ):
          <fpage>678</fpage>
          -
          <lpage>686</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Haber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe. MontiArc - Architectural Modeling</surname>
          </string-name>
          of Interactive Distributed and
          <string-name>
            <surname>Cyber-Physical Systems</surname>
          </string-name>
          .
          <source>Technical Report AIB-2012-03</source>
          , RWTH Aachen, february
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Huber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Schätz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Spies</surname>
          </string-name>
          .
          <article-title>Autofocus: A tool for distributed systems specification</article-title>
          .
          <source>In FTRTFT</source>
          , pages
          <fpage>467</fpage>
          -
          <lpage>470</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>H.</given-names>
            <surname>Krahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Völkel</surname>
          </string-name>
          .
          <article-title>Monticore: a framework for compositional development of domain specific languages</article-title>
          . In
          <source>International Journal on Software Tools for Technology Transfer (STTT)</source>
          , volume
          <volume>12</volume>
          , pages
          <fpage>353</fpage>
          -
          <lpage>372</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>T.</given-names>
            <surname>Leveque</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Sentilles</surname>
          </string-name>
          .
          <article-title>Refining extra-functional property values in hierarchical component models</article-title>
          .
          <source>In CBSE</source>
          , pages
          <fpage>83</fpage>
          -
          <lpage>92</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S.</given-names>
            <surname>Maoz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Synthesis of component and connector models from crosscutting structural views</article-title>
          .
          <source>In FSE</source>
          , pages
          <fpage>444</fpage>
          -
          <lpage>454</lpage>
          . ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Maoz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Verifying component and connector models against crosscutting structural views</article-title>
          .
          <source>In ICSE</source>
          , pages
          <fpage>95</fpage>
          -
          <lpage>105</lpage>
          . ACM,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>N.</given-names>
            <surname>Medvidovic</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Taylor</surname>
          </string-name>
          . A Classification and
          <article-title>Comparison Framework for Software Architecture Description Languages</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Magee</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>Evolving software architecture descriptions of critical systems</article-title>
          .
          <source>IEEE Computer</source>
          ,
          <volume>43</volume>
          (
          <issue>5</issue>
          ):
          <fpage>42</fpage>
          -
          <lpage>48</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>P.</given-names>
            <surname>Mir Seyed Nazari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Roth</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Rumpe</surname>
          </string-name>
          .
          <article-title>An Extended Symbol Table Infrastructure to Manage the Composition of Output-Specific Generator Information</article-title>
          . In Modellierung 2016 Conference,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>OMG. UML</surname>
          </string-name>
          <article-title>Profile for MARTE: Modeling and Analysis of Real-Time Embedded Systems</article-title>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Rawashdeh</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Matalkah</surname>
          </string-name>
          .
          <article-title>A new software quality model for evaluating COTS components</article-title>
          .
          <source>Journal of Computer Science</source>
          ,
          <volume>2</volume>
          (
          <issue>4</issue>
          ):
          <fpage>373</fpage>
          -
          <lpage>381</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>J. O.</given-names>
            <surname>Ringert</surname>
          </string-name>
          .
          <source>Analysis and Synthesis of Interactive Component and Connector Systems. Aachener Informatik-Berichte, Software Engineering, Band</source>
          <volume>19</volume>
          . Shaker Verlag,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>G. C.</given-names>
            <surname>Roman</surname>
          </string-name>
          .
          <article-title>A taxonomy of current issues in requirements engineering</article-title>
          .
          <source>Computer</source>
          ,
          <volume>18</volume>
          (
          <issue>4</issue>
          ):
          <fpage>14</fpage>
          -
          <lpage>23</lpage>
          ,
          <year>April 1985</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Saadatmand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cicchetti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Sjödin</surname>
          </string-name>
          .
          <article-title>UML-based modeling of non-functional requirements in telecommunication systems</article-title>
          .
          <source>In 6th Int. Conf. on Software Engineering Advances (ICSEA)</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sapienza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sentilles</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Crnkovic</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Seceleanu</surname>
          </string-name>
          .
          <article-title>Extra-functional properties composability for embedded systems partitioning</article-title>
          .
          <source>In CBSE</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sentilles</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Stepan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Carlson</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Crnkovic.</surname>
          </string-name>
          <article-title>Integration of extrafunctional properties in component models</article-title>
          .
          <source>In CBSE</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>M.</given-names>
            <surname>Shaw</surname>
          </string-name>
          .
          <article-title>Truth vs. knowledge: the difference between what a component does and what we know it does</article-title>
          .
          <source>In 8th Int. Wrksp. on Software Specification and Design</source>
          , pages
          <fpage>181</fpage>
          -
          <lpage>185</lpage>
          . IEEE,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>J.</given-names>
            <surname>Suryadevara</surname>
          </string-name>
          , G. Sapienza,
          <string-name>
            <given-names>C. C.</given-names>
            <surname>Seceleanu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Seceleanu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. E.</given-names>
            <surname>Ellevseth</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Pettersson</surname>
          </string-name>
          .
          <article-title>Wind turbine system: An industrial case study in formal modeling and verification</article-title>
          .
          <source>In FTSCS</source>
          , pages
          <fpage>229</fpage>
          -
          <lpage>245</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>MathWorks</given-names>
            <surname>Simulink</surname>
          </string-name>
          . http://www.mathworks.com/products/simulink/.
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>S.</given-names>
            <surname>Zschaler</surname>
          </string-name>
          .
          <article-title>Formal specification of non-functional properties of component-based software systems</article-title>
          .
          <source>Software and System Modeling</source>
          ,
          <volume>9</volume>
          (
          <issue>2</issue>
          ):
          <fpage>161</fpage>
          -
          <lpage>201</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>