Langues : English français
Accueil > Manifestations > Thèses et HDR > Thèses > Abdelhakim Hanousse

Abdelhakim Hanousse

Directeur de thèse

Mario Südholt
Rémi Douence
Gilles Ardourel

Résumé

La programmation par composants (CBSE) permet la modularisation des préoccupations en termes d’entités logiciels séparées appelés composants. Chaque composant fournissant explicitement des services en s’appuyant sur des services fournis par d’autres composants. Les composants peuvent être assemblés afin de construire le système global. D’autre part, l’approche aspects (AOP) vise à séparer les préoccupations techniques ou de contrôle (e.g., synchronisation, persistance, contraintes temps réel, etc.) des préoccupations métier ou fonctionnelles. Elle offre un mécanisme de tissage qui permet de fusionner ces deux types de préoccupations afin de construire le système global. Ceci permet une meilleure séparation du code fonctionnel du code non fonctionnel et d’assurer une meilleure maintenabilité du système. Les préoccupations transversales ne sont pas liées à un paradigme spécifique et le paradigme composants n’est pas une exception. Malheureusement, les travaux actuels sur la programmation par composants vise à implanter les concepts d’AspectJ directement dans les modèles à composants ignorant les particularités des composants (i.e., points de coupures définissants des points dans les architectures) et les interférences entre les aspects qui peuvent apparaitre lorsque plusieurs aspects sont tissés. En fait, la détection et la résolution des interférences d’aspects est toujours un défi pour l’AOP. Dans cette thèse, nous contribuons par l’introduction d’un langage déclaratif de points de coupure (VIL) dédié au modèles à composants, et nous fournissent un cadre formel pour la détection et la résolution des interférences d’aspects lorsque plusieurs aspects sont tissés. Dans ce cadre, nous introduisons un ADL qui inclut une définition explicite des comportements des composants et des aspects, ainsi que les règles de tissage et de composition d’aspects. Chaque règle utilise des expressions VIL afin de décrire déclarativement où les aspects vont être tissés. Nous fournissons un ensemble de règles de transformation pour obtenir la spécification formelle des composants et des aspects à partir de l’ADL, et nous utilisons des model checkers pour la détection des interférences possibles entre les aspects. Pour la résolution des interférences, nous fournissons un ensemble d’opérateurs de composition. Chaque opérateur est donné avec un exemple de motivation, une structure et un ensemble de règles d’applicabilité. La structure d’opérateur est décrite comme une forme abstraite qui peut être instancié pour n’importe quel paire d’aspects et n’importe quelle ensemble de points de jointure. La liste des opérateurs forme une première étape vers un catalogue pour la résolution d’interférences d’aspects. Dans notre proposition, nous adoptons l’utilisation de model checker Uppaal pour l’instanciation des processus, la déclaration des variables locales, et le passage de paramètres entre les processus, en plus des contraintes temporelles pour modéliser les systèmes temps réel. Nous illustrons notre approche avec le modèle de composants Fractal et une étude de cas : l’accès wifi dans un aéroport. Nous définissons un ensemble d’aspects interférant, et nous montrons comment notre modélisation du système avec les aspects en Uppaal permet la détection d’interférences et l’utilisation des opérateurs pour les résoudre. Enfin, il convient de mentionner que notre approche est générale et peut être utilisée pour d’autres modèles à composants avec des adaptations minimales.

Abstract :

Component based software engineering, or CBSE in short, enables the modularization of concerns in terms of separate software entities called components. Each component provides a set of services and may require services from other components to accomplish its tasks. Components can be assembled in order to construct complex systems. On the other hand, aspect oriented programming, or AOP in short, focuses on the modularization of scattered and tangled concerns that cannot be modularized using regular software entities. Crosscutting concerns are not related to a specific paradigm and CBSE is not an exception. However, current works on CBSE focus only on mapping AspectJ-like concepts into component models missing the particularity of components (i.e., join point model for black boxes) and component systems (i.e., pointcuts defining points in component architectures) and the interferences that may appear when several aspects are woven to a system. In fact, aspect interferences detection and resolution is still a challenge for AOP. In this thesis we contribute by introducing a declarative pointcut language (VIL) for component models, and we provide a formal framework for aspect interference detection and resolution when several aspects are woven to a component system. In our framework we introduce an ADL that extends current ADL(s) with explicit definition of component and aspect behaviors, and aspect weaving rules. Each weaving rule uses our VIL expressions to describe which and where aspects should be woven. We provide a set of transformation rules to obtain the formal specification of components and aspects from the ADL, and we use model checkers for the detection of potential interferences among aspects. For interference resolution, we provide a set of composition operators. Each operator is given with a motivation example, a structure, and a set of applicability rules. The operator structure is described as an abstract form that can be instantiated for any two arbitrary aspects and a set of join points. The list of operators in the catalog is not exhaustive but it can be considered as a first step towards a pattern catalog for aspect interferences resolution. In our framework we adopt the use of Uppaal model checker for its support of template instantiation, local variable declarations, and parameter passing between processes in addition to its support of timing constraints to model real time systems. We illustrate our approach with Fractal component model and a case study : airport wireless access. We define a set of interfering aspects for the example, and we show how our modelization of the system with aspects in Uppaal enables the detection of interferences and how our operators can be instantiated to solve them. Finally, we should mention that our framework is general and can be used for other component models with minimum adaptations.

Dernière modification : vendredi 9 novembre 2012