• Aucun résultat trouvé

ensemble de modèles vide.

La définition complète de la conjonction de deux spécifications modales est donnée dans la définition 14. De plus, on peut prouver (théorème 3) que la conjonction caractérise exactement l’intersection des modèles de ses opérandes.

2.2.2 Produit

Nous voulons aussi pouvoir composer des spécifications modales en calculant leur produit, qui renvoie une spécification où leurs actions communes ont été synchronisées. Ceci permet de concevoir des systèmes de bas en haut : nous pouvons partir de composants élémentaires et les composer les uns avec les autres afin d’obtenir un système plus complexe.

La définition complète du produit de deux spécifications modales est donnée dans la définition 15. Le produit de spécifications modales généralise la notion de produit d’automates en caractérisant l’ensemble des produits de modèles des deux spécifications (théorème 4) ; de plus, il en est la caractérisation la plus précise (théorème 5).

2.2.3 Quotient

Le produit présenté précédemment offre une approche de bas en haut. D’un autre côté, certains peuvent préférer une approche de haut en bas : étant donné la spécification d’un système souhaité G et la spécification d’un composant pré-existant C (venant d’une bibliothèque logicielle par exemple), quelle est la spécification du système S que nous devrions réaliser de telle sorte que son produit avec C raffine G ? Ceci est donné par le quotient G/C que nous considérons ici dans le cas modal (définition 16) en suivant l’approche de [Rac08]. Cette opération est duale du produit (théorème 7).

2.3

Non déterminisme

Les spécifications modales ont été définies aussi bien avec des automates déterministes que non déterministes. L’avantage des spécifications non déterministes est assez clair : elles représentent un sur-ensemble strict des spécifications déterministes et sont donc plus expressives. Cependant, le non déterminisme a aussi des inconvénients.

Le premier problème a été mentionné lorsque nous avons défini la relation de raffinement sur les spécifications modales et avons prouvé que cette relation était équivalente au thorough

refinement (théorème 2). Ce résultat ne tient pas pour les spécifications non déterministes, comme

montré dans [LNW07b]. Ainsi, prenons par exemple les deux spécifications non déterministes de la figure 2.5. Il y a trois choix d’implémentation autorisés par la spécification S : ne réaliser aucune transition à partir de l’état initial, réaliser une seule transition par a ou bien deux transitions consécutives par a. Dans chaque cas, le choix correspondant peut être fait par un modèle de T . Cependant, S ne raffine pas T : en partant de la paire d’états initiaux (0, 0), il y a une transition may par a qui peut aller vers la paire (1, 1) ou la paire (1, 2). Il y a une transition may par a à partir de l’état 1 de S, mais dans le premier cas, elle est interdite par l’état 1 de T et dans le second cas, elle est dans l’ensemble must de l’état 2 de T . D’après [LNW07b], le thorough refinement est décidable, donc il est possible de le tester directement plutôt que d’utiliser le raffinement modal, mais l’algorithme est co-NP dur, le rendant inutilisable sur des spécifications de grande taille.

Le second problème avec les spécifications non déterministes est que les opérations sont plus difficiles à définir et ont une complexité plus importante — nous l’avons déjà vu pour le thorough

0 1 2 a a (a) S 0 1 2 3 a a a (b) T Figure 2.5 :JS K ⊆ JT K mais S 6≤ T

refinement. Prenons par exemple l’opération de quotient. Nous en avons donné une définition pour

les spécifications modales déterministes dans la définition 16, d’après celle de [Rac08]. L’espace d’état de ce quotient est (Q1× Q2) ∪{q>}. À notre connaissance, la première définition du quotient

sur des spécifications modales non déterministes a été donnée dans [BDF+13]. L’espace d’état de

ce quotient est 2Q1×Q2, c’est-à-dire qu’il y a une explosion exponentielle pour le nombre d’états.

Les auteurs conjecturent que cette explosion exponentielle ne peut pas être évitée en général. De plus, le quotient de spécifications modales non déterministes n’est pas homogène : le résultat est une spécification modale disjonctive non déterministe.

En conséquence, bien que les spécifications non déterministes soient plus expressives, les spécifications déterministes offrent des propriétés intéressantes, comme un quotient homogène et l’équivalence entre raffinement modal et thorough ; de plus, les opérations sur ces spécifications sont plus simples à définir et plus efficaces sur de grands systèmes.

Chapitre 3

Spécifications à ensembles

d’acceptation et optimisation convexe

