34
Expression et composition des motifs de conception avec les aspects Simon Denier Directeur de thèse : Pierre Cointe École Doctorale Sciences et Technologies de l'Information et des Matériaux Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique de Nantes Atlantique École des Mines de Nantes Université de Nantes

Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

  • Upload
    vutuyen

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

Expression et compositiondes motifs de conception

avec les aspects

Simon Denier

Directeur de thèse : Pierre Cointe

École Doctorale Sciences et Technologies de l'Information et des Matériaux

Soutenance de thèse de doctorat9 juillet 2007

Équipe OBASCOINRIA Rennes – Bretagne AtlantiqueLaboratoire d'Informatique de Nantes Atlantique

École des Mines de NantesUniversité de Nantes

Page 2: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

22 / 34 / 34

Plan

Contexte : implémentation des motifs Problématique

Démarche et contributions

Conclusions et perspectives

Page 3: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

33 / 34 / 34

Programmation par objets (PPO) Concepts

Objet : cellule de données et opérations associées

Communication : envoi de messages entre objets

Polymorphisme : sélection du traitement du message par l'objet

Classe : descripteur d'objets similaires, module

Paradigme utilisé dans de nombreux projets

fenêtre dessin

dessiner

référence

envoi de message

Contexte

Page 4: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

44 / 34 / 34

Patrons et motifs de conception Capturer l'expérience de la PPO

Patron de conception Description en langage naturel

Problème particulier et récurrent

Solution éprouvée mais pas de code réutilisable

Contraintes liées au patron

Motif de conception Partie solution du patron

Code source : par imitation des exemples du motif

Contexte

Page 5: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

55 / 34 / 34

Motif Observateur (extrait) Notifier des changements d'un sujet à des observateurs

Constitution d'un motif : Rôles, Structure, Collaborations

sujet

observateur

observateur

notifier

pour chaque o dans observateurs    o.notifier()

observateurs

Contexte

Page 6: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

66 / 34 / 34

