1. An interface (configuration) through which
configuration can be achieved regarding both
the behaviour and structure
2. An interface (external) that makes available
the services implemented by the component
towards other entities inside the execution
environment
3. An interface (platform/device) through which
all the transactions with respect to utilisation
of the device hardware resources are
performed
4.1 Definition of Structural
Configuration and Generic Design
Principles
The structural definition of the component consists
of a sufficient orchestration of the available
resources so that the outcome of the assembly of the
software modules, when operating, provides the
envisaged functionality that is described in Figure 2.
This pattern of organisation should be maintained
from the simplest to the more complex form of
resource orchestration so that it can be inherently
supported at any level of component integration.
According to the above, the borders of the
elementary component can be defined as the
minimum integration of resources that can operate as
an entity that:
1. its behaviour can be configured,
2. provides an external interface through
which it can serve requests from other
resources, and
3. if possible interacts with physical resources
of the hosting platform.
This structural model may be applied to all Java
classes that are contained in a bundle, installed on a
Service Platform, so that each of them constitutes a
clearly defined software component or cumulatively
to any number of Java packages contained in a
bundle so that all together can be used as a single
software component. In the latter case the borders of
that component enclose all the required resources
and each of the characteristics of the software
component may be provided by different Java
classes. Increasing the complexity, a software
component may span the limits of a single bundle by
accumulating resources, through OSGi compliant
service registration and utilisation operations,
contained in several ones. In this case the need for
structural configuration arises, since the selection of
the proper services for usage should follow the
corresponding rules that in our case can constitute
the structural configuration of the software
component. Mapping, therefore, the COMANCHE
concepts on the OSGi principles we conclude that a
COMANCHE software component can be provided
as an OSGi Service Application that is “a set of
bundles that collectively implement a specific
function used within a Service Platform”.
According to the principles described above, a
Software Component being able to be reconfigured
with respect to both structure and behaviour and
function in the context of COMANCHE architecture
can be instantiated as a proper orchestration of OSGi
resources.
4.2 Control Structure of a Software
Component
For every synthesis of OSGi resources aiming at the
composition of a COMANCHE Software
Component a special bundle in the role of the
orchestrator is activated. This bundle contains a
package of Java Classes that will be responsible for
organising the service resources on the same OSGi
platform. The bundle registers a number of Managed
Services, following the above described PID
convention, with the Framework so that the proper
configuration can be submitted to the Software
Component. Upon receiving configuration
dictionaries, these services perform the proper
translation of the content in the following ways:
(a) assign values to parameters that regard
functionality and services contained in the same
bundle, (b) maintain filters to be used during service
resolution, (c) modify their own registered
parameters so that other services may utilise these
according to the matching achieved between
registered and filtering parameters.
Since the operation of a Software Component is
based on the loose coupling among available
services there is a constant need for maintaining the
references to the available service providers so that
new registrations of services that fit better specific
needs or de-registration of previously located ones
can be imminently detected and handled
accordingly. For this purpose the bundle in the role
of the orchestrator registers the corresponding
Service, Bundle and Framework Listeners so that all
the relevant events can be monitored and handled
according to the needs of the Software Component
that is synthesized under the control of this bundle.
Handling of events is related mainly with updating
the service references in case an event indicates any
changes in the synthesis of the Software Component.
The overall structure with respect to the
controlling part of a Software Component that has
been presented above is presented in Figure 4.
ICSOFT 2008 - International Conference on Software and Data Technologies
178