La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Projet NEPTUNE : Vérification statique de modèles

Présentations similaires


Présentation au sujet: "Projet NEPTUNE : Vérification statique de modèles"— Transcription de la présentation:

1 Projet 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 Toulouse Cedex 4 Tél. : (+33-0) Fax. : (+33-0)  : (millan, perceboi, leblanc, Journée NEPTUNE Paris - 24 juin 2004

2 Plan de la présentation
Vérification statique de modèles Métamodèle UML Exemple de règles Outil et expérimentation Journée NEPTUNE Paris - 24 juin 2004

3 Vé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 Un modele UML comprend plusieurs vues d'un systeme ainsi que plusieurs raffinements d'une meme vue. Verifier la correction d'un modele UML regroupe donc plusieurs problematiques: - la verification de la consistence d'une vue. Ceci suppose la definition d'interpretations du sous langage utilise pour representer cette vue et de conditions necessaires a l'exitence d'interpretations. - la verification de la coherence entre differentes vues exprimees dans des sous-langages differents. Il faut alors definir un domaine semantique commun sur lequel sont definies les interpretations des sous-langages. - la verification de relations de raffinement permettant de deriver a partir d'une vue abstraite une vue plus detaillee. Verifier la coherence de ces vues suppose la definition d'un ordre partiel sur les vues exprimees dans un meme formalisme. Ces verifications doivent etre aussi automatiques que possible et ne peuvent donc etre que partielles en ne testant que des conditions necessaires, d'ordre syntaxique, et donc exprimables par des contraintes sur le metamodele UML. Une etape ulterieure prenant en compte des criteres semantiques conduirait a la production d'obligations de preuve devant etre verifiees a l'aide d'outils de preuve assistee. Journée NEPTUNE Paris - 24 juin 2004

4 Vérification Statique de Modèles (2)
Exemple Lucie: Personne Louis: Personne Jean: Personne Anne: Personne parents Personne 0..2 enfants * Détection tardive Retour en phase de conception Génération de Code Génération de plans de tests Tests Journée NEPTUNE Paris - 24 juin 2004

5 UML = Notation Graphique + Langage de Spécification OCL
Mé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 Journée NEPTUNE Paris - 24 juin 2004

6 Métamodèle UML (2) Langage de spécification OCL Langage fonctionnel
Langage basé sur la logique du premier ordre Personne.allInstances->isUnique(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->isUnique(c : Class | c.name) Définition de règles de bonne formation sur le métamodèle pour restreindre l'ensemble des instances valides Journée NEPTUNE Paris - 24 juin 2004

7 Exemples de vérification de modèles Tout scénario est initié par un acteur (1)
: SysAEtu : Classe 2 : Acteur Cas d'utilisation 1 : SysAEtu : Classe 2 : Acteur Cas d'utilisation 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 Journée NEPTUNE Paris - 24 juin 2004

8 Exemples de vérification de modèles Tout scénario est initié par un acteur (2)
package Behavioral_Elements::Collaborations context Collaboration inv FirstStimulusFromAnActor : let interactionFromActor : Set(Message) = self.ownedElement->select(m : ModelElement | m.oclIsKindOf(Message)). oclAsType(Message)->select(m : Message | m.conformingStimulus.sender.classifier-> exists(c : Classifier | c.oclIsKindOf(Actor)))->asSet in self.ownedElement->select(m : ModelElement | m.oclIsKindOf(Actor))->notEmpty implies self.interactionFromActor->exists(m1 : Message | m1.allPredecessors-> reject(m2 : Message | m2.conformingStimulus.sender=m2.conformingStimulus.receiver and m2.conformingStimulus.sender.classifier.stereotype.name-> exists(n : String | n="SystemeAEtudier" ))->isEmpty) endpackage Journée NEPTUNE Paris - 24 juin 2004

9 Exemples de vérification de modèles Tout scénario est initié par un acteur (3)
Namespace ( from core) + namespace * 0..1 ownedElement Collaboration from Collaborations) ModelElement name : Name Actor useCases) Instance Common_ Behavior) conformingStimulus playedRole Stimulus Common_Behavior ) Classifier 1 sender +classifier 1..* Message Stereotype ( from Extension Mechanisms) icon : Geometry baseClass Name [*] + extendedElement stereotype * 1 receiver predecessor successor Evaluation de la Fonction let Evaluation du corps de la règle Journée NEPTUNE Paris - 24 juin 2004

10 Envoyés = {Stimuli consommés par le “SystèmeAEtudier"}
Exemples de vérification de modèles Chaque acteur interagit au moins dans un scénario avec l’entité “SystèmeAEtudier” (1) : SysAEtu : Acteur 1 Cas d'utilisation 1 : Acteur 2 Cas d'utilisation 1 : Acteur 2 : Acteur 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 Journée NEPTUNE Paris - 24 juin 2004

11 Exemples de vérification de modèles Chaque acteur interagit au moins dans un scénario avec l’entité “SystèmeAEtudier” (2) package Behavioral_Elements::Use_Cases context Actor inv AnyPassiveActor: Stimulus.allInstances->select(s : Stimulus | (s.receiver.classifier.stereotype.name->exists(n:String | n="SystèmeAEtudier"))).sender.classifier-> union( (s.sender.classifier.stereotype.name->exists(n:String | n="SystèmeAEtudier"))).receiver.classifier)->includes(self) endpackage Journée NEPTUNE Paris - 24 juin 2004

12 (from Common_Behavior)
Exemples de vérification de modèles Chaque acteur interagit au moins dans un scénario avec l’entité “SystèmeAEtudier” (3) 1 * +classifier 1..* Classifier (from core) Instance (from Common_Behavior) Stimulus +receiver +sender Actor (from UseCases) Influence de la navigabilité des associations dans l'expression des règles Journée NEPTUNE Paris - 24 juin 2004

13 Exemples de vérification de modèles Le graphe d’associations des classes est acyclique (1)
+rCl1 Classe 1 Classe 3 * Classe 2 +rCl31 +rCl32 +rCl2 +rCl33 +rCl4 Algorithme : Pour chaque sommet S du graphe orienté G = (Classes, participants) vérifier S DescendantsG(S) Fin pour Journée NEPTUNE Paris - 24 juin 2004

14 Exemples de vérification de modèles Le graphe d’associations des classes est acyclique (2)
package Foundation::Core context Class inv AssCircularityClosure : let participants : Set(Class)= self.allOppositeAssociationEnds-> select(ae : AssociationEnd | ae.isNavigable).participant. oclAsType(Class)->asSet() in self.participants->closure(cl : Class | cl.participants)->excludes(self) endpackage Journée NEPTUNE Paris - 24 juin 2004

15 Exemples de vérification de modèles Le graphe d’associations des classes est acyclique (3)
1 * Classifier (from core) +participant +specification AssociationEnd (from Core) isNavigable : Boolean ordering : OrderingKind aggregation : AggregationKind +associaiton +specifiedEnd Class Evaluation de la Fonction let Evaluation de la fermeture transitive Journée NEPTUNE Paris - 24 juin 2004

16 Exemples de vérification de modèles L’hé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 Foundation::Core context Class inv NoMultipleClassInheritance: self.generalization.parent->select(c : Class | c.oclIsKindOf(Class))->size <= 1 endpackage Journée NEPTUNE Paris - 24 juin 2004

17 Exemples de vérification de modèles L’héritage entre classes est simple (2)
* 1 GeneralizaleElement (from core) +specialization +generalization Generalization (from Core) discriminator : Name +parent +child Classifier isRoot : Boolean isLeaf : Boolean isAbstract : Boolean Class isActive : Boolean Journée NEPTUNE Paris - 24 juin 2004

18 Outil et expérimentation (1)
L'outil NEPTUNE de validation Métamodèle au format XMI Règles OCL Export XMI Analyseur XMI API Vérificateur Outils UML Modèle UML1.4 au format XMI 1.1 Diagnostic Journée NEPTUNE Paris - 24 juin 2004

19 Outil et expérimentation (2)
Contexte de l’expé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 Journée NEPTUNE Paris - 24 juin 2004

20 Outil 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 Journée NEPTUNE Paris - 24 juin 2004

21 Conclusion et perspectives
En conclusion Validation utilisant un ensemble conséquent de règles Nécessité d’enrichir les modèles UML par des spécifications OCL Nécessité d’étendre ces expérimentations à d’autres domaines Perspectives Définition d'un langage de navigation plus abordable pour l’analyste 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) Journée NEPTUNE Paris - 24 juin 2004


Télécharger ppt "Projet NEPTUNE : Vérification statique de modèles"

Présentations similaires


Annonces Google