La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Plan Introduction La Programmation Orientée Aspect Utilisation de la POA dans le framework LargOnline Conclusion 1 er octobre 20086 èmes Journées Informatique.

Présentations similaires


Présentation au sujet: "Plan Introduction La Programmation Orientée Aspect Utilisation de la POA dans le framework LargOnline Conclusion 1 er octobre 20086 èmes Journées Informatique."— Transcription de la présentation:

1

2 Plan Introduction La Programmation Orientée Aspect Utilisation de la POA dans le framework LargOnline Conclusion 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

3 La Programmation Orientée Aspect Utilisation de la POA dans le framework LargOnline Conclusion Plan 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

4 Système Read Out Driver Electronique Frontale Archivage des données Filtrage des événements Construction des événements Système Read Out Buffer Détecteurs LEVEL 1 LEVEL 2 Pipeline Derandomizer 100 GOctets/s ~ GOctets/s ~ 100 MOctets/s 40 MHz 100 kHz ~ kHz 100 Hz Détecteur interne Calorimètres Détecteur à muon ~ 150 PCs ~ 100 PCs ~ 1600 PCs ~ 30 PCs Système en ligne ATLAS Architecture 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

5 Système Read Out Driver Electronique Frontale Archivage des données Filtrage des événements Construction des événements Système Read Out Buffer Détecteurs LEVEL 1 LEVEL 2 Pipeline Derandomizer 100 GOctets/s ~ GOctets/s ~ 100 MOctets/s 40 MHz 100 kHz ~ kHz 100 Hz Détecteur interne Calorimètres Détecteur à muon ~ 150 PCs ~ 100 PCs ~ 1600 PCs ~ 30 PCs Système en ligne ATLAS Architecture 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

6 Contrôleur de châssis ROD Synoptique Contrôleur de châssis ROD Configuration Plugins Module Composants de base Synchronisation Thread Aspect Traçage Monitoring VME Message IGUI Base de donnees Contrôle d’ exécution IPC/CORBA Traçage 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

7 Framework LargOnline 1 ere version en 2002 Language C++ Redesign en 2004 Thread (groupe/hiérarchie) Backtrace (gdb) Plugin (Chargement dynamique de classes) Design Pattern Observer Command State Singleton Parseur d’expression (Arbre binaire d’expression type évaluateur posfix) Réflexion (RTTI + macros) Auto-instrumentation avec pré/post insertion dynamique dans certaines méthodes (DAQ interface) 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

8 Introduction Utilisation de la POA dans le framework LargOnline Conclusion Plan 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

9 Dispersion de code (scattering code) Entrelacement de code (tangling code) Dégradation Lisibilité Compréhension Évolution Les limites de la POO Symptomes 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

10 Dispersion de code Exemple du serveur WEB Tomcat Appels centralisés: bonne modularité Appels non centralisés: mauvaise modularité XML parsing Loggin 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

11 1996 Projet du Xerox Alto Research Center Gregor Kiczales et son équipe La POA Origine 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

12 La POA Principe 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

13 Éviter la dispersion Le module n’invoque plus les services Les services se greffent sur le module Sans IoC X Y Avec IoC X Y > I La POA Inversion des dépendances (IoC) 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

14 Traçage Persistance (SGBD, File system) Intégrité de la transaction Identification/Authentification Cohérence des données Sécurité Intégrité Load-balancing etc. La POA Aspects techniques 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

15 Un tisseur d'aspects (aspect weaver) permet d'injecter le code nécessaire à l’insertion des aspects, à l'intérieur du code formant la base de l'application. Par intercepteurs (.NET, JBoss) Tissage statique (static weaving) : à la compilation de l’application Tissage dynamique (dynamic weaving) : à l’exécution du programme La POA Tisseur d’aspects 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

