<!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 Graph Transformation Approach to Introducing Aspects into Software Architectures</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>1st Md Nour Hossain</string-name>
          <email>hossaimn@mcmaster.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>2nd Wolfram Kahl</string-name>
          <email>kahl@mcmaster.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>3rd Tom Maibaum</string-name>
          <email>tom@maibaum.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dept. of Computing and Software, McMaster University</institution>
          ,
          <addr-line>Hamilton</addr-line>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-While aspect-oriented programming (AOP) addresses introduction of “aspects” at the code level, we argue that addressing this at the level of software architecture is conceptually more adequate, since many aspects, that is, “crosscutting concerns”, are formulated already in the requirements, and therefore can be dealt with in a more controlled manner in the “earlier” phase of software architecture design. We use Fiadeiro and Maibaum's [11] precise concept of software architectures organized as diagrams over a category of component specifications, where architecture semantics is defined as the colimit specification of the diagram. The diagram structure suggests aspect introduction via an appropriate variant of graph transformation. Single-pushout rewriting in categories of total homomorphisms has previously already been used for different kinds of “enrichment” transformations; we identify “zigzag-path homomorphisms” as underlying a category where many practically useful aspect introductions turn out to be such single-pushout transformations, and present the relevant theorems concerning pushout existence and pushout construction. Practical aspect introduction (e.g., privacy) always breaks some properties (e.g., “message can be read in transit”); therefore, aspect introduction transformations cannot be designed to be semantics preserving. Our special categorical setting enables selective reasoning about property preservation in the transformed specifications, and property introduction from the introduced aspects. This method enables us to detect and resolve both conflicts and undesirable emergent behaviors that arise from aspect introduction or interaction. Index Terms-Software architecture, aspect introduction, graph transformation</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>I. INTRODUCTION</p>
      <p>
        The relationship between the requirements and the