Nous allons maintenant donner une définition plus détaillée des spécifications à ensembles d’acceptation et démontrer que ce formalisme est plus expressif que d’autres extensions des spécifications modales comme les spécifications modales disjonctives ou les spécifications modales avec obligations. Ensuite, nous définissons les opérations de conjonction, produit et quotient sur les spécifications à ensembles d’acceptation. Dans la section 3.3, nous introduisons la première des principales contributions de cette thèse : la définition d’une sous-classe des spécifications à ensembles d’acceptation qui permet de définir des opérations plus efficaces, en particulier pour le quotient, tout en restant plus expressif que les spécifications modales disjonctives ou que les spécifications modales avec obligations. Enfin, nous donnons un aperçu de la mécanisation Coq des différents théorèmes donnés dans cette dernière section.

3.1

Sémantique

Les acceptance trees ont été introduits dans [Hen85] pour représenter des arbres non détermi- nistes avec une structure déterministe. Une variante de ces arbres adaptée aux automates a été étudiée dans [Rac08] en tant que formalisme de spécification, appelé spécifications à ensembles d’ac- ceptation, qui généralise les spécifications modales. Au lieu d’exprimer deux types de contraintes sur les transitions — qu’elles sont autorisées ou obligatoires — les spécifications à ensembles d’acceptation peuvent exprimer des contraintes arbitraires sur les ensembles de transitions pouvant être réalisés par les implémentations. Notons que les résultats présentés dans cette section et la suivante (section 3.2) sont essentiellement basés sur [Rac08].

0 1 2 3 pièce café thé panne servir servir Acc(0) = {{pièce}}

Acc(1) = {{café}, {thé}, {café, thé}, {panne}} Acc(2) = {{servir}}

Acc(3) = {{servir}}

0 1

3 pièce

thé servir

(a) Une machine ne servant que du thé

0 pièce 1 panne

(b) Une machine cassée

0 1 3 pièce thé panne servir (c) Un modèle incorrect pièce café thé servir servir pièce thé servir pièce café servir pièce panne

(d) Machine servant une tasse de thé et une tasse de café

Figure 3.2 : Des modèles de la spécification à ensembles d’acceptation de la figure 3.1 Prenons par exemple la spécification à ensembles d’acceptation de la figure 3.1. Elle spécifie le comportement d’une machine à café qui attend que quelqu’un mette une pièce puis offre du café, du thé, les deux ou indique une erreur. Contrairement aux spécifications modales, il n’y a pas deux types de transitions mais un ensemble associé à chaque état. Pour les états 0, 2 et 3, il y a un unique singleton dans l’ensemble d’acceptation, ce qui est équivalent à une unique transition must. Pour l’état 1 par contre, l’ensemble d’acceptation a quatre éléments ce qui signifie que lorsque l’on implémente la spécification, il faut choisir un de ces quatre ensembles et réaliser toutes les transitions qu’il contient.

Par exemple, lorsque nous avons implémenté le modèle de la figure 3.2(a), nous avons choisi l’ensemble de transitions {thé}, tandis que nous avons pris l’ensemble {panne} quand nous avons implémenté le modèle de la figure 3.2(b). D’un autre côté, l’automate de la figure 3.2(c) n’est pas un modèle de la spécification : depuis l’état 1, il a deux transitions, {thé, panne}, et cet ensemble n’appartient pas à l’ensemble d’acceptation de l’état correspondant dans la spécification.

Il est toujours possible de déplier une spécification quand on l’implémente afin de faire des choix d’implémentation différents dans différents états correspondant au même état de la spécification. Ainsi l’automate de la figure 3.2(d) est un modèle de la spécification qui sert exactement une tasse de thé et une tasse de café, dans n’importe quel ordre : si le café est demandé en premier, il n’offrira ensuite que du thé puis tombera en panne, tandis que si le thé est pris en premier, il n’offrira que du café avant de tomber en panne. L’état 1 de la spécification est implémenté quatre fois dans le modèle, chaque implémentation réalisant un élément différent de l’ensemble d’acceptation correspondant.

La définition formelle des spécifications à ensembles d’acceptation est proche de celle des spécifications modales avec les ensembles may/must remplacés par un ensemble d’acceptation Acc : Q → 2

. La définition complète est donnée dans la définition 17.

Les relations de satisfaction et de raffinement sur les spécifications à ensembles d’acceptation sont également adaptées des définitions sur les spécifications modales ; voir définitions 18 et 19.

3.2. Une théorie de spécification avec ensembles d’acceptation 123

Documents relatifs