Nous allons maintenant créer trois vérifications personnalisées sur les liens entre objets qui vont connecter les différents objets Robustness Analysis. Ces vérifications, qui sont écrites en VB, n'empêchent pas les utilisateurs de créer des diagrammes non-pris en charge par la méthodologie Robustness Analysis, mais définissent des règles dont l'application sera contrôlée à l'aide de la fonctionnalité de vérification de modèles.
Pour plus d'informations sur la syntaxe VBS, voir Pilotage de PowerAMC à l'aide de scripts.
Champ |
Valeur |
---|---|
Nom |
Collaboration d'acteur incorrecte |
Commentaire |
Cette vérification contrôle si des acteurs sont liés aux objets Boundary. Robustness Analysis ne permet pas de lier des acteurs aux objets Control ou Entity. |
Message d'aide |
Cette vérification s'assure que les acteurs ne communiquent qu'avec les objets Boundary. |
Message de résultats |
Les liens entre objets suivants sont incorrects : |
Sévérité par défaut |
Erreur |
Exécuter la vérification par défaut |
[sélectionnée] |
Function %Check%(link) ' La valeur par défaut est True %Check% = True ' La valeur par défaut est True If link is Nothing then Exit Function End if If not link.IsKindOf(PdOOM.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 ' La source est un acteur ' Appelle la fonction globale CompareObjectKind() définie dans le volet Script global If CompareObjectKind(src, PdOOM.Cls_Actor) Then ' Vérifie si la destination est un objet UML avec le stéréotype "Boundary" If not CompareStereotype(dst, PdOOM.Cls_UMLObject, "Boundary") Then %Check% = False End If ElseIf CompareObjectKind(dst, PdOOM.Cls_Actor) Then ' Vérifie si la source est un objet UML avec le stéréotype "Boundary If not CompareStereotype(src, PdOOM.Cls_UMLObject, "Boundary") Then %Check% = False End If End If End Function
' 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, Kind) Exit Function End If If Obj.IsKindOf(Kind) Then ' Cas particulier du raccourci, recherche de son objet cible 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 ' La valeur par défaut est false If Obj is Nothing then Exit Function End If if (not Obj.IsShortcut() and 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, Kind, Value) Exit Function End If If Obj.IsKindOf(Kind) Then ' Cas particulier du raccourci, recherche de son objet cible If Obj.Stereotype = Value Then ' Cas particulier du raccourci, recherche de son objet cible CompareStereotype = True End If End If End Function ' Cette fonction globale copie l'attribut standard ' de la source vers la cible Function Copy (src, trgt) trgt.name = src.name trgt.code = src.code trgt.comment = src.comment trgt.description = src.description trgt.annotation = src.annotation Dim b, d for each b in src.AttachedRules trgt.AttachedRules.insert -1,b next for each d in src.RelatedDiagrams trgt.RelatedDiagrams.insert -1,d next output " " output trgt.Classname & " " & trgt.name & " a été créé." output " " End Function
Champ |
Valeur |
---|---|
Nom |
Lien entre objets Boundary incorrect |
Message d'aide |
Cette vérification s'assure qu'un lien entre objets n'est pas défini entre deux objets Boundary. |
Message de résultats |
Les liens entre objets Boundary suivants sont incorrects : |
Sévérité par défaut |
Erreur |
Exécuter la vérification par défaut |
[sélectionnée] |
Script de vérification |
Function %Check%(link) ' La valeur par défaut est True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing then Exit Function End if If not link.IsKindOf(PdOOM.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 objets sont de type 'Boundary' If CompareStereotype(src, PdOOM.Cls_UMLObject, "Boundary") Then If CompareStereotype(dst, PdOOM.Cls_UMLObject, "Boundary") Then %Check% = False End If End If End Function |
Champ |
Value |
---|---|
Nom |
Accès incorrect à un objet Entité |
Message d'aide |
Cette vérification s'assure que que seuls des objets Control accèdent aux objets Entité. |
Message de résultats |
Les liens suivants sont incorrects : |
Sévérité par défaut |
Erreur |
Exécuter la vérification par défaut |
[sélectionnée] |
Script de vérification |
Function %Check%(link) ' La valeur par défaut est True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing then Exit Function End if If not link.IsKindOf(PdOOM.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 ' La source est un objet UML avec un stéréotype "Entity" ? ' Appelle la fonction globale CompareStereotype() définie dans le volet Script global If CompareStereotype(src, PdOOM.Cls_UMLObject, "Entity") Then ' Vérifie si la destination est un objet UML avec un stéréotype "Control" If not CompareStereotype(dst, PdOOM.Cls_UMLObject, "Control") Then %Check% = False End If ElseIf CompareStereotype(dst, PdOOM.Cls_UMLObject, "Entity") Then ' Vérifie si la source est un objet UML avec un stéréotype "Control" If not CompareStereotype(src, PdOOM.Cls_UMLObject, "Control") Then %Check% = False End If End If End Function |