16 La POA Tisseur d’aspects Java : AspectJ AspectJ (statique) JAC JAC (dynamique) AspectWerkz AspectWerkz (statique/dynamique) C++ : AspectC++AspectC++ (statique).NET (C#, VB.NET...) : AspectDNGAspectDNG (statique) PostSharp PostSharp (statique) PHP : phpAspect phpAspect (statique) C : AspectC AspectC (statique) Caml : Aspectual Caml Aspectual Caml (statique) Python : Aspects Aspects (statique) Common Lisp : AspectL AspectL (statique) 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

17 La POA Terminologie Point de jonction, d’exécution (join point) «Est un endroit spécifique, dans le flot d'exécution du système.» Coupe ou point de coupure (pointcut) «Désigne un ensemble de points de jonction sur lequel le tisseur d'aspect insérera les greffons.» Expression de coupe «Est utilisée dans le but de définir une coupe. Elles définissent l'emplacement où le greffon est censé affecter le programme.» Greffon (code advice) «Est un bout de programme qui sera activé (avant et/ou après) lors de l'exécution d'un point de jonction défini par une coupe.» Aspect «Est un module définissant des coupes et des greffons.» 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY V Y WX Z

18 Introduction La Programmation Orientée Aspect Conclusion Plan 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

19 Tisseur d’aspects dynamique Tissage et dé-tissage à exécution Ordonnancement d’aspects Introspection de points de jonction LArg Online Aspect Caractéristiques 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

20 LArg Online Aspect Caractéristiques 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY Points de jonctions connus Insertion du tisseur lors de la phase de développement

21 > LArg Online Aspect Diagramme de classes 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

22 LArg Online Aspect Diagramme de séquence 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

23 LArg Online Aspect Synoptique du tisseur dynamique 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

24 // DAQ include #include // LargOnline include #include #ifndef __PROF_H__ #define __PROF_H__ //////////////////////////////////////////////////////////////////////// // Calculates the amount of time spent in routine //////////////////////////////////////////////////////////////////////// class Prof: public Larg::aop::Aspect, public OnlineObject { public: // Ctor explicit Prof (const std::string& name); // Dtor virtual ~Prof (); virtual bool AdviceBefore (const Larg::aop::OnlineJoinPoint* tjp); virtual bool AdviceAfter (const Larg::aop::OnlineJoinPoint* tjp); private: OWLTimer myTimer; }; #endif // __PROF_H__ // DAQ include #include // LargOnline include #include #ifndef __PROF_H__ #define __PROF_H__ //////////////////////////////////////////////////////////////////////// // Calculates the amount of time spent in routine //////////////////////////////////////////////////////////////////////// class Prof: public Larg::aop::Aspect, public OnlineObject { public: // Ctor explicit Prof (const std::string& name); // Dtor virtual ~Prof (); virtual bool AdviceBefore (const Larg::aop::OnlineJoinPoint* tjp); virtual bool AdviceAfter (const Larg::aop::OnlineJoinPoint* tjp); private: OWLTimer myTimer; }; #endif // __PROF_H__ 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY LArg Online Aspect Exemple

25 LArg Online Aspect Plugin 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

26 before after around order ( ) Modificateurs % …::% (…) % …:: (…) % ::% (…) % :: (…) % ::% …::% (…) % :: ::% (…) % :: :: (…) Patterns class ( ) derived ( ) object ( ) Types || && ! Opérateurs logiques LArg Online Aspect Syntaxe des expressions de coupe 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY after class (% …::% (…)) before class (%…::Init (…)) around derived (% Larg::%…::% (…)) before object (ROD_01) && object (ROD_14) order (1) after class (% …::% (…)) before class (%…::Init (…)) around derived (% Larg::%…::% (…)) before object (ROD_01) && object (ROD_14) order (1)

27 Introduction La Programmation Orientée Aspect Utilisation de la POA dans le framework LargOnline Plan 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAY

28 Conclusion La Programmation Orientée Aspect est complémentaire à la Programmation Orientée Objet Plusieurs types d’aspects écrits et utilisés (debugging, profiling, point de rendez-vous et adaptateur) Dans l’ avenir peut-être mixer tissage statique (AspectC++) et dynamique. On commence à voir (sphère académique) appliquer la POA à des niveaux supérieurs (composants, ADL) 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAYFatih Bellachia

29 01/06/201629

30 Un objet client ne peut être supprimé s’il n’a pas honoré toutes ses commandes. Cas Ni l'objet commande, ni l'objet client ne peuvent effectuer cette opération car ce n'est pas de leur responsabilité. Il ne serait pas logique de demander à une commande de supprimer un client, ni à un client de vérifier qu'une commande est en cours (un objet client ne doit pas contenir de commandes si nous voulons garder la logique objet du programme). Problème Fonctionnalités transverses Exemple de contrainte d’intégrité référentielle 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAYFatih Bellachia

31 Identifier les préoccupations métier (classes) et techniques (aspects) Implémenter chaque préoccupation séparément Tisser les différentes préoccupations La POA Étapes d’un développement POA 1 er octobre 20086 èmes Journées Informatique IN2P3-IRFU - OBERNAYFatih Bellachia


Télécharger ppt "Plan Introduction La Programmation Orientée Aspect Utilisation de la POA dans le framework LargOnline Conclusion 1 er octobre 20086 èmes Journées Informatique."

Présentations similaires


Annonces Google