collector. It may be necessary, in some applications,
to connect several components to the same port with-
out knowing their number in advance. ArchJava, then,
enables to define a port interface. A new port instance
will then be created with each connection (Barais,
2002).
We return to our example and we suppose that a
writer can reserve several fragments at the same time.
Figure 5: Fragment reservation in ArchJava
At the architectural level (Figure 5), when a request
arrives (for example a request for fragment reserva-
tion), the component writer asks for a new connec-
tion. The component Edition creates, then, a new
component Fragment using the operator new and con-
nects it to the component writer thanks to the opera-
tor connect. Then, the writer communicates with the
component Fragment via its port reserve.
According to our experimentation with ArchJava
we can conclude that this language is an easy ADL
thanks to its syntax similar to java. It allows to
describe the dynamic of architectures in terms of
creation, connection and destruction of components.
However, this description is very limited since exter-
nal (user) events are not taken into account. More-
over, ArchJava does not allow to specify the behav-
iour of components. Like in Darwin, in ArchJava a
component is considered as a black box.
4.3 The Olan language
Olan (Bellissard et al., 1996) aims principally to pro-
vide a complete environment for construction, con-
figuration and deployment of distributed applications
built on the assembly of heterogeneous components.
Basically, Olan is a formalism which does not sup-
port the update of architectures at runtime. This lan-
guage has been augmented with an OCL (Object Con-
straint Language) enabling then to describe opera-
tions changing the architecture. The obtained lan-
guage is based on a set of rules of the form (Event,
Condition, Action). Like Darwin, Olan offers lazy and
dynamic instantiation. However, Olan provides a new
schema of dynamic instantiation called collection.
Collection: The collection concept (Accord, 2002;
Riveill and Senart, 2002) has been introduced to fa-
cilitate the use of multiple components with the same
type. When it is created, a collection does not con-
tain any component. A collection has two operators
new and delete allowing to create or destroy dynam-
ically a component instance.
The clause fragment = Collection [0..n]
of Fragment; defines a collection of fragments in a
document. The component designation can take two
forms. First, the collection members can be dynami-
cally identified through some properties related to its
attributes. In this case, components are managed im-
plicitly. It is the designation mode by association. The
second designation form is rather explicit. It consid-
ers a component as a member of the collection and it
is designated with its index in the collection.
Writer.reserve(request,idf) => fragment.update(request)
where fragment.idf = idf using authority;
Figure 6: Component designation from a collection
This example considers designation by association.
In the clause below, Writer indicates a fragment (iden-
tified by its idf) from a collection in order to modify
it. It cannot modify the fragment only if it is autho-
rized. Thus, the main advantage is to create sets of
components having the same functions but with vari-
able number of components.
Accordingly, we can say that Olan architectural
model is similar to the Darwin’s one extended with
the concept of collection. Thanks to this concept,
Olan allows to express the dynamic of architectures
with more precision than Darwin. Indeed, Olan en-
ables to describe a component by separating interface
description from its implementation and its configura-
tion. Thus, when one of the parts evolves, the others
are not modified. In addition, Olan offers a kind of
adaptation form, since it is possible to modify the sys-
tem in reaction to some events. However, events taken
into account in the model are not external. The mod-
ification types allowed are too limited. Like Darwin,
Olan does not offer the basis for analysing component
behaviours.
5 DESCRIPTION LANGUAGES
Description languages (Accord, 2002) allow to de-
scribe the application evolution and to specify modifi-
cations which are to be carried out on the initial archi-
tecture. They offer the possibility to validate architec-
ture by checking specific constraints or by simulation.
They belong to language families which are accompa-
nied with tools for modelling, code generation, code
execution or simulation.
We present in the following sections the mecha-
nisms offered by the languages Rapide, Wright and
Acme to describe the dynamic of architectures and
behaviour of components.
ICEIS 2005 - INFORMATION SYSTEMS ANALYSIS AND SPECIFICATION
192