• Aucun résultat trouvé

Intégration de l’observateur dans le modèle

Chapitre V. Vérification formelle d’exigences temporelles sur le modèle de conception

2. Génération d’observateurs TURTLE à partir d’exigences temporelles

2.4. Intégration de l’observateur dans le modèle

2.4.1. Définition des points d’observations

Le Tab.10 présente les deux pictogrammes retenus pour représenter les actions à capturer pour vérifier les exigences. Ces interactions sont ensuite reportées sur le diagramme de classes en représentant les associations entre objet(s) observé(s) et l’observateur.

Méthodologie de conception de systèmes temps réel et distribués en contexte UML/SysML

Label du TRDD Symbole Graphique Traduction textuelle

Start_Action « Start_Action» assoc=<T_obs, synchro,

Start=Start_Action, T_obj>

Capture_Action « Capture_Action» assoc=<T_obs, synchro,

Capture=Capture_Action, T_obj>

Tab.10. Table de traduction des descriptions d’exigences temporelles TURTLE en relation dans le diagramme de Classes

TURTLE

NB: R représente la(les) relation(s) entre les Tclasses, T_obs la TClass de l’observateur et T_obj la(les) Tclass(es) observé(s). On a assoc=<T, type, formule OCL, T’> [APV 04] où T et T’ désignent des Tclasses dont le type correspond à l’opérateur de composition (synchro, séquence, préemption, invocation) attaché à l’association entre les TClasses et où la formule OCL désigne l’opération de synchronisation entre les portes des Tclasses.

2.4.2. Construction du modèle observable : principe

La Fig.45 montre que TTool traduit tous les diagrammes TURTLE (sauf les diagrammes de cas d’utilisation) en TIF (TURTLE Intermediate Format). Ce format intermédiaire correspond aux diagrammes de conceptions (CD ou AD) exprimés en TURTLE natif [APV 06] et sert de point de départ pour la transformation de la spécification TURTLE en langage formel RT-LOTOS.

Le modèle TIF est donc directement traduit des diagrammes de conception11 (CD et ADs). A partir des diagrammes d’exigences (RD et TRDDs) des observateurs peuvent être générés pour guider et interpréter la vérification des exigences temporelles décrites par le diagramme de description d’exigences temporelles (TRDD). Les observateurs sont construits dans le format TIF du système spécifié en TURTLE. Le format TIF ainsi obtenu est traduit en spécification RT-LOTOS pour engendrer ensuite le graphe d’accessibilité.

Fig.45. Génération des observateurs

11 Ce modèle peut aussi être traduit à partir des diagrammes d’analyses (IOD et SDs) [APV 06] ; cet aspect sera

uniquement traité dans les perspectives.

Génération TURTLE Intermediate Format (TIF) Spécification RT-LOTOS Traduction Vérification Formelle Exigences Génération automatique d’observateurs Conception Modèle du système RTL

2.4.3. Méta-modèle UML du modèle couplé avec l’observateur

La Fig.46 montre le méta-modèle du package de conception TIF où il est possible de greffer un observateur permettant de se synchroniser avec le système observé. Le package TIF est composé d’observateurs et d’un package de conception qui est à observer (Classe Observed_Design_Package). Ce package est composé d’un diagramme de Tclasses composé lui-même d’un ensemble de Tclasses à observer (Classe Observed_Tclass) et de Tclasses qui ne sont pas observées (Classe Non_Observed_Tclass).

