Chapter 4 Gestion des profils
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, reportez-vous au manuel Pilotage de PowerAMC à l'aide de scripts.
Pour créer des vérifications personnalisées sur les liens entre objets :
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
' 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
| 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
| Copyright (C) 2007. Sybase Inc. All rights reserved. |
| |