• Aucun résultat trouvé

En modifiant ou enrichissant la catégorie Graph, il est possible d’obtenir des variations de l’approche DPO. Une des plus répandues est l’approche «simple pushout». Pour construire ce

cadre théorique, on autorise dans la catégorie de départ les morphismes partielsf : G → H, c’est-

à-dire définis seulement sur un sous-graphe du graphe de départ G. Cette nouvelle définition des

morphismes permet alors d’effacer et d’ajouter des éléments à un graphe en ne calculant qu’un seul

pushout : en effet, si on définit une production par un morphisme partiell entre deux graphes L

etR, les éléments qui n’ont pas d’image par l seront effacés lors du calcul du pushout et ceux qui

n’ont pas de préimage parl seront créés.

La principale différence avec l’approche «double pushout» se trouve dans la gestion des cas

problématiques. Plus précisément, on a vu que l’application d’une production p à un graphe G

dans l’approche DPO passe par la vérification de la condition de collage avant de calculer un pushout-complement afin d’éviter de trouver des arcs attachés à un seul ou aucun sommet dans le résultat final. Dans l’approche SPO, on calcule seulement un pushout, il n’y a donc aucune condition préalable à remplir avant de commencer la transformation. Comment sont alors traités ses arêtes problématiques ? Contrairement à l’approche DPO qui est conservatrice et interdit l’application de la règle en présence d’un tel arc, l’approche SPO est non-conservatrice et la construction explicite du pushout montre que les arêtes problématiques vont être naturellement effacées lors du calcul. Bien entendu, dans ce cas, on perd la caractéristique de réversibilité des transformations de graphes. Un autre système dérivé de l’approche DPO consiste à enrichir la catégorie afin de pouvoir ajouter des attributs sur les graphes. Cet enrichissement sera détaillé dans le chapitre III.

3

Discussion

Ces systèmes catégoriques offrent donc une base théorique très solide pour transformer des graphes. Comme nous l’avons vu, l’approche par pullback permet de traduire le formalisme NLC dans un cadre catégorique. On peut trouver dans la littérature d’autres approches qui sont inter- prétables avec le pullback : dans [4] il est expliqué comment appliquer des règles de transformations NCE grâce à un double pullback et on peut lire dans [5] comment traduire l’approche Hyperedge Replacement à l’aide de graphes bipartites. Une autre possibilité offerte par le pullback est la copie simple de graphe (cf. [46]). En effet, grâce au fait que la catégorie Graph possède un élément final (un seul sommet avec une arête formant une boucle sur ce sommet), il suffit d’une seule règle pour pouvoir copier n’importe quel graphe, alors qu’avec le pushout, il est nécessaire de définir une règle pour chacun des graphe que l’on veut dupliquer.

L’approche par pushout nous donne donc un moyen très intuitif de coder les transformations de graphes. De plus, le manière de définir une production dans cette approche permet de définir un contexte pour appliquer la règle et il est par ailleurs possible d’ajouter à une règle des conditions

d’application afin d’empêcher l’application de cette production en présence d’un certain sommet ou d’une certaine arête (cette idée sera développée dans le paragraphe 4 du chapitre VI). Cette caractéristique, en plus des propriétés évoquées dans la section 2.3, en fait un candidat naturel pour représenter les transformations de modèle dans l’approche MDA. Pour cela, il faut enrichir la définition des graphes afin de prendre en compte les attributs portés par les modèles avec lesquels on travaille en génie logiciel. Cette possibilité va être développé dans le chapitre suivant.

Pour conclure cette discussion, on peut ajouter quelques remarques sur la complexité d’une récriture de graphes dans l’approche DPO. L’étape la plus gourmande en calcul et en temps de

cette construction est la reconnaissance du sous-graphe isormorphe à la partie gauche L de la

règle dans le graphe sourceG. On sait que cette recherche est en réalité un problème NP-complet ;

plus précisément, chercher un sous-graphe constitué de l éléments dans un graphe composé de n

éléments possède une complexité en O(nl). Pour autant, cette compléxité exponentielle n’est pas

rédhibitoire dans l’optique de la transformation de modèles à l’aide de graphes : dans [68], l’auteur montre que sous certaines conditions, le cout des calculs reste tout à fait acceptable : en particulier, il faut limiter la taille des parties gauches des règles et ne chercher à appliquer à un moment donné qu’un nombre restreint de règles. Dans la plupart des exemples de transformations de modèles, ces condtions sont remplies.

Chapitre III

Ajouter de l’information sur les

graphes : les systèmes adhésifs

HLR

En UML, et plus généralement dans le cadre de travail défini par le MDA, les graphes repré- sentant les modèles comportent presque tout le temps des attributs (par exemple pour préciser le nom des classes ainsi que les méthodes associées). Les transformations de modèles doivent prendre en compte ces attributs afin, d’une part, de ne pas perdre d’information lors de l’application de la transformation, mais aussi d’autre part, de pouvoir faire des calculs plus ou moins complexes avec ces attributs. Le problème est donc maintenant de trouver un formalisme adapté pour ajouter cette information dans la catégorie des graphes qui permettent lors de la construction du double pushout ce travail avec les attributs.

Dans ce but, les systèmes adhésifs HLR ont été introduits par Hartmut Ehrig et ses collègues [32] dans l’optique de fusionner l’approche catégorique par double pushout pour les transformations de graphes et le calcul sur les attributs. D’un point de vue théorique, cette approche s’appuie sur une généralisation [26] des catégories adhésives introduites par Lack et Sobocinski en 2004 [48]. Le but de ces catégories est de définir le cadre de travail minimum pour obtenir les bonnes propriétés pour un système de transformations basé sur le pushout. Plusieurs raffinements de cette approche existe, on pourra par exemple citer [47] dans lequel on ne considère plus que les opérations unaires dans les signatures algébriques.

Remarque 6. Dans la suite de la thèse, le concept de typage va apparaître avec deux sens diffé- rents : le premier est la traduction sur les graphes de la relation entre un modèle et son méta-modèle ou entre un méta-modèle et son méta-méta-modèle comme définie dans le cadre du MDA ; le seconde utilisation du mot typage sera faite dans le cadre de la théorie des types (et plus particulièrement des types inductifs) pour décrire les attributs : par exemple, si un attribut est défini comme un entier naturel, comme un caractère alphanumérique, etc. Il n’y a a priori aucun risque de confu- sion entre ces deux concepts et on utilisera ainsi le terme type ou un de ses dérivés sans plus de précision.

On commence ici par rappeler les définitions et quelques propriétés d’une catégorie adhésive. La suite du chapitre est consacré à la construction d’une catégorie de graphes attribués et typés satisfaisant à ces conditions.

1

Les catégories adhésives

Documents relatifs