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
|