AD-TOS : Séparation des aspects pour la programmation répartie orientée objet Laurence Duchien, Gérard Florin, Renaud Pawlak (CEDRIC-CNAM), Lionel Seinturier (LIP6) Paris - France
Les Composants d’Aspect 1. configuration Préoccupation extra-fonctionnelle Points de jonction Encapsulation événementielle ?? 2. Introspection structurelle 3. Intercession événementielle Système fonctionnel 2/22/2019 Séminaire systèmes distribué et connaissances
Séminaire systèmes distribué et connaissances Un exemple simple sum=0 sum checksum Invoice --- sum:=300 sum:=700 sum=700? item=printInvoiceItem; total=printInvoiceTotal; weave() { wrap(item,sum); wrap(total,checksum); } sum () {sum+=arg0} checksum() {if(sum!=arg0) error} ok Invoice --- printInvoiceTotal print- Invoice- Item 400 300 400 300 700 700 tissage Invoice --- Service 1……$300 Service 2……$400 Total…..……$700 Invoice --- Service 1……$300 Service 2……$400 Invoice --- Service 1……$300 Invoice --- Service 1……$300 Service 2……$400 Invoice --- Service 1……$300 Invoice --- Service 1……$300 Service 2……$400 Total…..……$700 printInvoiceItem(300) printInvoiceItem(400) printInvoiceTotal(700) output 2/22/2019 Séminaire systèmes distribué et connaissances
Composition d’aspects... Chaque composant d’aspect possède sa propre représentation du programme de base (points de jonction) Intercession événementielle n’entraînant pas de changement du programme de base Composition semi-automatique, commutation des aspects Dynamicité, adaptativité (à l’éxécution) Encapsulation conflictuelle Règles génériques décision automatique de l’ordre d’appel Programme de base Règles spécifiques externes c’est l’aspect de composition 2/22/2019 Séminaire systèmes distribué et connaissances
Séminaire systèmes distribué et connaissances Avantages des aspects Modèle de développement qui intègre et traite naturellement la plupart des problèmes soulevés par le génie logiciel : Séparation des préoccupations jusqu’au niveau du code Implantations generiques réutilisabilité Changement à l ’exécution support de l ’adaptabilité Post-specification de certains aspects évolutivité Traite de problèmes transversaux et non locaux aux objets naturellement ouverts à la répartition de l’information 2/22/2019 Séminaire systèmes distribué et connaissances
Un exemple simple (bis) 2/22/2019 Séminaire systèmes distribué et connaissances
Travaux en cours / perspectives Portage de AD-TOS en Java (le projet JAC) (http://www.aopsys.com/jac.html) Composition automatique Modèle de programmation répartie basée sur les groupes d ’objets et mieux adapté à la programmation répartie par aspect Performances : optimisations locales (au niveau des points de jonctions) optimisations globales (au niveau d ’aspects d ’optimisations permettant l ’ordonnancement et le choix d ’aspect suivant des critères sémantiques) 2/22/2019 Séminaire systèmes distribué et connaissances
Un exemple réparti simple Utilisation de proxies (encapsuleurs spécifiques) et définition de : la politique de distribution (localisation des objets) la (les) politiques de replication(s)/cohérence(s) (entre les objets) ! DistributionAspect::weave {prog} { myproxy = new ProxyWrapper(serverhost); myproxy.wrap(prog.class(serverclass).instances); foreach client in prog.class(clientclass).instances { myproxy = new ProxyWrapper(clienthosts[client]); myproxy.wrap(client); } prog.copyAll(clienthosts); } } serverhost=h1; serverclass=Diary; clientclass=User; clienthosts={ h2, h3 } User name Diary makeAppointment(time,users) cancelAppointment(time,users) 0-* 2/22/2019 Séminaire systèmes distribué et connaissances
Un modèle de déploiement à base de groupes Définition de composant d ’aspect spécifiques permettant la réification d ’évenement précis. whenWrite, whenRead sur chaque objet protocole de cohérence whenWrap, whenUnwrap sur chaque objet vision uniforme du groupe quand on l’étend Implemente le wrapping de groupe. 2/22/2019 Séminaire systèmes distribué et connaissances
Séminaire systèmes distribué et connaissances Implementation A-TOS is a prototype built on Tcl Reflective class-based language for local introspection Event-based wrappers support Aspect-Components support Distribution support (TOS Communication Protocol: remote invocation, object migration) Being coupled with Delphi for GUI development Available at: http://cedric.cnam.fr/personne/pawlak/tos.html Demo 2/22/2019 Séminaire systèmes distribué et connaissances