|
<< |
|
< |
|
> |
|
>> |
|
|
Depuis 1997, la programmation orientée aspect (POA) provoque l'engouement de la communauté scientifique s'intéressant au génie logiciel. Cette technique offre de nouvelles perspectives à un principe bien connu en génie logiciel: la séparation des préoccupations (concern). L'étude des techniques de développement classiques comme
les méthodes itératives font apparaître que le principal
problème de l'informatique est un problème organisationnel
lié à un entrelacement des sous-problèmes techniques
ou fonctionnels d'une application. Depuis quelques années, l'intérêt de la communauté scientifique pour ce problème s'est accru de manière considérable et de nombreuses tendances et techniques visant à le résoudre ont vu le jour. Parmi les principales, on peut citer la Programmation Orientée Aspect ("AOP, Aspect-Oriented Programming") de l'équipe de G. Kiczales au Xerox PARC en Californie, la Programmation Orientée Sujet (" Subject-Oriented Programming") d'IBM et la Programmation par Intention ("Intentional Programming") de Microsoft. Toutes ces approches visent peu ou prou à appliquer aux langages
de programmation le principe bien connu en génie logiciel de séparation
des préoccupations ("separation of concerns"). Plutôt
que d'attaquer le développement d'une application de front, ces approches
suggèrent de concevoir des composants logiciels indépendants
et fournissent des moyens pour les assembler. |
La Programmation Orientée Objet effectue un découpage du projet selon les Objets (implémentation de Classes). | |
=> | Caractéristiques: emmêlement et éparpillement du code. |
=> | Conséquences: à long terme mauvaise traçabilité, faible productivité, faible réutilisation et pauvre qualité du code, évolution complexe. |
|
|
=> | Décomposition par aspects: les aspects dits "techniques" ou "non-métiers" sont isolés du coeur de l'application; ce sont les composantes du projet JAC |
=> | Implémentation des besoins: les besoins purement métiers sont implémentés (éventuellement, selon une POO) |
=> | Recomposition en fonction des aspects (tissage ou wrapping): Les aspects précédemment isolés sont, au runtime!, rattachés au programme (implémentant les besoins). Ces aspects sont alors aisément configurables et évolutifs. |
|
La POA diffère grandement de la POO dans la manière dont
elle gère les problèmes de recoupements. Une implémentation POA peut employer une autre méthodologie de programmation en tant que méthodologie de base, ce qui permet de cumuler les bénéfices des deux approches. Par exemple, une implémentation POA peut choisir la POO comme système de base pour profiter des bénéfices dune meilleure implémentation des besoins communs au travers de la POO. Avec une telle implémentation, les besoins individuels peuvent employer les techniques de POO pour chaque besoin identifié. Cest analogue au fait dutiliser un langage procédural comme base pour un langage orienté objet (C et C++ par exemple). Finalement, on peut voir la POA comme une alternative, plus poussée, à l'utilisation de design paterns, ou autres "astuces", en POO. |
|
<< |
|
< |
|
> |
|
>> |
|