Les Tclasses observées contiennent des portes observées (Classe Observed_Gate qui correspondent une à une aux points d’observations du TRDD (Classe Observation_Point) comme le montre l’association étiquetée par corresponds_to. Les portes observées sont ensuite synchronisées avec les portes de l’observateur (Classe Gates_Obs composée par la classe Observation_Gates). La synchronisation est montrée par l’association étiquetée par is_synchronized_with.

Les portes de contrôle d’exécution de l’observateur (Classe Execution_Control) interrompent toutes les classes du système en TIF (classes observées, non observées et les observateurs) si l’exigence est violée (le méta-modèle de la Fig.46 le montre par l’association étiquetée par interrupts et le commentaire attaché sur la classe Execution_Control).

Class diagram6 //TURTLE Intermediate Format Metamodel packagemetamod_obs {6/7}

<<stereotype>> TObserver <<stereotype>> ::metamod_Tnative::TDesign_Package <<stereotype>> TURTLE_Intermediate_Format * * <<stereotype>> Observed_Design_Package 1 1 <<browserNode,i nstancePresentation>> ::metamod_Tnative::TClass_Diagram 1 1 Observed_TClass_Diagram 1 1 Observed_TClass * * <<interface>> Gates_Obs 3..* 3..* <<interface>> Observation_Gates 2 2 Observed_Gate 1..* 1..* Observation_Points corresponds _to 1 1 corresponds _to 1 1 is_synchronized_with 1 1 is_synchronized_with 1 1 <<interface>> Execution_Control * * Non_Observed_TClass * * interrupts interrupts interrupts interrupts interrupts interrupts //if Violated_Action occurs during the execution

Fig.46. Méta-modèle du package TIF incluant des observateurs

2.4.4. Algorithme d’insertion d’un observateur dans le système à observer

Comme le montre l’algorithme 6, deux étapes sont nécessaires dans la génération du nouveau modèle TURTLE comportant les observateurs :

Méthodologie de conception de systèmes temps réel et distribués en contexte UML/SysML

• Connecter l’observateur aux autres classes/objets du système par des relations de synchronisations (cf. algorithme 7).

• Pouvoir interrompre l’exécution du système si une exigence haute est violée en modifiant les diagrammes d’activité des objets du système, en ajoutant un mécanisme de préemption (cf. algorithme 8). Si une exigence basse est violée alors l’observateur n’interrompt pas l’exécution du système mais notifie sur le graphe d’accessibilité la violation d’exigence qui sera ensuite reportée sur la matrice de traçabilité.

_________________________________________________________________________________ Algorithme 6 Construction du nouveau modèle

M_final Create_Mod_Obs (M_init) {

// Création des relations observateur objets observés

CDfinal = Create_Obs_Relations (CDinit); //Algorithme 7

//Modification des objets observés si besoin d’interruption if (criticality==high)

Mfinal = Create_Obj_Interrupt (Minit); //Algorithme 8

}

Glossaire: M_final = Modèle TURTLE comportant l’observateur

Où M_final = <CDfinal, <ADfinal , ADobs>> CDfinal = Diagramme de classe final

ADfinal = Diagrammes d’activités des Tclasses autres que l’observateur ADobs= Diagramme d’activités de l’observateur

M_init = Modèle TURTLE sans l’observateur

Où M_init = <CDinit, ADinit > CDinit= Diagramme de classe initial

ADinit = Diagramme d’activités initial des Tclasses

Dans cette partie on connecte l’observateur aux objets observés. Ceci est fait à partir des points d’observations définis dans le TRDD qui correspondent à des synchronisations entrantes avec l’observateur qui les effectue de manière atomique.

________________________________________________________________________________________ Algorithme 7 Construction du nouveau modèle

CDfinal Create_Obs_Relations (CDinit) {

// Ajout des relations de synchronisation avec les points d’observation CDfinal = CDinit;

assoc=<T_obs, synchro, Start= Start_Action, T_obj[0]> ; // T_obj et T_obj’ peuvent être différents ou non

assoc=<T_obs, synchro, Capture= Capture_Action, T_obj[1]> ; }

Glossaire: CDfinal = Diagramme de classe final CDinit = Diagramme de classe initial

Pour respecter l’interruption de l’exécution des objets observés si une exigence haute est violée il faut modifier d’une part le diagramme d’activités de l’observateur (voir algorithme 5) et d’autre part les comportements des objets observés (voir algorithme 8). Il faut construire dans les

objets du système (objets observés ou non) les mécanismes pour stopper l’exécution du système. Il faut donc construire des dispositifs de préemption basés sur synchronisations entre les différents objets du système et l’observateur pour déclencher l’arrêt de l’exécution. De même les diagrammes d’activités des objets du système doivent être modifiés pour prendre en compte ce processus de préemption. Ceci est exprimé par l’algorithme 8.

_________________________________________________________________________________ Algorithme 8 Interruption de l’exécution des objets observés

M_final Create_Obj_Interrupt (M_init) {

CDfinal=CDinit

// Pour l’ensemble de objets/classes du système for (i=1, i<=nb_TC, i++)

// Ajout d’un porte de communication pour interrompre la Tclasse {

CDfinal= CDinit; R[i]=<T_obs, synchro, Stop_[i]=Stop, T_C[i]>;

// Ajout d’un mécanisme d’interruption dans le comportement de l’objet/classe <ADfinal[i]> = Preemption (<ADinit[i]>, Stop);

} }

Glossaire: nb_TC = nombre de Tclasses dans le diagramme de Classes T_obs = Tclass de l’observateur

TC = autres Tclasses

R = Relation entre la Tclass de l’observateur et les autres M_final= Modèle TURTLE comportant l’observateur

Où M_final = <CDfinal, <ADfinal ,ADobs>> CDfinal = Diagramme de classe final

ADfinal = Diagrammes d’activités des Tclasses autres que l’observateur ADobs= Diagramme d’activités de l’observateur

M_init = Modèle TURTLE sans l’observateur

Où M_init = <CDinit, ADinit > CDinit = Diagramme de classe initial

ADinit= Diagramme d’activités initial des Tclasses