Prototype d`outil de modélisation graphique d`ingénierie syst

publicité
Sous-projet 1
stratégie de génération de tests sur la base de modèles
environnementaux et de modèles comportementaux
Prototype d’outil de modélisation graphique
d’ingénierie système en utilisant la génération
d’éditeur avec PAPYRUS
Livrable n˚1.1
31 août 2009
VETESS - Livrable n˚1.1
Version
1.0
EVOLUTION DU DOCUMENT
Date
Auteur
Remarques
31/08/2009 LIFC - MIPS
Niveau de Diffusion
Diffusion
CARACTERISTIQUES
Projet VETESS
Public
2
Prototype d’outil de modélisation graphique SysML
Table des matières
1 Introduction
1.1 Rappel de l’objectif du sous-projet SP1 . . . . . . . . . . . .
1.2 Situation au sein du sous-projet SP1 . . . . . . . . . . . . . .
1.3 Abréviations . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Positionnement dans l’état de l’art
2.1 Introduction au test à partir de modèles . . . . . .
2.2 Langages de modélisation pour le test . . . . . . .
2.2.1 Spécification algébrique . . . . . . . . . . .
2.2.2 Algèbre de processus . . . . . . . . . . . . .
2.2.3 Structure de Kripke et logique temporelle .
2.2.4 Modèle de flots de données . . . . . . . . .
2.2.5 Modélisation par contrat . . . . . . . . . . .
2.2.6 Système de transitions étiquetées . . . . . .
2.2.7 Machine à états finie . . . . . . . . . . . . .
2.2.8 Synthèse . . . . . . . . . . . . . . . . . . . .
2.3 Langage de modélisation pour le projet VETESS .
2.3.1 Les notations UML et SysML . . . . . . . .
2.3.2 Le langage UML4MBT de Test Designer𝑇 𝑀
2.3.3 Le langage SysML4MBT pour VETESS . .
2.4 Bilan et cas d’étude illustratif . . . . . . . . . . . .
3 Diagramme de blocs SysML4MBT
3.1 Les blocs . . . . . . . . . . . . . .
3.2 Les propriétés . . . . . . . . . . . .
3.3 Les opérations . . . . . . . . . . . .
3.4 Les associations . . . . . . . . . . .
3.5 Les signaux . . . . . . . . . . . . .
3.6 Les spécifications de flux . . . . . .
3.7 Les ports . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
11
11
11
12
12
12
13
13
14
14
15
15
16
.
.
.
.
.
.
.
17
17
18
19
19
21
22
22
4 Diagramme interne de blocs SysML4MBT
23
4.1 Les propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Les ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Les connecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Diagramme d’états-transitions SysML4MBT
5.1 Les états . . . . . . . . . . . . . . . . . . . . .
5.2 Les pseudo-états . . . . . . . . . . . . . . . .
5.2.1 État initial . . . . . . . . . . . . . . .
5.2.2 Point de décision . . . . . . . . . . . .
5.2.3 Barre de fraction et barre de jonction
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
28
29
VETESS - Livrable n˚1.1
5.3
5.4
5.2.4 État historique et état
Les transitions . . . . . . . .
5.3.1 Déclencheur . . . . . .
5.3.2 Garde . . . . . . . . .
5.3.3 Effet . . . . . . . . . .
Les actions onEntry/onExit .
historique profond
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
6 Diagramme d’exigences SysML4MBT
6.1 Les exigences . . . . . . . . . . . . . .
6.2 La traçabilité des exigences . . . . . .
6.3 Les Packages . . . . . . . . . . . . . .
6.4 Les objectifs de test . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
30
30
30
30
34
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
34
34
35
39
39
7 Modélisation SysML4MBT avec PAPYRUS
8 Récapitulatif du langage SysML4MBT
8.1 Diagramme de blocs . . . . . . . . . . .
8.2 Diagramme interne de blocs . . . . . . .
8.3 Diagramme d’états-transitions . . . . . .
8.4 Diagramme d’exigences . . . . . . . . .
9 Synthèse
.
.
.
.
.
.
.
.
.
.
.
.
39
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
47
48
49
50
51
4
Prototype d’outil de modélisation graphique SysML
Table des figures
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Représentation d’un bloc SysML. . . . . . . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Blocs SysML4MBT. . . . . . . . . . . . . .
Représentation d’une énumération SysML. . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Propriétés des blocs SysML. . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Opérations des blocs SysML4MBT. . . . .
Associations du diagramme de blocs SysML4MBT. . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme de blocs SysML4MBT. . . . .
Signal du diagramme de blocs SysML4MBT. . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Signaux SysML4MBT. . . . . . . . . . . .
Spécification de flux du diagramme de blocs SysML4MBT. .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Spécification des flux SysML4MBT. . . . .
Propriété du diagramme interne de blocs SysML4MBT. . . .
Types de port de SysML4MBT. . . . . . . . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme interne SysML4MBT (propriétés). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme interne SysML4MBT. . . . . .
États du diagramme d’états SysML4MBT. . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : États du diagramme d’états SysML4MBT.
Point de décision du diagramme d’états SysML4MBT. . . . .
Barres de fraction et de jonction SysML4MBT. . . . . . . . .
État historique SysML4MBT. . . . . . . . . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme d’états SysML4MBT. . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Modélisation dynamique du controller. . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Modélisation dynamique HighLight. . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Modélisation dynamique HeadLight. . . . .
Diagramme d’exigences SysML4MBT. . . . . . . . . . . . . .
𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme d’exigences. . . . . . . . . . . .
Lien satisfy simple SysML4MBT. . . . . . . . . . . . . . . . .
Liens satisfy parallèles SysML4MBT. . . . . . . . . . . . . . .
Liens satisfy multiples SysML4MBT. . . . . . . . . . . . . . .
Équivalence des liens satisfy multiples SysML4MBT. . . . . .
Diagramme d’exigences de l’exemple des feux. . . . . . . . . .
Exemple avancé de diagramme d’exigences SysML4MBT. . .
Diagramme de blocs réalisé avec PAPYRUS . . . . . . . . . .
Enumérations (dans un diagramme de blocs) réalisées avec
PAPYRUS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Signaux et spécifications de flux (dans un diagramme de blocs)
réalisés avec PAPYRUS . . . . . . . . . . . . . . . . . . . . .
Diagramme interne de blocs réalisé avec PAPYRUS . . . . .
Diagramme états-transitions réalisé avec PAPYRUS . . . . .
Diagramme états-transitions réalisé avec PAPYRUS . . . . .
Diagramme d’exigences réalisé avec PAPYRUS . . . . . . . .
5
17
17
18
18
19
20
20
21
21
22
22
24
25
25
25
26
27
28
29
29
31
32
33
33
34
35
36
36
37
37
38
39
40
41
42
43
44
45
46
VETESS - Livrable n˚1.1
Liste des tableaux
1
2
3
4
5
6
7
SysML4MBT
SysML4MBT
SysML4MBT
SysML4MBT
SysML4MBT
SysML4MBT
SysML4MBT
-
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
Diagramme
de Blocs - Eléments de base. . .
de Blocs - Éléments d’un bloc. .
de Blocs - Types. . . . . . . . .
interne. . . . . . . . . . . . . . .
d’états-transitions - États. . . .
d’états-transitions - Transitions.
d’exigences. . . . . . . . . . . .
6
.
.
.
.
.
.
.
47
48
48
48
49
50
50
Prototype d’outil de modélisation graphique SysML
1
1.1
Introduction
Rappel de l’objectif du sous-projet SP1
Ce sous-projet concerne l’optimisation du nombre de séquences de tests
devant être générés sur des modèles de spécification du système sous test.
Le but est de réduire le nombre de séquences tout en garantissant un niveau
optimal de couverture du modèle et des exigences comportementales.
1.2
Situation au sein du sous-projet SP1
Le présent document constitue un livrable du sous-projet 1 et est issu des
travaux effectués au sein de la tâche 1.1. Cette tâche concerne la définition
des éléments de modélisation SysML pris en compte pour mettre en œuvre
les techniques de génération de tests à partir de modèles développées dans
le cadre du projet VETESS.
Ces éléments de modélisation doivent permettre d’une part de spécifier
le système sous test, et d’autre part de spécifier l’interactivité de ce dernier
avec son environnement.
Finalement, le pouvoir d’expression ainsi défini doit être supporté par les
outils de modélisation du marché, notamment par l’atelier de modélisation
PAPYRUS.
Le présent document est structuré de la façon suivante :
– la section 2 introduit un bref état de l’art et positionne nos travaux
dans les travaux existants,
– les section 3,4,5 et 6 présentent respectivement les éléments du langage
SysML supportés pour spécifier le diagramme de blocs, le diagramme
interne de blocs, le diagramme d’états-transitions et le diagramme
d’exigences.
– la section 7 illustre la capacité à produire un modèle SysML pour le
test avec l’outil de modélisation PAPYRUS,
– finalement, les sections 8 et 9 présentent respectivement un récapitulatif du langage SysML sélectionné et fournissent une synthèse à ce
document.
7
VETESS - Livrable n˚1.1
1.3
Abréviations
Abréviation
SUT
IUT
MBT
UML
SysML
OCL
FSM
EFSM
Référence
System Under Test = Système sous test
Implementation Under Test = Implémentation sous test
Model Based Testing = Test à partir de modèles
Unified Modeling Language
System Modeling Language
Object Constraint Language
Finite State Machine = Machine à états finis ou Automate fini
Extended FSM = Machine à états finis étendue
8
Prototype d’outil de modélisation graphique SysML
2
Positionnement dans l’état de l’art
Les techniques de génération de test à partir de modèles, plus communément appelées MBT pour Model-Based Testing [UL06], ont connu depuis
plusieurs années un intérêt et un essor considérable. Cette attractivité, de
la part du milieu scientifique comme industriel, s’explique notamment par
la complexité toujours croissante des systèmes informatisés et le besoin récurrent de garantir une qualité de service et de fiabilité optimum. En effet,
générer des tests à partir de modèles de spécifications permet d’assurer un
niveau de confiance élevé vis-à-vis du respect des propriétés énoncées dans
le cahier des charges de l’application à tester. Ce type de technique s’avère
en plus être bon marché du fait de son automatisation partielle ou complète
rendue possible par la capacité à raisonner sur les modèles de spécification
formelle. Toutefois, malgré des résultats connus et reconnus par les communautés scientifique et industrielle, le domaine est toujours très actif pour
répondre notamment aux nouvelles exigences du marché (normalisation de
plus en plus stricte, augmentation de la qualité de service attendue, volonté
de maı̂triser les coûts,...). Garantir la qualité d’un produit logiciel représente
ainsi encore aujourd’hui un secteur dynamique pour la recherche et l’innovation comme le prouve le nombre important de conférences et de journaux
spécialisés dans cette thématique.
Cette section donne un bref aperçu des langages de modélisation les
plus utilisés pour spécifier le système sous test, et pour ainsi servir de point
d’entrée aux différentes techniques de test à partir de modèles. Ainsi, après
un rapide rappel des objectifs de la génération de test à partir de modèles,
différents langages de modélisation utilisés pour modéliser le système sous
test sont présentés. Finalement, une conclusion permet de synthétiser les
éléments présentés et de positionner nos travaux dans ce paysage.
2.1
Introduction au test à partir de modèles
Un test consiste à exécuter un système ou une certaine partie de ce système en lui soumettant un ensemble de stimuli choisis, et d’observer son
comportement pour déterminer si celui-ci est conforme aux spécifications et
aux exigences initialement définies dans son cahier des charges. Cette pratique ne permet pas en théorie de s’assurer de l’absence totale de défaut,
mais participe à augmenter le niveau de confiance dans le logiciel lorsqu’aucun défaut ne se manifeste, tout en rendant possible la maı̂trise les coûts
de validation : la phase de test peut être interrompue à tout instant sans
remettre en cause les résultats déjà obtenus.
Dans le contexte de génération de tests à partir de modèles, la spécification du système sous test constitue le référentiel d’entrée d’une chaı̂ne
9
VETESS - Livrable n˚1.1
automatisée qui permet à la fois de calculer des séquences de stimuli pour
lesquelles le modèle joue le rôle d’oracle en calculant les résultats attendus. Ce modèle peut être réalisé en appliquant une stratégie boı̂te blanche
ou boı̂te noire selon qu’il spécifie, de manière abstraite, respectivement le
code source du système sous test ou uniquement son comportement externe
(en ignorant intentionnellement la façon dont le système sous test est codé).
Un mélange des deux approches donne lieu à l’appellation boı̂te grise. Ces
différentes stratégies ont leurs forces et leurs faiblesses. Habituellement, elles
coexistent au sein d’un même projet et sont utilisées différemment à différents niveaux d’abstraction [MSBT04].
L’approche de génération de tests à partir de modèles, mise en œuvre
dans le cadre du projet VETESS, s’appuie sur un modèle de test spécifié
en appliquant une stratégie de type boı̂te noire. Ce type d’approche permet
de modéliser les stimuli à un niveau d’abstraction élevé, exploitant alors les
spécifications du comportement prévu du système sous test plutôt que leur
gestion concrète exprimée dans le code source. La stratégie boı̂te noire a ainsi
l’avantage de permettre la génération des tests indépendamment des caractéristiques et des contraintes d’implantation que le code source pourraient
présenter : cette stratégie permet donc un processus structuré et reproductible sans avoir besoin au préalable ni de la connaissance technique d’un
langage ou d’un environnement de programmation spécifique, ni du code
source à tester.
Dans la prochaine section, nous présentons un échantillon de langages
de modélisation qui se prête à la mise en place de procédés de génération
de tests à partir de modèles. Finalement, nous positionnerons les travaux,
menés dans le cadre du projet VETESS, par rapport à ces éléments de la
littérature.
2.2
Langages de modélisation pour le test
Cette section donne une brève vue d’ensemble de différentes techniques,
et langages de modélisation associés, pour modéliser le système sous test. Elle
mentionne également certains outils automatisant le processus de génération
des tests à partir des modèles correspondants.
Chaque langage de modélisation permet de spécifier un système avec un
pouvoir d’expression et un niveau d’abstraction qui lui sont propres. Ainsi,
les systèmes qui peuvent être modélisés avec ces langages et la nature des
tests générés peuvent différer d’une catégorie de langage à l’autre.
10
Prototype d’outil de modélisation graphique SysML
2.2.1
Spécification algébrique
Les spécifications algébriques définissent les objets par les opérations qui
les engendrent ou les utilisent. Une théorie axiomatique complète la spécification en donnant les propriétés attendues des objets en termes de comportements attendus. Ainsi, dans ce type de modélisation, une classe ou un
type d’objet est spécifié en termes de rapports entre les opérations définies
sur ce type, mais rien n’est précisé au sujet de la représentation interne de
ces objets. Le niveau d’abstraction de ce langage est donc élevé.
Les langages OBJ [FGJM95] et Larch [GH93] sont des exemples de spécification algébrique.
2.2.2
Algèbre de processus
Dans les algèbres de processus, on différencie la syntaxe de l’algèbre
(c’est-à-dire le langage utilisé pour décrire le système) de ses propriétés et
de sa sémantique (c’est-à-dire du sens mathématique correspondant a cette
syntaxe). Les algèbres de processus sont employées pour décrire le comportement d’observation des systèmes concurrents en définissant des modèles de
calcul (vue opérationnelle). Elles sont ainsi adaptées pour modéliser les systèmes répartis dans lesquels les processus parallèles peuvent communiquer
de manière synchrone. Un domaine d’application privilégié pour les algèbres
de processus concerne la spécification des protocoles, par exemple, dans le
secteur des télécommunications.
Parmi les langages basés sur des algèbres de processus, on peut citer notamment LOTOS [ISO], CCS [Mil82] et CSP [Hoa78].
2.2.3
Structure de Kripke et logique temporelle
La structure de Kripke définit un automate à états finis : il s’agit finalement d’un graphe orienté dont les nœuds représentent les états accessibles
du système, et dont les arcs représentent les transitions entre ces états. Une
fonction d’étiquetage fait correspondre à chaque état un ensemble de propositions logiques vraies dans cet état. La logique temporelle est traditionnellement utilisée dans ce type de modèle pour spécifier ces propriétés. Ce type de
modèle, représentant le comportement du système, a été initialement utilisé
pour effectuer de la vérification de propriétés, également spécifiées en logique
temporelle, par des techniques de model-checking [CE81, QS82]. Lorsqu’une
propriété donnée est violée par l’automate, il est possible de récupérer la
séquence d’états, et donc de stimuli, qui la met en défaut : on parle alors de
contre-exemple.
Ce type de modèle a été utilisé plus récemment pour générer des tests. La
technique consiste à prendre en entrée un automate décrivant un système et
une propriété logique temporelle pour laquelle on veut générer des tests (i.e.
trouver une séquence de stimuli qui permet d’exercer cette propriété). On
11
VETESS - Livrable n˚1.1
soumet alors la négation de la propriété logique afin de calculer un contreexemple qui constitue le cas de test désiré [CSE96, JM99].
2.2.4
Modèle de flots de données
Les modèles de flots/flux de données (ou Dataflow models) décrivent
le système à travers des vecteurs de données qui lui sont soumis et qu’il
émet en réaction. Les systèmes modélisés sont considérés comme des boı̂tes
noires avec des entrées et des sorties régies par une exécution synchrone. Les
langage de flots de données sont bien adaptées pour les systèmes réactifs
synchrone et sont mis en œuvre, le plus souvent, pour modéliser des systèmes critiques de sûreté.
Les langages les plus connus sont ESTEREL [BG92] et LUSTRE [CPHP87].
Ce dernier langage est notamment utilisé par l’environnement de développement SCADE, spécialisé dans la conception de logiciel critique pour l’aéronautique, le ferroviaire et les centrales nucléaires.
2.2.5
Modélisation par contrat
Il existe une vaste gamme de langages s’appuyant sur des techniques
de modélisation par contrat. Un tel modèle explicite de manière formelle les
caractéristiques à satisfaire pour exécuter chaque opération du système (précondition) et ce que l’opération s’engage alors à calculer (postcondition). De
ce fait, ce type de langage donne rarement lieu à des modèles graphiques (automates) mais permet de produire des spécifications textuelles s’appuyant
sur une notation formelle.
Parmi les langages les plus connus, on peut citer Eiffel [Mey97], VDM [Jon90],
Z [Spi92], B [Abr96] et OCL [WK96].
2.2.6
Système de transitions étiquetées
Les systèmes de transitions étiquetées(ou LTS - Labelled Transition Systems) sont souvent liés aux algèbres de processus car ils sont employés pour
décrire la sémantique de l’algèbre de processus. Un système de transition est
généralement défini par un tuple {𝑆, 𝑠0 , Σ, 𝛿 où 𝑆 dénote un ensemble d’états
(potentiellement infini), 𝑠0 est l’état initial, Σ est l’alphabet des étiquettes,
et 𝛿 : 𝑆 × Σ → 𝑆 définit la relation de transition entre les états.
Des exemples de langage de modélisation s’appuyant sur une telle sémantique sont le Π-calcul [Mil99], LOTOS [ISO], SDL [IT] ou Promela [Hol91,
Hol97].
Ce type de langage peut être étendu avec, par exemple, la définition d’entrées/sorties : on parle alors de système de transitions étiquetés entrée/sortie
(ou IOLTS - Input/Output Labelled Transition Systems). Inspiré de cette
dernière sémantique, un langage de spécification davantage abstrait a été
inventé : il s’agit des systèmes de transitions symboliques entrée/sortie (ou
12
Prototype d’outil de modélisation graphique SysML
IOSTS - Input/Output Symbolic Transition Systems). Ces deux types de
langage se prêtent idéalement à la génération de tests et ont été la base de
nombreux outils dont les plus célèbres sont certainement TGV [FJJV97] et
STG [CJRZ02]. Dans ce contexte, de nombreux travaux ont été menés pour
caractériser les relations de conformité d’une exécution du système sous test
vis-à-vis du modèle de spécifications : on peut citer par exemple la relation
de conformité IOCO [Tre08].
2.2.7
Machine à états finie
Une machine à états finie (ou diagramme à états fini) est définie par un
automate constitué d’états et de transitions qui relient ces états. L’automate est dit « fini » car il possède un nombre fini d’états distincts, ce qui
le différencie des systèmes de transition évoqués plus tôt. Le comportement
du diagramme est dirigé par les stimuli reçus : l’automate passe ainsi d’état
en état en fonction des stimuli reçus qui conditionnent l’activation des transitions. Ainsi, on peut voir un tel automate comme un graphe fini orienté
et étiqueté, dont les états sont les sommets et les transitions sont les arêtes
étiquetées.
Les notations basées sur ces structures sont très populaires, dans le secteur
de la recherche comme celui du monde industriel, car leur expressivité limitée les rend particulièrement faciles à traiter automatiquement et, en même
temps, elles sont suffisamment expressives pour spécifier tout système discret réactif.
Parmi les langages qui exploitent ce paradigme, on peut notamment citer les
machines d’état finis (FSM, EFSM) [CK93], les diagrammes d’états (Statechart) [Har98], les diagrammes d’états/transitions UML [RJB04].
2.2.8
Synthèse
Dans cette section, nous avons rapidement présenté les langages de modélisation les plus utilisés aujourd’hui pour mettre en œuvre des techniques
de génération de tests à partir de modèles. Dans le cadre spécifique du projet VETESS, nous nous appuyons sur des spécifications de machines à états
SysML (héritées des diagrammes états/transitions UML) complétées par
des contrats au moyen du langage de contraintes OCL. La prochaine section
présente de manière plus détaillée ces éléments de modélisation.
13
VETESS - Livrable n˚1.1
2.3
Langage de modélisation pour le projet VETESS
Le projet VETESS a pour objet de générer des tests pour les systèmes
embarqués à partir de modèles spécifiés en SysML, dérivé du langage UML.
La chaı̂ne outillée correspondante (capable de raisonner sur de tels modèles)
s’appuie sur le logiciel Test Designer𝑇 𝑀 [BGLP08] (commercialisée par la
société Smartesting [Sma09]) qui permet la génération automatique de tests
à partir de modèles de type UML. Dans les prochaines sous-sections, nous
introduisons les deux notations UML et SysML et explicitons le cadre de
l’approche de modélisation développée au sein du projet VETESS.
2.3.1
Les notations UML et SysML
UML est un langage graphique de modélisation des données et des traitements. Il résulte de la fusion de plusieurs langages de modélisation tels
que OMT (Object Modeling Technique) [RBP+ 90], OOSE (Object Oriented Software Engineering) [Jac92] et la méthode Booch [Boo93]. Au fil des
années, UML a réussi à s’imposer et est à l’heure actuelle le langage de modélisation objet le plus utilisé. Il est standardisé par l’Object Management
Group (OMG) depuis 1997 [RJB99] ; la version 2 d’UML a été adoptée par
ce consortium en 2005 [RJB04].
La notation UML 2 regroupe 13 types de diagrammes qui permettent de
modéliser tout système sous différentes vues (cas d’utilisation, logique, implémentation, processus et déploiement) [MG03]. Toutefois, chaque secteur
d’activité possède ses propres règles et caractéristiques métier. Par rapport
au formalisme UML standard, la notation UML laisse à chacun la possibilité de personnaliser les éléments de modélisation UML standards pour tenir
compte de la spécificité de son domaine d’application.
Afin de pouvoir répondre aux nécessités de modélisation dans ces divers
domaines (systèmes embarqués, chimie...), UML propose un mécanisme d’extension de la notation UML. Ces extensions sont basées sur des annotations
qu’on peut poser sur des modèles UML. Les annotations possibles sont définies dans un profil qui indique quelles sont leurs propriétés et leurs règles
de cohérence. Il est également possible de proposer au sein d’un profil une
nouvelle notation pour un élément annoté.
Ainsi, afin de répondre plus spécifiquement aux caractéristiques métiers
des applications de l’ingénierie système, la notation UML s’est dotée d’un
profil dédié nommée SysML. Ce langage dérivé du langage UML est également standardisé par l’OMG.
Tout comme le langage UML, SysML permet la spécification, l’analyse,
la conception, la vérification et la validation de nombreux systèmes. Cependant, SysML est spécifiquement dédié au processus et caractéristiques
métiers mis en œuvre pour modéliser les systèmes issus des domaines de l’in-
14
Prototype d’outil de modélisation graphique SysML
génierie automobile, de l’ingénierie acoustique et de l’aéronautique. Concrètement, ce standard reprend 7 des 13 diagrammes d’UML 2.0 (parmi ceux-ci,
trois sont modifiés) et comporte deux nouveaux types de diagrammes.
Dans le cadre du projet VETESS, le processus de génération de test à
partir du modèle spécifiant le système sous test doit être appliqué à un modèle de type SysML. La chaı̂ne outillée mise en œuvre dans cette objectif
s’appuie sur la solution de génération des tests commercialisée par Smartesting qui s’applique aux modèles de spécification de type UML. Dans la
prochaine section, nous introduisons brièvement cette solution et positionnons les travaux effectués dans le cadre du projet VETESS. Ces derniers
travaux seront présentés dans le détail dans la suite de ce document.
2.3.2
Le langage UML4MBT de Test Designer𝑇 𝑀
Le logiciel Test Designer𝑇 𝑀 constitue le support logiciel de la solution
Smartesting permettant de générer des cas de test à partir d’un modèle, spécifiant le système sous test, écrit avec un sous-ensemble de la notation UML,
baptisée UML4MBT [Sma09] (UML for Model-Based Testing). Concrètement, un modèle UML4MBT contient :
– un diagramme de classes modélisant la structure statique du système
sous test,
– un diagramme d’objets modélisant les entités manipulées par les cas
de test et l’état de ces entités dans l’état initial du système,
– un diagramme d’états-transitions, annoté de contraintes OCL, spécifiant l’aspect dynamique du système sous test.
Sur ce même principe, nous avons défini une restriction sur le langage
SysML afin de pouvoir exprimer les éléments de comportement du cahier des
charges nécessaires et pertinents dans le but de générer des tests à partir de
modèles spécifiant le système embarqué sous test. Ce sous-ensemble dédié
de la notation SysML a été baptisé SysML4MBT (SysML for Model-Based
Testing).
2.3.3
Le langage SysML4MBT pour VETESS
La notation SysML4MBT définit un sous-ensemble du langage SysML,
tel qu’il est normalisé par l’OMG, et constitue le langage d’entrée des techniques de génération de tests mis en œuvre dans le cadre de la chaı̂ne outillée
VETESS.
Pour réaliser de tels modèles SysML4MBT, nous supportons trois types
de diagrammes SysML. Concrètement, un modèle SysML4MBT contient :
– un diagramme de blocs modélisant la structure statique du système
sous test et permet de spécifier son état initial,
15
VETESS - Livrable n˚1.1
– un ou plusieurs diagrammes internes de blocs spécifiant les interconnexions entre les différents blocs introduits le diagramme de blocs
(d’un point de vue boite blanche),
– un ou plusieurs diagrammes d’états-transitions, annotés de contraintes
OCL, spécifiant de manière formelle l’aspect dynamique du système
embarqué sous test,
– un diagramme d’exigences permettant d’exprimer les exigences
fonctionnelles du système embarqué sous test et de lier celles-ci avec
les éléments décrits dans les diagrammes précédents.
L’objectif de ce document consiste à définir de manière exhaustive les
différents éléments de modélisation que nous supportons au sein du sousensemble SysML4MBT. Pour illustrer le pouvoir d’expression mis en place
dans chacun de ces diagrammes, nous utilisons tout au long de ce document
un exemple illustratif portant sur un système simplifié de l’éclairage avant
des feux de véhicules.
2.4
Bilan et cas d’étude illustratif
Afin d’illustrer le langage SysML4MBT, nous utilisons un exemple de
gestion simplifiée de l’éclairage avant des feux de véhicules (feux de croisement et phares) appelé 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠. Dans ce système de gestion, nous
considérons que l’utilisateur peut stimuler le système de deux manières :
– il demande l’allumage/l’extinction des feux de croisement (highlights),
– il demande l’allumage/l’extinction des phares (headlights).
Un commodo permet à l’utilisateur de commander l’allumage et l’extinction des feux. Les feux peuvent ainsi être dans quatre états différents :
– feux de croisement et phares éteints,
– feux de croisement allumés et phares éteints,
– feux de croisement éteints et phares allumés,
– feux de croisement et phares allumés.
Dans les prochaines parties du document, nous présentons, diagramme
par diagramme, le langage SysML4MBT supporté par les techniques de génération de tests développées dans le cadre du projet VETESS. Ce pouvoir d’expression est tout au long illustré par les différents diagrammes
SysML4MBT permettant de modéliser les aspects fonctionnels du cahier
des charges de l’exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠.
16
Prototype d’outil de modélisation graphique SysML
3
Diagramme de blocs SysML4MBT
Le diagramme de blocs permet de représenter une vue statique du système, c’est-à-dire sa structure. Il s’agit d’une vision “boite noire” de ce que
l’on modélise.
3.1
Les blocs
Un système se décompose en plusieurs parties ou composantes. Chacune
d’entre elles est modélisée par un bloc. Un bloc est représenté sur la figure 1.
Il est nécessaire d’avoir un bloc qui représente l’ensemble du système.
Figure 1 – Représentation d’un bloc SysML.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
On découpe notre système afin de modéliser les différents composants.
On obtient alors 6 blocs qui sont :
– le bloc qui représente le système entier (FontLightingsSystem),
– le bloc qui représente le controleur (Controller),
– le bloc qui représente le feux de croisement gauche (LeftHighLight),
– le bloc qui représente le feux de croisement droit (RightHighLight),
– le bloc qui représente le phare gauche (LeftHeadLight),
– et le bloc qui représente le phare droit(RightHeadLight).
Ces blocs sont représentés sur la figure 2.
Figure 2 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Blocs SysML4MBT.
17
VETESS - Livrable n˚1.1
3.2
Les propriétés
Chaque bloc peut contenir des propriétés. Il s’agit des valeurs d’état de
chaque partie. Les propriétés sont représentées par un nom, un type et une
valeur par défaut. Cette valeur par défaut représente la valeur d’initialisation du système. Les propriétés représentent, au travers des différents blocs
auxquels elles sont attachées, les variables d’environnement du système et les
informations stockées dans le système. Les types que l’on prend en compte
dans le cadre du projet VETESS sont les suivants :
– Les booléens.
– Les entiers.
– Les types définis par les énumérations.
Les énumérations sont des éléments qui définissent des listes de choix.
Par exemple la figure 3 représente un nouveau type “TypeEnum” pouvant
prendre la valeur “Valeur1” ou “Valeur2”.
Figure 3 – Représentation d’une énumération SysML.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Dans notre exemple, la seule information à stocker est la position du
commodo pour chacun des types de feux. Ainsi, le bloc “Controller” en
SysML4MBT a deux propriétés intitulées : ControllerHighPosition (pour
les feux de croisement) et ControllerHeadPosition (pour les phares). Chaque
propriété prend une valeur sur deux possibles à savoir ON et OFF. On met
donc en place une énumération qui propose les deux valeurs. La propriété
doit également avoir une valeur par défaut, dans notre cas, initialement, tous
les feux sont éteints (OFF et OFF). La figure 4 représente ces données avec
le langage SysML4MBT.
Figure 4 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Propriétés des blocs SysML.
18
Prototype d’outil de modélisation graphique SysML
3.3
Les opérations
On peut également attacher à un bloc une ou plusieurs opérations. Une
opération représente une action que peut exécuter ce bloc. La structure est
la suivante :
+NomOpération(Param1 : TypeParam1 , . . .) : TypeRetour
Ce sont les opérations exécutables par le système. Elles sont mises en œuvre
dans le diagramme d’états-transitions. On spécifie toutes les opérations dans
le bloc principal du système sous test.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Dans l’exemple, il y a quatre opérations à représenter : Allumage ou
extinction des feux ou des phares. Ce sont les actions que l’utilisateur va
pouvoir effectuer en actionnant le commodo. Elles sont représentées sur la
figure 5.
Figure 5 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Opérations des blocs SysML4MBT.
3.4
Les associations
Afin de relier les blocs entre eux, on utilise des associations. Une association doit porter plusieurs informations :
– un nom : permettant de l’identifier,
– deux noms de rôles : permettant d’identifier chacun des acteurs (chacune des extrémités),
– deux multiplicités : une multiplicité sur une extrémité donnée indique,
pour une instance du bloc opposé, le nombre de liens possibles avec
des blocs de l’extrémité concernée.
Une multiplicité est un intervalle entre deux nombres indiquant toutes
les valeurs possibles, le sigle “*” représentant l’infini. Une multiplicité s’écrit
sous la forme : PlusPetitNombre..PlusGrandNombre (exemple : 0..1). Par
convention, la multiplicité “0..*” s’écrit “*” et la multiplicité “n..n” s’écrit
“n” (où n est un entier supérieur à 0).
19
VETESS - Livrable n˚1.1
Il existe plusieurs types de liens. Dans le cadre du projet VETESS, nous
ne prenons en compte que l’association standard et la composition. L’association standard représente un lien quelconque, un simple rapport entre des
éléments. La composition quand à elle, va représenter une imbrication, le fait
qu’un élément se découpe en plusieurs composants. La figure 6 montre la
représentation graphique d’une association et d’une composition. Sur cette
figure un bloc A est composé de 4 ou 5 bloc B.
Figure 6 – Associations du diagramme de blocs SysML4MBT.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Au niveau du modèle SysML4MBT qui spécifie l’exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠,
se trouve un élément central (FrontLightingsSystem) représentant le système. Cet élément est composé d’un commodo (Controller) et de 4 feux
(feux de croisement gauche, feux de croisement droit, phare gauche et phare
droit). On va ainsi représenter ces liens d’imbrications à l’aide de compositions. La figure 7 représente la modélisation de ces liens.
Figure 7 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme de blocs SysML4MBT.
20
Prototype d’outil de modélisation graphique SysML
3.5
Les signaux
Un signal représente une transmission de données entre deux objets. Il
se distingue de l’opération car il est asynchrone. De plus, il n’a pas la même
signification. Un signal représente un stimulus alors que l’opération représente plus un service proposé par un bloc. On spécifie les signaux dans le
diagramme de blocs mais ils seront vraiment mis en œuvre dans les diagrammes internes et d’états-transitions.
Un signal se représente dans un diagramme de bloc comme sur la figure 8.
Figure 8 – Signal du diagramme de blocs SysML4MBT.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Dans notre exemple SysML4MBT, il faut représenter les envois de signaux qui permettent aux différents éléments de communiquer. Ainsi, lorsque
le comodo est actionné par l’utilisateur (appel d’une opération), des signaux
sont envoyés du comodo vers les feux de manière à les activer réellement.
Dans notre exemple il y a 4 signaux qui sont :
– Allumage des feux : OnHighLightsSignal
– Extinction des feux : OffHighLightsSignal
– Allumage des phares : OnHeadLightsSignal
– Extinction des phares : OffHeadLightsSignal
Ces signaux sont représentés sur la figure 9.
Figure 9 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Signaux SysML4MBT.
21
VETESS - Livrable n˚1.1
3.6
Les spécifications de flux
Les “spécifications de flux” sont des interfaces qui regroupent plusieurs
signaux. Ainsi, un élément qui a comme type une “spécification de flux” peut
prendre comme valeur n’importe quel signal de la spécification en question.
Sur la figure 10, la spécification de flux représente un type qui vaut soit
signal1, soit signal2.
Figure 10 – Spécification de flux du diagramme de blocs SysML4MBT.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
On a besoin de spécifications de flux dans notre exemple car il faut regrouper les signaux propres aux feux de croisement et les signaux propres aux
phares. En effet, lorsque le comodo devra envoyer un signal aux phares par
exemple, ce sera soit le signal d’allumage des phares, soit le signal d’extinction des phares. Ainsi, on regroupe ces deux signaux de manière à pouvoir
indiquer que le flux du commodo vers les phares se fera à travers l’un ou
l’autre de ces signaux. Ces deux spécifications sont représentées sur la figure
11.
Figure 11 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Spécification des flux SysML4MBT.
3.7
Les ports
Les ports précisent les points de communication d’un bloc. On les définit
au niveau du diagramme de blocs sans les représenter graphiquement. Un
port porte un nom et un type (booléen, entier, énumération, signal ou une
spécification de flux).
22
Prototype d’outil de modélisation graphique SysML
Il existe deux types de ports : Le port standard et le port de flux. Un
port standard représente un service proposé par le bloc alors qu’un port de
flux représente un échange de matière, d’énergie ou d’informations. De plus,
au niveau d’un port de flux, on précise le sens de l’échange (in, out ou les
deux).
On utilise deux types de ports de flux :
– Le port de flux atomique (typé par un booléen, un entier, une énumération ou un signal)
– Le port de flux non-atomique (typé par une spécification de flux)
On choisira d’utiliser un type de port plutôt que l’autre en fonction du
contexte.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
On précise les ports par lesquels les signaux vont être transmis. Il y a donc
deux ports qui partent depuis le bloc controller (un port vers les phares et un
vers les feux). Il y a ensuite un port (de réception) pour chaque feu/phares.
Il faut ensuite typer ces ports. Pour cela, on utilise les spécifications de flux
mises en place précédemment. On utilise alors des ports de flux car il s’agit
de la transmission d’un signal (probablement) électrique et dirigé. Les ports
définis sont les suivants :
– Bloc Controller
– outActionHigh : HighSpec
– outActionHead : HeadSpec
– Bloc LeftHighLight
– inActionLeftHigh : HighSpec
– Bloc RightHighLight
– inActionRightHigh : HighSpec
– Bloc LeftHeadLight
– inActionLeftHead : HeadSpec
– Bloc RightHeadLight
– inActionRightHead : HeadSpec
4
Diagramme interne de blocs SysML4MBT
Afin de préciser la représentation statique du système, on utilise les diagrammes internes de blocs. Ce type de diagramme permet de représenter
l’intérieur du système au niveau des communications et des envois de signaux. Un diagramme interne est attaché à un bloc. Le premier diagramme
interne représenté est celui du bloc principal (soit le bloc représentant le
système). On peut aussi, si nécessaire, représenter l’intérieur des blocs secondaires.
23
VETESS - Livrable n˚1.1
4.1
Les propriétés
Les principaux éléments d’un diagramme interne de blocs sont les propriétés (figure 12). Une propriété dans le diagramme interne d’un bloc donné
peut représenter :
– une propriété du bloc en question
– un autre bloc qui compose le bloc en question (dans ce cas, par convention, on lui donnera son nom de rôle dans la composition)
Dans ce deuxième cas, on peut représenter des propriétés à l’intérieur de
cette propriété pour représenter un niveau supérieur. Chaque propriété a
également un type qui correspond a l’élément qu’elle représente.
Figure 12 – Propriété du diagramme interne de blocs SysML4MBT.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
On considère que dans le cas de la gestion des feux, un seul diagramme
interne est nécessaire. En effet, il n’est pas utile de représenter l’intérieur
du bloc controller ou des blocs des feux/phares. On a dans le diagramme
interne du bloc “FrontLightingsSystem” cinq propriétés :
– une qui représente le controller (commodo)
– deux pour les feux (1 pour le droit (rightHighLight) et 1 pour le gauche
(leftHighLight))
– deux pour les phares (1 pour le droit (rightHeadLight) et 1 pour le
gauche (leftHeadLight))
4.2
Les ports
Dans le diagramme interne de blocs, on représente également les ports
qui sont présents dans le diagramme de blocs. Les ports du bloc dont on
est en train de représenter l’intérieur, sont représentés sur les parois du
diagramme interne. En revanche, les ports des blocs représentés sous forme
de propriétés sont placés sur les parois des propriétés.
La figure 13 représente les modélisations des ports standards et de flux
(atomique et non-atomique).
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
On représente donc les ports que l’on a mis en place dans le diagramme
de blocs. On obtient la figure 14.
24
Prototype d’outil de modélisation graphique SysML
Figure 13 – Types de port de SysML4MBT.
Figure 14 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme interne SysML4MBT (propriétés).
4.3
Les connecteurs
Les connecteurs représentent les chemins de communication entre les
éléments. Lorsqu’un connecteur relie deux ports de flux, il représente un
échange (de données ou d’énergie ou de matière. . .) et quand il relie deux
ports standards, il représente l’appel à un service proposé.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Dans cet exemple, le port du controller dédié aux feux de croisement
(outActionHigh) est relié aux ports des feux de croisement et le port dédié
aux phares (outActionHead) est relié aux ports des phares. Le résultat est
présenté sur la figure 15.
Figure 15 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme interne SysML4MBT.
25
VETESS - Livrable n˚1.1
5
Diagramme d’états-transitions SysML4MBT
Le diagramme d’états transitions représente la vue dynamique du système. On représente un diagramme d’états transitions par sous-bloc. Les
composantes du système (c’est-à-dire les différents diagrammes d’états transitions) évoluent en parallèle. Au niveau du code OCL contenu dans un
diagramme d’états transitions, le contexte sera le bloc correspondant à ce
diagramme.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Dans notre exemple, il y a cinq parties :
– Le controller
– Le feux de croisement gauche
– Le feux de croisement droit
– Le phare gauche
– Le phare droit
On représente donc cinq diagrammes d’états transitions, un pour chaque
partie.
5.1
Les états
Les types d’états pris en compte sont représentés sur la figure 16. Il y a :
– État simple : représente un état du système, une configuration des
variables du système ou encore le statut du système.
– Super-état (ou état composite) : il s’agit de regroupements d’états.
– État final : c’est un point de sortie du système. Il peut éventuellement
y en avoir plusieurs.
Figure 16 – États du diagramme d’états SysML4MBT.
26
Prototype d’outil de modélisation graphique SysML
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Diagramme d’états-transitions du controller
Pour la vue dynamique du controller, on a 4 états ainsi qu’un état initial.
Ces 4 états sont les états définis dans l’introduction, à savoir :
– feux de croisement et phares éteints, (NoLight)
– feux de croisement allumés et phares éteints, (HighLightsOnly)
– feux de croisement éteints et phares allumés, (HeadLightsOnly)
– feux de croisement et phares allumés. (AllLights)
Il s’agit des différents états dans lesquels peut se retrouver le comodo. Ils
sont représentés sur la figure 17.
Figure 17 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : États du diagramme d’états SysML4MBT.
Diagramme d’états-transitions des feux
Les feux (HighLights) n’ont que deux états possibles : soit ils sont allumés, soit ils sont éteints. Ainsi, dans ces diagrammes-ci, il n’y a que deux
états intitulés :
– onHead
– offHead
Diagramme d’états-transitions des phares
Au niveau des phares (HeadLights), le fonctionnement est le même.
Ainsi, il y a également dans ces diagrammes deux états intitulés :
– onHigh
– offHigh
5.2
Les pseudo-états
Les pseudos-états sont des états temporaires c’est-à-dire que le système
ne sera pas amené à y rester. Il s’agit d’états transitoires. Les pseudos-états
pris en compte sont : l’état initial, le point de décision, la barre de fraction,
la barre de jonction et l’état historique.
5.2.1
État initial
L’état initial est un point d’entrée dans le système. Chaque diagramme
d’états transitions en contient un. Une seule transition doit partir de l’état
initial. Lorsque que l’on est sur un état initial, on traverse directement la
transition pour se retrouver dans un état stable. Chaque état composite doit
27
VETESS - Livrable n˚1.1
également contenir un état initial. Ainsi, lorsque l’on arrivera sur la paroi
d’un état composite, on arrivera dans son état initial. On représente un état
initial à l’aide d’un point noir.
5.2.2
Point de décision
Le point de décision est la modélisation du IF. . .THEN. . .ELSE au niveau
des transitions. Une transition arrive sur un point de décision (ou point de
choix) et plusieurs transitions en repartent. La transition qui arrive sur un
point de choix est une transition quelconque. Par contre les transitions qui
repartent du point de choix ne doivent pas porter de déclencheur (cf. partie
suivante). Chacune d’entre elles doit par contre porter une garde. Il est
également possible de définir une garde “else” qui sera utilisée si aucune des
autres transitions ne peut être activée. Une fois positionné sur le point de
décision, plusieurs cas sont possibles :
– Une seule garde est respectée : la transition correspondante est exécutée.
– Plusieurs gardes sont respectées : une transition parmi celles correspondantes est exécutée. Le choix se fait de façon arbitraire.
– Aucune garde n’est respectée :
– une transition avec la garde “else” est présente : cette transition est
exécutée.
– il n’y a pas de transition avec la garde “else” : le modèle contient
une erreur.
La représentation se fait comme sur la figure 18. Sur cet exemple, si on
se trouve dans l’état 1 et que l’événement “Evt()” est appelé, on va alors
passer sur le point de décision. Il y a alors deux cas :
– Si l’expression “guard” est respectée, on exécute l’expression “act” et
on passe dans l’état 2.
– Sinon, on exécute l’expression “actSinon” et on passe dans l’état 3.
Figure 18 – Point de décision du diagramme d’états SysML4MBT.
28
Prototype d’outil de modélisation graphique SysML
5.2.3
Barre de fraction et barre de jonction
Les barres de fraction et de jonction permettent de mettre en place une
parallélisation de transitions. Le fonctionnement est le suivant : une transition arrive sur une barre de fraction et plusieurs transitions en partent.
Les transitions qui partent de cette barre sont des chemins d’exécution qui
se réalisent en parallèle. Chacun de ces chemins évolue à sa manière. Afin
de fusionner tous ces chemins (de manière à interrompre le parallélisme),
on utilise une barre de jonction. Tous les chemins d’exécution (ou simplement quelques uns) pointent sur cette barre, chacun à l’aide d’une transition.
Une seule transition repart de cette barre. Pour que cette transition puisse
s’exécuter, il faut que toutes les transitions qui arrivent sur la barre aient
été franchies. Même si un des chemins arrive sur un état final, les autres
continuent leurs exécutions.
La figure 19 représente un exemple d’utilisation de ces barres. Dans cette
exemple, lorsque la transition “Transition entrée” est exécutée on arrive sur
une barre de fraction. Ainsi, les transitions “1.1” et “2.1” sont exécutées
en même temps. A la fin, pour que la transition “Transition sortie” puisse
s’exécuter, il faut que les transitions “1.2” et “2.2” aient été franchies.
Figure 19 – Barres de fraction et de jonction SysML4MBT.
5.2.4
État historique et état historique profond
L’état historique est un pseudo-état qui se place au sein d’un état composite. Cet état va permettre de retourner immédiatement à l’endroit de
l’état composite duquel on l’a quitté. Sa représentation est un “H” entouré.
Par exemple, sur la figure 20, on peut emprunter la transition “Tr2” depuis
l’état “State 1” ou depuis l’état “State 2”. Étant donné que la transition
“Tr2” arrive sur l’état historique, si on emprunte la transition “Tr2” depuis
l’état “State 1”, on retourne directement dans l’état “State 1” et sinon, on
retourne directement dans l’état “State 2”.
Figure 20 – État historique SysML4MBT.
29
VETESS - Livrable n˚1.1
L’état historique permet de retourner dans le dernier état visité de son
niveau d’imbrication. Dans le cas d’états composites imbriqués, seul l’état
historique profond permet de retourner dans le dernier état visité quelque
soit son niveau d’imbrication. Sa représentation est un “H*” entouré.
5.3
Les transitions
Les transitions relient les états entre eux. La représentation graphique
est une flèche simple. Dans notre cas, une transition peut :
– relier simplement deux états,
– être réflexive (l’état de départ est le même que celui d’arrivée),
– être interne (on ne réalise pas de changement d’état),
– arriver sur un super-état (dans ce cas, on arrive dans l’état initial du
super-état),
– partir d’un super-état (dans ce cas, la transition sera actionnable depuis n’importe quel état du super-état),
mais ne peut pas relier deux états qui ne sont pas dans le même superétat (transition trans-hiérarchique). Graphiquement, une transition ne peut
donc pas traverser la bordure d’un super état. Une transition représente l’intégralité du changement d’état. Une transition contient trois “paramètres”.
5.3.1
Déclencheur
Le déclencheur précise un évènement qui, lorsqu’il se produit, permet
de franchir la transition. Les déclencheurs sont des événements qui peuvent
être des réceptions d’opérations ou des réceptions de signaux. On précise le
port à travers lequel cet événement arrive.
5.3.2
Garde
La garde est une expression booléenne qui, si elle n’est pas respectée,
bien que le déclencheur ait été activé, empêchera l’exécution de la transition.
Cette garde s’écrit en OCL.
5.3.3
Effet
Enfin, l’effet d’une transition est une expression OCL [WK96] représentant une post-condition qui sera valide si le déclencheur est activé et que la
garde est respectée. Il est possible d’envoyer un signal au moment de l’effet
de la transition. Pour se faire on utilise le sigle “ˆ ”. Son fonctionnement est
le suivant :
Bloc.Portˆ SignalEnvoyé()
où “Bloc” représente le bloc vers lequel on envoie le signal, “Port” représente
le port du bloc vers lequel on envoie le signal et “SignalEnvoyé” le nom du
signal (défini dans le diagramme de blocs) que l’on envoie.
30
Prototype d’outil de modélisation graphique SysML
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Diagramme d’états-transitions du controller
Au niveau de ce diagramme, ce sont les opérations qui vont servir de déclencheurs (appels d’opérations par l’utilisateur en actionnant le comodo).
Toutes les opérations ne sont pas activables depuis n’importe quel état. Par
exemple, on ne peut pas appeler l’opération SwitchOnHeadLights si on est
dans un état où les phares sont déjà allumés. De chaque état, il y a logiquement deux départs de transitions. En effet, depuis un état donné, soit
on change la situation (allumés ou éteints) des feux de croisement, soit on
change la situation (allumés ou éteints) des phares. La figure 21 montre le
diagramme d’états-transitions du controller avec les transitions.
Figure 21 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme d’états SysML4MBT.
Ensuite, on ajoute les effets des transitions. Lorsqu’une opération est appelée, il faut réaliser un envoi de signal vers les feux/phares afin que la modification soit effective. On ajoute donc dans chaque transition, la nécessité
de l’envoi d’un signal vers les feux/phares correspondants pour effectuer le
changement d’états dans les autres diagrammes d’états transitions. De plus,
une fois la transition franchie, les propriétés du bloc “Controller”auront été
modifiées. Le résultat est représenté sur la figure 22.
31
VETESS - Livrable n˚1.1
Figure 22 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Modélisation dynamique du controller.
32
Prototype d’outil de modélisation graphique SysML
Diagramme d’états-transitions des feux de croisement
Les feux de croisements n’ont que deux états possibles : éteints ou allumés. Ainsi, il n’y a que deux transitions possibles :
– une pour passer de éteints à allumés,
– une pour passer de allumés à éteints.
Les déclencheurs doivent être en accord avec la structure mise en place
dans les différents diagrammes. Ainsi, par exemple, le passage de onHigh à
offHigh se fera par la réception du signal offHighLightsSignal à travers le
port inAction(Left/Right)High comme il a été défini dans le diagramme de
bloc.
Le déclencheur de chaque transition est l’événement de réception de signal (dans notre exemple provenant du controller) correspondant. La figure 23 présente le diagramme d’états-transitions des feux de croisement.
L’aspect est le même pour les feux de croisements droits et gauches. La différence se situe dans le code OCL dans lequel on spécifie le port de réception
du signal.
Figure 23 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Modélisation dynamique HighLight.
Diagramme d’états-transitions des phares
Le raisonnement pour les phares et le même que pour les feux. Le résultat
est représenté sur la figure 24.
Figure 24 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Modélisation dynamique HeadLight.
33
VETESS - Livrable n˚1.1
5.4
Les actions onEntry/onExit
Les actions onEntry et onExit sont exprimées par des contraintes OCL
qui sont attachées à un état donné. L’action onEntry (resp. onExit) est exécutée lorsqu’une transition arrive (resp. quitte) l’état donné. Les transitions
internes n’activent pas ces actions à la différence des transitions réflexives.
En effet, une transition réflexive quitte l’état puis y revient.
6
6.1
Diagramme d’exigences SysML4MBT
Les exigences
Les exigences présentes dans le cahier des charges se modélisent à l’aide
d’un diagramme d’exigences. Chaque exigence porte un descriptif et un identifiant. Il est possible de mettre en place une hiérarchie. En effet, une exigence
peut parfois se découper en plusieurs sous-exigences. Dans ce cas, on utilise
des liens intitulés “containment”. La figure 25 représente ce lien. La signification est, pour cet exemple, que l’exigence 1 est en fait l’union de l’exigence
2 et de l’exigence 3. Ainsi, pour satisfaire l’exigence 1, il faut que les deux
autres soient satisfaites.
Figure 25 – Diagramme d’exigences SysML4MBT.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Considérons la seule exigence selon laquelle l’allumage et l’extinction
des phares/feux doit se réaliser réellement si l’opération a été appelée. On
représente donc une exigence qui décrit cette volonté (identifiant REQ). On
peut ensuite découper cette exigence en deux sous-exigences :
– que l’allumage des feux/phares se fasse effectivement (id = REQon)
– que l’extinction des feux/phares se fasse effectivement (id = REQoff)
On peut également découper ses exigences en faisant la distinction des
feux et des phares. On obtient le diagramme de la figure 26.
34
Prototype d’outil de modélisation graphique SysML
Figure 26 – 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠 : Diagramme d’exigences.
6.2
La traçabilité des exigences
Pour indiquer ce qui satisfait une exigence, on peut la relier aux éléments
de modèles suivants :
Diagramme de blocs :
– Bloc
– Signal
– Spécification de flux
– Propriété de spécification de flux
– Énumération
– Littéral d’énumération
– Propriété d’un bloc
– Port d’un bloc
Diagramme interne de blocs :
– Propriétés
– Ports de propriétés
– Connecteurs
Diagramme d’états-transitions :
– Machine complète
– État
– État composite
– Toutes transitions
– Déclencheur d’une transition
– Garde d’une transition
– Effet d’une transition
35
VETESS - Livrable n˚1.1
Pour indiquer qu’un élément de modèle satisfait une exigence, on utilise le lien “satisfy”. Par exemple, la figure 27 représente le fait que le bloc
“BLOC” satisfait l’exigence “REQ”.
Figure 27 – Lien satisfy simple SysML4MBT.
Si plusieurs éléments de modèles permettent de satisfaire une exigence
indépendamment les uns des autres, on met en place plusieurs liens satify en
parallèle. Par exemple, la figure 28 représente le fait que pour que l’exigence
“REQ” soit satisfaite, on a besoin de l’élément “TRANSITION 1” ou alors
de l’élément “TRANSITION 2” . Une seule transition parmis les deux suffit
à valider l’exigence REQ.
Figure 28 – Liens satisfy parallèles SysML4MBT.
Si par contre, un ensemble d’éléments coordonnés est nécessaire pour
valider une exigence, c’est à dire que plusieurs éléments sont nécessaires en
même temps, on utilise le lien “Dependency”. On représente un seul lien
satisfy. Ce lien relie l’exigence à un des éléments nécessaire et ce dernier
est relié aux autres éléments. Ainsi, par exemple, sur la figure 29, pour que
l’exigence “REQ” soit satisfaite, on a besoin de la “TRANSITION 1” et
de la “TRANSITION 2”. Cette représentation est équivalente à celle de la
figure 30.
36
Prototype d’outil de modélisation graphique SysML
Figure 29 – Liens satisfy multiples SysML4MBT.
Figure 30 – Équivalence des liens satisfy multiples SysML4MBT.
Exemple 𝐹 𝑟𝑜𝑛𝑡𝐿𝑖𝑔ℎ𝑡𝑖𝑛𝑔𝑠
Seules les 8 exigences de plus bas niveau sont reliées aux éléments des
modèles correspondants. Pour OnHighReq par exemple, les éléments qui satisfont l’exigence selon laquelle l’allumage des feux de croisement doit s’effectuer réellement si l’opération a été appelée, sont :
– la réaction du controller à la réception de l’opération d’allumage des
feux (SwitchOnHighLights).
– la réaction du bloc HighLight à la réception du signal envoyé pendant
l’autre transition (OnHighLightsSignal).
Les deux éléments qui satisfont cette exigence sont donc :
– La transition SwitchOnHighLights du diagramme d’états-transitions
du Controller.
– La transition OnHighLightsSignal du diagramme d’états-transitions
des HighLights.
Cependant, les deux éléments sont nécessaires. En effet, c’est l’appel
successif de ces transitions qui valide cette exigence. Il faut donc utiliser les
liens “dependency” vu précedemment. Le raisonnement est le même pour les
autres exigences. La diagramme d’exigences complet est représenté sur la
figure 31.
37
VETESS - Livrable n˚1.1
Figure 31 – Diagramme d’exigences de l’exemple des feux.
38
Prototype d’outil de modélisation graphique SysML
6.3
Les Packages
Dans certains cas complexes, la présence de dépendances trop nombreuses peut engendrer une incapacité à réaliser un diagramme d’exigences
juste. Prenons l’exemple suivant :
– Exigence 1 : satisfaite par Blocs B1 ET B2
– Exigence 2 : satisfaite par Blocs B1 ET B3
On obtient ainsi le diagramme de la figure 32. Or, cette représentation
signifie réellement que l’exigence 1 est satisfaite par les blocs B1 ET B2 ET
B3, et que l’exigence 2 est satisfaite par les blocs B1 ET B2 ET B3, ce qui
n’est pas vrai. Ainsi, pour préciser que le lien satisfy en rouge est associé
au lien dependency en vert et que le lien satisfy en bleu est associé au lien
dependency en noir, on utilise des packages. Ainsi, on met en place deux
packages : un qui regroupe le lien rouge et le lien vert et un autre package
qui regroupe le lien bleu avec le lien noir (voir figure 32).
Figure 32 – Exemple avancé de diagramme d’exigences SysML4MBT.
6.4
Les objectifs de test
Afin de simplifier la manipulation du modèle, il est possible d’utiliser
les balises AIMS. Il s’agit d’annotations placées dans le code OCL afin de
définir les objectifs de tests et leurs significations.
7
Modélisation SysML4MBT avec PAPYRUS
Dans le cadre du projet VETESS, la chaı̂ne outillée développée doit être
supportée par un logiciel de modélisation libre. Cette section présente des
modèles spécifiés à l’aide de l’outil de modélisation PAPYRUS [Pap08]. Les
modèles suivants ont ainsi été spécifiés avec le logiciel PAPYRUS en utilisant
le sous-ensemble SysML4MBT présenté dans ce document :
– les figures 33, 34, 35 illustrent la création de diagrammes de blocs,
– la figure 36 présente un diagramme interne de blocs,
– les figures 37 et 38 montrent des diagrammes états-transitions,
– enfin, la figure 39 présente un diagramme d’exigences.
39
VETESS - Livrable n˚1.1
Figure 33 – Diagramme de blocs réalisé avec PAPYRUS
40
Figure 34 – Enumérations (dans un diagramme de blocs) réalisées avec PAPYRUS
Prototype d’outil de modélisation graphique SysML
41
VETESS - Livrable n˚1.1
Figure 35 – Signaux et spécifications de flux (dans un diagramme de blocs) réalisés avec PAPYRUS
42
Figure 36 – Diagramme interne de blocs réalisé avec PAPYRUS
Prototype d’outil de modélisation graphique SysML
43
VETESS - Livrable n˚1.1
Figure 37 – Diagramme états-transitions réalisé avec PAPYRUS
44
Figure 38 – Diagramme états-transitions réalisé avec PAPYRUS
Prototype d’outil de modélisation graphique SysML
45
VETESS - Livrable n˚1.1
Figure 39 – Diagramme d’exigences réalisé avec PAPYRUS
46
Prototype d’outil de modélisation graphique SysML
8
Récapitulatif du langage SysML4MBT
Cette partie dresse la liste des éléments SysML que l’on prend en compte
dans le sous-ensemble SysML4MBT. Chacun des tableaux suivants comporte
4 colonnes :
1. la colonne “Elément” donne les noms des éléments pris en compte dans
SysML4MBT.
2. la colonne “Description” explique brièvement à quoi servent ces éléments.
3. la colonne “UML4MBT” indique si les éléments sont présents dans la
restriction UML utilisée dans Test Designer𝑇 𝑀 (UML4MBT). “Couvert” si l’élément est présent dans UML4MBT ou “Non couvert” dans
le cas contraire. Si l’élément est également présent dans UML4MBT
mais qu’il n’a pas le même nom en UML et en SysML, le nom UML
est indiqué entre parenthèse.
4. la colonne “Page” indique à quelle page de ce document l’élément est
décrit.
8.1
Diagramme de blocs
Le tableau 1 récapitule les éléments du diagramme de blocs pris en
compte dans SysML4MBT. Les éléments internes aux blocs pris en compte
sont détaillés dans le tableau 2 et les types autorisés dans le tableau 3.
Elément
Bloc
Association
standard
Composition
Description
Représente une partie du
système modélisé
Relie les blocs entre eux
UML4MBT
Couvert
(Classe)
Couvert
Page
17
Relie les blocs entre eux avec une
signification de composition
Couvert
19
19
Table 1 – SysML4MBT - Diagramme de Blocs - Eléments de base.
47
VETESS - Livrable n˚1.1
Element
Opération
Description
Représente l’action qui peut être
appelée par le bloc qui la contient
Variable qui caractérise
l’instance du bloc
Représente un service proposé
par le bloc
Représente un point de
communication
Propriété
Port
standard
Port de flux
UML4MBT
Couvert
Page
19
Couvert
(attributs)
Non couvert
18
Non couvert
22
22
Table 2 – SysML4MBT - Diagramme de Blocs - Éléments d’un bloc.
Elément
Booléen
Entier
Enumération
Signal
Spécification
de flux
Description
Nombre booléen
Nombre entier
Liste de choix
Représente un stimulus
Ensemble de signaux
UML4MBT
Couvert
Couvert
Couvert
Non couvert
Non couvert
Page
18
18
18
21
22
Table 3 – SysML4MBT - Diagramme de Blocs - Types.
8.2
Diagramme interne de blocs
Le tableau 4 résume les éléments pris en compte dans SysML4MBT
au niveau du diagramme interne de blocs. Aucun de ceux-ci ne sont pris
en compte dans UML4MBT étant donné qu’il n’y a pas d’équivalent du
diagramme interne en UML.
Elément
Propriété
(propriété)
Propriété
(bloc)
Port
standard
Port de flux
Connecteur
Description
Elément qui pointe sur la
propriété du bloc représenté
Elément qui pointe sur un bloc
qui compose le bloc représenté
Service proposé par un bloc
UML4MBT
Non couvert
Page
24
Non couvert
24
Non couvert
24
Point d’envoi/réception de
données
Liaison entre les ports
Non couvert
24
Non couvert
25
Table 4 – SysML4MBT - Diagramme interne.
48
Prototype d’outil de modélisation graphique SysML
8.3
Diagramme d’états-transitions
Au niveau de la représentation dynamique, le type de diagramme utilisé en SysML est le même qu’en UML : il s’agit du diagramme d’étatstransitions. Il y a cependant des éléments présents dans SysML4MBT qui
ne sont pas dans UML4MBT. C’est ce que présentent les tableaux 5 (au
niveau des états) et 6 (au niveau des transitions).
Element
Etat initial
Etat final
Etat simple
Super-état
Point de
décision
Etat orthogonal
Barre de
fraction/
jonction
Etat
historique
Etat
historique
profond
Description
(Pseudo-état) Point d’entrée
dans le système
Point de sortie du système
Etat du système
Etat qui peut contenir d’autres
états
Pseudo-état représentant un
choix
Le fait que plusieurs états soient
actifs au même moment
Pseudo-état permettant de
représenter une exécution
parallèle
Permet de retourner directement
à l’endroit de l’état composite
d’ou on est parti
Permet de retourner directement
à l’endroit de l’état composite
d’ou on est parti quelque soit son
niveau d’imbrication
UML4MBT
Couvert
Page
27
Couvert
Couvert
Couvert
26
26
26
Couvert
28
Non couvert
26
Non couvert
29
Non couvert
29
Non couvert
29
Table 5 – SysML4MBT - Diagramme d’états-transitions - États.
49
VETESS - Livrable n˚1.1
Elément
Transition
Déclencheur
Port
événement
Garde
Effet
Actions
onEntry
onExit
Envoi de
signal
Description
Lien entre deux états
Appel d’opération qui rend
possible le franchissement de la
transition
Précision du port par lequel
arrive le déclencheur quand
celui-ci est un signal
Expression booléenne qui valide
le passage de la transition
Action réalisée par la transition
Actions s’exécutant lorsqu’une
transition entre dans l’état ou le
quitte
Envoi d’un signal dans l’effet
d’une transition
UML4MBT
Couvert
Couvert
Page
30
30
Non couvert
30
Couvert
30
Couvert
Couvert
30
34
Non couvert
30
Table 6 – SysML4MBT - Diagramme d’états-transitions - Transitions.
8.4
Diagramme d’exigences
Le diagramme d’exigences, tout comme le diagramme interne est un
diagramme qui n’existe pas en UML. Ainsi tous les éléments du diagramme
d’exigences pris en compte en SysML4MBT ne le sont pas en UML4MBT
(tableau 7).
Elément
Exigence
Hiérarchie
(Containment)
Eléments
de modèle
Satisfy
Package
Description
Exigence du cahier des charges
Hiérarchie entre les exigences
UML4MBT
Non couvert
Non couvert
Page
34
34
Liens sur des éléments de
modèles
Lien de satisfaction entre les
éléments de modèles et les
exigences
Permet de regrouper les liens
Non couvert
35
Non couvert
35
Non couvert
39
Table 7 – SysML4MBT - Diagramme d’exigences.
50
Prototype d’outil de modélisation graphique SysML
9
Synthèse
Nous avons défini dans ce document le sous-ensemble SysML (baptisé
SysML4MBT) pris en compte par la chaı̂ne outillée du projet VETESS pour
spécifier les modèles embarqués sous test. Ce sous-ensemble ne remet pas en
cause les concepts de la notation SysML et ne fait qu’identifier un sousensemble de cette notation pertinent dans le contexte de la modélisation
comportementale pour la génération de cas de test fonctionnels.
L’ensemble des éléments de la notation SysML sélectionnés dans le sousensemble SysML4MBT a été illustré à travers un exemple jouet et sa mise
en œuvre a été réalisée avec l’outil de modélisation PAPYRUS.
La définition du langage SysML4MBT doit maintenant donner lieu à une
phase de formalisation en terme de métamodélisation (cf. livrable L2.1 du
projet) et une phase de développement afin de garantir le traitement automatique de tels modèles par la chaı̂ne outillée (cf. livrable L2.2 du projet).
51
VETESS - Livrable n˚1.1
Références
[Abr96]
J-R. Abrial. The B-BOOK : Assigning Programs to Meanings.
Cambridge University Press, 1996. ISBN 0 521 49619 5.
[BG92]
G. Berry and G. Gonthier. The esterel synchronous programming language : Design, semantics, implementation. Science of
Computer Programming, 19(2) :87–152, November 1992.
[BGLP08] F. Bouquet, C. Grandpierre, B. Legeard, and F. Peureux. A test
generation solution to automate software testing. In Proceedings
of the 3𝑟𝑑 International Workshop on Automation of Software
Test (AST’08), pages 45–48, Leipzig, Germany, May 2008. ACM
Press.
[Boo93]
G. Booch. Object-Oriented Analysis and Design With Applications. Benjamin/Cummings Publishing Company, 2𝑛𝑑 edition,
1993. ISBN 0 80 535340 2.
[CE81]
E.M. Clarke and E.A. Emerson. Design and synthesis of synchronization skeletons using branching-time temporal logic. In
Proceedings of Workshop on Logic of Programs, volume 131 of
LNCS, pages 52–71, Yorktown Heights, NY, USA, May 1981.
Springer Verlag.
[CJRZ02] D. Clarke, T. Jéron, V. Rusu, and E. Zinovieva. STG : a Symbolic
Test Generation Tool. In Proceedings of the ETAPS’02 International Conference on Tools and Algorithms for the Construction
and Analysis of Systems (TACAS’02), volume 2280 of LNCS,
Grenoble, France, April 2002. Springer Verlag.
[CK93]
Kwang-Ting Cheng and A.S. Krishnakumar. Automatic functional test generation using the extended finite state machine
model. In Proceedings of the 30𝑡ℎ International Design Automation Conference (DAC’93), pages 86–91, Dallas, Texas, USA,
June 1993. ACM Press.
[CPHP87] P. Caspi, D. Pilaud, Halbwachs, and J. A. Plaice. LUSTRE :
a declarative language for real-time programming. In Proceedings of the 14𝑡ℎ Symposium on Principles of programming Languages (POPL’87), pages 178–188, Munich, Germany, January
1987. ACM Press.
[CSE96]
J. Callahan, F. Schneider, and S. Easterbrook. Automated software testing using modelchecking. In Proceedings of the SPIN
International Workshop, Rutgers University, USA, August 1996.
[FGJM95] K. Futatsugi, J.A. Goguen, J.P. Jouannaud, and J. Meseguer.
Principles of OBJ2. In Proceedings of the 12𝑡ℎ Symposium on
Principles of programming Languages (POPL’95), pages 52–66,
New Orleans, USA, January 1995. ACM Press.
52
Prototype d’outil de modélisation graphique SysML
[FJJV97] J-C. Fernandez, C. Jard, T. Jéron, and G. Viho. An Experiment
in Automatic Generation of Test Suites for Protocols with Verification Technology. Journal of Science of Computer Programming, 29(1-2) :123–146, 1997. INRIA Technical Report 2923.
[GH93]
J. Guttag and J. Horning. Larch : languages and tools for formal
specification. Springer Verlag, 1993. ISBN 0 387 94006 5.
[Har98]
D. Harel. Modeling Reactive Systems With Statecharts. Mac
Graw Hill, 1998. ISBN 0 070 26205 5.
[Hoa78]
C.A.R. Hoare. Communicating sequential processes. Communications of the ACM, 21 :666–677, 1978.
[Hol91]
G. Holzmann. Design and validation of protocols. Prentice-Hall
Software Series, 1991.
[Hol97]
G.J. Holzmann. The model checker SPIN. IEEE Transactions
on Software Engineering, 23(5) :279–295, 1997.
[ISO]
ISO. ISO 8807 : Information processing systems - open systems
interconnection - LOTOS - a formal description technique based
on the temporal ordering of observational behaviour, 1989.
[IT]
ITU-T. ITU-T. Formal description techniques (fdt) - specification
and description language (sdl), 2002.
[Jac92]
I. Jacobson. Object Oriented Software Engineering : A Use Case
Driven Approach. Addison-Wesley, 1992. ISBN 0 20 154435 0.
[JM99]
T. Jéron and P. Morel. Test generation derived from modelchecking. In Proceedings of the 11𝑡ℎ International Conference on
Computer Aided Verification (CAV’99), volume 1633 of LNCS,
pages 108–121, Trento, Italy, July 1999. Springer Verlag.
[Jon90]
C.B. Jones. Systematic Software Development Using VDM.
Prentice-Hall, 2𝑛𝑑 edition, 1990.
[Mey97]
B. Meyer. Object-Oriented Software Construction. Prentice-Hall
PTR, 2𝑛𝑑 edition, 1997. ISBN 0 13 629155 4.
[MG03]
P-A. Müller and N. Gaertner. Modélisation objet avec UML.
Eyrolles, 2𝑡ℎ edition, 2003. ISBN 2 212 11397 8.
[Mil82]
R. Milner. A Calculus of Communicating Systems. Springer
Verlag, 1982. ISBN 0 387 10235 3.
[Mil99]
R. Milner. Communicating and Mobile Processes : the 𝜋-calculus.
Cambridge University Press, 1999. ISBN 0 521 65869 1.
[MSBT04] G.J. Myers, C. Sandler, T. Badgett, and T.M. Thomas. The Art
of Software Testing. Wiley, 2𝑡ℎ edition, 2004. ISBN 978 0 471
46912 4.
[Pap08]
The Papyrus UML Editor home page. http://www.papyrusuml.
org, 2008.
53
VETESS - Livrable n˚1.1
[QS82]
J-P. Queille and J. Sifakis. Specification and verification of
concurrent systems in CESAR. In Proceedings of the 5𝑡ℎ International Symposium on Programming, volume 137 of LNCS,
pages 337–351, Torino, Italy, April 1982. Springer Verlag.
[RBP+ 90] J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen. Object Modeling Technique. Prentice-Hall, 1990. ISBN 0
13 629841 9.
[RJB99]
J. Rumbaugh, I. Jacobson, and G. Booch. The Unified Modeling
Language Reference Manual. Addison-Wesley, 1999.
[RJB04]
J. Rumbaugh, I. Jacobson, and G. Booch. The Unified Modeling
Language Reference Manual. Addison-Wesley, 2𝑡ℎ edition, 2004.
ISBN 0 321 24562 8.
[Sma09]
The Smartesting web site. http://www.smartesting.com, 2009.
[Spi92]
J.M. Spivey. The Z notation : A Reference Manual. PrenticeHall, 2𝑛𝑑 edition, 1992. ISBN 0 13 978529 9.
[Tre08]
J. Tretmans. Model-Based Testing with Labelled Transition Systems. In Formal Methods and Testing, volume 4949 of LNCS,
pages 1–38. Springer Verlag, 2008.
[UL06]
M. Utting and B. Legeard. Practical Model-Based Testing - A
tools approach. Elsevier Science, 2006. ISBN 0 12 372501 1.
[WK96]
J. Warmer and A. Kleppe. The Object Constraint Language :
Precise Modeling with UML. Addison-Wesley, 1996. ISBN 0 201
37940 6.
54
Résumé
Ce document a pour but de définir l’ensemble des éléments de modélisation SysML pris
en compte pour mettre en œuvre les techniques de génération de tests à partir de modèles
développées dans le cadre du projet VETESS.
Le sous-ensemble de la notation SysML sélectionné, baptisé SysML4MBT, comporte les
quatre diagrammes SysML suivants : le diagramme de blocs, le diagramme interne de blocs,
le diagramme d’états-transitions (annoté de contraintes OCL) et le diagramme d’exigences.
Le pouvoir d’expression mis en place sur chacun de ces diagrammes est explicité et est illustré
à travers un exemple jouet spécifié avec l’outil de modélisation PAPYRUS.
http://lifc.univ-fcomte.fr/vetess/
Téléchargement