• Aucun résultat trouvé

Influence des propriétés d’un oracle sur sa qualification

4.4 Permettre de qualifier les fonctions d’oracle

4.4.3 Influence des propriétés d’un oracle sur sa qualification

Les propriétés de chaque oracle prennent différentes valeurs (tableau 4-2). Ces propriétés représentent des facteurs qui permettent de qualifier chaque fonction d’oracle. Nous qualifions chaque fonction d’oracle selon la combinaison des valeurs prises par les propriétés de chacun de ses oracles.

Propriétés

d’un oracle Généricité Complétude Redondance

Taille des données Couplage données/MM Valeurs d’une propriété Générique, Non générique Totale, Semi-totale, Partielle ℕ ℕ [0 ; 2]

Tableau 4-2- Propriétés d'un oracle et leurs valeurs

Avant de présenter les conséquences des propriétés sur la qualification, nous présentons la manière dont les valeurs de chaque propriété varient, et les corrélations qu’elles ont les unes avec les autres. Ainsi nous considérons l’impact des propriétés sur la qualification en ne les considérant pas individuellement mais en combinant leurs valeurs. Cela permettra par la suite d’obtenir les qualités de chaque fonction d’oracle de manière globale.

97 Permettre de qualifier les fonctions d’oracle

a- Variation des valeurs des propriétés

Les cinq propriétés d’oracle que nous avons définies dans la sous-section précédente varient différemment. Tout d’abord leurs plages de valeurs sont différentes : allant de valeurs binaires (la généricité ou la non généricité), ternaire (complétude totale, semi-totale, ou partielle), à des plages infinies (de 0 à 2 pour le couplage, des valeurs entières pour la redondance et la taille). Ensuite, elles ne varient pas autant. Certaines propriétés varient pour chaque nouveau cas de test : c’est le cas de la taille des données d’oracle si elles ne sont pas génériques. D’autres propriétés sont identiques quelque soit le cas de test s’il utilise une même fonction d’oracle (la généricité).

Toutes ces différences dans les plages de valeurs des propriétés et leur variation compliquent la qualification des fonctions d’oracle. Il est ainsi difficile de qualifier chaque fonction d’oracle car elle permet de définir des oracles qui ont des propriétés différentes pour chaque nouvelle donnée d’oracle utilisée.

b- Corrélation des propriétés

Nous relevons que certaines propriétés d’un oracle ne sont pas orthogonales.

Un oracle avec une complétude totale est forcément générique (pas forcément l’inverse) puisqu’un seul suffit pour vérifier toute la transformation et donc tous les modèles qui lui sont passés. Par ailleurs, cette unicité limite le nombre de redondances contrairement à la décomposition des vérifications en plusieurs cas de test: chaque vérification ne peut pas forcément se faire seule dans un cas de test (selon la fonction d’oracle utilisée), donc certaines vont se recouvrir, entrainant des redondances.

Par ailleurs, nous relevons une corrélation entre la complétude et la taille des données. Plus la complétude d’un oracle est totale, et plus la taille de sa donnée d’oracle sera proche de celle de la transformation sous test. Tandis qu’un oracle avec une complétude partielle est moins grand qu’un modèle de sortie puisqu’il n’en vérifie qu’une partie.

Finalement, le couplage d’un oracle générique augmente avec la valeur de la complétude. En effet, la complétude totale implique la considération de tout le méta-modèle cible effectif. Le couplage augmente aussi si l’oracle est générique puisque dans ce cas la couverture concerne les méta-modèles d’entrée et de sortie.

c- Les propriétés d’un oracle comme facteurs de qualité

Le risque d’erreur augmente en fonction des valeurs prises par les propriétés d’un oracle: - L’augmentation de la taille des données augmente la complexité et accroît le risque

d’erreur. La taille des données n’est pas considérée individuellement mais par ensemble car certaines données d’oracle seules ne permettent pas de vérifier la transformation complète.. Néanmoins, la mesure de la taille individuelle des données reste intéressante. En effet, il est moins complexe et moins risqué d’écrire plusieurs données d’oracle plus petites qu’une seule grande. Nous estimons que la difficulté pour construire l’oracle et le

risque d’erreur augmentent avec l’augmentation de la taille de l’ensemble des données d’oracle et de la taille moyenne de chacune d’elles.

