WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Stratégie de test au sein du processus d'évolution d'architecture de Sodifrance

( Télécharger le fichier original )
par Laurent GARNIER
CNAM Nantes - Ingénieur informatique 2011
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3.2 Plate-forme de migration (« Migration Platform »)

La Figure 15 représente les principaux cas d'utilisation du système « Migration Platform ». Ils sont répartis de la manière suivante :

· La cartographie de l'application représente la base de l'ensemble et contiendra tous les composants applicatifs du projet (fenêtres, composants graphiques, classes, fonctions).

· La cartographie des tests intègre les différentes données propres aux tests et s'appuie sur la
cartographie de l'application pour indiquer quels sont les composants utilisés par les tests.

· Le suivi d'intégration quant à lui permet d'avoir un historique des niveaux d'intégration par composant.

· Ensuite vient l'automatisation des tests qui s'appuie sur la cartographie des tests. Elle permet, comme on le verra un peu plus loin, de spécifier une relation entre les composants sources et cibles présents dans la cartographie de l'application.

Les différents acteurs sont l'architecte, qui a pour rôle principal d'initialiser et de vérifier que la cartographie de l'application est correcte ; le testeur qui alimente la cartographie des tests d'une part, et génère les scripts de tests d'autre part ; le chef de projet qui utilise la cartographie de l'application pour obtenir différentes visions de celle-ci, et qui se sert du suivi d'intégration pour avoir une idée réaliste de l'état d'avancement de l'intégration. Ces différents cas d'utilisation sont détaillés dans les paragraphes suivants.

La Figure 16 représente la répartition des paquetages constituant le système plate-forme de migration (« Migration Platform »). On peut remarquer que les deux principaux paquetages coeur (« Core ») et éléments de code (« CodeItems ») forment un noyau autonome. Les autres « fonctionnalités » viennent se greffer sur ce noyau et sont indépendantes entre elles, mis à part les deux paquetages architecture de test (« Testing.Architecture ») et données de test (« Testing.Data ») qui sont regroupées au sein du paquetage test.

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

3.2.1 La cartographie des applications

Avant d'approfondir les deux principaux objectifs de ce mémoire, se pose le problème essentiel de la cartographie des applications. En effet, pour pouvoir indiquer quels composants sont utilisés par un scénario de test, il faut déjà pouvoir lister de manière exhaustive l'ensemble des composants de l'application et les identifier de manière unique.

Comme indiqué dans l'état de l'art, nous ne nous sommes pas servis de KDM. Cependant, bien que fortement simplifié, nous nous en sommes grandement inspirés pour concevoir le métamodèle « Migration Platform ». La réalisation de ce métamodèle est le fruit d'un travail commun entre mon responsable, M. Breton, un collègue, M. Pacaud et moi-même. Plus précisément, mon rôle a été de concevoir les parties afférentes aux tests :

· Le paquetage architecture des tests (« Testing Architecture », cf. Figure 20)

· Le paquetage données de test (« Testing Data », cf. Figure 21)

· Le paquetage traçabilité (« Traceability », cf. Figure 28)

Ces diagrammes de classe sont détaillés dans les § 3.2.2 et 3.2.3.

Figure 17 : Processus d'alimentation de la cartographie d'application

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

Le métamodèle « Migration Platform » a été réalisé avec le modeleur UML MagicDraw, sous la forme d'un modèle UML. Il est décrit principalement par des paquetages, des classes, des attributs et des relations. MIA Generation permet d'importer un fichier XMI15 exporté depuis MagicDraw. Nous nous en sommes servi afin de générer entièrement la couche de persistance DAO16 Hibernate dans le langage Java17 (cf. Figure 17 étape 2). Nous remplissons ainsi deux des contraintes initialement fixées, à savoir une façon simple d'exposer les données aux outils de la chaîne d'évolution d'architecture. Mais aussi, une solution performante, car même en cas de volumétrie importante, c'est sur le moteur de base de données relationnelle (SGBDR18) que repose principalement ce problème, or il est justement prévu pour ça. Cette couche de persistance sera intégrée aux outils sous la forme d'une archive Java (Jar) déposée dans des répertoires prédéfinis, par exemple : <répertoire installation MIA Generation>\tools\lib.

