• Aucun résultat trouvé

4.2 Conception de la plateforme

4.2.2 Modélisation de l’architecture de l’application

4.2.2.1 Tâche

Une tâche est une entité type définissant une action particulière d’une chaîne de traitements. Elle est caractérisée par :

CHAPITRE 4. RÉALISATION DE LA NOUVELLE PLATEFORME DE SIMULATION

4.2. CONCEPTION DE LA PLATEFORME – un identifiant ;

– un nom ;

– une description ; – une date de création ;

– une référence vers la séquence ; – un numéro d’ordre.

Lorsqu’une tâche est paramétrée au sein d’un processus, elle peut être exécutée. Elle suit alors un cycle composé de plusieurs états comme représenté sur la figure 32. Dès la création de l’ins- tance, la tâche estinitialisée. Lorsque l’exécution du processus est planifiée, c’est-à-dire mise

en attente du prochain déclenchement automatique, chaque tâche passe à l’étaten attente. Une

tâche ne passe à l’état en cours que lorsqu’elle est lancée soit manuellement par l’utilisateur,

soit automatiquement par la plateforme. Si l’exécution s’est correctement déroulée, la tâche passe dans l’état finalterminée, ou sinonéchouée. Une tâche en attente ou en cours d’exécution peut

être arrêtée ; elle passera alors à l’étatannulée.

FIGURE32 – Diagramme d’états d’une tâche.

Plusieurs types de tâches sont prévus : commande, transfert, envoi, réception, job CiGri, attente, fin. Il est cependant possible d’étendre les possibilités de la plateforme en

créant de nouvelles tâches en fonction des besoins rencontrés.

Chaque sous-classe définissant un type particulier de tâche implémente son comportement spé- cifique au sein des méthodes suivantes :

– start()pour lancer l’exécution de la tâche ;

– stop()pour arrêter l’exécution de la tâche ;

– checkState()pour actualiser l’état de la tâche en fonction de l’avancement de son exécu-

tion.

4.2.2.1.1 Commande

Une tâche de typecommandepermet l’exécution distante d’une commande paramétrée sur un

hôte donné. Elle est caractérisée par : – un hôte ;

– une chaîne de caractères qui sera interprétée comme une « commande » sur l’hôte. 4.2.2.1.2 Transfert

Une tâche de type transfert permet de transférer en FTP un fichier donné entre un hôte

source et un hôte cible. Elle est caractérisée par : 53

CHAPITRE 4. RÉALISATION DE LA NOUVELLE PLATEFORME DE SIMULATION – un chemin source ; – un hôte source ; – un chemin cible ; – un hôte cible. 4.2.2.1.3 Envoi

Une tâche de type envoi permet d’envoyer en FTP un fichier donné depuis le serveur de la

plateforme vers un hôte cible. Elle est caractérisée par : – un chemin source ;

– un chemin cible ; – un hôte cible. 4.2.2.1.4 Réception

Une tâche de typeréceptionpermet de recevoir par FTP sur le serveur de la plateforme un

fichier donné stocké sur un hôte source. Elle est caractérisée par : – un chemin source ;

– un hôte source ; – un chemin cible. 4.2.2.1.5 Job CiGri

Une tâche de typejob CiGri permet l’exécution d’une campagne de calculs en mode grille

en utilisant CiGri. Elle est caractérisée par : – un hôte ;

– un chemin pour le répertoire d’exécution ; – un chemin pour le script à exécuter ; – un temps maximal d’exécution. 4.2.2.1.6 Attente

Une tâche de typeattentepermet de marquer une pause d’une durée donnée avant l’enchaî-

nement de la tâche suivante. Elle est caractérisée par une durée exprimée en secondes. 4.2.2.1.7 Fin

Une tâche de typefinpermet de marquer de terminer la séquence de tâches en spécifiant, pour

le processus, le chemin et l’hôte de stockage du fichier de résultats. 4.2.2.2 Séquence

Une séquence est une liste ordonnée de tâches. Elle est caractérisée par : – un identifiant ;

4.2. CONCEPTION DE LA PLATEFORME – une description ;

– une date de création ; – une référence vers le projet. 4.2.2.3 Processus

Un processus est une instance paramétrée d’une séquence de tâches. Il est caractérisé par : – un identifiant ;

– un nom ;

– une description ; – une date de création ; – un état ;

– une référence vers la séquence ; – un nom de groupe ;

– un chemin et une référence vers l’hôte stockant le fichier final.

Lorsqu’un processus est paramétré au sein d’un processus, il peut être exécuté. Il suit alors un cycle composé de plusieurs états comme représenté sur la figure 33. Dès la création de l’instance, le processus estinitialisé. Lorsque l’exécution est planifiée, c’est-à-dire mise en attente du pro-

chain déclenchement automatique, le processus et toutes ses tâches passent à l’étaten attente.

Un processus ne passe à l’état en coursque lorsqu’il est lancé soit manuellement par l’utilisa-

teur, soit automatiquement par la plateforme. Si l’exécution de toutes les tâches s’est correctement déroulée, le processus passe dans l’état finalterminé, ou sinonéchoué. Un processus en attente