Motif Observateur dans JHotDraw JHotDraw : cadriciel (squelette réutilisable d'application) 

en Java pour dessin vectoriel

Objectif : rafraîchissement de la fenêtre

fenêtre dessin

figure2figure1

invalider

motif Observateur

Contexte

Page 7: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

77 / 34 / 34

Problème : dispersion dumotif Observateur

JHotDraw : notification par les sujets du motif Observateur

Contexte

Page 8: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

88 / 34 / 34

Programmation par aspects Modulariser le code dispersé et mélangé dans les classes

Concepts (aspect comportemental) Exécution = trace d'événements : points de jonction

objet1 objet2flot decontrôle

point dejonction

Contexte

Page 9: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

99 / 34 / 34

Aspect, coupe et action Concepts (aspect comportemental)

Déclaration des points de jonction à intercepter : coupes

Réaction à la capture d'un point de jonction : action

Exemple d'aspect incrémental

objet1 objet2

aspect1

flot decontrôle

coupe

point dejonction

Contexte

Page 10: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1010 / 34 / 34

Factorisation du code dispersé

objet1 objet2

aspect1

flot decontrôle

coupe

point dejonction

objet1 objet2

Contexte

Page 11: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1111 / 34 / 34

Implémentation des motifs avec les aspects

Hannemann et Kiczales, OOPSLA'02 Étude extensive avec AspectJ sur le catalogue des patrons

AspectJ Extension de Java pour les aspects

Robuste pour l'industrie

Bilan sur les 23 motifs individuels du GoF 17 motifs modularisés (~ 70%)

dont 12 motifs réutilisables (50%)

Contexte

Page 12: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1212 / 34 / 34

Observateur AspectJ (Hannemann)

aspect Observateur {

   List<Fenetre> listeObservateurs(Figure f) { ... }

   pointcut invalider(Figure fig) :

      call( void Figure.deplacer(..) ) && target(fig);

   after(Figure figure): invalider(figure) {

      Iterator<Fenetre> iter = listeObservateurs(figure).iterator();

      while ( iter.hasNext() ) {

        rafraichir(figure, iter.next()); }

   } 

   void rafraichir(Figure figure, Fenetre fenetre) { ... }

}

Contexte

Page 13: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1313 / 34 / 34

Plan

Contexte

Problématique : composition des motifs Démarche et contributions

Conclusions et perspectives

Page 14: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1414 / 34 / 34

Composition de motifs Superposition de deux rôles sur une classe Exemple : ajout classe GroupeFigure (motif Composite)

fenêtre dessin

figure2figure1

groupeFigure

motifComposite

motif Observateur

Problématique

Page 15: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1515 / 34 / 34

Exemple GroupeFigure GroupeFigure décore les figures avec une bordure

Problématique

Page 16: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1616 / 34 / 34

Interaction Composite et Observateur Observateur doit prendre en compte la bordure de 

GroupeFigure

Problématique

Page 17: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1717 / 34 / 34

Résolution et impact sur les objets Restructuration du motif Observateur

Notification récursive par Figure de son parent Modification de la notification dans GroupeFigure

Problème : impact sur plusieurs classes

fenêtre dessin

figure2figure1

groupeFigure

Problématique

Page 18: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1818 / 34 / 34

Plan

Contexte

Problématique

Démarche et contributions Conclusions et perspectives

Page 19: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

1919 / 34 / 34

Démarche de la thèse Base d'exemples pour la composition

Cas général (catalogue GoF) : faible nombre, pas de description

Cas particuliers : à partir de la restructuration des motifs de JHotDraw avec des aspects

Modularisation des implémentations des motifs Application des solutions de Hannemann

Adaptation, recherche de nouvelles solutions adéquates

Composition de motifs Catégorisation des compositions de motifs

Implémentation de la composition de motifs modularisés

Démarche

Page 20: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2020 / 34 / 34

Guide de restructuration d'un motifaspect ObservateurRelais {

    interface Sujet  { }

    interface Observateur { }

    List<Observateur> listeObservateurs(Sujet s) {...}

    public void ajout(Sujet s, Observateur o) {...}

    pointcut changement(Sujet s) : ... ;

    after(Sujet s): changement(s) {

        while ( ... ) { notifier(s, o); }

    } 

    void notifier(Sujet s, Observateur o) {...} }

Collaborations

Structure

Rôles

Interfaces Java

Cardinalité ?

Portée ?

Interface publique ?

Action relais ou centrale ?

Polymorphisme objetou ad hoc ?

Contributions

Page 21: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2121 / 34 / 34

Idiomes d'implémentation des motifs Idiome : règle d'usage particulière à un langage

Relation entre objets Suivant la cardinalité des objets et de la relation

Suivant la portée des coupes

Propriétés particulières à certains motifs : Décorateur : dynamicité, mais pas la récursivité !

Visiteur : généricité, portée, état concurrent

Polymorphisme ad hoc avec les coupes (Visiteur)