La Figure 17 qui présente le processus de cartographie des applications, permet de voir l'ensemble des actions qui, en partant de l'analyse du code source, permet de peupler la base de données « Migration Platform ». En premier lieu se déroule l'analyse syntaxique du code source (cf. Figure 17, étape 1) afin de produire un modèle de l'application à « gros grain ». Ce modèle est du même niveau que KDM et ne descend pas jusqu'aux instructions mais s'arrête aux méthodes et aux relations qui les unissent. On évite aussi, grâce à ce niveau de modèle, des problèmes de volumétrie. En effet, il n'est pas rare d'avoir à « découper » des applications sources en plusieurs parties afin que le volume des modèles soit compatible avec les outils MIA, on parle ici de modèles XMI d'environ une centaine de mégaoctets. Ce découpage pose de sérieux problèmes de résolution de type à l'analyseur, lorsqu'une classe qui est décrite dans un modèle est utilisée dans un autre.

Après avoir déposé l'archive Java issue de l'étape 2 dans le répertoire prévu à cet effet, et effectué quelques paramétrages (adresse de la base de données, type de serveur), MIA Transformation peut lire le modèle de l'application source fourni par l'analyseur syntaxique, et peupler la base de données « Migration Platform » (cf. Figure 17, étape 3).

15 XMI : XML Metadata Interchange

16 DAO : Data Access Object

17 Java : langage de programmation orienté objet

18 SGBDR : Système de Gestion de Base de Données Relationnelle.

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

Figure 18 : Diagramme de classe du paquetage « Core »
(source Sodifrance, extrait du métamodèle « Migration Platform »)

Figure 19 : Diagramme de classe du paquetage « CodeItems »
(source Sodifrance, extrait du métamodèle « Migration Platform »

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

Attardons-nous un instant sur la manière dont sont identifiés les éléments au sein de la base. Les classes servant à la cartographie héritent de la classe « Element » (cf. Figure 18 et Figure 19). Cette classe possède une propriété « elementKey » qui est essentielle. En effet, c'est elle qui assure l'identification de manière unique de chaque élément. La construction de cette clé répond à des règles très strictes qui, on le verra par la suite, devront être respectées à tous les niveaux du processus de migration. Ce formalisme consiste à reprendre l'ensemble de la clé de l'élément parent, et à y ajouter l'identifiant de l'élément courant.

Tableau 1 : Exemples de clefs

Le Tableau 1 montre un exemple concret de cette notation avec le modèle « DemoVB_1.0 ». Le conteneur « frmCustomerSearch » se trouve dans le répertoire « frm ». L'écran « frmCustomerSearch » contient les événements « Initialize » et « Load », et a aussi un contrôle graphique nommé « customerDetailButton ». Ce dernier a un événement « Click » qui utilise une variable « customerId ».

Ce système de classification arborescente permet de lister l'ensemble des composants de l'application de manière exhaustive. L'élément racine correspond au modèle présent en base et représente l'application, vient ensuite s'il y a lieu, l'arborescence des répertoires, puis les fichiers. Dans le modèle de l'application source, le type du fichier : écran, classe, module, etc., a déjà été déterminé par l'analyseur syntaxique. Enfin, on retrouve les méthodes, leurs propriétés, et le type de retour s'il s'agit des fonctions. Le fait d'avoir intégré l'arborescence complète des fichiers, permet de prendre en compte plusieurs fichiers portant le même nom mais présents dans des répertoires différents.

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

Figure 20 : Les classes du paquetage architecture des tests (« Testing.Architecture »)
du métamodèle « Migration Platform »

Figure 21 : Les classes du paquetage données de test (« Testing.Data »)
du métamodèle « Migration Platform »

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"L'ignorant affirme, le savant doute, le sage réfléchit"   Aristote