Section: New Results
Static and Dynamic Checking of Component Interactions
In the context of Guillaume Waignier's PhD thesis we are working on an approach that enables architects to specify component-based architectures and their associated properties, and check the consistency of the component assembly specifications. This work has led to the development of CALICO, a Component AssembLy Interaction Control FramewOrk (cf. sections 5.2 ). CALICO is a model-based framework that enables architects to both specify component contractual application properties and perform validation at execution time when static verification is not sufficient.
More concretely, CALICO analyses architecture models and creates contracts by composing contractual application properties ( e.g. , behavioral, dataflow, QoS properties). This composition allows compatible, incompatible interaction to be identified, as well as partially compatible interactions, which require runtime checking  .
When runtime checking is required, CALICO automatically instruments the application to reify runtime information to complete the resolution of the partially compatible interaction contract and thus detects if the given interaction may lead to an error. By using this framework in iterative software design processes, architects get design feedback— i.e., information on identified interaction errors—and can then modify the models accordingly. Each modification performed on the model is propagated to the running system since CALICO ensures the synchronization between the model and the runtime system  . This feature of CALICO has been developed in the context of the postdoctoral internship of Prawee Sriplakich.
Furthermore, the solution offered by CALICO is generic regarding underlying platforms. This genericity is achieved through mappings from the generic models to platform-specific API calls for constructing the running system  ,  . CALICO is available on http://calico.gforge.inria.fr .
Detection of Design Defects
The Ph.D thesis of Naouel Moha  is about the detection and correction of design defects in object-oriented architectures. Design defects are bad solutions to recurring design problems in object-oriented systems, in opposition to design patterns, which are good solutions. In this context, we have performed an analysis of the domain of design defects and proposed a language to specify detection rules. From defect specifications, our approach enables the automatic generation of design defect detection algorithms. Generated algorithms have been validated in terms of precision and recall on XERCES v2.7.0, an open-source object-oriented system  ,  .