components of a system is not always straightforward. Regardless
of the size of the system, sometimes in practice a single
requirement might not be implemented by a single
component and some components might implement more than one
requirement [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. This is because functional decomposition
“cuts across” other kinds of decomposition.
      </p>
      <p>
        In spite of the wide acceptance of separation of concerns
as a good software engineering principle, most attempts to
define concerns try to relate them to programs [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. “In
fact, as discussed by Jacobsen and Ng (2004), concerns are
really reflections of the system requirements and priorities of
stakeholders in the system” [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. If we relate concerns with
requirements, then aspects are cross-cutting concerns/system
concerns that cross-cut through different core concerns or
apply to a whole system [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Some good examples of aspects
are performance, reliability, security, authorization,
synchronization, error handling [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
      </p>
      <p>
        Aspect-oriented programming [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] is a complementary
programming technique to generalized-procedural
programming languages ( [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]). It allows design and code to be
more modular to reflect the developers’ view of the system
by modularizing away the cross-cutting functionality from the
base program into a separate module (also called aspect) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ],
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
      </p>
      <p>
        Though the aspect-oriented community claims that AOP
has some commendable characteristics, unfortunately, it has
some significant drawbacks as well. For the very same reason
for which [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] in his famous letter considered goto statements
harmful, [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] characterize AOP as the modern-day “OOP goto”
and provocatively asks “AOP considered harmful?”. Besides
that, rather than making the system simpler, sometimes AOP
may increase the complexity of the system (to a certain degree)
and lead to almost untraceable problems [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. However, not
only the methodology, but also having to deal with aspects
at the programming language level, is one of the reasons that
inevitably leads AOP to many of these problems.
      </p>
      <p>We can mitigate the problems in aspect-oriented software
development by introducing aspects in the earlier stages of
software development, in particular at the software architecture
level (a comprehensible higher level abstraction of an overall
system structure).</p>
      <p>Introducing aspects at the architecture level streamlines the
process of aspect-oriented software development and has some
other potential advantages. Our methodology mitigates the
complexity of system evolution by making the system
evolution mechanical instead of manual. Aspects at the architecture
level allow developers and other stakeholders to recognize,
represent, analyze and evaluate its abstract representation at the
earlier stages of software development. As a consequence, the
system representation at this level is more comprehensive/all
inclusive, and the design decisions will be clearly captured in
the actual code. It also induces some other benefits in terms of
documentation (i.e., user, system, and design documentation)
and cost. The technique we are using to define the system
specification from component and connector specifications
will allow us not only to reuse small components but also the
whole system, i.e., make it a part of a larger system. Finally,
we will be able to analyze the new architecture by proving
its safety and liveness properties, check its conformance with
the old architecture, and detect conflicts, if any exists, due to
feature interactions.</p>
      <p>In this paper, we address the following problem: “How
to introduce aspects at the software architecture level?”. Our
solution is to develop a technique to deal with aspects by
encapsulating them as graph transformation rules on the
diagram representing the architecture and applying the aspect by
performing the graph transformation. In order to implement
our solution, we need to answer the following challenging
question:</p>
      <p>Research Question (How to Introduce Aspects). What
transformation technique will allow us to introduce aspects
at the architecture level and verify the properties that need
to be preserved from the old architecture and the properties
introduced by the aspect?</p>
      <p>
        An effective solution to our research question depends on a
few considerations, such as how do we specify the components
and connectors, and how do we define the architecture or
system specification. Fiadeiro and Maibaum introduce a logic to
describe (specify) architecture components and connectors and
a technique to specify the system or architecture specification
as a diagram involving component and connector
specifications [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. The logic they introduce is similar to Modal
Dynamic Logic, except that here actions are propositions. The
language has a special logical principle called “locality”. This
notion of “locality” has been used successfully to represent
the software engineering principle of data abstraction, scope
and encapsulation. In order to combine the components, the
category theoretic notion of colimit is used. The technique
used to specify the system specification from components
and connectors is independent of the underlying logic and
successfully modeled software engineering principles such as
modularity, inheritance, incrementality, reusability, and other
related concepts [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]–[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Therefore diagram transformation
implies aspect introduction.
      </p>
      <p>Since none of the present graph transformation approaches
(i.e., double-pushout, single-pushout, hyperedge replacement
graph grammars) are applicable in our case, in order to
perform the graph transformation, we are proposing a new
transformation technique. This technique is somewhat inspired
by the hyperedge replacement graph transformation technique.
Besides that, the category-theoretic notions of Kleisli category,
monad, and pushout also have some contribution to define the
transformation, and, finally, help us to figure out a structured
way to introduce an aspect at the architecture level by
performing a diagram transformation.</p>
      <p>This paper will proceed as follows: In Section II we briefly
introduce the logic and formally define some of the essential
terminology as a prerequisite for a better understanding of our
research goal. Then, in Section III, we illustrate our research
challenge and analyze the application of the established graph
transformation techniques in our setting, followed by Section
IV, where we formally introduce our zigzag graph
homomorphism concept and its instantiation for system architectures.
Section V contains two graph transformation rules and an
example of aspect introduction. How to construct the
resulting architecture by applying our transformation technique is
explained in Section VI. The conformance check of the new
system architecture to the old system architecture is introduced
in Section VII.</p>
      <p>In Section VIII, we discuss some related work along
with the similarities and dissimilarities between different
approaches. Finally, future work and conclusions are presented
in Sections IX and X.</p>
      <p>
        II. FORMAL DEFINITION OF SYSTEM ARCHITECTURES
The logic we are using was introduced by Fiadeiro and
Maibaum [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. The specification of a component is a pair
( ; ) where is the signature of the component and is a
finite set of formulas over .
      </p>
    </sec>
    <sec id="sec-2">
      <title>A signature homomorphism from 1 to 2 identifies the</title>
      <p>symbols in 2 that correspond to the symbols in 1.</p>
    </sec>
    <sec id="sec-3">
      <title>A specification homomorphism between two component</title>
      <p>
        specifications ( 1; 1) and ( 2; 2) is a signature
homomorphism from 1 to 2 such that for every axiom p 2 1 and
also for the locality axiom [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] which asserts a useful kind
of local control for the state transition semantics of 1, the
translation (p) is a semantic consequence of 2.
      </p>
      <p>Fact 1: x[11, Prop. 3.1.7] Component specifications and
their specification morphisms form a category SPEC.</p>
      <p>
        Following Fiadeiro and Maibaum [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], we use colimits to
define the semantics of system architectures, which are defined
to be diagrams over this category. A diagram over a category
is a “shape graph” together with an assignment of objects
to vertices, and of compatible morphisms to edges — the
following definitions follow standard practice:
      </p>
      <p>Definition 1: A (directed) graph G = (V ; E ; src; tgt)
consists of a vertex set V , and edge set E , and the source
and target mappings src; tgt : E ! V .</p>
      <p>
        Definition 2: A diagram in a category C is a graph
homomorphism D : I ! jC j for some graph I . The graph
I is called the shape graph of the diagram [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        In the following, we assume a choice of colimits in SPEC,
and follow [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] in referring to the logical consequences of the
axioms of a specification as its properties:
      </p>
    </sec>
    <sec id="sec-4">
      <title>Definition 3: A system architecture is a diagram in the</title>
      <p>category SPEC.</p>
      <p>The properties of a system architecture are the properties
of the colimit of the diagram.</p>
      <p>In the view that considers diagrams as functors instead of
just graph homomorphisms, the standard homomorphisms
concept for these diagrams is just that of natural transformations:</p>
    </sec>
    <sec id="sec-5">
      <title>Definition 4: A system architecture homomorphism H :</title>
      <sec id="sec-5-1">
        <title>A1 ! A2 from architecture A1 to architecture A2 is a triple</title>
        <p>H : (HV ,HE ,HSpecMap) consisting of:
node mapping HV : A1:V ! A2:V ,
edge mapping HE : A1:E ! A2:E ,
transformation HSpecMap selecting for each node n1 :
A1:V a specification homomorphism</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>HSpecMapn1 : SpecHom (A1 n1) (A2 (HV n1);</title>
      <p>such that for each edge e : A1:E we have the following:</p>
    </sec>
    <sec id="sec-7">
      <title>HSpecMap(src e)</title>
      <p>A2:src(HE e) = HV (A1:src e)</p>
      <p>A2:tgt(HE e) = HV (A1:tgt e)
HSpecMap(tgt e) A1 e = A2 (HE e)</p>
      <p>HSpecMap(src e) is an isomorphism</p>
      <p>Definition 5: SysArchs is the category where objects are
system architectures and morphisms are system architecture
homomorphisms.</p>
      <p>The last condition of Def. 4 is sufficient to ensure that
SysArchs has pushouts.</p>
      <p>With this concept of system architecture in hand,
introducing aspects at the system architecture level is now easily
understood as a kind of diagram transformation.</p>
      <p>III. ASPECT INTRODUCTION AS DIAGRAM</p>
      <p>TRANSFORMATION
For the system architectures as defined in the previous section,
we now explore how aspect introduction can be performed
via diagram transformation; in the current section we
concentrate on the shape graph aspect of this. By considering
a concrete example, we will demonstrate that the kind of
aspect introduction we aim for is not covered by existing graph
transformation concepts; in the following sections, we will
then find an appropriate formalization for the kind of diagram
transformation we need.</p>
      <p>Literally, transformation of something means change in its
shape or appearance. In graph transformation, the underlying
entity whose form is changed is a graph, and this change is
controlled by rules r = (L ! R) (often called production
rules). The graph on which we apply the transformation rule
is called the application graph (A). Rule application to some
application graph (A) requires finding an occurrence of an
instance of a left-hand side (L). The graph that is the outcome
of the transformation is called the result graph (B).</p>
      <p>Graph transformation is a powerful tool and it can be used
to resemble all the common terminologies associated with
aspect oriented programming. The term “aspect” has the same
meaning for both AOP and the graph transformation technique,
i.e., cross-cutting concerns. A graph rewriting rule can be
considered as an aspect program. The join point and advice
of AOP can be represented as the left-hand side and
righthand side of a rule in the graph transformation technique.
The matching of a left-hand side into the application graph
corresponds to the term pointcut. The way a transformation
step is generated is equivalent to weaving, and the combination
of both the base and aspect programs is resembled by the result
graph.</p>
      <p>The primary motivation for our work is to streamline the
process of aspect-oriented software development by
developing a technique to introduce aspects in the early stages of
software development, i.e., at the software architecture stage.
To recall, aspects are concerns (priorities of stakeholders) that
cross-cut through different core/functional concerns. Through
the following example, we will illustrate what we mean by
aspect introduction.</p>
      <p>Consider the diagram in Figure 1. This diagram is an
architecture for sender-receiver communication. Here the
component Sender sends a message to the component transmitter
(Trans), and the transmitter transmits it to the component
Receiver. In order to synchronize/communicate, Sender and
Trans share the sub-component SendTrans. The connection
via this sub-component along with the two arrows ST2S,
ST2T identifies the commonalities between Sender and Trans,
and allows them to communicate. Similarly, the components
Trans and Receiver synchronize by sharing the connector
TR2T TransRec TR2!R.</p>
      <p>Now, consider the architecture in Figure 2. Here the
component Sender sends an enciphered message to the component
transmitter (Trans), and the transmitter transmits it to the
component Receiver, but the Receiver deciphers the message
before its final acceptance.</p>
      <sec id="sec-7-1">
        <title>SendEnci</title>
      </sec>
      <sec id="sec-7-2">
        <title>SendTrans</title>
      </sec>
      <sec id="sec-7-3">
        <title>TransRec</title>
      </sec>
      <sec id="sec-7-4">
        <title>DecRec</title>
        <p>SE2S SE2E
ST2E ST2T
TR2T
TR2D
DR2D DR2R</p>
      </sec>
      <sec id="sec-7-5">
        <title>Sender</title>
      </sec>
      <sec id="sec-7-6">
        <title>Encipherer</title>
      </sec>
      <sec id="sec-7-7">
        <title>Trans</title>
      </sec>
      <sec id="sec-7-8">
        <title>Decipherer Receiver</title>
        <p>
          So, what did we do here? We introduced a security aspect
into an architecture where unsecured communication existed
and made the architecture “secured”. But the challenging
question is: How can we systematically introduce such aspects
into software architectures? Simple cases of this, as the one
shown in Figure 3, suggest that standard categorical graph
transformation concepts, such as the double-pushout (DPO)
approach [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], should be applicable. Different style and color
edges are used in the diagrams to make the matching obvious.
        </p>
        <p>However, with more complex application architectures, we
find situations where we consider aspect introduction to still
make sense, even though no total shape graph homomorphism
exists from the left-hand side of the rule, and such total
matchings would be required both for the single-pushout approach
and for the double-pushout approach to graph transformation.</p>
        <p>For example, given an architecture containing a “secure”
communication channel, if we want to introduce reliability
S2S SS2S ST2S ST2T TR2T</p>
        <p>TR2R BR2R BR2B
into this architecture through the DPO approach and make the
architecture both secure and reliable, the transformation would
have to look like Figure 4.</p>
        <p>However, we notice that there is no structure-preserving
matching XL from the “Rule LHS” to the “Application
Architecture”, since we cannot find in the “Application
Architecture” any match for the edges ST 2S and TR2R of the
LHS. Hence, in this kind of setting, the conventional graph
homomorphism “does not work”, and therefore the DPO and
SPO approaches cannot be used directly.</p>
        <p>The type of matching we require is pictured in Figure 5; the
fact that we need this kind of “indirect” matching is the most
obvious reason why conventional DPO/SPO is not directly
applicable. Here, a single edge can map to a zigzag path and
mappings between vertices are specification homomorphism.
For further illustration see section IV.</p>
        <p>IV. ZIGZAG PATH HOMOMORPHISMS</p>
        <p>Although we are using directed graphs to underpin our
system architectures, the paths we will be considering for</p>
      </sec>
      <sec id="sec-7-9">
        <title>ReceiverL</title>
        <p>source2source
matching
egde2zigzag
target2target</p>
      </sec>
      <sec id="sec-7-10">
        <title>TransRec</title>
      </sec>
      <sec id="sec-7-11">
        <title>DecRec</title>
        <p>TR2D
DR2D
DR2R</p>
      </sec>
      <sec id="sec-7-12">
        <title>Decipherer</title>
      </sec>
      <sec id="sec-7-13">
        <title>ReceiverA</title>
        <p>modification by aspect introduction are not directed1, that is,
edges in such paths can be traversed in any direction:</p>
        <p>Definition 6: A zigzag path p in a graph G is a alternating
list p = hv0; e1; v1; e2; v2; ::::::ek; vki of vertices and directed
edges, traversed in arbitrary directions, where
the first and last element are always vertices, called the
source and the target of the path;
k 0 is the length of p;
ei is incident with vi 1 and vi for i 2 1:::; k 1.</p>
        <p>The set of all zigzag paths in G will be written ZpathG .</p>
        <p>Definition 7: Given two graphs Gi = (Vi; Ei; srci; tgti) for
i = 1; 2, a Zpath homomorphism H : G1 ! G2 consists of
two functions, Hv : V1 ! V2, and Hep : E1 ! ZpathG2 such
that the two diagrams in Figure 6 commute.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>ZpathG 2</title>
      <p>E1</p>
    </sec>
    <sec id="sec-9">
      <title>ZpathG 2</title>
      <p>Hep</p>
      <p>Hv
E1
V1</p>
      <p>Hep</p>
      <p>Hv
src1
source2
tgt1</p>
      <p>target2</p>
      <p>V2 V1
Fig. 6. Zpath Graph Homomorphism
V2</p>
      <p>For the matchings as explained in the previous section,
we now allow edges to be matched to zigzag paths. In the
example there, this corresponds to identifying the zigzag path
SendTrans ! Encipherer SendEnci ! Sender in the
secured communication architecture in Figure 4 as “reasonably
matching” the communication setup ST 2S : SendTrans !
Sender in the rule LHS.</p>
    </sec>
    <sec id="sec-10">
      <title>Definition 8: A system architecture Zpath homomorphism</title>
      <p>is a tuple H = (HV ; HZ ; HSpecMap) consisting of a shape
graph Zpath homomorphism (HV ; HZ ) , and the mapping
HSpecMap that assigns to each vertex n : V1 a specification
1A directed path is a sequence of vertices connected by directed edges
where all the edges are traversed along their direction.
homomorphism HSpecMap n : A1 n ! A2 (HV n), such that
source node specifications are preserved, that is, for each edge
e : A1:E , the specification homomorphism HSpecMap(src e) is
an isomorphism.</p>
      <p>Note that we included no conditions on interaction between
the range of HSpecMap and the specification homomorphisms
labelling the edges of the image paths of HZ — for different
kinds of property preservation, different and rather specialized
conditions are necessary, which are beyond the scope of the
current paper.</p>
      <p>Definition 9: We define ZpathGraphs is the category where
objects are graphs and morphisms are Zpath graph
homomorphisms.</p>
      <p>There is an obvious embedding functor from Graphs into
ZpathGraphs, and this preserves pushouts:</p>
      <p>Theorem 1: For every span in Graphs, a pushout in Graphs
for that span is also a pushout in ZpathGraphs.</p>
      <p>For defining graph transformations, we now move to the
category that allows simple connections in architectures to be
matched to zigzag paths over several components:</p>
      <p>Definition 10: SysArchsZ is the category where objects
are system architectures and whose morphisms are system
architecture Zpath homomorphisms.</p>
      <p>Theorem Theorem 1 carries over to this category:
Theorem 2: For every span in SysArchs, a pushout in
SysArchs for that span is also a pushout in SysArchsZ.</p>
      <p>
        V. ASPECT INTRODUCTION RULES
Using the well-known example of sender-receiver
communication [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] that we already employed for the examples in
section III, we will now illustrate our Zpath graph transformation
based technique.
      </p>
    </sec>
    <sec id="sec-11">
      <title>Definition 11: A Zpath architecture transformation rule</title>
      <p>consists of two system architectures L and R connected by a
single Zpath system architecture homomorphism : L ! R.</p>
      <p>Such a rule can be applied to system architecture A via the
matching Zpath system architecture homomorphism : L !
A with result system architecture B if a pushout in SysArchZ
of the following shape exists:</p>
      <p>L
- R</p>
      <p>X
? ?</p>
      <p>A - B</p>
    </sec>
    <sec id="sec-12">
      <title>Such a pushout is also called a Zpath architecture transfor</title>
      <p>mation step from A to B via the rule : L ! R.</p>
    </sec>
    <sec id="sec-13">
      <title>Security Introduction:</title>
      <p>For any given architecture where sender-receiver
communication exists, if we want to introduce security into it by
performing a Zpath graph transformation, the transformation
rule we will apply is shown in Figure 7. In fact, transformation
via this rule explains the security introduction shown in
Figure 3.</p>
      <p>TR2T</p>
      <p>TR2R</p>
      <p>For any given architecture where sender-receiver
communication exists, the rule for introducing reliability into it is
depicted in Figure 8. This is the rule we “tried to apply” in
Figure 4, where the right-hand-side is not drawn.</p>
      <p>SendTrans</p>
      <p>TransRec
ST2S ST2T</p>
      <p>TR2T
Sender</p>
      <p>Trans</p>
      <p>TR2R</p>
      <p>Receiver
SendTrans</p>
      <p>TransRec
ST2S R</p>
      <p>TR2TP</p>
      <p>TR2TP
Sender Res</p>
      <p>MS R2S R</p>
      <p>MS R2M
MontrSend Res</p>
      <p>Left Architecture
TransPlus
Monitor</p>
      <p>TM2M</p>
      <p>TR2R</p>
      <p>Receiver</p>
      <p>TM2TP
TransMontr</p>
      <p>Right Arch</p>
      <p>Fig. 8. Rule: Reliability Introduction</p>
    </sec>
    <sec id="sec-14">
      <title>Introduce Reliability on Secure Communication</title>
      <p>Consider we have a secured communication architecture as
application graph, and we wish to introduce reliability on top
of this to make the architecture both secured and reliable.
Applying the rule of Figure 8 succeeds, since this pushout
in SysArchZ exists; this is shown in Figure 9.</p>
      <p>However, SysArchZ does not have all pushouts, so that
aspect introduction via a chosen rule and matching may be</p>
      <p>TR2TP</p>
      <p>TR2TP
impossible (if no commuting square completing this span
exists), or may require additional design decisions (if no single
“least” such commuting square exists).</p>
      <p>Nevertheless, even if both rule and matching map LHS
edges to non-trivial zigzag paths, SysArchZ pushouts still exist,
as we investigate in more detail in the next section.</p>
      <p>VI. AMALGAMATING SysArchZ PUSHOUTS</p>
      <p>Although SysArchZ does not have all pushouts, many aspect
introduction rule applications are still possible, and can be
completed via pushouts, due to the typical shape of aspect
introduction rules that can be observed already in the examples
provided so far: The left-hand side is usually a single zigzag
path, and some of the edges of the LHS are replaced with
zigzag paths on the RHS, while other LHS edges are
preserved. These preserved edges can be matched to zigzag paths
without creating conflicts — technically, without creating a
rule-matching-span that has no pushout.</p>
      <p>The general reason for this is that SysArchZ pushouts can
be amalgamated along SysArch pushouts.</p>
      <p>Theorem 3: If the span A L ! R in SysArchZ can be
factored via three pushouts in SysArchs as shown in Figure 10,
and if the two SysArchsZ spans A1 L1 ! R1 and A2</p>
      <sec id="sec-14-1">
        <title>L2 ! R2 have pushouts in SysArchsZ, then A</title>
        <p>has a pushout in SysArchsZ, too.</p>
        <p>L1
1
A1</p>
        <p>L</p>
        <p>L0
A0
A</p>
        <p>R1</p>
        <p>0
P1</p>
        <p>L
A</p>
        <p>R0
P0</p>
        <p>L2
A2</p>
        <p>R
R</p>
        <p>P
Fig. 10. Amalgamation Theorem
L ! R</p>
        <p>R2</p>
        <p>X2
XP</p>
        <p>P2
This amalgamation theorem allows us to decompose
prospective rule application pushouts of rules like those of Figs. 7 and
8 into little pieces induced by the subgraphs of the left-hand
side induced by single edges, or by node sets. We discuss the
different kinds of pieces in Sects. VI-A–VI-C.</p>
        <p>The situation is further simplified if we restrict ourselves to
architectures with a connector-component bipartition, where
each node of the shape graph either is a “connector” that
has only outgoing edges, or is a “component” that has only
incoming edges. For system architecture (Z-path)
homomorphisms, we then restrict the specification homomorphisms
associated with source nodes of edges in the source diagram
to be isomorphisms. In this paper, for the sake of simplicity
we strengthen this restriction further to only allow identity
homomorphisms. For example, source2source in Figure 5 has
to be an identity.</p>
      </sec>
    </sec>
    <sec id="sec-15">
      <title>A. Discrete LHS</title>
      <p>Working with subgraphs induced by node sets of the
lefthand side is necessary for separating the context of a rule
application from the modifications introduced by the rule, and
also for parts of the RHS that are not in the (zigzag-) image
of the LHS, as for example the monitor components of the
reliability introduction rules of Figure 8, for which we show
the corresponding rule fragment in Figure 11.</p>
      <p>In the situations we encountered so far, the following (rather
obvious) theorem is sufficient, although it excludes context that
is attached to connectors:</p>
      <p>Theorem 4: A SysArchsZ span A L - R where L is
discrete (no edges) and both and do not map any node
of L to a source node of an edge in A respectively R always
has a pushout in SysArchsZ.</p>
    </sec>
    <sec id="sec-16">
      <title>B. Unproblematic Single-Edge LHS</title>
      <p>If a single-edge LHS is mapped via a non-zigzag
homomorphism containing only identity specification homomorphism
S
S</p>
      <p>ST
ST2S
ST
ST2S</p>
      <p>L</p>
      <p>A
S
SA</p>
      <p>ST</p>
      <p>ST2S
ST2SA</p>
      <p>ST
ST
ST</p>
      <p>R
Res</p>
      <p>R
Res</p>
      <p>These two cases can actually be combined, as depicted in
Figure 14:</p>
      <p>Theorem 5: A SysArchsZ span A L - R where
the shape of L is ! ,
one of and is a non-zigzag homomorphism,
the source node of the edge in L is associated with identity
specification homomorphisms in both and ,
always has a pushout in SysArchsZ.</p>
      <p>(The identity specification homomorphisms can be replaced
with isomorphisms, which however would make the drawings
more confusing.)</p>
      <p>For the above scenario in Figure 14, the component SAR
is a pushout construct of the span SA S
! SR. Other
for the components, a pushout obviously always exists, as
indicated in Figure 12.</p>
      <p>If we restrict both rule and matching to non-zigzag
homomorphisms, but allow the target of the LHS edge to be mapped
with arbitrary specification homomorphisms on both sides, we
get an architecture pushout where that target is assigned the
corresponding specification pushout, as sketched in Figure 13.</p>
      <p>S
S</p>
      <p>IR1
IR1</p>
      <p>CR1</p>
      <p>CR2
IR2</p>
      <p>IR2
CR1</p>
      <p>CR2</p>
      <p>ST2S</p>
      <p>ST2SAST
IR1</p>
      <p>CR1</p>
      <p>CR2</p>
      <p>IR2
CR1</p>
      <p>CR2
ST</p>
      <p>R
Res
components, i.e., CR1,CR2 are direct copies of the preimages
from the right architecture. All the connectors, i.e., IR1,IR2,ST
in the result architecture are also the direct copies of their
preimages.</p>
    </sec>
    <sec id="sec-17">
      <title>C. Ambiguous Matchings</title>
      <p>Now, let us say, an edge is relaxed in both the Application
and the Right hand side graph (relax-relax) by adding a couple
of components and connectors and we want to contract them to
a single zigzag path. If we preserve the connector-component
alternating pattern and consider the mapping between
architectures as a System Architecture Zpath Homomorphism then
there are only two possibilities to contract them to a single
zigzag path with the minimal components and connectors such
that the above diagram commutes. These two possibilities are
as follows:
1) Disconnect the target of the Application architecture and
the source of the Right hand-side architecture and glue
them to a single zigzag path (Res-2).
2) Disconnect the source of the Application architecture and
the target of the Right hand-side architecture and glue
them together (Res-1).</p>
      <p>So, in this scenario, two design choices are available and the
result architecture varies depending on the design decision
(choice) one makes.</p>
      <p>ST
S ST2S</p>
      <p>SEA</p>
      <p>Whether this transformation is possible or not depends on
the relationship between the connectors associated to establish
a connection (in the result architecture) between the
application and the right hand-side architecture. A connection is
established in the result architecture by breaking two
connections, one each for the application and the right hand-side
architecture. In the above example, for Res-1 the connection</p>
      <sec id="sec-17-1">
        <title>SEA ! SA in the application architecture and ST ! ER in</title>
        <p>the right hand side architecture got disconnected to establish
a connection SEAtoER in the result architecture. This
transformation is obvious if a specification homomorphism SEA ! ST
exists. In the other case, i.e., Res-2, the obvious transformation
depends on the existence of the specification homomorphism</p>
      </sec>
      <sec id="sec-17-2">
        <title>SE ! ST. If neither of the homomorphisms exists, then we</title>
        <p>have to introduce new components and connectors to let the
transformation take place and one of this scenario is pictured
by Res-3 of the figure 15.</p>
      </sec>
    </sec>
    <sec id="sec-18">
      <title>Theorem 6: For “both-relax” case spans, the SysArchsZ</title>
      <p>category does not have any pushouts.</p>
      <p>We have two potential pushout candidates with minimal
components and connectors, but neither of them is a pushout
object. There are system architecture homomorphisms that
exist between them but they are not unique up to isomorphism.
In reality these two architectures could be completely different.
Though we do not have a pushout, if we select/consider one
of our design decisions, then the construction of the result
architecture would be systematic and it could be one of the
pushout candidates.</p>
    </sec>
    <sec id="sec-19">
      <title>D. User-Guided Rule Application</title>
      <p>As far as pushouts can be constructed for single edges as
discussed above, these can be amalgamated for rules with more
complex left-hand sides due to Theorem Theorem 3.</p>
      <p>For a defined set of production rules (e.g., security
introduction, reliability introduction) and given an application
architecture, if we apply our transformation technique, in all cases
except one (Sect. VI-C), the result architecture we obtain after
the transformation is a pushout object. If an aspect introduction
matches an LHS-edge to a zigzag path with new components
in the right-hand side architecture, and the matching of the
edge into the application architecture is also a zigzag path,
then the category SysArchsZ does not have a pushout for
the span consisting of that rule with that matching. In this
case, the transformation is semi-automatic. The designer will
have to make design decisions, which may result in different
desirable and undesirable properties becoming valid for the
transformation result.</p>
      <p>VII. CONFORMANCE CHECK</p>
      <p>One of the great advantages of our research work is that
it makes the analysis of the system architecture properties
feasible.</p>
      <p>Conformance of the result system architecture with the
application system architecture is not straight-forward.
Figure 16 illustrates this statement: A system architecture
Zpath homomorphism between two system architectures, e.g.,
system arch: zigzag hom:
system arch: zigzag hom:
colimit
s: arch: hom
: Host Arch
s: arch: hom
:
Application S:A:Z: Hom!: Result, does not necessarily imply
the existence of a specification homomorphism between the
colimits of these diagrams. Proving properties of the result
system architecture to check its conformance with the
application system architecture is not exhaustive either. Depending on
different scenarios, how aspect introduction modifies an edge,
in some cases we can systematically (even automatically)
check the conformance of the new result system architecture
to the old application system architecture without proving
any proof obligations. Propagation of RHS properties into the
result architecture, also conforms to the same scenario.</p>
      <p>VIII. RELATED WORK</p>
    </sec>
    <sec id="sec-20">
      <title>The paradigm of aspect-oriented software development</title>
      <p>(AOSD) first appeared at the University of Twente in the
Netherlands at the code level. However, work in aspects is
no longer limited to the implementation phase of the software
development. Over the last decade, the AOSD community
has tried to transfer this idea into earlier phases of the
software development life cycle; namely in domain analysis,
requirement analysis, architecture design, and modeling.</p>
      <p>
        The modeling community is doing a large amount of work
to weave aspects in models, specifically, UML models [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]–[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]–[
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Since model weaving is a special
case of transformation; some interesting works in weaving
aspects in models are explained in the following sections along
with their similarities and dissimilarities with our work.
      </p>
      <p>
        Whittle and Jayaraman [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] developed an aspect-oriented
modeling tool MATA (Modeling Aspects Using a
Transformation Approach) that uses an existing graph transformation
technique over the concrete syntax of the UML modeling language
to weave aspects. In order to write a graph rule, rather than
using general LHS and RHS, they defined three stereotypes,
i.e., create, delete, and context (unchanged), (similar to the
approach applied in VIATRA developed by Cserta´n et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ])
RHS
s
:
a
:
z
:
h
o
m
:
      </p>
      <sec id="sec-20-1">
        <title>Result</title>
        <p>colimit
which allowed them to write a rule on a single model instead
of repeating unchanged elements in both the LHS and the RHS.</p>
        <p>
          Morin et al. [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] worked on a generic AOM approach
called GeKo (generic composition with Kermeta) to weave
aspects into any model with a well-defined metamodel. Here,
two models, the base and the advice are weaved with the
help of a third model and two morphisms. The third mode
is called the pointcut, and the two morphisms are defined
from the pointcut to the base and the advice respectively. The
morphisms prescribe the deletion, preservation/edition, and
addition. This weaving process is similar to defining a rule in
the Double-pushout graph transformation approach explained
in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>
          The work we are doing is to introduce aspects at the
earlier phase of the software development life-cycle, i.e., in
the architecture level, by performing a graph transformation.
Although in terms of goals, we have some similarity with the
work of the AOM community, our approach is completely
different from their approaches. The way [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] explained
aspects contradicts their traditional definition. A couple of vital
points that make our method divergent from AOM weaving are
the following:
        </p>
        <p>Weaving is not a general transformation; it is a special
type of transformation. It is usually a non-automatic
laborious operation where both base and aspect models
get composed to get a weaved model. In contrast, a
transformation is automatic where predefined rules are
applied to a bigger application system.</p>
        <p>Most of the above AOM approaches claim that they
can detect conflicts (unavailability to weave an aspect
with a woven base) and resolve them by sequencing
aspects or changing the rules. But the way they define the
conflict does not work for system architecture. After
introducing an aspect to an application architecture, further
aspect introduction to the resultant architecture by general
weaving/transformation technique might be unavailable to
some of the re-defined rules though neither the rules nor
the resultant architecture is wrong.</p>
        <p>One of the potential solutions to this problem is to introduce
a new transformation technique by keeping the nature of
aspect introductions in mind. Our Zpath graph transformation
technique is capable of addressing this issue. Besides that, it
allows us to systematically verify the conformance (property
preservation) of the old system architecture to the new.</p>
        <p>IX. FUTURE WORK</p>
        <p>Besides identifying the “Zigzag-path homomorphisms” and
elaborating the “Zigzag transformation”, we have provided
some meta-theorems that make it (sometimes) unnecessary to
re-prove properties for transformation results, or make it easier
to obtain result properties from component and aspect
properties. From our example, we have experienced that proving
the well-definedness and validating the properties of system
architecture is a tedious redundant job. So, we are currently
developing some tool support that will make our methodology
mechanical and make our evaluation and validation process
feasible. Since our methodology is independent of the
underlying logic, one of the potential future steps would be application
of the theory in industrial settings by applying widely used
architecture languages, e.g., AADL, EAST-ADL.</p>
        <p>X. CONCLUSION</p>
        <p>Working with aspect introduction at the architecture level
has many benefits including for documentation, product risk
management, understandability, reusability and
maintainability. The nature of aspects makes it impossible to apply any of
the conventional graph transformation approaches, since those
work with exact matchings. Our “Zigzag matching” and the
“Zigzag transformation” methodology streamline the process
of software system evolution by making aspect introduction
into system architectures systematic. Besides, in terms of
property preservation, it makes the conformance check of
the new system architecture along with the detection and
resolution of conflicts and undesirable emergent behaviors
semi-automatic.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>N.</given-names>
            <surname>Aguirre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Maibaum</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Alencar</surname>
          </string-name>
          .
          <article-title>Extension morphisms for CommUnity</article-title>
          . In K. Futatsugi,
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Jouannaud</surname>
          </string-name>
          , and J. Meseguer, editors, Algebra, Meaning, and
          <article-title>Computation: Essays dedicated to Joseph A. Goguen on the Occasion of His 65th Birthday</article-title>
          , volume
          <volume>4060</volume>
          <source>of LNCS</source>
          , pages
          <fpage>173</fpage>
          -
          <lpage>193</lpage>
          , Berlin, Heidelberg,
          <year>2006</year>
          . Springer Berlin Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Barr</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Wells</surname>
          </string-name>
          .
          <article-title>Category theory for computing science</article-title>
          , volume
          <volume>49</volume>
          . Prentice Hall New York,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>C.</given-names>
            <surname>Constantinides</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Skotiniotis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Stoerzer</surname>
          </string-name>
          .
          <article-title>AOP considered harmful</article-title>
          .
          <source>In 1st European Interactive Workshop on Aspect Systems (EIWAS)</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Corradini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Montanari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Rossi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Heckel</surname>
          </string-name>
          , and
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Lo¨we. Algebraic approaches to graph transformation - Part I: Basic concepts and double pushout approach</article-title>
          .
          <source>In Handbook of Graph Grammars</source>
          , pages
          <fpage>163</fpage>
          -
          <lpage>246</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Cottenier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Van Den Berg</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Elrad. The Motorola</surname>
          </string-name>
          <string-name>
            <surname>WEAVR</surname>
          </string-name>
          :
          <article-title>Model weaving in a large industrial context</article-title>
          .
          <source>Aspect-Oriented Software Development (AOSD)</source>
          , Vancouver, Canada,
          <volume>32</volume>
          :
          <fpage>44</fpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>G.</given-names>
            <surname>Cserta´n</surname>
          </string-name>
          , G. Huszerl,
          <string-name>
            <given-names>I.</given-names>
            <surname>Majzik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Pap</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pataricza</surname>
          </string-name>
          , and
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Varro´. VIATRA - visual automated transformations for formal verification and validation of UML models</article-title>
          .
          <source>In Automated Software Engineering</source>
          ,
          <year>2002</year>
          .
          <string-name>
            <surname>Proceedings. ASE</surname>
          </string-name>
          <year>2002</year>
          . 17th IEEE International Conference on, pages
          <fpage>267</fpage>
          -
          <lpage>270</lpage>
          . IEEE,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>J. A</surname>
          </string-name>
          . D´ıaz Pace and
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Campo</surname>
          </string-name>
          .
          <article-title>Analyzing the role of aspects in software design</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>44</volume>
          (
          <issue>10</issue>
          ):
          <fpage>66</fpage>
          -
          <lpage>73</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>E. W.</given-names>
            <surname>Dijkstra</surname>
          </string-name>
          .
          <article-title>Letters to the editor: go to statement considered harmful</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>11</volume>
          (
          <issue>3</issue>
          ):
          <fpage>147</fpage>
          -
          <lpage>148</lpage>
          ,
          <year>1968</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>T.</given-names>
            <surname>Elrad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Aksit</surname>
          </string-name>
          , G. Kiczales,
          <string-name>
            <given-names>K. J.</given-names>
            <surname>Lieberherr</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Ossher</surname>
          </string-name>
          .
          <article-title>Discussing aspects of AOP</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>44</volume>
          (
          <issue>10</issue>
          ):
          <fpage>33</fpage>
          -
          <lpage>38</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J.</given-names>
            <surname>Fiadeiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Maibaum</surname>
          </string-name>
          .
          <article-title>Towards object calculi</article-title>
          .
          <source>In Information Systems- Correctness and Reusability</source>
          , Workshop IS-CORE, volume
          <volume>91</volume>
          , pages
          <fpage>129</fpage>
          -
          <lpage>178</lpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J.</given-names>
            <surname>Fiadeiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Maibaum</surname>
          </string-name>
          .
          <article-title>Temporal theories as modularisation units for concurrent system specification</article-title>
          .
          <source>Formal aspects of Computing</source>
          ,
          <volume>4</volume>
          (
          <issue>3</issue>
          ):
          <fpage>239</fpage>
          -
          <lpage>272</lpage>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Fiadeiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Maibaum</surname>
          </string-name>
          .
          <article-title>A mathematical toolbox for the software architect</article-title>
          .
          <source>In Software Specification and Design</source>
          ,
          <year>1996</year>
          .,
          <source>Proceedings of the 8th International Workshop on</source>
          , pages
          <fpage>46</fpage>
          -
          <lpage>55</lpage>
          . IEEE,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Fiadeiro</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Maibaum</surname>
          </string-name>
          .
          <article-title>Interconnecting formalisms: Supporting modularity, reuse and incrementality</article-title>
          .
          <source>ACM SIGSOFT Software Engineering Notes</source>
          ,
          <volume>20</volume>
          (
          <issue>4</issue>
          ):
          <fpage>72</fpage>
          -
          <lpage>80</lpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>F.</given-names>
            <surname>Fleurey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Baudry</surname>
          </string-name>
          , R. France, and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghosh</surname>
          </string-name>
          .
          <article-title>A generic approach for automatic model composition</article-title>
          .
          <source>In International Conference on Model Driven Engineering Languages and Systems</source>
          , pages
          <fpage>7</fpage>
          -
          <lpage>15</lpage>
          . Springer,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>France</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Fleurey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Reddy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Baudry</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghosh</surname>
          </string-name>
          .
          <article-title>Providing support for model composition in metamodels</article-title>
          .
          <source>In Enterprise Distributed Object Computing Conference</source>
          ,
          <year>2007</year>
          .
          <source>EDOC</source>
          <year>2007</year>
          . 11th IEEE International, pages
          <fpage>253</fpage>
          -
          <lpage>253</lpage>
          . IEEE,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>I.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.-W.</given-names>
            <surname>Ng</surname>
          </string-name>
          .
          <article-title>Aspect-oriented software development with use cases. Addison-Wesley object technology series</article-title>
          . Addison-Wesley
          <string-name>
            <surname>Professional</surname>
          </string-name>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>P.</given-names>
            <surname>Jayaraman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Elkhodary</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Gomaa</surname>
          </string-name>
          .
          <article-title>Model composition in product lines and feature interaction detection using critical pair analysis</article-title>
          .
          <source>In International Conference on Model Driven Engineering Languages and Systems</source>
          , pages
          <fpage>151</fpage>
          -
          <lpage>165</lpage>
          . Springer,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kiczales</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lamping</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mendhekar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Maeda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lopes</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Loingtier</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Irwin</surname>
          </string-name>
          .
          <article-title>Aspect-oriented programming</article-title>
          . Springer,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kiczales</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Mezini</surname>
          </string-name>
          .
          <article-title>Aspect-oriented programming and modular reasoning</article-title>
          .
          <source>In Proceedings of the 27th international conference on Software engineering</source>
          , pages
          <fpage>49</fpage>
          -
          <lpage>58</lpage>
          . ACM,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kienzle</surname>
          </string-name>
          , W. Al Abed,
          <article-title>and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Klein</surname>
          </string-name>
          .
          <article-title>Aspect-oriented multi-view modeling</article-title>
          .
          <source>In Proceedings of the 8th ACM international conference on Aspect-oriented software development</source>
          , pages
          <fpage>87</fpage>
          -
          <lpage>98</lpage>
          . ACM,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Laukkanen</surname>
          </string-name>
          .
          <article-title>Aspect-oriented programming</article-title>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>B.</given-names>
            <surname>Morin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Barais</surname>
          </string-name>
          , and J.
          <string-name>
            <surname>-M. Je</surname>
          </string-name>
          <article-title>´ze´quel. Weaving aspect configurations for managing system variability</article-title>
          .
          <source>In 2nd International Workshop on Variability Modelling of Software-intensive Systems</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>B.</given-names>
            <surname>Morin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Barais</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.-M. Je</surname>
          </string-name>
          <article-title>´ze´quel, and</article-title>
          <string-name>
            <given-names>R.</given-names>
            <surname>Ramos</surname>
          </string-name>
          .
          <article-title>Towards a generic aspect-oriented modeling framework</article-title>
          .
          <source>In Models and Aspects workshop, at ECOOP</source>
          <year>2007</year>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>B.</given-names>
            <surname>Morin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Klein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Barais</surname>
          </string-name>
          , and J.
          <string-name>
            <surname>-M. Je</surname>
          </string-name>
          <article-title>´ze´quel. A generic weaver for supporting product lines</article-title>
          .
          <source>In Proceedings of the 13th international workshop on Early Aspects</source>
          , pages
          <fpage>11</fpage>
          -
          <lpage>18</lpage>
          . ACM,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>C.</given-names>
            <surname>Siobhan</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Elisa</surname>
          </string-name>
          .
          <article-title>Aspect-oriented analysis and design: The Theme approach</article-title>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>I. Sommerville. Software</given-names>
            <surname>Engineering</surname>
          </string-name>
          . International Computer Science Series. Pearson,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Jayaraman. MATA</surname>
          </string-name>
          :
          <article-title>A tool for aspect-oriented modeling based on graph transformation</article-title>
          .
          <source>In Models in Software Engineering: Workshops and Symposia at MoDELS</source>
          <year>2007</year>
          ,
          <article-title>Reports and Revised Selected Papers</article-title>
          , volume
          <volume>5002</volume>
          <source>of LNCS</source>
          , pages
          <fpage>16</fpage>
          -
          <lpage>27</lpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>