[Denier et Cointe, L'Objet 2006]

Contributions

Page 22: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2222 / 34 / 34

Composition de motifs Superposition de deux rôles sur une classe

Base de la composition avec les aspects Composition des rôles dans les classes

Rôle = interface marqueur, pas d'implémentation

class Figure implements Observateur.Subjet, Composite.Feuille

figure1

Sujet

Feuille

observateur composite

Contributions

Page 23: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2323 / 34 / 34

Catégoriser les compositions Modalité de composition

Degré d'indépendance entre les motifs composés

Indépendant du langage (objet, aspect)

5 modalités Cohabitation, collaboration, utilisation, partage, interaction

Exemple : cohabitation Composition sans effet l'un sur l'autre

figure1

RoleA

RoleB

Contributions

Page 24: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2424 / 34 / 34

Collaboration, utilisation Collaboration : composition par envoi de messages

Aspects Composite+Visiteur [Denier et Cointe, L'Objet'06]

Utilisation : spécialisation d'un motif pour un autre Objets Composite+Visiteur

figure1

RoleA

RoleB

figure1

RoleA

RoleB

Contributions

Page 25: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2525 / 34 / 34

Partage Réutilisation d'implémentation

Cas objet : opportunité de réutiliser un motif déjà implémenté

Risque de mélange des spécifications (interaction)

Restructuration par aspect structurel pour réutilisation modulaire

Figure1

Commun

RoleA

RoleB

Contributions

Page 26: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2626 / 34 / 34

Interaction Motifs incompatibles en l'état – modification invasive de 

leur implémentation

Figure1

RoleA

RoleB

Contributions

Page 27: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2727 / 34 / 34

Interaction par les coupes (1) Hypothèse : flot de contrôle récursif dans l'arbre 1ère étape

Coupe sur la figure en tête du flot : capture de groupeFigure

fenêtre dessin

figure2figure1

groupeFigure

observateur

pointcut action(): execution(void Figure.deplacer(..));pointcut topAction(Figure f):    this(f) && action() && !cflowbelow(action());

Contributions

Page 28: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2828 / 34 / 34

Interaction par les coupes (2) 2ème étape : dans le flot de contrôle de groupeFigure

Coupe sur les changements dans figure1

Notification passant groupeFigure en paramètre

fenêtre dessin

figure2figure1

groupeFigure

observateur

pointcut invalider(Figure f):    action() && cflowbelow(topAction(f));

Contributions

Page 29: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

2929 / 34 / 34

Impact de la résolution

Aucun impact sur Dessin et GroupeFigure

Impact sur Observateur Modification des coupes pour le flot de contrôle récursif

[Denier et Cointe, Software Composition 2006]

Contributions

Page 30: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

3030 / 34 / 34

Plan

Contexte

Problématique

Démarche et contributions

Conclusion et perspectives

Page 31: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

3131 / 34 / 34

Conclusion Modularisation des motifs par les aspects

Utilisation de divers idiomes pour émuler relations et propriétés

Idiomes : prédominants pour la restructuration avec AspectJ

Composition des motifs par les aspects Composition simple, plus modulaire

Résolution d'interactions avec faible impact

Application des aspects Non systématique

Résolution des problèmes dépassant l'échelle de la classe

Conclusion

Page 32: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

3232 / 34 / 34

Autres contributions de la thèse Exposition des problèmes de la composition des motifs en 

programmation par objets Basée sur des exemples concrets de JHotDraw

Évaluation des mécanismes structurels d'AspectJ Composition et interactions structurelles

Méthode de programmation des aspects Critères et principes pour la restructuration comportementale et 

structurelle avec AspectJ

Conclusion

Page 33: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

3333 / 34 / 34

Perspectives AspectJ

Amélioration du langage (interactions structurelles, coupes)

Implémentation des motifs Étude avec d'autres langages à aspects

Comparaison avec techniques de transformation

Composition des motifs Étude extensive : outils de détection des motifs pour explorer les 

cas particuliers – constitution d'un catalogue

Implémentation comparée des objets et des aspects

Conclusion

Page 34: Expression et composition des motifs de conception … · Soutenance de thèse de doctorat 9 juillet 2007 Équipe OBASCO INRIA Rennes – Bretagne Atlantique Laboratoire d'Informatique

3434 / 34 / 34

Publications [Denier et Cointe, L'Objet 2006]

Modularisation : présentation des idiomes AspectJ

Composition : résolution d'interactions comportementales

[Denier et Cointe, Software Composition 2006] Cas d'étude JHotDraw

Impact de la composition des motifs sur les objets

Restructuration par les aspects

[Denier, L'Objet 2005] Composition et interactions structurelles avec AspectJ

Conclusion