UML et RT-LOTOS - LAAS-CNRS

Transcription

UML et RT-LOTOS - LAAS-CNRS
UML et RT-LOTOS
Vers une intégration informel/formel au service de la
validation de systèmes temps réel
P. de Saqui-Sannes*,** — L. Apvrille*,**,*** — C. Lohr** — P. Sénac*,**
— J.-P. Courtiat**
*
ENSICA, 1 place Emile Blouin, 31056 Toulouse Cedex 05, France
{desaqui, apvrille, senac}@ensica.fr
**
LAAS-CNRS, 7 avenue du Colonel Roche, 31077 Toulouse Cedex 04, France
{lohr, courtiat}@laas.fr
***
Alcatel Space Industries, 26 avenue J.-F. Champollion, BP 1187, 31037 Toulouse
Cedex 01, France
RÉSUMÉ. Face aux limitations des solutions UML temps réel actuellement sur le marché,
l’article propose un profil UML qui donne une sémantique formelle aux associations entre
classes, définit des opérateurs temporels de type délai non déterministe et offre limitée dans le
temps et ajoute des facilités de validation de contraintes temporelles. La sémantique formelle
de ce profil est donnée par la traduction dans le langage formel RT-LOTOS dont l’outil de
validation permet de construire des graphes d’accessibilité à partir de diagrammes UML
étendus. Outre l’exemple de la machine à café traité dans l’article, le profil proposé est en
cours d’évaluation sur un système de reconfiguration dynamique de logiciel embarqué à bord
de satellite.
ABSTRACT. The paper proposes a UML profile to overcome the limitations of real-time
solutions currently offered on the market. Associations between classes are given a formal
semantics. New temporal operators are introduced; they include a non deterministic delay
and a time-limited offering. Last but not least, UML models can be validated against time
constraints. The profile’s semantics is given via a translation to formal language RT-LOTOS.
The latter is supported by a validation tool used to generate reachability graphs from
extended UML models. A coffee machine serves as example in the paper. The profile is under
evaluation on a satellite-based software reconfiguration system.
MOTS-CLÉS :
Systèmes temps réel, Méthodes formelles, UML, RT-LOTOS, Validation.
KEY WORDS:
Real-Time Systems, Formal Methods, UML, RT-LOTOS, Validation.
1. Introduction
Le langage de modélisation UML [OMG 99a] a suscité un intérêt croissant
auprès des industriels qui développent des systèmes temps réel. A côté des solutions
« UML temps réel » supportées par quelques grandes sociétés [ART 99, DOU 99,
SEL 98], UML temps réel a également fourni une thématique de recherche sur
l’intégration d’UML et des Techniques de Description Formelle [AND 01][DUP
01][DEL 98]. Une TDF a une sémantique formelle, ce qui permet de mettre en
œuvre une validation a priori. Les modèles UML qui se voient dotés d’une
sémantique formelle peuvent être validés par rapport à des risques d’incohérences
logiques (interblocage par exemple) ou temporelles. D’où l’intérêt accru de la
notation UML pour la conception de systèmes temps contraints.
Cet article propose un profil UML conçu dans un objectif de validation de
systèmes temps réel. Ce profil se caractérise ainsi : primo, une sémantique formelle
est donnée aux associations entre classes ; deusio, des opérateurs temporels avec
délai non déterministe et offre limitée dans le temps sont introduits dans les
descriptions de comportement ; tertio, les classes et leurs descriptions
comportementales sont traduites en une description formelle en RT-LOTOS, algèbre
de processus temporisé supporté par un outil de validation. Un point important est
que la syntaxe RT-LOTOS demeure transparente aux utilisateurs d’UML qui
peuvent ainsi valider des classes UML sans apprendre RT-LOTOS. Le profil est
nommé TURTLE, acronyme anglais de « Timed UML and RT-Lotos Environment ».
L’article est structuré comme suit : le paragraphe 2 fait un tour d’horizon des
travaux du domaine ; le paragraphe 3 introduit RT-LOTOS ; le paragraphe 4 définit
le profil TURTLE ; le paragraphe 5 traite une étude de cas, à savoir un distributeur
de café ; le paragraphe 6 conclut l’article et esquisse les prolongements de ce travail.
2. Travaux du domaine
Forte du support de l’Object Management Group (OMG), la notation UML est
de plus en plus utilisée par les concepteurs de systèmes temps réel. Dans les faits, ce
n’est pas un, mais plusieurs UMLs temps réel qui sont en compétition pour répondre
aux exigences du Request For Proposal [OMG 99b] de l’OMG.
— UML-RT est supporté par Rose RT et inclut dans UML des concepts
importés de ROOM [SEL 98] ;
— RT-UML est supporté par Rhapsody et utilise autant que possible les
constructions natives d’UML 1.3 [DOU 99] ;
— UML en amont de SDL est proposé par Telelogic (outil TAU [BJO 00] );
— Artisan Software Real-Time Studio [ART 99].
Au delà de leurs différences, les solutions implantées par ces outils industriels
présentent des limitations importantes en termes d’expression de contraintes
temporelles. Ainsi, les opérateurs temporels sont limités à des temporisateurs à
durée fixe. L’absence d’opérateurs pour gérer des intervalles rend impossible la
description de la gigue et plus généralement de l’asynchronisme inhérent aux
systèmes multimédia en réseaux [SEN 96]. Enfin, il manque à UML un opérateur
apte à exprimer une offre limitée dans le temps.
Les limitations mentionnées ci-dessus ont été contournées en utilisant des
primitives systèmes dépourvues de sémantique formelle, ce qui empêche de valider
des modèles UML par la confrontation a priori à des exigences temporelles. Des
actions concertées ont vu le jour pour remédier à cette situation et donner une
sémantique précise à UML [BRU 98, BRU 99, EVA 99]. Les travaux de recherche
portent sur l’utilisation conjointe d’UML et d’une méthode formelle : Systèmes de
Transitions Etiquetés [GUE 00, JAR 98], réseaux de Petri [PAL 98], Z [DUP 00],
langages synchrones [AND 01, DUP 01], PVS [TRA 00] et E-LOTOS [CLA 00].
3. RT-LOTOS
LOTOS [BOL 87] est une Technique de Description Formelle pour la
spécification et la conception de systèmes de traitement distribués. Une spécification
LOTOS se présente sous la forme d’un processus structuré en d’autres processus.
Un processus LOTOS est une boite noire qui communique avec son environnement
au travers de portes et sur le principe d’une offre de rendez-vous. Des échanges
mono- ou bi-directionnels de valeurs sont autorisés lors de la synchronisation.
Le parallélisme et la synchronisation entre processus s’expriment par des
opérateurs de composition : mise en séquence, synchronisation sur toutes les portes,
synchronisation sur certaines portes, choix non déterministe et entrelacement
(composition parallèle sans synchronisation). Les opérateurs de composition sont
identifiés par leurs symboles (Tableau 1).
Opérateur Description
Exemple
[]
Choix.
P[a,b,c,d] = P1[a,b] []
P2[c,d]
|||
Composition parallèle sans synchro- P[a,b,c,d] = P1[a,b] |||
nisation.
P2[c,d]
|[b,c,d]|
Composition parallèle avec synchro- P[a,b,c,d,e] =
nisation sur plusieurs portes (b,c,d).
P1[a,b,c,d] |[b,c,d]|
P2[b,c,d,e]
hide b in Composition parallèle avec synchro- P[a,c] =
|[b]|
nisation sur la porte b qui est de plus hide b in P1[a,b] |[b]|
cachée.
P2[b,c]
>>
Composition séquentielle.
P[a,b,c,d] =P1[a,b] >>
P2[c,d]
[>
Préemption.
P[a,b,c,d] = P1[a,b] [>
P2[c,d]
;
Prefixage d’un processus par l’action a.
a; P
stop
Processus qui ne peut communiquer avec aucun autre processus.
exit
Processus qui peut se terminer et se transformer ensuite en stop.
Tableau 1. Opérateurs LOTOS
RT-LOTOS étend LOTOS avec trois opérateurs temporels (Tableau 2). La
combinaison d’un délai déterministe et d’un délai non déterministe permet de traiter
les intervalles temporels. Le langage ainsi étendu conserve la partie « contrôle » de
LOTOS, mais remplace les types de données algébriques par des implantations en
C++ ou Java [COU 00].
Opérateurs
Temporel
a{T}
delay(t1)
latency(t2)
Description
Offre limitée dans le temps.
Délai déterministe.
Délai non déterministe.
Tableau 2. Opérateurs temporels de RT-LOTOS
4. Le profil TURTLE
Un profil UML spécialise le méta-modèle UML en un méta-modèle spécifique à
un domaine d’application [TER 00]. Un profil est composé d’un certain nombre
d’éléments sélectionnés depuis le méta-modèle de référence, de mécanismes
d’extension, d’une description de la sémantique du profil, et enfin, de règles
permettant la présentation, la traduction et la validation du modèle.
Le profil UML proposé dans cet article fournit des outils destinés à améliorer la
description logique et temps-réel des relations entre classes, et les comportement
internes de ces mêmes classes. Cela se traduit, d’une part, au niveau du diagramme
de classes, par l’introduction d’un nouveau stéréotype1 UML au méta-modèle UML
et, d’autre part, au niveau de la description comportementale des classes (diagramme
d’activités), par l’introduction, entre autre, de trois opérateurs temporels.
1
Un stéréotype est un ajout indirect au méta-modèle UML. Le stéréotype TURTLE ainsi que les types
abstraits sont identifiés graphiquement par un symbole « TURTLE » situé dans le coin supérieure droit de
la classe considérée.
Deux types de classes cohabitent au sein des diagrammes de classes du profil
TURTLE : des classes dites « normales », et des classes stéréotypées Tclass. Quatre
relations (association, agrégation, composition et héritage) permettent d’établir des
liens entre les classes. Ces dernières peuvent être, au choix du concepteur, actives ou
passives. Une classe active est une classe dont les instances possèdent leur propre
flux d’exécution (ou processus léger) et peuvent ainsi déclencher une interaction.
4.1. Le type abstrait Gate
En plus des procédés classiques dont disposent habituellement les classes pour
communiquer (appel de méthode, modification d’attributs publics, etc.), les classes
stéréotypées Tclass peuvent communiquer via des portes, un concept pour lequel
nous introduisons le type abstrait Gate (Figure 1a.). Par défaut, une Gate permet des
échanges d’information bidirectionnels. Deux types abstraits sont ajoutés pour
rendre ces échanges mono-directionels (cf. Figure 1b) : on distingue les portes sur
lesquelles des données peuvent être émises (OutGate) et les portes sur lesquelles des
données peuvent être reçues (InGate). Dans la suite de l’article, nous utilisons
l’expression « une Tclass réalise un appel sur une Gate g » pour exprimer qu’une
Tclass désire communiquer sur la porte g de type Gate.
Gate
Ga te
InGate
(a)
OutGate
(b)
Figure 1. Le type abstrait Gate (a) et la distinction entre InGate et OutGate
4.2. Le stéréotype Tclass
La Figure 2 décrit la structure générale d’un stéréotype Tclass : les attributs de
type Gate y sont séparés des autres attributs. Les propriétés principales des Tclass
sont les suivantes :
— prop1 : tous les attributs, sauf ceux de type Gate, doivent être déclarés privés
ou protégés (#).
— prop2 : toutes les méthodes, sauf les constructeurs, doivent être déclarées
privées (-) ou protégées (#). Les constructeurs peuvent être déclarés publics.
— prop3 : un diagramme d’activités2 doit accompagner chaque Tclass et décrire
ainsi son comportement. Ce diagramme peut utiliser tout attribut ou classe déclarés
dans la Tclass ou hérités.
2
Seuls les diagrammes d’activité sont pris en considération dans cet article. Nos travaux futurs
aborderont les machines à états.
Tclass Id
Identificateur de la classe de stéréotype Tclass.
Attributs
Liste d’attributs, excepté les attributs de type Gate.
Portes (Gates)
Méthodes
Description du
comportement
Liste d’attributs de type Gate. Ils peuvent être déclarés
publics (+), privés (-), ou protégés (#).
Liste de méthodes, incluant un constructeur.
Diagramme d’activités qui peut faire référence aux
attributs, portes et méthodes précédemment définis, ou
hérités.
Figure 2. Structure d’un classe stéréotypée « Tclass »
— prop4 : les communications entre Tclass sont nécessairement réalisées au
travers des portes de communication (Gate). Synchrones, ces communications sont
les seules à être prises en compte lors de la validation. Ainsi, une Tclass peut
communiquer avec des classes normales par appel de méthode, modification
d’attributs, signaux, etc., mais ces communications sont ignorées pour la validation.
— prop5 : des attributs de type Gate peuvent être déclarés dans tout type de
classe. Néanmoins, seules les Tclass peuvent les utiliser à des fins de
communication.
— prop6 : une Tclass T peut hériter d’une classe C ssi C et tous ses ascendants
satisfont les propriétés prop1 et prop2.
— prop7 : les relations d’association, de composition et d’héritage sont prises en
compte lors de la validation ssi celles-ci concernent deux Tclass.
— prop8 : deux Tclass ne peuvent être mises en relation que par une seule
relation UML. Si cette relation est une association, alors, elle doit attribuée avec une
classe associative de type Composer.
— prop9 : une classe ou une Tclass peut-être composée de Tclass ou de classes.
— prop10 : la relation d’agrégation n’est pas supportée dès lors qu’une Tclass
est impliquée dans la relation.
— prop11 : Supposons que la Tclass T1 est composée de la Tclass T2, que T1
possède une porte publique g1 et T2 une porte publique g2. Une Tclass T3 qui veut
communiquer avec T2 via g2 a deux solutions : soit T3 communique directement
avec T2 sur la porte g2, soit T3 communique avec T1 sur la porte g1, à la condition
qu’une formule OCL associe g1 et g2. Cette formule doit être attachée à la relation
de composition entre T1 et T2. Elle doit alors être de la forme : {T1.g1 = T2.g2}.
4.3. Le type abstrait Composer
Un diagramme de classes UML est une représentation graphique d’un ensemble
de classes interconnectées par des relations, telles que des associations. Le profil
TURTLE donne une sémantique formelle aux relations d’association. Pour cela,
nous définissions le type abstrait Composer, qui ne doit pas être utilisé directement :
d’autres types héritiers de Composer sont utilisés comme classe associative
attribuant d’une association entre deux Tclass. Ces types sont : Parallel, Synchro,
Invocation, Sequence, Preemption. Deux d’entre eux sont représentés à la Figure 3.
Parallel
Sequence
Opérateur de
composition
Indication de
navigation
Association
T1
T2
T1
T2
(a)
(b)
Figure 3. Utilisation de deux opérateurs de composition héritant de Composer.
Toute association entre deux Tclass doit avoir une seule semantique et ainsi
n’être attribuée que par une seule classe associative de type Composer. Les classes
suivantes héritent de Composer :
Parallel
Les deux Tclass mises en relation par une association à laquelle est
attribué cet opérateur sont exécutées en parallèle et sans
synchronisation. Les deux Tclass doivent être des classes actives.
Synchro
Les deux Tclass mises en relation par une association à laquelle est
attribué cet opérateur, réalisent des synchronisations entre elles dans
deux fluxs d’exécution séparés. Cette synchronisation peut donner
lieu à un échange de données dont le format est précisé lors de
l’appel, dans le diagramme d’activités. Si l’association entre les deux
Tclass comporte un sens de navigation, alors l’échange de données
ne peut se réaliser que dans le sens indiqué par la navigation.
Deux Tclass doivent se synchroniser sur deux Gates, qui doivent être
listées dans une formule OCL. Par exemple, supposons que les portes
g1 et g2, de type Gate et de la Tclass T1, se synchronisent
respectivement avec les portes g3 et g4 de type Gate et de la Tclass
T2. Dans ce cas, la formule OCL qui accompagne la relation
d’association entre T1 et T2 doit être {T1.g1 = T2.g3 and T1.g2 =
T2.g4}. A chaque fois que T1 réalise une action sur g1, elle doit
attendre que la classe T2 réalise une action sur g3 et réciproquement.
Lorsque l’action est enfin réalisée par les deux classes, l’échange de
données a lieu, et les deux classes passent à l’instruction suivante de
l’activité respective.
Invocation Considérons deux Tclass, T1 et T2, mises en relation par une
association dirigée de T1 à T2 et attribuée par la classe associative
Invocation. On dit alors que T2 peut-être invoquée par T1. Tout
comme dans la relation de synchronisation, une porte de chaque
Tclass doit être impliquée dans chaque invocation. Soit g1 (resp. g2)
une porte de T1 (resp. T2). Considérons que la formule OCL suivante
est associée à la relation : {T1.g1 = T2.g2}. Alors, quand T1 réalise
un appel sur g1, elle doit attendre que T2 réalise un appel sur g2.
Quand T2 réalise cet appel, les données sont échangées uniquement
dans le sens de la navigation (c.à.d. de T1 à T2). T1 est bloquée
jusqu’à ce que T2 réalise de nouveau un appel sur g2. Dans ce
deuxième cas, un échange de données peut avoir lieu dans le sens
contraire à celui indiqué par la navigation. Cette invocation est
similaire à l’appel de méthode du paradigme objet. Ainsi, le code de
T2 qui est invoqué par T1 est exécuté dans le flux d’exécution de T1.
Les deux Tclass, mises en relation par une association à laquelle est
attribué cet opérateur, sont exécutées l’une après l’autre, dans le sens
donné par la navigation de l’association. Dans la relation (T1
Sequence T2), T1 doit se terminer3 avant que T2 ne démarre. T2 est
exécutée dans un nouveau flux d’exécution si T2 est une classe
active.
La Tclass T2, désignée par la navigation de l’association reliant deux
Tclass T1 et T2, et dont l’opérateur de composition associé est
Preemption, peut interrompre définitivement et à n’importe quel
instant l’autre Tclass. Cette interruption se produit lorsque la
première instruction de T2 est réalisable (synchronisation sur une
porte par exemple). Les deux Tclass doivent être des classes actives.
Sequence
Preemption
4.4. Comportement interne d’une Tclass
Le tableau 3 illustre, pour toutes les constructions des diagrammes d’activités
[DOU 00], la sémantique associée par transposition en LOTOS. Soit AD la
dénomination pour un diagramme d’activités, et τ(AD) le processus RT-LOTOS
correspondant à la transcription de AD.
Diagramme d’activités Description
Traduction LOTOS
TURTLE
Début
d’un
diagramme
d’activités. En d’autres termes,
τ(AD)
début de la traduction.
AD
g
AD
3
Appel sur la Gate g. AD est
ensuite interprété.
g ; τ(AD)
On dit qu’une Tclass se termine lorsque toutes les activités associées à cette classe ont atteint leur point
de terminaison.
g ?x
AD
g !x
AD
AD
y := x*2
AD
operation(x, y)
AD
or
AD
AD1 AD2 …ADn
[g1, …, gm]
AD1 AD2 … ADn
AD1
[c1]
AD1
AD2 …
[c2]
AD2 …
g ?x:nat ; τ(AD)
Appel sur la Gate g avec
émission de la valeur x. AD est
ensuite interprété.
g !x ; τ(AD)
Appel sur la Gate g avec
émission de la valeur x et
réception de la valeur y. AD est
ensuite interprété.
Assignation d’une valeur à un
attribut. AD est ensuite
interprété.
g !x ?y
AD
Appel sur la Gate g avec
réception de la valeur x. AD est
ensuite interprété.
ADn
[cn]
ADn
g !x ?y:nat ; τ(AD)
let y : YType = x*2 in
τ(AD)
τ(AD)
(appel de méthode non
traduit)
Structure de type boucle. AD process
est interprété à chaque fois que LabelX[g1,…gn]
l’interpréteur entre dans la : noexit := τ(AD)
boucle.
>>LabelX[g1,...gn]
end proc;
Parallélisme entre n sous- τ(AD1) ||| τ(AD2) |||
activités décrites par AD1,
… ||| τ(ADn)
AD2, …, ADn. A des fins de
documentation,
les
sous(swinlanes non
activités peuvent être séparées
traduites)
par des swinlanes.
Synchronisation sur les portes
τ(AD1) |[g1,…gm]|
g1, g2, …, gm entre n sousτ(AD2) |[g1,…gm]|
activités décrites par AD1,
AD2, …, ADn.
… |[g1,…gm]| τ(ADn)
Appel de méthode. AD est
ensuite interprété.
Sélection de la première
activité prête à s’exécuter
parmi les n activités décrites
par AD1, AD2, … , ADn.
Sélection de la première
activité prête à s’exécuter et
dont la garde est vraie, parmi
les n activités décrites par
AD1, AD2, … , ADn.
τ(AD1) [] τ(AD2) []
... [] τ(ADn)
[c1] -> τ(AD1)
[] [c2] -> τ(AD2)
[] …
[] [cn] -> τ(ADn)
AD1 AD2 … ADn
AD’1
AD’2 … AD’m
AD1 AD2.. ADn
[g1,…gk]
AD’1AD’2… AD’m
Une fois que toutes les activités
AD1, AD2, …, ADn ont (τ(AD1) ||| τ(AD2) |||
terminé leur exécution, les m
… τ(ADn) ) >>
activités décrites par AD’1,
AD’2,
…,
AD’m
sont (τ(AD’1) ||| τ(AD’2) |||
exécutées
en
parallèle
… τ(AD’m) )
(entrelacement).4
Une fois que toutes les activités (τ(AD1) ||| τ(AD2) |||
AD1, AD2, …, ADn ont
… τ(ADn) ) >>
terminé leur exécution, les m
activités décrites par AD’1, (τ(AD’1) |[g1, …gk]|
AD’2,
…,
AD’m
sont
exécutées en synchronisation τ(AD’2) |[g1, …gk]| …
sur les k portes g1, g2, …, gk.
τ(AD’m) )
Terminaison d’une activité
exit
Tableau 3. Opérateurs non temporels de TURTLE
Le tableau 4 présente les trois pictogrammes retenus pour les opérateurs
temporels. S’y ajoutent un opérateur de délai applicable à un intervalle temporel,
cumulant ainsi les effets d’une durée fixe égale à la borne inférieure de l’intervalle et
une latence égale à la différence entre les bornes supérieure et inférieure de
l’intervalle.
Opérateurs
temporels
TURTLE
Description
d
AD
Retard déterministe. AD est interprété
après d unités de temps.
Retard
t
Traduction
LOTOS
non
déterministe.
AD
temps.
d m a x - d m in
delay(d) τ(AD)
est
A D interprété après au plus t unités de
d m in
RT-
Délai non déterministe. AD est
interprété après au moins dmin et au
plus dmax unités de temps.
latency(t) τ(AD)
delay(dmin,dmax)
τ(AD)
AD
4
Si le cardinal des ADi vaut 1 et que le cardinal des AD’j vaut aussi 1, alors une simple flèche est utilisée
entre AD1 et AD’1.
a
t
AD1 AD2
l
a
t
AD1 AD2
Offre limitée dans le temps. L’offre sur
la Gate a est offerte pendant une période
inférieure ou égale à t. Si l’offre est
réalisée, alors AD1 est interprété, sinon
AD2 est interprété.
a{t, τ(AD2)};
τ(AD1)
Offre limitée dans le temps. L’offre sur
la Gate a est offert pendant une période
inférieure ou égale à t. A noter que la
latence commence en même temps que
la limitation sur l’offre. Si l’offre est
réalisée, alors AD1 est interprété, sinon
AD2 est interprété.
latency(l) a{t,
τ(AD2)};
τ(AD1)
Tableau 4. Pictogrammes TURTLE pour les opérateurs temporels
4.5. Processus de validation
Ce paragraphe décrit les différents étapes du processus de validation TURTLE
(cf. Figure 4). Tout d’abord, les Tclass ainsi que les relations qui les lient, sont
extraites du diagramme de classes et sauvegardées au format XMI. Ce format
intermédiaire est ensuite converti en RT-LOTOS. A des fins d’analyse, un graphe
d’accessibilité est obtenu en utilisant l’outil RTL. Bien entendu, ce graphe est
généré ssi le système considéré est fini. Sinon, l’analyse se limite à de la simulation
c.à.d. à une exploration partielle des états du système.
Les modèles TURTLE peuvent être réalisés à partir d’atelier logiciels supportant
UML 1.3 et la sauvegarde au format XMI [21].
Transparent aux utilisateurs d’UML
____
____
fichier xmi
Modélisation TURLE
avec un outil UML 1.3
xmi2rtlotos
____
____
fichier
RT-LOTOS
RTL
graphe
d’accessibilité
Figure 4. Processus de validation : du modèle TURTLE au graphe d’accessibilité
5. Application
Par souci de compréhension, nous reprenons un exemple connu de tous : le
distributeur de boissons. Bien que simple, cet exemple nous permet de mettre en
évidence l’utilisation du stéréotypes Tclass, des types abstraits et des trois
opérateurs temporels introduits dans TURTLE.
5.1. Diagramme de classes
Nous considérons ici une machine qui distribue thé et café après insertion de
deux pièces de monnaie identiques (Fig. 5). Un retard excessif dans l’introduction
de la deuxième pièce ou dans le choix de la boisson entraînera le remboursement de
la ou des pièces déjà entrées. Ces deux situations sont modélisées par des offres
limitées dans le temps (coinDelay et buttonDelay). Des délais matérialisent le temps
de réaction du bouton et le temps minimum de préparation d’une boisson. Ce temps
de préparation peut varier, ce qui explique la présence des « ressorts ». Notons enfin
les contraintes ajoutées aux associations entre classes pour désigner les Gates
impliquées dans chacune des synchronisations.
W allet
C oinBox
coin: nat
- x : nat ;
# coinD elay, m axCoin : int
# coin_in : InG ate ;
# eject_coin : OutGate
+
+ putC oin : O utGate
+coinBack : InGate
# coinN b()
+ W allet(int coin)
Synchro
CoffeeM achine
false
coin>0 ?
true
putcoin !1
coin --
{W allet.putC oin =
C offeeM achine.coin_in
and
W allet.coinBack =
C offeeM achine.ejectCoin }
-
buttonD elay : nat
+
coffee, tea : InG ate
coin_in ?1
coinBack ?x
coin += x
coin_in ?1
Button
coinD elay
ejectcoin !1
- delay : nat
Synchro
+ push : Gate
buttonDelay
2
push
delay
{ CoffeeM achine.coffee=
Button.push
or
CoffeeM achine.tea = Button.push }
coffee
100
75
tea
120
ejectC oin !2
80
Figure 5. Diagramme de classes n°1 de la machine à café
5.2. Validation par l’outil RTL
La validation consiste à vérifier que le comportement du système spécifié est
conforme au comportement attendu. Cette analyse se fait par génération du graphe
d’accessibilité du système modélisé. Ce graphe aide à identifier les situations de
blocage et les différents états accessibles du point de vue logique et temporel. Du
graphe d’accessibilité issu du modèle de la Figure 5, considérons la séquence
d’actions qui correspond à un utilisateur désirant un thé. Supposons que cet
utilisateur insère deux pièces mais attende trop longtemps. L’offre de
synchronisation sur tea ou coffee expire, ce qui a pour effet d’éjecter les deux
pièces. L’utilisateur appuie un bref instant plus tard sur le bouton « tea » (classe
Button, porte push). L’offre de synchronisation ne peut plus avoir lieu. L’utilisateur
reprend ses pièces, pensant que la machine est en panne. Supposons qu’un deuxième
utilisateur désirant du café arrive et insère deux pièces. L’offre de synchronisation
sur tea n’ayant pas expiré (offre illimitée), un thé lui est instantanément servi.
Afin de pallier au problème, nous modifions le diagramme selon la Figure 6.
Une synchronisation supplémentaire permet à la machine d’activer les boutons qui
ne peuvent alors être actionnés que pendant un temps limité (offre push limitée à
40). Cette activation de bouton implique un délai de traitement dans le distributeur
(délai de 50).
Co in Bo x
Co ff e e M a ch in e
# co in D e la y, m a xCo in : in t
# co in _in : I n G a te ;
# e je ct_co in : O u tG a te
+ te a , co ffe e : In G a te
- b u tto n D e la y : n a t
# co in N b ()
Syn ch r o
W a lle t
{ W a lle t.p u tCoin =
Co ffe e M a ch in e .co in _in
a nd
W a lle t.co in Ba ck =
co ffe e M a ch in e .e je ctCoin }
Bu tto n
- d e la y : n a t
+
p u sh ,
G a te
a ctive
:
Syn ch r o
co in _in ? 1
co in D e la y
co in _in ?1
a ctive 1
e je ctco in !1
a ctive 2
50
2
a ctive
p u sh
40
d e la y
{ (Coffe e M a ch in e .coffe e =
Butto n .p u sh
a n d Coffe e M a ch in e .a ctiv e 1 =
Butto n .a ctive )
or
(Coffe e M a ch in e .te a =
Butto n .p u sh
a n d Coffe e M a ch in e .a ctiv e 2 =
Butto n .a ctive )
}
co ffe e
100
75
te a
120
80
b u tto n D e la y
e je ctCo in !2
Figure 6. Diagramme de classes n°2 de la machine à café
Cette modification du modèle appelle une nouvelle validation. La Figure 7a
présente le graphe d’accessibilité de la machine à café de la Figure 6 réduite à la
distribution du thé (graphe plus lisible). Un état logique (rectangle) est partitionné en
classes d'états temporels. Les conditions pour quitter un état sont les suivantes : soit
le temps s’est écoulé (transition t), soit une synchronisation a eu lieu sur une porte
RT-LOTOS. Considérons par exemple le graphe d’accessibilité de la Figure 8a.
Quitter l’état initial (état 0) requiert une synchronisation sur la porte putCoin. Dans
l’état 21, aucune synchronisation ne peut avoir lieu à partir des deux premiers états :
un changement d’état correspond exclusivement à une progression du temps
(transition t). Par contre, quand l’offre sur la Gate tea ou coffee expire (délai
buttonDelay), alors la synchronisation sur coinBack permet de passer de l’état 21 à
l’état 7. Une valeur 2 est alors échangée.
Ce graphe met en évidence l’impossibilité pour un utilisateur d’obtenir du thé
(ou du café). En effet, le délai d’activation du bouton (push) expire avant que la
machine ne soit prête à délivrer du café ou du thé. Si ce délai passe de 40 à 60, le
graphe de la Figure 7b montre qu’il est possible d’avoir du thé.
0 -()
i ( p u t C o in < 1 > )
1 3 -(1 5 0 )
1 -(0 )
1 7 -(0 0 )
i(p u tC o in < 1 > )
t
(a )
2 -()
i(p u tC o in < 1 > )
1 7 - ( 4 0 .5 4 0 .5 )
i( a c tiv e )
t
2 1 -(0 0 )
1 2 -(1 5 0 0 )
1 7 -(1 5 0 1 5 0 )
t
2 1 - ( 4 0 . 5 4 0 .5 )
i( c o in B a c k < 2 > )
i(p u tC o in < 1 > )
t
2 1 -(1 5 0 1 5 0 )
i( c o i n B a c k < 2 > )
7 -(1 5 0 )
p iè c e s re je té e s
(b )
0 -()
2 4 -(5 0 )
2 1 -(0 0 )
i(a c t iv e )
i(p u tC o in < 1 > )
t
t
i(a c t iv e )
1-(0)
2 4 -(1 0 0 )
2 1 -(5 0 5 0 )
i(p u t C o in < 1 > )
i(t e a )
2 -()
p o s s i b il i t é
d ’a v o i r d u
th é
i(p u tC o in < 1 > )
i( p u t C o in < 1 > )
2 2 -(0 0 )
t
i ( p u t C o in < 1 > )
2 2 -(5 0 5 0 )
2 3 -(5 0 0 )
2 3 -(1 0 0 0 )
t
2 2 -(1 0 0 1 0 0 )
i( p u t C o i n < 1 > )
Figure 7. Graphe d’accessibilité de la machine à café n°2. (a) : cas où l’offre sur
le bouton est limitée à 40. (b) : cas où l’offre est limitée à 60.
6. Conclusion
Cet article présente TUTLE, un profil UML pour la conception et la validation
de systèmes temps réel. Les digrammes de classes sont étendus avec un stéréotype
(Tclass) et deux types abstraits (Gate et Composer). Une sémantique précise est
donnée aux associations entre classes (voir les classes Parallel, Synchro, Invocation,
Sequence et Preemption). Le comportement d’une Tclass est décrit par un
diagramme d’activités étendu par trois opérateurs temporels : un délai déterministe,
un délai non déterministe et une offre limitée dans le temps. De surcroît, les modèles
TURTLE peuvent être traduits en RT-LOTOS, technique de description formelle
supportée par un outil de validation. Les diagrammes TURTLE peuvent ainsi être
simulés et vérifiés sur la base d’analyses d’accessibilité en faisant en sorte que RTLOTOS reste caché au concepteur du système.
Le profil TURTLE est en cours d’évaluation sur du logiciel temps réel embarqué
et plus spécifiquement pour la validation de la reconfiguration dynamique de
logiciels embarqués à bord de satellites [APV 01].
Le profil UML est maintenant appelé à être étendu. Les machines à états
remplaceront les diagrammes d’activités. De nouvelles classes associatives seront
introduites pour étendre les sémantiques autorisées pour les associations
(resume/suspend, interrupt) [HER 98]. Ceci permettra de mettre en œuvre des
analyse d’ordonnancement sur des modèles TURTLE [TER 00]. Enfin, l’inter
fonctionnement de notre profil avec UML 2.0 est également à l’étude.
7. Bibliographie
[AND 01] ANDRÉ C., « Paradigmes objets et synchrones dans les systèmes temps-réel »,
journée Objets Temps Réel du Club SEE Systèmes Informatiques de Confiance, Paris, 18
janvier 2001. http://www.cert.fr/francais/deri/seguin/SEE/01.01.18/annonce.html.
[APV 01] APVRILLE L., DE SAQUI-SANNES P., SÉNAC P., DIAZ M., « Formal Modeling of
Space-Based Software in the Context of Dynamic Reconfiguration », Proceedings of
DAta Systems In Aerospace (DASIA), 28 May - 1st June, Nice, France, 2001.
[ART 99] Artisan Software Tools,: http://www.artisan-software.com, 1999.
[BJO 00] BJORKANDER M., « Real-Time Systems in UML and SDL », Embedded System
Engineering, October/November 2000 (http://www.telelogic.com).
[BOL 87] BOLOGNESI T., BRINKSMA E., « Introduction to the ISO specification Language
LOTOS », Computer Networks and ISDN Systems, vol 14, No1, 1987.
[BRU 98] BRUEL, J.-M. FRANCE R.B., « Transforming UML Models to Formal
Specifications », Proceedings of the International Conference on Object Oriented
Programming Systems Language and Applications (OOPSLA'98), Vancouver, Canada,
1998.
[BRU 99] BRUEL J.-M., « Integrating Formal and Informal Specification Techniques. Why?
How? », Proceedings of the 2nd IEEE Workshop on Industrial-Strength Formal
Specification Techniques (WIFT'98), Boca Raton, Florida, USA, IEEE Computer Press,
p. 50-57, 1999.
[CLA 00] CLARCK, R.G., MOREIRA, A.M.D., « Use of E-LOTOS in Adding Formality to
UML, Journal of Universal Computer Science », vol.6, no 11, p. 1071-1087, 2000.
[COU 00] COURTIAT J.-P., SANTOS C.A.S., LOHR C., OUTTAJ B., « Experience with RTLOTOS, a Temporal Extension of the LOTOS Formal Description Technique »,
Computer Communications, Vol. 23, No. 12, p. 1104-1123, 2000.
[DEL 98] DELATOUR J., PALUDETTO M., « UML/PNO, a way to merge UML and Petri net
objects for the analysis of real-time systems », OO Technology and Real Time Systems
Workshop (ECOOP'98), Bruxelles, Belgium, 1998.
[DOU 99] DOUGLASS B.P., Doing Hard Time: Developing Real-Time Systems with UML,
Objects,
Frameworks
and
Patterns,
Addison-Wesley
Longman,
1999
(http://www.ilogix.com).
[DUP 00] DUPUY S., LEDRU Y., CHABRE-PECCOUD M., « Vers une intégration utile de
notations semi-formelles et formelles : une expérience en UML et Z », vol.6, n°1, p. 9-32,
Hermès, Paris, 2000.
[DUP 01] Dupuy S., du Bouquet L., « A Multi-formalism Approach for the Validation of
UML Models », Formal Aspects of Computing, No.12, p.228-230, 2001.
[EVA 99] EVANS A.S., COOK S., MELLOR S., WARMER J., WILLS A., « Advanced Methods and
Tools for a Precise UML », Proceedings of the 2nd International Conference on the
Unified Modeling Language, UML’99, Colorado, USA, LNCS 1723, 1999.
[GUE 00] LE GUENNEC A., « Méthodes formelles avec UML : Modélisation, validation et
génération de tests », Actes du 8è Colloque Francophone sur l’Ingénierie des Protocoles
CFIP’2000”, Toulouse, Editions Hermès, Paris, p. 151-166, 17-20 octobre 2000.
[JAR 98] JARD C., JÉZÉQUEL J.-M., PENNANEAC’H F., « Vers l’utilisation d’outils de validation
de protocoles dans UML », Technique et Science Informatiques, vol. 17, n°9, p. 10831098, Hermès, Paris, 1998.
[OMG 99a] OMG, « Unified Modeling Language Specification », Version 1.3, Object
Management Group http://www.omg.org/technology/uml/index.htm, 1999.
[OMG 99b] OBJECT MANAGEMENT GROUP, « UML Profile for Scheduling, Performance, and
Time, Request for Proposal », 1999, ftp://ftp.omg.org/pub/docs/ad/99-03-13.doc
[PAL 99] HERNALSTEEN C., « Specification, Validation and Verification of Real-Time
Systems in ET-LOTOS », Ph.D. dissertation, Université Libre de Bruxelles, Belgium,
1998.
[SAQ 01] DE SAQUI-SANNES P., « Diagramming TURTLE classes using Rhapsody »,
ENSICA internal report, 2001.
[SEL 98] SELIC B., RUMBAUGH J., « Using UML for Modeling Complex Real-Time
Systems », http://www.rational.com, 1998.
[SEN 96] SÉNAC P., DIAZ M., DE SAQUI-SANNES P., LÉGER A., « Modeling Logical and
Temporal Synchronization in Hypermedia Systems », IEEE Journal on Selected Areas in
Communication, special issue on multimedia synchronization, 1996.
[TER 00] TERRIER, F., GÉRARD, S., « Real Time System Modeling with UML: Current Status
and Some Prospects », Proceedings of the 2nd Workshop of the SDL Forum society on
SDL and MSC, SAM 2000, Grenoble, France, 2000.
[TRA 00] TRAORÉ I., « An Outline of PVS Semantics for UML Statecharts », Journal of
Universal Computer Science, Vol. 6, No. 11, p. 1088-1108, 2000.

Documents pareils