- Les redondances sont aussi un point négatif puisqu’elles augmentent le nombre de vérifications et donc le risque de faire une erreur dans l’une d’entres elles. Elles sont considérées au niveau de chaque donnée d'oracle et de l’ensemble des données d’oracles utilisé pour la vérification complète d’une transformation.

- Plus le couplage est important dans une donnée d’oracle et plus le nombre de concepts différents (définis dans les méta-modèles source et cible) manipulés simultanément est important. Cela augmente la complexité et donc le risque d’erreur d’un oracle. Pour la même raison, la complexité augmente avec l’importance du couplage de l’ensemble des oracles.

- Comme un oracle générique analyse et met en rapport les modèles de test et de sortie correspondant, cela augmente le risque d’erreur par rapport à un oracle considérant uniquement le modèle de sortie. Nous ne tenons pas directement compte de cette propriété comme facteur de risque car elle est déjà considérée dans le couplage.

- Puisque la complétude totale implique une grande taille des données et que nous considérons déjà cette propriété, nous ne tenons pas compte de la complétude comme facteur de risque d’erreur.

Ainsi, nous remarquons que plus les valeurs des propriétés d’un oracle sont élevées et plus la complexité et le risque d’erreur sont élevés. La taille des données utilisées par l’oracle est la propriété la plus influente. Nous représentons cela dans le graphique de la figure 4-11. Ce graphique nous permet d’illustrer la qualité d’une fonction d’oracle en remplissant cette zone de référence avec la surface définie par les valeurs des propriétés. Si la surface symbolisant les propriétés d’une fonction d’oracle remplit la zone de référence alors son risque d’erreur est plus important. complexité et risque d'erreur grande taille de chaque oracle important couplage de chaque oracle importante redondance de chaque oracle importante redondance de l'ens. des oracles important couplage de l'ens. des oracles grande taille de l'ens. des oracles

Figure 4-11 - Influence des valeurs des propriétés sur le risque d'erreur dans la définition d’oracles

99 Permettre de qualifier les fonctions d’oracle

Plusieurs critères diminuent les possibilités de réutilisation d’un oracle dans différentes versions de la transformation de modèles :

- Si un oracle est de grande taille, il sera compliqué pour le testeur de le réutiliser. En effet, une taille importante implique un nombre important de propriétés vérifiées dans le modèle de sortie. Plus le nombre de vérifications est important et plus il y a de risques qu’au moins une ou plusieurs soient impactées par une modification de la transformation. Par ailleurs, une donnée est analysée pour décider si elle reste valable après modification de la transformation. Cette tâche est plus complexe avec une grande donnée d’oracle. De plus, elle est plus difficile à adapter si sa taille est grande. - Plus la complétude d’un oracle est totale et plus il vérifie d’exigences de la

spécification alors plus il va être affecté par les modifications de la spécification. - Les redondances compliquent la réutilisation de cas de test avec une version modifiée

de la transformation de modèles. En effet, une modification d’une exigence de la spécification qui serait considérée plusieurs fois devrait être adaptée autant de fois. - Plus le couplage est important, plus une modification d’un méta-modèle entravera la

réutilisation des oracles. Le couplage d’un oracle indique également quelles méta- classes il considère. Si les variations de la spécification concernent ces méta-classes alors l’oracle peut ne pas être réutilisable. C’est également vrai même si son objectif ne portait pas directement sur ces méta-classes.

- La généricité n’entre pas directement en jeu pour la réutilisation.

Ainsi, nous remarquons que plus les valeurs des propriétés d’un oracle sont élevées, alors sa réutilisation sera plus difficile. Comme nous recherchons les oracles les plus réutilisables, nous représentons les valeurs des propriétés bénéfiques pour la réutilisabilité dans le graphique de la figure 4-12.

réutilisation d'un oracle d'une version

à l'autre

petite taille d'un oracle faible complétude d'un oracle faible redondance dans un oracle faible couplage d'un oracle

Figure 4-12 - Influence des valeurs des propriétés sur la réutilisabilité d’un oracle

En revanche, la généricité affecte positivement la réutilisation d’un oracle dans différents cas de test d’une même version de la transformation de modèles sous test.

Dans les sections suivantes, nous illustrons l’emploi des différentes fonctions d’oracle et les valeurs prises par les propriétés des oracles définis. Cela nous permet finalement de qualifier les fonctions d’oracle.