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.