Présentation

Article

1 - ORIGINE ET GENÈSE

  • 1.1 - Origine
  • 1.2 - Constat
  • 1.3 - Genèse

2 - CONCEPTS

  • 2.1 - Aspect
  • 2.2 - Coupe et points de jonction
  • 2.3 - Greffon
  • 2.4 - Introduction de code
  • 2.5 - Héritage d’aspect et aspect abstrait
  • 2.6 - Ordonnancement d’aspects
  • 2.7 - Mise en œuvre de la programmation par aspects

3 - LANGAGES ET CADRICIELS

4 - CONCLUSIONS

5 - GLOSSAIRE

Article de référence | Réf : H3170 v1

Langages et cadriciels
Programmation par aspects

Auteur(s) : Lionel SEINTURIER

Date de publication : 10 juil. 2016

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais En anglais

RÉSUMÉ

La programmation par aspects (en anglais « aspect-oriented programming ») est un style de développement logiciel qui est apparu dans la seconde moitié des années 1990. Elle complète les styles existants, objet, procédural et fonctionnel, avec un support pour la programmation de fonctionnalités dites transverses. Elle permet d'améliorer la modularité des programmes informatiques. Cet article présente la genèse de la programmation par aspects, les concepts qui la composent et la façon dont ils sont mis en œuvre dans deux approches majeures du domaine : le langage de programmation AspectJ et le cadriciel Spring AOP.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

ABSTRACT

Aspect-oriented programming (AOP) is a software development style that appeared in the second half of the 1990s. Aspect-oriented programming complements existing styles – object-, procedure-, and function-based – with a support for crosscutting programming functionalities. It enables the modularity of programs to be improved. This article presents the origins of aspect-oriented programming, its concepts and how they are implemented by two major approaches in the domain: the AspectJ programming language and the Spring AOP framework.

Auteur(s)

  • Lionel SEINTURIER : Professeur des universités - Université de Lille, Villeneuve d’Ascq, France

INTRODUCTION

La programmation par aspects (aspect-oriented programming) est un style de développement logiciel qui est apparu dans la seconde moitié des années 1990. Elle se situe dans une lignée de styles de programmation qui ont été proposés, au fil de l’évolution de l’informatique, pour améliorer la structuration des programmes. L’idée sous-jacente est que, plus un langage informatique permet de structurer les programmes, plus la conception de ces programmes, leur écriture, leur compréhension, leur maintenance et leur évolution en seront facilitées. Parmi les prédécesseurs du style de programmation par aspects, nous pouvons citer la programmation fonctionnelle, la programmation procédurale, la programmation modulaire, la programmation objet et la programmation réflexive. Chacun de ces styles a apporté des concepts qui permettent de rendre la structure d’un programme plus claire et lisible. De même, la programmation par aspects capitalise sur l’expérience acquise avec ces styles de programmation et permet de faire progresser la structuration des programmes informatiques. La programmation par aspects ne remet pas en cause les styles de programmation l’ayant précédée. Au contraire, les langages de programmation par aspects continuent de s’appuyer sur les styles existants, notamment et surtout la programmation objet. Elle les complète en améliorant leur capacité à écrire des programmes plus modulaires et mieux structurés.

La programmation par aspects est née du constat que, dans de nombreux programmes informatiques, l’écriture de certaines fonctionnalités s’articule mal avec le reste du programme et conduit à du code qui est peu lisible, mal structuré et difficile à maintenir. Ces fonctionnalités sont alors dites transverses au reste du programme. La programmation par aspects s’appuie sur ce constat et propose la notion d’aspect qui est un nouvel élément de structuration des programmes informatiques qui permet d’écrire les fonctionnalités transverses de façon plus claire et mieux structurée, rendant ainsi le programme plus facilement maintenable.

Face au constat de l’absence de concepts pour la prise en compte des fonctionnalités transverses, la programmation par aspects aborde la problématique de savoir quels sont les bons artefacts de programmation qui permettent de retranscrire les fonctionnalités transverses et surtout comment ceux-ci peuvent être intégrés avec le reste du programme. Pour cela, la programmation par aspects définit le concept d’aspect comme étant constitué d’un ensemble de coupes et de greffons. Les coupes définissent le caractère transverse de l’aspect et permettent l’intégration de l’aspect avec le reste du programme, tandis que les greffons définissent le comportement de l’aspect.

