Création de vérifications personnalisées sur les liens entre objets

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.

  1. Double-cliquez sur la flèche en regard de Robustness Extension dans la boîte de dialogue Liste des extensions pour l'afficher dans l'Editeur de ressources.
  2. Pointez sur la catégorie Profile, cliquez le bouton droit de la souris, puis sélectionnez Ajouter des métaclasses.

    La boîte de dialogue Sélection de métaclasses s'affiche.

  3. Sélectionnez InstanceLink dans la liste des métaclasses affichées dans l'onglet PdMOO, puis cliquez sur OK.

    La catégorie InstanceLink s'affiche sous Profile.

  4. Pointez sur la catégorie InstanceLink, cliquez le bouton droit de la souris et sélectionnez Nouveau > Vérification personnalisée.

    Une nouvelle vérification est créée.

  5. Saisissez Collaboration d'acteur incorrecte dans la zone Nom.

    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.

  6. Saisissez "Cette vérification s'assure que les acteurs ne communiquent qu'avec les objets Boundary." dans la zone Message d'aide.

    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).

  7. Saisissez " Les liens entre objets suivants sont incorrects :" dans la zone Message de résultats.
  8. Sélectionnez Erreur comme sévérité par défaut.
  9. Cochez la case Exécuter la vérification par défaut.
  10. Cliquez sur l'onglet Script de vérification.

    L'onglet Script de vérification permet de saisir le script pour la vérification supplémentaire.

  11. Saisissez le script suivant dans la zone de texte.
    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(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
    Elsif 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
  12. Cliquez sur l'onglet Script global.

    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.

  13. Saisissez le script suivant dans la zone de texte.
    ' 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
      ' Type d'objet correct
      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 correct
      If Obj.Stereotype = Value Then
       ' Stéreotype correct
       CompareStereotype = True
      End If 
     End If
    End Function
  14. Cliquez sur Appliquer.

    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é

  15. Saisissez la vérification suivante dans l'onglet 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 or 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 extrémités sont des objets '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
  16. Répétez les étapes 4 à 14 et créez une vérification pour vérifier que seuls les objets Control accèdent aux objets Entity :

    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é

  17. Saisissez la vérification suivante dans l'onglet 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 or 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 le 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 le
    stéréotype "Control"
      If not CompareStereotype(dst, PdOOM.Cls_UMLObject, "Control") Then
       %Check% = False
      End If
     Elsif CompareStereotype(dst, PdOOM.Cls_UMLObject, "Entity") Then 
      ' Vérifie si la source est un objet UML avec le stéréotype
    "Control"
      If not CompareStereotype(src, PdOOM.Cls_UMLObject, "Control") Then
       %Check% = False
      End If
     End If
    End Function
  18. Cliquez sur Appliquer.


  19. Cliquez sur OK dans l'éditeur de ressources.
  20. Sélectionnez Outils > Vérifier le modèle pour afficher la boîte de dialogue Paramètres de vérification de modèle.

    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.