Vladimir Marangozov(1), Luc Bellissard(1), Jean-Yves Vion-Dury(2)
(1) INRIA Rhône-Alpes, SIRAC Project
655, avenue de l'Europe, 38330 Montbonnot Saint Martin - France
(2) Rank Xerox Research Centre
6, Chemin de Maupertuis, 38240 Meylan - France
In this presentation, we focus on the construction of distributed applications made from interconnected legacy components, originally designed in different environments or application contexts. We do not impose constraints on component's implementation. However it is assumed that components are described by an interface exhibiting both provided and required services. With the model we have defined, the overall architecture of a distributed application is specified as a hierarchy of components linked together through specialized objects, called connectors, dedicated to communication and coordination tasks. Both components and connectors may include attributes for the operational management of the distributed application (e.g. placement of components on nodes) and its configuration at run-time.
With our component/connector model, a distributed application is built by producing the executable image of its architectural description. This is achieved by (1) encapsulating the software components with automatically generated wrappers aiming at intercepting all incoming and outgoing component calls and (2) external binding of components and explicitly controlling their interactions at run-time through the connector objects. Connectors implement various interaction patterns ranging from simple (remote) procedure calls to complex coordinated communication policies as event filters, traders or selective multicast relays. Connectors provide a high level of flexibility in distributed application design as they allow components and communication schema between them to evolve independently.
The clear separation of the communication structures from the computational ones has at least two major consequences: (1) increased component re-usability and (2) great flexibility in the structural configuration of an application, as well as in its dynamic reconfiguration at run-time. With our current prototype system, we are able to monitor the communication process between two interconnected components, disconnect them interactively and change the interaction style by plugging another connector between them. This is particularly useful for debugging or tuning long-running application processes according to the specificities and/or the changes occurring in the target distributed environment.
This work which is still in progress aims at providing design guidance as well as easing the construction of distributed applications in an open way. At the current stage, our prototype consists of an architectural description language, an interface compiler generating target code wrappers (currently C, C++, Python and Java) and uses ILU (a free CORBA compliant ORB from Xerox PARC) for connector's implementations. In my talk, I would like to present and further discuss with the attendees the benefits of our system towards component reuse, integration, flexibility in application's maintenance and reconfiguration, as well as our preliminary experience in building distributed cooperative applications.
This research is conducted within the SIRAC project by Roland Balter, Luc Bellissard, Fabienne Boyer, Vladimir Marangozov, Michel Riveill, Marie-Claude Pellegrini and Jean-Yves Vion-Dury.