1. Dynamic reconfiguration, where new links
between components are created when
necessary, for instance when performing system
reconfiguration, which involves the replacement
of components or links. However, this may not
be the optimal solution if we just want to use
temporarily the services offered by other
component.
2. Use Service Oriented Architecture (SOA) to
allow components to look for the run-time
available services that they can use, as well as to
publish their services so that other components
can use them.
In this context, SOA is a paradigm that, even
though is not new, it is becoming increasingly
important as a solution to some of the new
requirements that society imposes on robotic systems.
SOA (Erl, 2008) is especially useful for providing a
solution to the integration, implementation and
location independence of systems. Therefore, we
decided to experiment with a mixed structure where
the components themselves offer services as SOA
architectures. For example, following the case study
presented in (Ortiz et al., 2015), a mission planner
component would create new missions depending on
the available services at the time. In this way, the aim
is to combine the power of a CBSE-MDSD process
with the flexibility of SOA. For this purpose, it is
necessary to extend C-Forge (that initially only
considers a pure CBSE process) so that components
can publish their services and use the services
published by others. In this way, when a component
needs to discover the available services, assuming
that they may change, it could use the services that
have been published by the other components that are
included in the architecture.
The rest of this paper is organized as follows:
Section 2 introduces C-Forge, our previous
experience which has motivated this work. Section 3
describes the SOA adaptation process into C-Forge
and finally Section 4 presents the conclusions and
further work.
2 C-FORGE
C-Forge is a tool-chain developed with the Eclipse
environment that uses its Model Driven Software
Development (MDSD) plugins to provide support for
developing component based applications (Rosique
et al., 2016). C-Forge consists of the following tools:
(1) a language to model component based
applications, called WCOMM, (2) a framework
called FraCC, which provides run-time support for
the applications modeled using WCOMM.
2.1 WCOMM Component Language
A WCOMM component is an entity that encapsulates
its internal state and comprises both structural and
behavioral parts. The structural part is defined by its
ports and the messages that flow through them,
grouped in interfaces. These messages are sent
following the asynchronous no-reply communication
scheme. Behaviour is defined by means of a finite
state machine, similar to the defined in UML,
extended with temporal properties. That is, the user
models the behaviour of the component by means of
states, transitions, events, guards and orthogonal and
hierarchical regions. Each state can have additionaly
an internal activity, which will be later associated
with code in FraCC. WCOMM also models what we
called the the “shell” of the activity, formed by the
messages that are exchanged and the events that are
created. These events, along with the reception of
messages through ports, are responsible for the
change of the component state. Therefore, they
establish the connection between structure and
behavior. Finally, an application is modeled as a set
of components interconnected among them.
2.2 Framework FraCC
FraCC is a component based framework implemented
in C++ that was developed with the purpose of
providing (1) full support to the characteristics of the
WCOMM component model, (2) full control over the
concurrency characteristics of the application, letting
the user decide how many processes and threads will
be created and in which threads the components will
run and (3) explicit control of the assignment of
components to computational nodes. These features
allow the use of FraCC in applications with real-time
constraints.
3 ADAPTING C-FORGE TO SOA
This section briefly describes the main characteristics
of the adaptation process. The first step is adapting
our metamodel, which extends the C-Forge
metamodel (see Figure 1) in order to support SOA
constructs. The second step is to establish the work
methodology.