Title: Projet NEPTUNE : Vrification statique de modles
1Projet NEPTUNE Vérification statique de modèles
- Thierry Millan Christian Percebois -
- Hervé Leblanc - Pierre Bazex
- Institut de Recherche en Informatique de Toulouse
- Université Paul Sabatier
- 118, route de Narbonne
- F-31062 Toulouse Cedex 4
- Tél. (33-0)5 61 55 86 32
- Fax. (33-0)5 61 55 67 82
- e-mail (millan, perceboi, leblanc,
bazex)_at_irit.fr
2Plan de la présentation
- Vérification statique de modèles
- Métamodèle UML
- Exemple de règles
- Outil et expérimentation
3Vérification Statique de Modèles (1)
- Modélisation UML
- Elaborer des modèles avec des intervenants
spécialisés - Exprimer la vision des composants du système au
travers des multiples vues - Définir un ensemble de modèles exprimés dans
divers formalismes - Problème de la cohérence de la modélisation
4Vérification Statique de Modèles (2)
5Métamodèle UML (1)
- UML Notation Graphique Langage de
Spécification OCL - Notation graphique
- Différents diagrammes décrivant
- Aspects statiques
- Aspects dynamiques
- ...
- Définition d'un métamodèle
- Modélisation des notions présentes dans UML
- Représenté par un diagramme de classes
6Métamodèle UML (2)
- Langage de spécification OCL
- Langage fonctionnel
- Langage basé sur la logique du premier ordre
- Personne.allInstances-gtisUnique(p Personne
p.nom) - Langage de spécification du métamodèle
- Spécification de la syntaxe et de la sémantique
des éléments de modélisation - Class.allInstances-gtisUnique(c Class c.name)
- Définition de règles de bonne formation sur le
métamodèle pour restreindre l'ensemble des
instances valides
7Exemples de vérification de modèles Tout
scénario est initié par un acteur (1)
Algorithme Pour chaque collaboration C du
modèle tel que Acteur(C) ? ? vérifier ? A?
Acteur(C) tel que A sender "SystèmeAEtudier" ?
Stimulus(C) et prédécesseur(A sender
"SystèmeAEtudier") ? Fin pour
8Exemples de vérification de modèles Tout
scénario est initié par un acteur (2)
package Behavioral_ElementsCollaborations contex
t Collaboration inv FirstStimulusFromAnActor
let interactionFromActor Set(Message)
self.ownedElement-gtselect(m ModelElement
m.oclIsKindOf(Message)). oclAsType(Message)-gtsel
ect(m Message m.conformingStimulus.send
er.classifier-gt exists(c Classifier
c.oclIsKindOf(Actor)))-gtasSet in self.ownedEleme
nt-gtselect(m ModelElement m.oclIsKindOf(Actor)
)-gtnotEmpty implies self.interactionFromActor-gte
xists(m1 Message m1.allPredecessors-gt
reject(m2 Message m2.conformingStimul
us.senderm2.conformingStimulus.receiver and
m2.conformingStimulus.sender.classifier.stereotype
.name-gt exists(n String
n"SystemeAEtudier" ))-gtisEmpty) endpackage
9Exemples de vérification de modèles Tout
scénario est initié par un acteur (3)
Evaluation de la Fonction let
Evaluation du corps de la règle
10Exemples de vérification de modèles Chaque
acteur interagit au moins dans un scénario avec
lentité SystèmeAEtudier (1)
Algorithme Envoyés Stimuli consommés par le
SystèmeAEtudier" Reçus Stimuli reçus par
le SystèmeAEtudier Pour chaque acteur A du
modèle vérifier A Envoyés Reçus Fin pour
11Exemples de vérification de modèles Chaque
acteur interagit au moins dans un scénario avec
lentité SystèmeAEtudier (2)
- package Behavioral_ElementsUse_Cases
- context Actor inv AnyPassiveActor
- Stimulus.allInstances-gtselect(s Stimulus
- (s.receiver.classifier.stereotype.name-gtexist
s(nString - n"SystèmeAEtudier"))).sender.classifier-gt
- union(
- Stimulus.allInstances-gtselect(s Stimulus
- (s.sender.classifier.stereotype.name-gtexists(n
String - n"SystèmeAEtudier"))).receiver.classifier)-
gtincludes(self) - endpackage
12Exemples de vérification de modèles Chaque
acteur interagit au moins dans un scénario avec
lentité SystèmeAEtudier (3)
Influence de la navigabilité des associations
dans l'expression des règles
13Exemples de vérification de modèles Le graphe
dassociations des classes est acyclique (1)
Algorithme Pour chaque sommet S du graphe
orienté G (Classes, participants) vérifier S
DescendantsG(S) Fin pour
14Exemples de vérification de modèles Le graphe
dassociations des classes est acyclique (2)
- package FoundationCore
- context Class inv AssCircularityClosure
- let participants Set(Class)
self.allOppositeAssociationEnds-gt - select(ae AssociationEnd ae.isNavigable).par
ticipant. - oclAsType(Class)-gtasSet() in
- self.participants-gtclosure(cl Class
cl.participants)-gtexcludes(self) - endpackage
15Exemples de vérification de modèles Le graphe
dassociations des classes est acyclique (3)
Evaluation de la Fonction let
Evaluation de la fermeture transitive
16Exemples de vérification de modèles Lhéritage
entre classes est simple (1)
Algorithme Pour chaque sommet S du graphe
orienté G (Classes, generalization)
vérifier Cardinal(AscendantsDirectsG(S))
1 Fin pour
package FoundationCore context Class inv
NoMultipleClassInheritance self.generalization.
parent-gtselect(c Class c.oclIsKindOf(Class))-gt
size lt 1 endpackage
17Exemples de vérification de modèles Lhéritage
entre classes est simple (2)
18Outil et expérimentation (1)
- L'outil NEPTUNE de validation
Export XMI
Outils UML
Modèle UML1.4 au format XMI 1.1
Diagnostic
19Outil et expérimentation (2)
- Contexte de lexpérimentation
- Génie Logiciel
- Implantation des contraintes "métier" pour les
phases d'analyse et de conception - Vérification des règles qualités sur des projets
aéronautiques déjà audités - 100 classes, 30 règles méthodologiques, 10
règles de mise en uvre, 10 règles de métrique - Modélisation des processus d'affaire
- Echanges administratifs au sein de l'Université
Polytechnique de Catalogne (Barcelone) - 50 classes, 20 processus, 200 règles
spécifiques à ce domaine
20Outil et expérimentation (3)
- Résultat dépendant du contexte
- Génie Logiciel
- Découverte d'incohérences même sur des projets
audités par des experts - Gain de temps
- Processus d'affaire
- Existence d'autres solutions plus simples à
utiliser - Guide à la réalisation de modèles pour des non
spécialistes - Plus généralement
- Navigation au sein du métamodèle ? Ecriture des
règles complexes - Certains modèles de règles sont génériques
21Conclusion et perspectives
- En conclusion
- Validation utilisant un ensemble conséquent de
règles - Nécessité denrichir les modèles UML par des
spécifications OCL - Nécessité détendre ces expérimentations à
dautres domaines - Perspectives
- Définition d'un langage de navigation plus
abordable pour lanalyste - Utilisation de la logique temporelle pour
contrôler la dynamique des diagrammes
états-transitions - Intégration des nouveautés de la norme UML 2.0
(SDL)