Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parCaroline Savard Modifié depuis plus de 8 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.