ou en cours d’exécution peut être arrêté ; il passera alors à l’étatannulé.

FIGURE33 – Diagramme d’états d’un processus.

4.2.2.4 Variable

Une variable permet de paramétrer une tâche en remplaçant un code par une valeur. Elle peut être définie surchargée par l’utilisateur lors de l’instanciation d’une tâche dans un processus. Elle est caractérisée par :

– un identifiant ; – un nom ;

– une description ; – une date de création ;

– un type (chaîne, entier, flottant, fichier, ...) ; – un code ;

– une valeur ;

CHAPITRE 4. RÉALISATION DE LA NOUVELLE PLATEFORME DE SIMULATION – un drapeau indiquant si la variable peut être surchargée ou non.

4.2.2.5 Hôte

Un hôte est une entité permettant de définir toute machine à laquelle l’application accède pour y exécuter des tâches. Un hôte est caractérisé par :

– un identifiant ; – un nom ;

– une description ;

– un type (grille, grappe ou nœud) ; – un nom d’hôte.

Sur la figure 31, la classe « host » représente cette entité hôte. Elle est spécialisée selon le type d’hôte par les sous-classesgrid,clusterounode.

4.2.2.5.1 Grille

Un hôte de typegrilledéfinit une grille de calcul et peut contenir des grappes. On utilisera

ce type d’hôte pour paramétrer le serveur frontal d’une grille de calcul. 4.2.2.5.2 Grappe

Un hôte de type grappe définit une grappe de calcul. Une grappe peut être rattachée à une

grille et peut contenir des nœuds. 4.2.2.5.3 Nœud

Un hôte de type « nœud » définit un nœud particulier d’une grappe ou toute machine indépen- dante. Ainsi, on utilisera ce type d’hôte pour paramétrer un serveur de stockage.

4.2.3 Base de données

La base de données modélisée à partir du diagramme de classes est représentée sur la figure 34. Le modèle est donc relativement proche de la structure objet. Dans l’ensemble, chaque table correspond à une classe ou à une association n-aire.

Les identifiants sont générés par l’application sous la forme d’une chaîne unique de plusieurs caractères. Les champs correspondants sont de type VARCHAR limité à 65 caractères.

Les champs de date sont au format DATETIME. Les champs textes de moins de 255 caractères sont de type TINYTEXT ; au-delà, le format TEXT est préféré.

4.2. CONCEPTION DE LA PLATEFORME

FIGURE34 – Modélisation du schéma de la base de données.

CHAPITRE 4. RÉALISATION DE LA NOUVELLE PLATEFORME DE SIMULATION

4.3 Implémentation de l’architecture logicielle

4.3.1 Choix techniques

4.3.1.1 Langage PHP

PHP est un langage interprété principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP. Il peut également fonctionner de façon locale en exécutant les programmes en ligne de commande. PHP est un langage impératif disposant depuis la version 5 de fonctionnalités complètes d’un modèle objet. Sa syntaxe découle du langage C et est donc assez proche de Java par exemple. [46] [47]

La figure 35 représente le déroulement de l’exécution du code PHP dans une utilisation Web. Lorsqu’un visiteur demande à consulter une page Web, son navigateur envoie une requête au ser- veur HTTP correspondant. Si la page est identifiée comme un script PHP (généralement grâce à l’extension .php), le serveur appelle l’interprète PHP qui va traiter et générer le code final de la page (constitué généralement d’HTML ou de XHTML, mais aussi souvent de CSS et de JS). Ce contenu est renvoyé au serveur HTTP, qui l’envoie finalement au client.

FIGURE35 – Schéma de fonctionnement d’un script PHP. Source : [46]

PHP a été retenu car il s’agit d’un langage libre et multiplateforme. Dans le cas d’une appli- cation Web, il est beaucoup plus simple à déployer que Java qui, lui, nécessite l’installation d’un serveur intermédiaire tel que Tomcat. De plus, ce langage était connu et maîtrisé avant ce stage ce qui permettait d’être plus efficace qu’en découvrant un nouveau langage comme Python ou Ruby.

4.3.1.2 Cadriciel Zend Framework

Aujourd’hui, une application Web est généralement basée sur un cadriciel. En effet, ce « sque- lette » permet d’accélérer le développement en fournissant une structure de base qui implémente notamment le patron MVC. De nombreuses classes apportent des solutions éprouvées et prêtes à l’emploi pour répondre aux besoins courants et récurrents d’un tel développement.

La communauté PHP étant très active, une multitude de cadriciels ont vu le jour en quelques années. Ne pouvant les comparer exhaustivement, le choix a été fortement influencé par l’avenir du projet. En effet, le cadriciel Symfony a un temps été envisagé mais finalement, Zend Framework lui a été préféré car ce-dernier est développé depuis 2006 par l’éditeur-même du langage PHP. En plus de ce gage de sérieux, Zend Framework est utilisé dans le cadre d’un autre projet au LPG. Dans la perspective de la poursuite du développement, la personne en charge aurait certainement plus de facilité à dépanner un système développé autour d’un noyau connu.