Chapter 4 Gestion des profils


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, reportez-vous au manuel Pilotage de PowerAMC à l'aide de scripts.

Steps Pour créer des vérifications personnalisées sur les liens entre objets :

  1. Double-cliquez sur la flèche en regard de Robustness_Extension dans la boîte de dialogue Liste des définitions étendues de modèle pour afficher l'éditeur 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)
       ' 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
  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
          ' 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
  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(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
  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)
       ' 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
  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 aux sections correspondantes dans les différents guides de l'utilisateur.

 


Copyright (C) 2007. Sybase Inc. All rights reserved.