Dans cet article, nous présentons les concepts de base de la programmation par aspects et nous les illustrons avec les deux approches les plus couramment utilisées par la communauté des développeurs en programmation par aspects : le langage AspectJ et le cadriciel Spring AOP.

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

KEYWORDS

Computer   |   programming   |   scripting languages   |   Software development   |   framework   |   aspect

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h3170


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais En anglais

3. Langages et cadriciels

Depuis la fin des années 1990 et la mise en exergue du concept d’aspect, de nombreux langages de programmation par aspects ont été proposés. Ces langages s’appuient sur des langages existants comme Java, C++, C, C#, Smalltalk, PHP, Python, COBOL. La page Wikipédia sur la programmation par aspects recense une vingtaine de langages de programmation par aspects. Dans la suite de ce paragraphe, nous présenterons les deux approches qui ont remporté le plus de succès parmi les développeurs informatiques : le langage AspectJ et le cadriciel Spring AOP.

3.1 AspectJ

AspectJ est un langage de programmation par aspects qui s’appuie sur le langage Java. AspectJ a été créé par Gregor Kiczales et son équipe. AspectJ fait office de langage de référence pour la mise en œuvre des concepts de la programmation par aspects. Les premières versions de AspectJ sont apparues en 2001. AspectJ est un logiciel open source disponible en téléchargement sur le site web du consortium Eclipse. Différentes versions du logiciel ont été et continuent à être produites. En 2005, une évolution majeure a été introduite dans AspectJ avec le support d’une syntaxe de programmation à base d’annotations. Nous la présentons dans le paragraphe 3.1.4. Cette syntaxe est aussi celle utilisée par Spring AOP que nous présentons dans le paragraphe 3.2. La version d’AspectJ en date de janvier 2016 est numérotée 1.8.8.

HAUT DE PAGE

3.1.1 Premier exemple d’aspect

Afin d’illustrer la syntaxe d’AspectJ, nous allons prendre l’exemple d’un programme Java constitué d’un ensemble de classes et d’un aspect qui permet de reconstituer un diagramme de séquence, c’est-à-dire la liste des appels de méthodes entre les objets de ce programme. La figure 1 fournit le code AspectJ de l’aspect DiagrammeSequence qui réalise cela.

Pour les besoins de...

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Langages et cadriciels
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - KICZALES (G.), LAMPING (J.), MENDHEKAR (A.), MAEDA (C.), LOPES (C.), LOINGTIER (J.-M.), IRWIN (J.) -   Aspect-oriented programming.  -  Actes de ECOOP, 11e Conférence européenne sur la programmation orientée objet, LNCS 1241, p. 220-242 (1997)

  • (2) - GAMMA (E.), HELM (R.), VLISSIDES (J.), BOOCH (G.) -   Design patterns : elements of reusable object-oriented software.  -  Addison-Wesley (1995).

  • (3) - HANNEMANN (J.), KICZALES (G.) -   Design pattern implementation in Java and AspectJ.  -  Actes de OOPSLA, 17e Conférence sur la programmation orientée objet : systèmes, langages et applications, ACM SIGPLAN Notices, 37(10), p. 161-173 (2002).

  • (4) - PAWAK (R.), RETAILLÉ (J.-P.), SEINTURIER (L.) -   Programmation orientée aspect pour Java/J2EE.  -  Eyrolles (2004).

  • (5) - KICZALES (G.), DES RIVIERES (J.), BOBROW (D.) -   The art of the metaobject protocol.  -  MIT Press (1991).

1 Sites Internet

Apache Tomcat http://tomcat.apache.org (page consultée le 23 mars 2016)

ASM http://asm.ow2.org (page consultée le 14 avril 2016)

AspectJ https://eclipse.org/aspectJ (page consultée le 23 mars 2016)

Spring http://spring.io (page consultée le 23 mars 2016)

Wikipédia Lisp https://fr.wikipedia.org/wiki/Lisp (page consultée le 14 avril 2016)

Wikipédia Programmation orientée aspect https://fr.wikipedia.org/wiki/Programmation_orientée_aspect (page consultée le 23 mars 2016)

HAUT DE PAGE

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS