Mage : Les Concepts

Mage : Les Concepts

Un modèle Mage est composé de deux parties un génome et un phénotype. Le phénotype représente l’équivalent d’un système logiciel classique. Le génome est une collection de gènes qui façonnent continuellement le phénotype. La figure 1.1 résume l’approche de Mage vis à vis de l’évolution. Monde réel Embryogenèse Inexistant G0 G1 P1 G2 P2 … Gn Pn Phase de modélisation Réutilisation M0 M1 M2 Mn Monde réel Gext1 Gext2 Gext3 Un système ontogénétique Un autre système ontogénétique Ontogenèse Monde réel Légende Mi : Modèle en phase i  (Gi, Pi) Gi : Génome en phase i Pi : Phénotype en phase i Gext : Groupe de gènes Interactions Changement du système Réutilisation du génome Ajout/Retrait de gènes Figure 1.1. L’évolution selon Mage Selon cette figure, on constate l’existence de trois grandes phases : La modélisation. Un modèle commence à exister à la fin de la phase de modélisation qui consiste en une conception et une implémentation. Le but de cette phase est de produire un génome qui, une fois exécuté, donne au modèle son premier phénotype. L’embryogenèse. La fin d’une phase importante du modèle est atteinte lorsqu’il parvient à la fin de l’embryogenèse. Cette fin est marquée par l’aptitude du modèle à interagir avec l’environnement (dans le sens de l’exécution des fonctions). L’évolution continue. Le génome demeure actif et façonne continuellement le modèle. Les changements non anticipés sont injectés sous forme de gènes dans le génome. 17 Durant la phase de l’évolution continue, un modèle Mage se présente sous la forme donnée en figure 1.2. Cette dernière fait ressortir quatre notions : le phénotype, le génome, l’interaction et les stimuli. Nous décrivons ci‐après le rôle de chacune.   Modèle Mage Partie modélisé Monde réel Perception des interactions Perception des activités et états Perception de l’activité du génome Ajout/Retrait des gènes Interactions Altération du phénotype       Phénotype Génome Classe 1 Classe i Classe n Figure 1.2. Les Concepts en Mage 1.5.4 Mage : Mode Opérationnel Mage fait usage de quatre notions : le phénotype, le génome, l’interaction et les stimuli. On parle de phénotype à la fin de la phase d’embryogenèse. Le phénotype est décrit à l’aide d’un composant appelé composant universel. Le phénotype est ainsi un graphe constitué d’une multitude de composants universels simples ou composés et interconnectés pour former l’équivalent d’un système objet classique. Il consiste en des composants interconnectés appelés composants universels (UC). Le composant universel est une unité destinée à modéliser et abstraire tous les constituants d’un système : classe, méthode, objet primitif, objet d’une classe, tableau et instruction, graphe, sous graphe (Figure 1.3). Le phénotype est ainsi un graphe constitué d’une multitude de composants universels, simples ou composés, et interconnectés pour former l’équivalent d’un système objet classique. Les composants universels ont une granularité variable et leur interconnexion fixe à la fois le flux de données et le flux de contrôle. Cette représentation du phénotype permet une expression plus simple et plus uniforme du génome. En effet, au lieu d’altérer un phénotype complexe, le génome altère des connecteurs, des imbrications de composants, des types de composants, etc. 18 Le génome est partagé en segments dits chromosomes. Chaque chromosome se compose d’éléments de faible granularité qui sont les gènes. On distingue trois types de chromosomes : Chromosome D. Ce type regroupe les gènes constructeurs ou de développement, responsables des altérations des comportements et structures du phénotype. Chromosome F. Ce type est composé des gènes qui garantissent des fonctionnalités d’ordre global comme le verrouillage et déverrouillage des composants lors du changement. Chromosome C. Il matérialise le flux de contrôle de l’évolution et est constitué des gènes contrôleurs qui agissent par activation/désactivation sur tous les autres gènes.   Les gènes sont des objets dont la structure, immuable, se compose de quatre parties : type, état d’activation, condition de déclenchement et informations complémentaires.   La condition d’un gène lui permet de percevoir les stimuli. On en distingue 3 types : Les stimuli factuels qui reflètent l’état d’un constituant du phénotype ou du génome (présence ou absence de composants universels, de gènes, de connexions, …).   Les stimuli d’activité qui indiquent qu’une activité du phénotype ou du génome est lancée ou terminée. Ils comprennent les stimuli d’interaction qui indiquent un échange entre le phénotype et le monde réel. Les stimuli temporels qui permettent aux gènes de se déclencher indépendamment de la structure ou l’état du système, mais conformément à un repère temporel. Ce repère peut être celui d’une propriété, d’un objet ou d’une classe et peut être absolu (celui du système). L’approche Mage utilise deux modèles d’exécution différents. Le premier est celui du phénotype et le second celui du génome. Au niveau du phénotype, le modèle est celui des langages orientés objets classiques. La sémantique associée à l’UC (composant universel) est la suivante : Les UC qui matérialisent des données ou des classes n’utilisent pas les flux de contrôle. Il est possible d’y introduire une valeur par l’entrée Select et de lire celle stockée à partir de la sortie Ret. Les UC qui matérialisent des méthodes ou des instructions utilisent le flux de contrôle et le flux de données. Le déclenchement de l’exécution de l’action associée à l’UC s’opère par l’arrivée d’un jeton sur CFIN et la présence des données nécessaires sur les entrées d’information Select et DI0..DIN. Après traitement, le jeton est transmis sur CFOUT1 (CFOUT2 dans le cas de IF‐Else si Select est à faux) et le résultat sur les sorties d’information Ret et DO0..DON. Toute incompatibilité de données forcera l’UC à produire une exception qui 19 consiste à transmettre le jeton sur la sortie CFEX qui est reliée à un UC de type Method qui la traite. CFIN CFOUT1 Select Ret Type / Name CFOUT2 Data In Data Out CFEX Le composant universel (UC) Type : Indique le rôle de l’UC (classe, méthode, instruction, …) Name : Nom symbolique ou un nombre unique qui identifie l’UC. Si l’UC est une instruction d’appel, le nom indique l’objet dont la méthode est invoquée. CFIN : Entrée du flux de contrôle CFOUT1 : Première sortie du flux de contrôle CFOUT2 : Seconde sortie du flux de contrôle CFEX : Sortie du flux de contrôle dans le cas des exceptions Select : Entrée non typée qui reçoit une valeur, une référence d’objet ou un sélecteur de méthodes Ret : Sortie non typée donnant la valeur/référence d’objet ou le résultat d’une méthode DataIn : DI0 ..DIN sont des entrées non typées utilisées pour recevoir des paramètres si l’UC est une méthode ou un appel, ou les indexes d’un élément si l’UC est un tableau DataOut : Sortie de valeurs ou références d’objets résultat de l’exécution d’une méthode UC CFIN Select Integer / I Data In Data Out Ret CF CFOUT1 OUT2 CFEX CFIN Select Real[4][5] / T Data In Data Out Ret CF CFOUT1 OUT2 CFEX CFIN Select IF-Else / Choix Data In Data Out Ret CF CFOUT1 OUT2 CFEX CFIN Select Assign / Aff Data In Data Out Ret CF CFOUT1 OUT2 CFEX Ce qu’il représente Un objet primitif de type Integer. Seuls Select et Ret sont utilisés. Select permet d’assigner une valeur à l’UC et Ret permet de la lire Un tableau à deux dimensions de réels nommé T. Select et Ret permettent d’écrire/lire une valeur. DI0 et DI1 introduisent les indexes des valeurs. Instruction If-Else. Le Select reçoit le Ret d’un sous-graphe évaluant une condition. Le flux de contrôle arrive par CFIN puis est transmis sur CFOUT1 ou CFOUT2 selon la valeur du Select. C’est une affectation qui établit une connexion entre deux objets. Le Select de l’objet assigné est connecté au Ret de Aff et la valeur assignée est donnée sur le Select de Aff. Figure 1.3 Le composant universel 

L’évolution Anticipée et Non Anticipée

Les systèmes ontogénétiques présentent la caractéristique d’évoluer dynamiquement et de manière autonome pour répondre aux besoins des utilisateurs et leurs changements qu’ils soient anticipés ou non, sachant que : Les changements anticipés sont ceux identifiés avant la livraison des systèmes logiciels. Ils n’ont de signification que lorsque vient le moment opportun. Ces changements peuvent être anticipés au moment de la conception et doivent être prévus par le programmeur (concepteur) pendant les phases de développement du produit logiciel. Il serait aisé de les inclure moyennant un paramétrage dans le système. Par exemple, le passage d’un objet d’une classe à une autre (e.g. un candidat qui soutient une thèse devient enseignant et passe de la classe Etudiant à la classe Enseignant [Ous 99]. Les changements non anticipés sont définis dans [Alm 06] comme : “unanticipated software evolution is not something for which we can prepare during the design of a software system”. Que l’on peut traduire par “Les évolutions non anticipées ne peuvent être prises en compte durant la conception des systèmes logiciels”. Ils visent à corriger les erreurs, ajouter de nouvelles fonctionnalités et en supprimer d’autres. Ces dernières apparaissent une fois le système opérationnel. Ce sont des changements que l’équipe de développement du produit n‘a pas considéré dans le processus de conception et d’implémentation. 

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *