L'analyse Robustness implique certaines règles relatives au comportement entre les objets. Par exemple, un acteur doit toujours communiquer avec un objet Boundary (une interface), les objets Entity doivent toujours communiquer avec les objets Control, etc. Pour représenter ces contraintes, vous allez définir des vérifications personnalisées sur les liens entre objets.
Les vérifications personnalisées n'empêchent pas les utilisateurs de se livrer à des actions incorrectes du point de vue de la syntaxe, mais leur permet de définir des règles qui seront vérifiées par la fonctionnalité de vérification de modèle.
Vous pouvez définir des vérifications personnalisées à l'aide de VB scripting.
Pour plus d'informations sur la syntaxe VBS, voir Pilotage de PowerAMC à l'aide de scripts.
La boîte de dialogue Sélection de métaclasses s'affiche.
La catégorie InstanceLink s'affiche sous Profile.
Une nouvelle vérification est créée.
Cette vérification contrôle si les acteurs sont liés aux objets Interface. Le fait de lier des acteurs aux objets Contrôle ou Entité n'est pas admis dans Robustness analysis.
Ce texte s'affiche dans la boîte de message qui apparaît lorsque l'utilisateur sélectionne Aide dans le menu contextuel de la vérification (dans la boîte de dialogue Paramètres de vérification de modèle).
L'onglet Script de vérification permet de saisir le script pour la vérification supplémentaire.
Function %Check%(link) ' Default return is True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing or not link.IsKindOf(PdMOO.cls_InstanceLink) then Exit Function End If ' Extrait les extrémités du lien Dim src, dst Set src = link.ObjectA Set dst = link.ObjectB ' Source est un acteur ' Appelle la fonction globale CompareObjectKind() définie dans le volet Script global If CompareObjectKind(src, PdMOO.Cls_Actor) Then ' Vérifie si la destination est un objet UML avec le stéréotype "Boundary" If not CompareStereotype(dst, PdMOO.Cls_UMLObject, "Boundary") Then %Check% = False End If Elsif CompareObjectKind(dst, PdMOO.Cls_Actor) Then ' Vérifie si la source est un objet UML avec le stéréotype "Boundary" If not CompareStereotype(src, PdMOO.Cls_UMLObject, "Boundary") Then %Check% = False End If End If End Function
L'onglet Script global est l'onglet dans laquelle vous stockez des fonctions et des attributs statiques qui peuvent être réutilisés entre les différentes fonctions.
' Cette fonction globale vérifie si un objet a un type particulier ' ou s'il est un raccourci d'un type particulier Function CompareObjectKind(Obj, Kind) ' La valeur par défaut est false CompareObjectKind = False ' Vérifie l'objet If Obj is Nothing Then Exit Function End If ' Cas particulier du raccourci, recherche de son objet cible If Obj.IsShortcut() Then CompareObjectKind = CompareObjectKind(Obj.TargetObject) Exit Function End If If Obj.IsKindOf(Kind) Then ' Correct object kind CompareObjectKind = True End If End Function ' Cette fonction globale vérifie si un objet a un type particulier ' et compare sa valeur de stéréotype Function CompareStereotype(Obj, Kind, Value) ' La valeur par défaut est false CompareStereotype = False ' Vérifie l'objet If Obj is Nothing or not Obj.HasAttribute("Stereotype") Then Exit Function End If ' Cas particulier du raccourci, recherche de son objet cible If Obj.IsShortcut() Then CompareStereotype = CompareStereotype(Obj.TargetObject) Exit Function End If If Obj.IsKindOf(Kind) Then ' Type d'objet correcte If Obj.Stereotype = Value Then ' Stereotype correct CompareStereotype = True End If End If End Function
Vous allez répéter les étapes 4 à 14 et créer une vérification s'assurant qu'un lien entre objets n'est pas défini entre objets Boundary :
Définition de vérification |
Contenu |
---|---|
Nom |
Lien incorrect |
Message d'aide |
Cette vérification s'assure qu'un lien entre objets n'est pas défini entre deux objets Interface. |
Message de résultats |
Les liens suivants entre objets Interface sont incorrects : |
Sévérité par défaut |
Erreur |
Exécuter la vérification par défaut |
Coché |
Function %Check%(link) ' La valeur par défaut est True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing or not link.IsKindOf(PdMOO.cls_InstanceLink) then Exit Function End If ' Extrait les extrémités du lien Dim src, dst Set src = link.ObjectA Set dst = link.ObjectB ' Erreur si les deux extrémités sont des objets 'Boundary' If CompareStereotype(src, PdMOO.Cls_UMLObject, "Boundary") Then If CompareStereotype(dst, PdMOO.Cls_UMLObject, "Boundary") Then %Check% = False End If End If End Function
Définition de la vérification |
Contenu |
---|---|
Nom |
Accès incorrect à un objet Entity |
Message d'aide |
Cette vérification s'assure que seuls les objets Control accèdent aux objets Entity |
Message de résultats |
Les liens suivants sont incorrects : |
Sévérité par défaut |
Erreur |
Exécuter la vérification par défaut |
Coché |
Function %Check%(link) ' Default return is True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing or not link.IsKindOf(PdMOO.cls_InstanceLink) then Exit Function End If ' Extrait les extrémités du lien Dim src, dst Set src = link.ObjectA Set dst = link.ObjectB ' Source est un objet UML avec le stéréotype "Entity" ? ' Appelle la fonction globale CompareStereotype() définie dans le volet Script global If CompareStereotype(src, PdMOO.Cls_UMLObject, "Entity") Then ' Vérifie si la destination est un objet UML avec le stéréotype "Control" If not CompareStereotype(dst, PdMOO.Cls_UMLObject, "Control") Then %Check% = False End If Elsif CompareStereotype(dst, PdMOO.Cls_UMLObject, "Entity") Then ' Vérifie si la source est un objet UML avec le stéréotype "Control" If not CompareStereotype(src, PdMOO.Cls_UMLObject, "Control") Then %Check% = False End If End If End Function
Les vérifications personnalisées s'affichent dans la catégorie Liens entre objets.
Vous pouvez tester les vérifications en créant des liens entre objets entre Client et Serveur d'applications par exemple, puis en appuyant sur F4 pour lancer la vérification du modèle.
Pour plus d'informations sur la fonctionnalité de vérification de modèle, reportez-vous à la section "Vérifier un modèle" dans le chapitre Modèles du Guide des fonctionnalités générales.