Programmation orientée sujet - Subject-oriented programming

En informatique , la programmation orientée sujet est un paradigme logiciel orienté objet dans lequel l'état (champs) et le comportement (méthodes) des objets ne sont pas considérés comme intrinsèques aux objets eux-mêmes, mais sont fournis par diverses perceptions subjectives ("sujets") des objets. Le terme et les concepts ont été publiés pour la première fois en septembre 1993 dans un document de conférence qui a ensuite été reconnu comme l'un des trois documents les plus influents présentés à la conférence entre 1986 et 1996. Comme illustré dans cet article, une analogie est faite avec le contraste entre les vues philosophiques de Platon et de Kant en ce qui concerne les caractéristiques des objets "réels", mais appliqués aux logiciels. Par exemple, alors que nous pouvons tous percevoir un arbre comme ayant une hauteur, un poids, une masse de feuilles, etc. mesurables, du point de vue d'un oiseau, un arbre peut également avoir des mesures de valeur relative à des fins de nourriture ou de nidification, ou du point de vue d'un expert fiscal, il peut avoir une certaine valeur imposable au cours d'une année donnée. Ni les informations d'état supplémentaires de l'oiseau ni de l'évaluateur fiscal ne doivent être considérées comme intrinsèques à l'arbre, mais sont ajoutées par les perceptions de l'oiseau et de l'évaluateur fiscal, et d'après l'analyse de Kant, la même chose peut être vraie même des caractéristiques auxquelles nous pensons comme intrinsèque.

La programmation orientée sujet préconise l'organisation des classes qui décrivent les objets en "sujets", qui peuvent être composés pour former des sujets plus vastes. Aux points d'accès aux champs ou aux méthodes , les contributions de plusieurs sujets peuvent être composées. Ces points ont été caractérisés comme les points de jonction des sujets. Par exemple, si un arbre est abattu, les méthodes impliquées peuvent devoir associer le comportement des sujets de l'oiseau et de l'évaluateur à celui de l'arbre. Il s'agit donc fondamentalement d'une vision de la nature compositionnelle du développement logiciel, par opposition à la nature algorithmique (procédurale) ou masquant la représentation (objet).

Des relations

Relation avec la programmation orientée aspect

L'introduction de la programmation orientée aspects en 1997 a soulevé des questions sur sa relation avec la programmation orientée sur les matières et sur la différence entre les matières et les aspects. Ces questions sont restées sans réponse pendant un certain temps, mais ont été abordées dans le brevet sur la programmation orientée aspect déposé en 1999 dans lequel deux points apparaissent comme des différences caractéristiques par rapport à l'art antérieur :

  • le programme d'aspect comprend à la fois a) une coupe transversale qui comprend un point dans l'exécution où le comportement transversal doit être inclus ; et b) une action transversale comprenant un élément d'implémentation associé à l'élément transversal, l'élément d'implémentation comprenant un code de programme lisible par ordinateur qui implémente le comportement transversal.
  • l'aspect force de manière transparente le comportement transversal sur les classes d'objets et autres entités logicielles

Dans la vue orientée sujet, la coupe transversale peut être placée séparément de l'aspect (sujet) et le comportement n'est pas forcé par l'aspect, mais régi par des règles de composition. Le recul permet également de distinguer la programmation orientée aspect par son introduction et son exploitation du concept de point de coupure de type requête pour imposer de manière externe les points de jointure utilisés par les aspects de manière générale.

Dans la présentation de la programmation orientée sujet, les points de jointure ont été délibérément limités à l'accès au champ et à l'appel de méthode au motif qu'il s'agissait des points auxquels des cadres bien conçus ont été conçus pour admettre une extension fonctionnelle. L'utilisation de points de coupe imposés de l'extérieur est une capacité linguistique importante, mais reste l'une des caractéristiques les plus controversées de la programmation orientée aspect.

Relation avec le développement logiciel orienté aspect

Au tournant du millénaire, il était clair qu'un certain nombre de groupes de recherche poursuivaient différentes technologies utilisant la composition ou la fixation d'états et de fonctions emballés séparément pour former des objets. Pour distinguer le domaine d'intérêt commun de la programmation orientée aspect avec ses définitions de brevets particulières et pour souligner que la technologie de composition ne concerne pas seulement la phase de codage du développement logiciel, ces technologies ont été organisées ensemble sous le terme de développement logiciel orienté aspect , et une organisation et une série de conférences internationales commencées sur le sujet. Comme la programmation orientée aspect, la programmation orientée sujet, les filtres de composition, la programmation orientée fonctionnalité et les méthodes adaptatives sont considérées comme des approches de développement logiciel orientées aspect.

Dimensions

Séparation multidimensionnelle des préoccupations, Hyper/J et l'environnement de manipulation des préoccupations

La formulation originale de la programmation orientée sujet l'envisageait délibérément comme une technologie d'emballage – permettant d'étendre l'espace des fonctions et des types de données dans l'une ou l'autre dimension. Les premières implémentations avaient été pour C++ et Smalltalk. Ces implémentations ont exploité les concepts d'étiquettes logicielles et de règles de composition pour décrire la jonction des sujets.

Pour répondre à la préoccupation selon laquelle une meilleure base devrait être fournie pour l'analyse et la composition du logiciel non seulement en termes de son emballage mais en termes de diverses préoccupations abordées par ces packages, une organisation explicite du matériel a été développée en termes de multi- « matrice » dimensionnelle dans laquelle les préoccupations sont liées aux unités logicielles qui les mettent en œuvre. Cette organisation est appelée séparation multidimensionnelle des préoccupations , et le document qui la décrit a été reconnu comme le document le plus influent de la conférence ICSE 1999.

Ce nouveau concept a été mis en œuvre pour composer un logiciel Java , en utilisant le nom Hyper/J pour l'outil.

La composition et le concept de sujet peuvent être appliqués aux artefacts logiciels qui n'ont pas de sémantique exécutable, comme les spécifications d'exigences ou la documentation. Un véhicule de recherche pour Eclipse , appelé Concern Manipulation Environment (CME), a été décrit dans lequel des outils de requête, d'analyse, de modélisation et de composition sont appliqués aux artefacts dans n'importe quel langage ou représentation, grâce à l'utilisation d'adaptateurs de plug-in appropriés pour manipuler la représentation.

Un successeur du moteur de composition Hyper/J a été développé dans le cadre de CME qui utilise une approche générale pour les différents éléments d'un moteur de composition :

  • un langage de requête avec unification pour identifier les points de jointure,
  • un modèle flexible de fixation structurelle,
  • une spécification de graphe imbriqué pour ordonner les éléments identifiés,
  • et une spécification d'ordre de priorité pour résoudre les conflits entre des règles conflictuelles.

Hyper/J et CME sont tous deux disponibles, respectivement auprès d'alphaWorks ou de sourceforge, mais aucun n'est activement pris en charge.

La programmation orientée sujet comme "troisième dimension"

La répartition des méthodes dans la programmation orientée objet peut être considérée comme « bidimensionnelle » dans le sens où le code exécuté dépend à la fois du nom de la méthode et de l'objet en question. Cela peut être contrasté avec la programmation procédurale, où un nom de procédure se résout directement, ou dans une dimension, sur un sous-programme, et aussi à la programmation orientée sujet, où l'expéditeur ou le sujet est également pertinent pour l'envoi, constituant une troisième dimension.

Voir également

Les références

Liens externes