Origine et genèse
Programmation par aspects
H3170 v1 Article de référence

Origine et genèse
Programmation par aspects

Auteur(s) : Lionel SEINTURIER

Date de publication : 10 juil. 2016 | Read in English

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

Sommaire

Présentation

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

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.

Logo Techniques de l'Ingenieur

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

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


DOI (Digital Object Identifier)

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

Lecture en cours
Présentation

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

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

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

1. Origine et genèse

1.1 Origine

La programmation par aspects  a vu le jour dans la seconde moitié des années 1990. Elle a été proposée par Gregor Kiczales et son équipe de recherche au Xerox PARC (Palo Alto Research Center), centre de recherche internationalement reconnu d’où sont originaires de nombreuses innovations majeures dans le domaine du numérique telles que la technologie Ethernet pour les réseaux, l’impression laser ou encore les concepts liés aux interfaces graphiques pour les programmes informatiques.

Une influence majeure de la programmation par aspects peut être trouvée dans les travaux autour du langage de programmation Lisp. L’origine de Lisp remonte à la fin des années 1950 et aux travaux menés au MIT par Jon McCarthy sur l’intelligence artificielle. Gregor Kiczales a contribué aux travaux de la communauté Lisp notamment comme auteur principal de l’implantation de référence de CLOS (Common Lisp Object System. Macro-génération et méta-programmation sont des concepts familiers de Lisp qui sont une des sources d’influence de la programmation par aspects.

HAUT DE PAGE

1.2 Constat

La programmation par aspects est née d’un constat fait à propos des programmes écrits avec des langages de programmation objet tels que Java ou C++. Les informaticiens se sont, par la suite, aperçus que ce constat est valable pour tous les autres styles de programmation. La programmation par aspects ne remet pas en cause les acquis de ces différents styles, mais vient les compléter et améliorer leurs capacités de structuration.

Le...

Logo Techniques de l'Ingenieur

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

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Origine et genèse

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

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

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

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
Logo Techniques de l'Ingenieur

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

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

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

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Ressources documentaires

Linux embarqué

Linux est un système d'exploitation multitâche de la famille UNIX. Développé initialement sur processeur ...

Rust (langage de programmation)

Le langage de programmation Rust permet l’écriture de logiciels de haute performance, par une conception ...

Compilateur

Un compilateur est un logiciel permettant de transformer un programme source (écrit dans un langage de ...

Langage UML : développement de logiciel et modélisation visuelle

Le langage UML (pour Unified Modeling Language) est un langage graphique de modélisation des systèmes ...