Information Technology Reference
In-Depth Information
and that they can be handled uniformly at the architectural level by formalizing a
specific aspect as an architectural pattern used to replace an existing pattern in the
underlying architecture (by means of, for example, a graph transformation). Then,
aspect weaving is achieved by the colimit construction used to obtain the semantics of
any architectural configuration, the latter being defined as a categorical diagram of
component objects and relationships between them. Aspect composition then be-
comes the sequential application of different transformations, corresponding to the
different aspects, to the underlying diagram depicting the original architecture. As
with features, there may be (unforeseen) interactions between different aspects and
the order of application is crucial to achieving the right system. Many aspects require
the replacement of a component in the original architecture by another, closely re-
lated, component that is a subtype of the original component, in the sense of object-
oriented design. This requires a formal relationship between components that involves
breaking encapsulation of the original component in the design. We have developed
the notion of extension as a realization of this controlled breaking of encapsulation.
The application of extension morphisms in the construction of software architectures
is the aim of this paper.
1.2 Introducing CommUnity
CommUnity was developed to explore the relationships between specifications and
programs in a component based development setting. José Fiadeiro and his (former)
students developed the language extensively in the interim [18,29,30], making of
CommUnity a (proto) ADL. A review of CommUnity and its semantics are given,
and, in particular, we rehearse the idea that the notion of superposition can be formal-
ized as a morphism between designs in CommUnity. The concept of superposition is
defined as a structure preserving transformation on designs through the extension of
their state space and control activity while preserving their properties [29,30]. So, a
regulative superposition morphism is proposed in CommUnity as a means of aug-
menting an existing component by superposing a regulator over it while preserving its
functionality, thus supporting a layered approach to system design. In addition, sev-
eral different kinds of morphisms (other than regulative superposition morphisms)
between designs as well as their relationships are also investigated to explain the
language's well-founded support for compositionality, reusability, and enforcement of
design principles.
The syntax of a CommUnity design is:
design component P
out out(V)
in in(V)
prv prv(V)
init I
do
[ prv ] g[D(g)] : L(g), U(g) -> R(g)
endofdesign
A fixed collection of data types (say S) is assumed to be given by a first-order alge-
braic specification and the design is defined over such data types. Because data types
Search WWH ::




Custom Search