WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Une approche IDM du transformation du modèle ecore vers event-b.

( Télécharger le fichier original )
par Bouazizi Hana
FSM - Mastère recherche 2014
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3.3 Modèle Event-B

Le modèle est le premier concept d'Event-B. Il est composé d'un ensemble des machines et des contextes. Un modèle Event-B peut contenir des contextes seulement, des machines seulement ou les deux. Dans le premier cas, le modèle représente une structure mathématique pure. Le deuxième cas représente un modèle non paramétré.

3.3.1 Structure d'une Machine

La machine Event-B contient des éléments dynamiques qui décrivent l'état du système. Une machine est constituée de trois sections principales : les variables sont données dans la clause VARIABLES et initialisées dans la clause Initialisation, aussi les invariants définit l'espace d'état des variables, et les évènements. La machine est constituée de plusieurs clauses, ces clauses sont décrites comme suit :

~ MACHINE : La clause MACHINE représente le nom du composant qui devrait être unique dans un modèle.

~ SEES : la clause SEES spécifie la liste des contextes « vus » par la machine. Dans ce cas la machine peut utiliser les constantes les ensembles et les axiomes figurant dans le contexte.

~ VARIABLES : définit la liste des variables introduites dans la machine qui constituent l'état du système. Les valeurs de ces variables sont initialisées dans Initialisation et peuvent changer par les évènements.

~ INVARIANTS : sert au typage des variables et à décrire les contraintes qu'elles doivent respecter sous forme des prédicats.

~ EVENTS : contient la liste des événements qui opèrent une ou plusieurs substitutions sur la valeur des variables. L'événement INTIALISATION donne une valeur initiale aux variables.

page 43

3.3 Modèle Event-B

3.3.2 Structure d'un Contexte

Un contexte représente la partie statique du modèle, il est composé de constantes et d'axiomes décrivant les propriétés de ces constantes. Un contexte peut être visible pour une machine en utilisant la clause « SEES ».

FIGURE 3.2 - Relation entre un contexte et une machine

La structure du contexte est constituée d'un ensemble de clauses introduites par des mots clés, ces clauses sont décrites comme suit :

~ CONTEXT : représente le nom du composant qui devrait être unique dans un modèle.

~ SETS : définit les ensembles porteurs du modèle. Ces ensembles non vides servent à typer le reste des entités du modèle.

~ CONSTANTS : cette clause contient la liste des constantes utilisées par le modèle. Dans la suite nous présentons les constituants d'un évènement Event-B.

3.3.3 Structure d'un Evénement

En Event-B, les événements remplacent les opérations. Un événement d'initialisation permet de définir les valeurs initiales des variables. Ces valeurs doivent établir les invariants. Les autres événements ont des gardes qui garantissent des propriétés. Les gardes sont définies dans la clause WHEN et sont mises en conjonction. Si l'une des gardes d'un événement est fausse, l'événement ne peut pas être déclenché. Les actions d'un événement sont exécutées de manière concurrente, et il n'est pas possible de modifier la même variable dans deux actions d'un même événement.

page 44

3.3 Modèle Event-B

La structure d'un évènement est constituée d'un ensemble de clauses introduites par des mots clés. Ces clauses sont décrites comme suit :

~ ANY : énumèe la liste des paramètres de l'évènement.

~ WHERE : contient les différentes gardes de l'évènement. Ces gardes sont des conditions nécessaires pour déclencher l'évènement. Il faut noter que si la clause « any » est omise le mot clé « where » est remplacé par « when ».

~ WITH : lorsqu'un paramètre abstrait disparait dans la version concrète de cet évènement, il est indispensable de définir un témoin sur l'existence de ce paramètre. ~ THEN : décrit la liste des actions de l'évènement.

3.3.3.1 Les différentes formes des événements

Les évènements, dans Event-B, peuvent avoir l'une des trois formes : indéterminée, gardée ou simple. La sémantique formelle d'un évènement s'exprime à partir de la sémantique de la substitution autrement dit la relation qui existe entre la valeur des variables avant et après le déclenchement de l'évènement.

La première est la forme dite indéterministe où x est une variable d'état du système et t une variable locale. L'évènement ne se déclenche que s'il existe une valeur de la variable t qui satisfait le prédicat G(x, t).x : P (x', x, t) est l'action de l'évènement. La présence de la variable locale t fait que cet évènement est non déterministe.

EVENT nom
ANY
t
WHERE
G(x, t)
THEN
x : P(x, x0, t)
END

page 45

3.3 Modèle Event-B

La seconde forme est celle dite gardée dans laquelle il n'y a pas de variable locale et où la garde et l'action ne dépendent que des variables d'états du modèle.

EVENT nom
WHEN
G(x)
THEN
x : P(x, x0)
END

La forme simple inclut seulement une action. Cela équivaut donc à une garde qui est toujours vraie.

EVENT nom
BEGIN
x : P(x, x0)
END

Il existe aussi un évènement avec une action et une garde vide : l'évènement skip. Rappelons qu'il existe un évènement obligatoire, nommé INITIALISATION, qui est toujours de la forme simple. A la différence d'un véritable évènement, cet évènement permet d'initialiser le système en spécifiant les valeurs initiales possibles (qui doivent bien sûr respecter les invariants).

Avant de passer aux obligations de preuve d'un modèle B, il faut présenter les prédicats avant-après des événements traditionnellement notés BA (pour before after en anglais). Ces prédicats définissent la relation entre la valeur des variables d'état avant et après le déclenchement des événements. La valeur d'une variable x après le déclenchement d'un événement est notée x'. Par exemple le prédicat avant-après de l'événement TICK de la machine HORLOGE est heure' = heure+1.Le tableau 3.1 résume les prédicats avant-après selon la forme des événements.

page 46

3.3 Modèle Event-B

TABLE 3.1 - prédicats avant-après 3.3.3.2 Obligations de preuves

Les obligations de preuve définissent ce que doit être prouvée pour un modèle Event-B. Ils sont générés automatiquement par un générateur d'obligations de preuve. Ce générateur vérifie les machines et les contextes et il décide ce que doit être prouvé dans ces machines et contextes.

Nous décrivons dans ce qui suit les obligations de preuve associées à une machine abstraite d'un modèle Event-B.

L'obligation de preuve de préservation de l'invariant : INV

Cette obligation de preuve assure que chaque invariant d'une machine soit préservé par chaque évènement. Pour un évènement evt et un invariant inv (x), l'obligation de preuve associée est "evt / inv / INV". Si I(x) est l'invariant du système, alors pour tout évènement E du système qui a comme prédicat avant-après BA l'obligation de preuve est comme suit:

I(x)?BA(x, x') = I(x')

Par rapport à notre exemple l'obligation de preuve est la suivante :

Heure E 0..23 heure < 23

F-

heure := heure + 1

page 47

3.4 Exemple de machine en Event-B

L'obligation de preuve de Faisabilité : FIS

Le but de cette obligation de preuve est de s'assurer que l'action non-déterministe est réalisable. Pour un évènement evt et une action act l'obligation de preuve associée est "evt/act/-FIS". I étant l'invariant du système, alors l'obligation de preuve qui correspondant à un évènement E est comme suit :

I (x)?grd(E) = x'.P(x, x')

Heure E 0..23 heure < 23

F-

?i.i E 0..23 ?i := heure + 1

Par rapport à notre exemple l'obligation de preuve est la suivante :

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre"   Paul Eluard