Vous êtes sur la page 1sur 63

Delphine GUENEGO

Rapport de stage de fin dtudes

Encadrant de stage : Mr Emmanuel DESMONTILS


Responsable de stage : Mr Thierry BIGOT

Avril-Aot 2008
1

Delphine GUENEGO

Historique

Rvision
V 0.0

Date
03/04/08

Objet de lvolution

Justificatif

Personne validante

Cration

Delphine GUENEGO

Sommaire
1

Remerciements.................................................................................................. 5

Introduction........................................................................................................ 6

Prsentation de Thals Services ...................................................................... 7


3.1
Le groupe Thals ................................................................................... 7
3.2
THALES Security Solutions & Services.................................................. 9
3.3
Thals Nantes...................................................................................... 10

Suivi de production ......................................................................................... 11


4.1
Contexte du stage................................................................................ 11
4.1.1
4.1.2

4.1.3

4.2

Notions utilises................................................................................... 13
4.2.1
4.2.2

4.3

Notions de gestion de projet .............................................................. 13


Fichier XML issu d'Open Workbench ................................................. 14

Applications Excel VB (Visual Basic)................................................. 15


4.3.1
4.3.2
4.3.3

4.4
4.5

Motivations du projet Portail ............................................................... 11


Solution actuelle ................................................................................. 11
4.1.2.1 Open Worknench ................................................................ 11
4.1.2.2 Feuille Excel........................................................................ 12
Enjeux du portail................................................................................. 12

ASDI ................................................................................................... 15
4.3.1.1 Evolutions et corrections effectues ................................... 17
RMDI .................................................................................................. 18
4.3.2.1 Evolutions et corrections effectues ................................... 19
Difficults rencontres........................................................................ 20

Activit de suivi des plannings ............................................................. 20


Portail Intranet...................................................................................... 21
4.5.1
4.5.2
4.5.3

4.5.4

Analyse du sujet ................................................................................. 21


Architecture ........................................................................................ 24
Environnement de dveloppement .................................................... 25
4.5.3.1 Eclipse ................................................................................ 25
4.5.3.2 MySQL ................................................................................ 25
4.5.3.3 Hibernate ............................................................................ 25
4.5.3.4 Apache Tomcat................................................................... 25
4.5.3.5 Ext-JS.................................................................................. 26
Fonctionnalits dveloppes.............................................................. 26
4.5.4.1 Dfinition des classes mtier .............................................. 26
4.5.4.2 Interface graphique globale ................................................ 27
4.5.4.3 Import/export de fichier Excel ............................................. 28
4.5.4.4 Saisie des imputations pour le collaborateur ...................... 30
4.5.4.5 Validation par le chef de projet ........................................... 33
4.5.4.6 Authentification ................................................................... 34
3

Delphine GUENEGO

4.5.5
4.5.6
4.5.7

volutions futures............................................................................... 35
Gestion du projet : SCRUM................................................................ 36
Difficults rencontres........................................................................ 37

Mission la Direction gnrale des Impts dans lquipe Composants Communs


.......................................................................................................................... 38
5.1
Contexte du projet : projet Copernic..................................................... 38
5.2
Equipe Composants Communs............................................................ 39
5.3
SPPC ................................................................................................... 39
5.3.1
5.3.2
5.3.3
5.3.4

5.4

Commande et supervision.................................................................. 40
Module Applicatif ................................................................................ 40
NAD .................................................................................................... 41
Console SPPC ................................................................................... 44

Travail effectu .................................................................................... 45


5.4.1

5.4.2
5.4.3

Modules applicatifs basiques ............................................................. 45


5.4.1.1 Environnement de dveloppement ..................................... 45
5.4.1.2 Dveloppement des modules applicatifs ............................ 47
Support et livraison des nuds dadministration ............................... 51
Gonad................................................................................................. 52
5.4.3.1 Description du sujet ............................................................ 52
5.4.3.2 Environnement de dveloppement ..................................... 53
5.4.3.3 Fonctionnalits dveloppes .............................................. 54

Conclusion ....................................................................................................... 61

Planning ........................................................................................................... 62

Bibliographie.................................................................................................... 63

Delphine GUENEGO

Remerciements

Je remercie Mr Grard COUGNAUD, directeur d'agence, pour m'avoir permis de faire ce stage au
sein de son entreprise.
Je remercie Mr Thierry BIGOT qui m'a suivi tout au long de ce stage et m'a permis de dcouvrir
tout le processus de gestion de projet.
Je remercie galement Mr Frdric MASCARO, responsable de mon projet portail, pour son
encadrement et ses conseils.
Je souhaite remercier toute l'quipe de Thals Service Nantes ainsi que lquipe Thals prsente
la DGI pour le chaleureux accueil quils mont rserv et toute la sympathie et la bonne humeur quils
ont manifests mon gard durant les cinq mois passs en leur compagnie.

Delphine GUENEGO

Introduction

Dans le cadre de l'anne de Master Professionnel ALMA (Architecture Logicielles) que j'ai
effectu l'Universit de Nantes, il nous est demand d'effectuer un stage de fin d'tudes en entreprise
pour une dure de 4 5 mois afin de mettre en pratique les notions vues dans les diffrents
enseignements. Pour cela, j'ai t accueilli l'agence Thals Service de Nantes pour une dure de 5
mois (du 31 Mars 2008 au 29 Aot 2008).
Ce stage est pour moi l'occasion de mettre en pratique mes connaissances mais galement de
dcouvrir l'organisation d'une entreprise et le droulement d'un projet informatique.
Ces cinq mois de stage ont t spars en deux missions diffrentes.
La premire activit que jai effectue est mon travail autour de la gestion du suivi de production
lagence Thals Nantes. Cette activit a comport plusieurs phases, notamment la maintenance
corrective et volutive d'une application Excel code en Visual Basic et surtout le dveloppement dun
portail Intranet pour le suivi de production.
Ma seconde activit, qui ma occup les deux derniers mois de mon stage, a t dintgrer la DGI
(Direction Gnrale des Impts) pour effectuer du support et de la maintenance dune application de
supervision de composants ainsi que des activits de dveloppement.

Le but de ce rapport est de prsenter de manire la plus complte possible le travail que jai
effectu durant ces cinq mois de stage.

Delphine GUENEGO

3.1

Prsentation de Thals Services

Le groupe Thals

Thals, anciennement Thomson-CSF jusqu'en 2000, est lun des grands groupes mondiaux des
systmes dinformation critiques sur les marchs de la dfense, laronautique et de la scurit. Les
activits vont de la matrise duvre de grands programmes et larchitecture de systmes complexes
la fourniture dquipements et de systmes ainsi que des services associs.
Thals est, en 2006, implant dans 50 pays et compte 68 000 employs. En 2006, Thals a
ralis un chiffre daffaires de 12,6 milliards deuros, et ainsi, est reconnu comme un leader mondial
des hautes technologies. Les solutions dveloppes par ses quipes sappuient sur le partage dun socle
de technologies communes et duales dont la matrise de linformation et sa diffusion en temps rel
constituent deux lments majeurs.

Figure 1 : Implantation Thals dans le monde

La dimension internationale de THALES caractrise ses activits en termes de marchs et


dimplantations gographiques. Le groupe est prsent industriellement dans prs de trente pays. Afin
de pouvoir anticiper et rpondre aux demandes et besoins de ses clients dans les meilleures conditions
techniques et conomiques, THALES instaure une grande proximit lgard de ses clients.
7

Delphine GUENEGO

Le groupe axe sa politique sur la recherche et le dveloppement en y consacrant 18% de son


chiffre daffaires. Le ple de recherche de lentreprise compte 15000 employs dont 70% dingnieurs.
Sous le nom THALES, sont regroupes une centaine de filiales, parmi lesquelles : THALES Airborne
Systems, THALES Avionics, THALES Avionic Electrical Systems, THALES Electron Devises,
THALES Laser Diodes, THALES Microelectronics, THALES Naval France, THALES Optronique,
THALES Technologies et Services ou encore United Monolithic Semiconductors, ainsi que la D3S
(Division Security Solutions & Services) qui est la division que nous allons dvelopper par la suite.

De faon globale loffre Thals est constitue des 3 secteurs suivants :

Figure 2 : Secteurs d'activit

Figure 3 : Rpartition de l'actionnariat du groupe Thals (avril 2007)

Delphine GUENEGO

3.2

THALES Security Solutions & Services

La nouvelle division Security Solutions & Services (D3S) est ne le 5 janvier 2007 de la fusion
des activits dAlcatel-Lucent dans les transports et la scurit et des divisions Security et Services de
Thals. Lenjeu est de positionner THALES comme un des leaders mondiaux des systmes
d'information critiques et des services destins aux marchs de la sret et de la scurit dans le
domaine civil.

Figure 4 : Cration de la division Security Solutions & Services

Elle apporte :
 Des solutions de bout en bout permettant aux clients civils et du secteur public de piloter
les infrastructures vitales dont ils ont la responsabilit. Ces infrastructures vitales, dun
pays ou dune entreprise, doivent en effet continuer fonctionner et fournir le service
prvu, mme en cas dincidents ou dactes de malveillance.
 La fonction scurit est au cur de ces solutions. Elle permet de protger le
fonctionnement de ces infrastructures vitales contre les actes de malveillance. Dans ce
domaine, la nouvelle division est un intgrateur de solutions de scurit de classe
mondiale, dote dun positionnement unique grce un portefeuille de technologies
ingal.
 Une offre de services forte valeur ajoute, prolongement naturel de son offre de
systmes et dquipements. Elle porte sur laccompagnement des clients en leur
fournissant par exemple des prestations de conseil, de maintenance ou encore
dinfogrance.
Lactivit de la division solutions de scurit et services reprsente dsormais un chiffre
daffaires global de lordre de 3,2 milliards deuros, avec des effectifs denviron 20 000 personnes
dans 35 pays.

Delphine GUENEGO

La division fait dj partie des leaders mondiaux dans les domaines du transport terrestre, de la
simulation et de le-Security et se positionne dans les secteurs des systmes de scurit, du service aux
entreprises, de le-Transactions et des services Dfenses et Aronautique connus pour leur forte
croissance.

3.3

Thals Nantes

Lagence de Nantes a t cre en 2000 et comptait lpoque quinze collaborateurs.


Aujourdhui, elle compte environs 200 collaborateurs. Mr Grard COUGNAUD est le responsable de
cette agence.
Lagence de Nantes, comme toutes les agences, est rattache Paris. Un primtre daction lui
est dfini qui englobe Niort o se trouvent des bureaux dont le responsable est Mr Nicolas ROULLET
et Cholet (Thals Communication) qui est un client de lagence.
Thals Nantes est une agence de la D3S, qui propose de la prestation informatique qui peut, le
cas chant, tre sous la forme de TMA.

Figure 5 : Organigramme de l'agence de Nantes

Actuellement, lagence possde deux projets principaux : un projet pour la DGI (Direction
Gnrale des Impts) et un projet pour le GIP (Groupement dIntrt Public).
Les locaux de lagence se situent 1 Alle des Citrines Nantes.
Lensemble des collaborateurs ne travaille pas directement lagence, mais un bon nombre dentre eux
sont amens se dplacer chez le client.
10

Delphine GUENEGO

Suivi de production

4.1

Contexte du stage

4.1.1

Motivations du projet Portail

Dans le cadre d'un projet informatique, il faut bien entendu tablir un planning ds le dbut du
projet. Ce planning devra notamment dcrire les diffrentes tapes du projet, les dates de chacune des
ces tapes ainsi que les collaborateurs affects chaque tche. Le planning doit faire apparatre les
dates du projet ainsi que le budget allou celui-ci, c'est dire le nombre de jours ncessaires pour
effectuer ce projet qui a t valu lors du devis du projet.
Ce planning doit ensuite tre suivi tout au long du projet pour vrifier que le temps imparti au
projet est respect et qu'il n'y a pas trop de retard dans l'avancement du projet. Ces informations sont
trs importantes pour les chefs de projets, le directeur de projets et galement le chef d'agence.
Associ ce planning, les collaborateurs qui interviennent sur le projet pour quelque activit
que ce soit doivent alors noter quelle(s) activit(s) ils ont effectues ainsi que le temps pass chacune
dentre elles. Ces informations sont importantes pour le chef de projet qui pourra alors faire un bilan de
l'avancement du projet tout moment. De mme, ces informations peuvent permettre de voir quelles
sont les activits pour lesquelles il y a du retard ou alors de l'avance dans le meilleur des cas.

4.1.2
4.1.2.1

Solution actuelle
Open Workbench

Open Workbench est un outil de gestion de projets Open Source. Il se situe au mme niveau
que MS Project de Microsoft.
Ce logiciel, comme tout logiciel de gestion de projets, permet de crer des plannings pour les projets
en dfinissant lensemble des tches qui compose le projet, daffecter des ressources (collaborateurs)
sur chacune de ces tches, de dfinir les dates des tches ainsi que les budgets affects aux tches. Il
dispose de nombreuses fonctionnalits dont : dcomposition dun projet en tches, activits, jalons ;
dfinition des ressources, avec pondration selon les disponibilits et les cots ; analyse de
lavancement, des cots, du reste produire, gestion des dpendances, des calendriers ...
Open Workbench dispose de nombreuses vues permettant de visualiser diffrents aspects du planning
notamment une vue du diagramme de Gant ou alors de la charge restante faire pour le projet.
Open Workbench dispose dune fonctionnalit dexport XML qui peut tre trs utile pour obtenir ce
planning dans une autre application.

11

Delphine GUENEGO

4.1.2.2

Feuille Excel
Afin que les collaborateurs notent les informations concernant leur travail sur le projet (tches
effectues et temps passs), il faut alors leur fournir un outil permettant cette saisie. Actuellement, cet
outil est une feuille Excel indpendante chaque projet dans laquelle les collaborateurs peuvent noter
les temps passs chaque activit. Cette feuille Excel est gnre partir du planning crit dans Open
Workbench.
L'utilisation de cette feuille sera dcrite dans la suite du document.

4.1.3

Enjeux du portail

L'utilisation de la feuille Excel prsente quelques inconvnients. En effet, il est ncessaire


d'avoir une feuille Excel par projet, et donc de transmettre plusieurs feuilles aux personnes travaillant
sur plusieurs projets.
Lorsque j'ai commenc mon stage, le portail qu'il m'tait demand de dvelopper devait
permettre la cration de planning de projets tout comme il est fait dans Open Workbench. Cependant,
l'utilisation de la feuille Excel pour les saisies des imputations a pos de plus en plus de problme et
des anomalies dans cette feuille sont apparues.
La feuille est gnre partir d'un fichier XML, et le code est crit en Visual Basic. force d'ajouter
des corrections dans le code, celui-ci devient difficilement lisible et maintenable. De mme, il ma t
demand des volutions dans cette feuille de la part des collaborateurs qui utilisaient celle-ci. C'est
pourquoi la premire fonctionnalit dvelopper dans le portail a t presque aussitt la saisie des
imputations pour les collaborateurs. Le dveloppement de cette solution portail permettra de corriger
les anomalies et faire apparatre les volutions souhaites.
La premire version de ce portail doit permettre de grer les imputations des collaborateurs. Il sagit
tout dabord dimporter un fichier XML au format Open Workbench dans lequel a t dfini un
planning de projet. Une fois ce planning import, il faut alors que chaque utilisateur puisse saisir ces
imputations sur chacune des tches auxquelles il est affect. Cette saisie dimputations correspond aux
temps passs chaque jour sur chacune des tches. Une fois que lutilisateur a saisi ses imputations,
celles-ci doivent tre valides par le chef de projet. Le chef de projet pourra ensuite exporter
lensemble des imputations pour le projet sous la forme dun fichier XML afin de pouvoir le rintgrer
dans loutil Open Workbench.
Dans un second temps, lapplication devrait permettre de remplacer totalement lutilisation du logiciel
Open Workbench. En effet, lapplication devra permettre de crer des plannings de projets, daffecter
les tches, de grer les budgets projets tout comme le fait le logiciel.
Le dveloppement dun tel portail peut paratre exagrer puisquil existe des solutions logicielles qui
permettent les mmes fonctionnalits, cependant lagence Thals a mis au jour de nombreuses
contraintes qui justifie le dveloppement dun tel portail.
En effet, au sein mme de lagence Thals, nous avons plusieurs rseaux physiques indpendants
scuriss, et on ne peut pas communiquer dun rseau lautre. Cette contrainte ne permet pas
dutiliser une application partage par tous les collaborateurs.
Par ailleurs, mme si les solutions logicielles sont relativement compltes, la volont de lagence de
Nantes est de raliser une application modulable dans laquelle on peut ajouter les fonctionnalits
souhaites par la direction. De plus, ces solutions logicielles sont payantes.
12

Delphine GUENEGO

4.2

Notions utilises

4.2.1

Notions de gestion de projet

 Projet :
Le projet est la notion de base de lactivit de gestion de projet. Il correspond un ensemble dactivits
dfinies pour une certaine dure suite lacceptation dun devis par un client : par exemple, livrer un
logiciel, effectuer les corrections dun logiciel existant, etc.
Lorsque lon dbute un projet, il faut alors dfinir un planning qui guidera la ralisation de ce projet.
Le planning permet alors de dfinir une dcomposition du projet en tches (explique ci aprs). On
peut alors dfinir le planning sous forme arborescente en sparant chacune des phases dun projet
informatique.
On pourrait par exemple avoir :
Projet
Analyse
Conception
Dveloppement
Tests
Recette
lintrieur de chacune de ces phases, on peut alors dcomposer en plus petites phases qui seront
alors des tches.
Le planning permet de dfinir les dates de dbut et de fin de chacune de ces phases (ou tches). Il
permet galement de dfinir quel collaborateur fera quelle tche, avec la possibilit davoir plusieurs
collaborateurs pour la mme tche.

 Tche :
Une tche est une trs petite phase dun projet. Une tche correspond une fonctionnalit assez simple
effectuer au cours du projet. Une tche possde alors une date de dbut, une date de fin, un budget
initial. Le budget initial correspond lestimation du temps ncessaire pour effectuer cette tche. Pour
nous, le temps sera estim en nombre de jours.

 Imputation :
Une imputation correspond au temps pass dans une journe sur une tche. Pour nous, limputation
sera value en pourcentage de temps de la journe. C'est--dire que les valeurs possibles seront 0.25
pour un quart de journe, 0.5 pour une demi journe, 0.75 pour trois quarts de journe et 1 pour la
journe complte.
Par exemple, un collaborateur qui aurait travaill une demi journe sur la tache t1 le 01 Juillet et une
journe sur la tache t2 le 02 Juillet aura alors comme imputation 0.5 pour le 01 Juillet et 1 pour le 02
Juillet.

13

Delphine GUENEGO

4.2.2

Fichier XML issu d'Open Workbench

Afin de gnrer les feuilles Excel de suivi de production des collaborateurs, nous reprenons le
planning de projet dfini dans Open Workbench.
Pour pouvoir les intgrer dans Excel, nous enregistrons ce fichier Open Workbench au format XML. Il
a donc fallu que j'tudie prcisment le format XML de ce fichier pour comprendre comment
fonctionnaient les feuilles Excel.
Le fichier XML est compos de diffrentes parties et reprend l'ensemble des informations contenu
dans le planning.
Voici la structure gnrale :
Fichier XML
<WORKBENCH_PROJECT>
<BaseCalendars>
<Calendar>
</Calendar>
</BaseCalendars>
<PoolResources>
<PoolResource>
<Calendar>
</Calendar>
<Curve/>
</PoolResource>
</PoolResources>
<Projects>
<Project>
<Resources>
<Resource>
<Curve/>
</Resource>
</Resources>
<Tasks>
<Task>
<Assignments>
<Assignment>
<Curve>
<Segments>
<Segment/>
</Segments>
</Curve>

Commentaire

Calendrier utilis [week


ends non travaills, etc]

Contient les informations


sur les ressources connues
par OWB

Informations
sur les
ressources d'un
projet

Informations sur les


projets contenus dans la
planification

Informations
sur les tches
du projet

Liens entre les


tches et les
ressources
(affectations)

</Assignment>
</Assignments>
</Task>
</Task>
</Project>
</Projects>
</WORKBENCH_PROJECT>

14

Delphine GUENEGO

4.3

Applications Excel VB (Visual Basic)

4.3.1

ASDI

Actuellement, afin que les chefs de projet rcuprent les imputations des collaborateurs qui
travaillent sur le projet dont ils sont responsables, la solution mise en place est lenvoi dune feuille
Excel dans laquelle le planning du projet est renseign et dans laquelle la saisie des imputations pour
chaque tche et chaque collaborateur est possible.
Cette feuille Excel est en fait gnre partir du fichier XML extrait dOpen Workbench. Afin
de charger les donnes, il faut importer un fichier XML. La feuille est gnre grce des macros
crites en Visual Basic pour une dure dune semaine en fonction du nom du fichier XML.
En effet, pour tre charg dans la feuille Excel, le fichier XML doit tre obligatoirement de la forme
XXX_SXX.src.xml. Les trois premiers caractres correspondent au nom du projet. Les deux caractres
suivants XX sont le numro de la semaine pour laquelle on veut saisir les imputations.
Le chargement des donnes du fichier XML vers la feuille Excel se fait grce Visual basic.
Ce langage permet de traiter facilement des donnes XML grce lutilisation de requte XPath qui
permettent de simplifier largement le parsing du fichier.

Cette feuille Excel est compose de diffrents onglets : Imputations, Planning et Validation.

La vue Imputations permet, pour un collaborateur, dafficher lensemble des tches qui lui sont
affectes. Les tches affiches sont uniquement celles dont les dates de dbut et fin sont dans la
priode de saisie des imputations (numro de la semaine du fichier XML).
Il peut alors, pour chaque jour de la semaine, saisir le temps pass une des tches. Le temps
est estim en pourcentage de temps de la journe entre 0 et 1 (si le collaborateur a
travaill toute la journe sur la tche, 0.5 pour la demi-journe, etc.).
Pour chaque tche, il est alors affich la charge restante pour celle-ci (Reste faire). Le
collaborateur qui saisit les imputations doit alors mettre jour cette valeur en considrant
lavance de la tche. Cette valeur est trs importante, car elle permet de voir lcart de charge
pour chaque tche ainsi que ltat davancement du projet complet.
La feuille dispose aussi dune ligne Autre Projet et dune ligne Absences afin que le
total de chaque journe soit bien de 1.

15

Delphine GUENEGO

Figure 6 : ASDI, vue Imputations

La vue Planning permet de reprendre le planning Open Workbench.


Elle est uniquement consultative et ne peut en aucun cas tre modifi par les utilisateurs de la
feuille Excel. Ce planning peut tre intressant pour les collaborateurs afin de voir lavance
globale du projet et non pas seulement des tches auxquelles ils sont affects.

Figure 7 : ASDI, vue Planning

16

Delphine GUENEGO

La vue Validation permet au chef de projet davoir un rcapitulatif des imputations pour
chaque collaborateur. Cette feuille permet de reprendre pour chaque collaborateur le nombre de
jours saisis pour les tches du projet, le nombre de jours saisis pour les lignes Autre projet
et absences ainsi que lcart de charge.
Lcart de charge est calcul grce la formule suivante :
cart = Reste faire au dbut de la priode imputations Reste faire en fin de priode
Cette cart de charge est important pour le chef de projet, car cela permet de faire un bilan
chaque semaine avec les collaborateurs et de savoir quelles sont les raisons dun retard ventuel
ou mme dun gain de temps.

Figure 8 : ASDI, vue Validation

4.3.1.1 Evolutions et corrections effectues


Au cours des diffrents tests que j'ai effectus, j'ai alors dcouvert quelques erreurs dans la
gnration de cette feuille, j'ai donc t charge de corriger ces erreurs. Par ailleurs, on m'a demand
de faire quelques volutions sur cette feuille.
Dans un premier temps, il a donc fallu que je prenne en main le code dj crit en Visual Basic.
Cela a t quelque peu compliqu puisque je ne connaissais absolument rien ce langage. Une fois que
j'ai eu bien compris le code, j'ai donc pu crire mon propre code.
Une des premires corrections a t de rvaluer les valeurs des charges consommes et des
restes faire, qui n'taient alors pas correctes cause des jours de congs qui sont intgrs dans Open
Workbench. Il a donc fallu recalculer toutes les valeurs en prenant en compte ces jours de congs.

17

Delphine GUENEGO

En effet, Open Workbench gre les jours de congs de faon trange, et je nai pas trouv
dinformations sur le schma XML utilis pour lenregistrement du fichier au format XML. Il a donc
fallu vrifier chaque fois, et faire des calculs pour comprendre la faon dont tait calculer les jours.
Une volution a t de prendre en compte l'identifiant d'une tche puisque dans un mme
projet, il se peut qu'il y ait deux tches qui ont le mme nom. Cela posait alors un souci lors de
l'intgration du fichier XML puisque la macro renvoyait une erreur. En travaillant maintenant sur
l'identifiant de la tche qui est gnr par Open Workbench, on peut intgrer des tches de mme nom.
La feuille Excel correspond la saisie des imputations qui ont lieu durant la priode de saisie
(numro de semaine du fichier XML). Cependant ceci peut tre trs restrictif dans le cas d'une tche
qui est dveloppe par anticipation (avant la date prvue) ou alors pour une tche qui prend du retard.
Nous avons donc choisi d'afficher les tches qui sont dans la priode d'imputation plus ou moins dix
jours. Cette valeur a t choisie comme paraissant raisonnable, cependant cela pourrait tre un
paramtre ajuster en fonction des cas.

Lensemble de ces volutions ma t demand durant le premier mois de mon stage. Aprs cette date,
il a alors t dcid de ne plus faire voluer la feuille Excel mais que les volutions demandes seraient
intgres dans le portail que je devais dvelopp.

4.3.2

RMDI

La feuille Excel RMDI est utilise de la mme manire que la feuille ASDI.
Elle permet lquipe dirigeante davoir un bilan chaque fin de mois sur lvolution des tches dun
projet.
Elle reprend alors par tche, la charge consomme (nombre de jours travaills) sur le mois, la
charge totale depuis le dbut du projet, la valeur du reste faire actuel, ainsi que le reste faire prvu
au dpart du projet.
Ceci permet de voir l'avancement de chaque tche et voir quels sont les collaborateurs les plus
efficaces .
De mme que pour la feuille ASDI, la feuille RMDI ncessite un fichier source au format
XML.
Ce fichier XML est alors intgr dans la feuille Excel grce aux macros Visual Basic.
Cette feuille permet galement de voir les drives quil peut y avoir sur un planning. En effet,
on peut alors faire la diffrence entre le budget prvu au dpart (reste faire prvu), et le temps valu
la fin du mois, cest dire la somme des charges consommes et du reste faire r estim.

18

Delphine GUENEGO

Figure 9 : RMDI

4.3.2.1 Evolutions et corrections effectues


Lorsque j'ai rcupr la feuille RMDI qui avait dj t dveloppe, les informations affiches
concernant les tches taient uniquement le nom du projet ainsi que le nom de la tche. De mme que
pour la feuille ASDI, cela peut tre embtant sil y a deux tches qui portent le mme nom, on ne peut
alors pas distinguer quelle tche correspond chaque ligne de la feuille.
Afin de rsoudre ce problme, j'ai alors ajout d'autres informations reprenant l'arborescence
des tches qui existe dans Open Workbench. Ainsi il y a dsormais d'afficher dans la feuille le nom du
centre de service, le nom du projet, le sous projet et enfin l'activit. Cela permet de mieux reprer les
tches.
De mme que pour la feuille ASDI, il y avait des erreurs pour les collaborateurs qui avaient des
jours de congs enregistrs dans Open Workbench. J'ai donc repris les calculs pour cette feuille
galement.

19

Delphine GUENEGO

4.3.3

Difficults rencontres

L'une des premires difficults a t de comprendre la gestion de planning et de budget projet.


En effet, bien qu'ayant eu des enseignements sur la gestion de projet, il a fallu que je m'approprie
l'utilisation du logiciel de gestion de projet ainsi que l'ensemble des notions qui apparaissent dans
celui-ci.
Il ma fallu notamment comprendre le fichier XML qui est gnr par Open Workbench,
puisque je nai pas russi trouver le schma de ce fichier XML. Il a donc fallu lanalyser en dtails
afin de comprendre quelles taient les informations quil fallait en retenir.
Une autre grosse difficult a t le fait que je ne connaissais pas le langage VisualBasic.
Il m'a donc fallu un certain temps d'apprentissage de ce langage, et je remercie cette occasion Loc
pour son aide.

4.4

Activit de suivi des plannings

Suite mon apprentissage de l'utilisation de l'outil Open Workbench et de la feuille Excel de


saisie des imputations, il m'a t confi un travail de suivi des plannings pour deux projets de l'agence
pour la BNP Paribas et la DGI (Direction Gnrale des projets).
Le suivi des plannings consiste avoir des changes hebdomadaires avec les chefs de projets respectifs
des deux projets concerns. Je devais alors rcuprer le planning alors tabli, gnrer les feuilles Excel
ASDI chaque semaine et mettre jour ce planning dans l'outil de gestion de projets. Ainsi chaque
semaine, jtais charge de rcuprer les imputations des collaborateurs de chaque projet, et de les
intgrer dans le planning Open Workbench.
Il m'tait galement demander de vrifier la cohrence des donnes transmises et de relever tout cart
de charge des budgets de projets.

Cette activit, qui me prenait une demi-journe par semaine, m'a t confie tout au long de
mon stage, et j'ai trouv cela trs enrichissant car cela m'a permis de voir les difficults rencontres
pour tablir un planning cohrent et toutes les donnes prendre en compte pour tablir celui-ci. Cela
ma notamment permis de voir quun planning de projet nest que trs rarement respect et quil y a
sans arrt des modifications prendre en compte notamment des raffectations des personnes sur les
tches ou des ajustements de la charge des tches.

20

Delphine GUENEGO

4.5
4.5.1

Portail Intranet
Analyse du sujet

Le portail Intranet de suivi de production est un projet pour lagence Thals Nantes. Ce portail
doit permettre toute la gestion du suivi de production : tablissement des plannings, saisie des
imputations, bilan financier
Il ma t demand de me concentrer sur la saisie des imputations. La saisie des imputations est
une tche hebdomadaire effectue par lensemble des collaborateurs de lagence. Ils doivent ainsi
renseigner le bilan dune semaine passe, c'est--dire combien de temps ils ont pass par jour sur une
des tches qui leur sont affects.
Afin que les collaborateurs saisissent leurs imputations, il faut donc que le portail affiche pour chaque
collaborateur ses tches. Pour obtenir les tches, nous nous basons sur le fichier XML qui est obtenu
partir du planning Open Workbench. Dans un second temps, le portail devrait permettre de dfinir les
plannings directement dans celui-ci afin de supprimer toute utilisation de ce logiciel. Puisque nous
importons le fichier XML, il nous faut donc reprendre lensemble des notions apparaissant dans ce
fichier dans notre portail.
Le portail doit bien videmment permettre dimporter plusieurs fichiers XML qui seront
analyss et enregistrs en base, puisquil y a plusieurs projets qui se droulent en parallle. Lors de
laffichage des tches dun collaborateur, il nous faut donc afficher toutes les tches qui lui sont
affectes, c'est--dire les tches de tous les projets, il nous faut donc afficher galement le nom du
projet dans linterface car deux tches peuvent avoir le mme nom dans deux projets diffrents voir
mme au sein dun mme projet. Afin de diffrencier deux tches qui auraient le mme nom, on
enregistre galement larborescence ou la tche se situe dans le fichier XML.

Notre portail Intranet doit ncessiter une authentification. En effet, pour viter que le portail
affiche lensemble des tches du projet, on demande une authentification afin dafficher uniquement
les tches du collaborateur authentifi. Cette authentification ncessite donc davoir un rfrentiel
de collaborateur.
En ce qui concerne linterface graphique de lapplication, celle-ci devra tre similaire
linterface du portail Thals existant (http://peopleonline.corp.thales/). En effet, afin que les
collaborateurs sapproprient mieux lapplication, il faut rester dans un style quils connaissent dj.
Jai tabli le cahier des charges et les spcifications de ce portail conjointement avec Mr
Thierry BIGOT, puisque celui-ci joue en fait le rle du client pour moi, pour le portail. Nous avons
eu de nombreux changes tout au long du projet.

21

Delphine GUENEGO

Aprs analyse du sujet, et surtout du fichier XML dOpen Workbench, jai tabli le diagramme de
classes suivant :

Nous voyons que ce diagramme de classes est finalement assez simple. Il y a de nombreuses
relations de composition entre les classes.
La classe Collaborateur permet didentifier un collaborateur. Un collaborateur est reprsent
par son login et son mot de passe qui permettent lauthentification. Il est reprsent galement par son
trigramme qui correspond aux trois lettres prsentes dans le fichier XML permettant didentifier le
collaborateur dans ce fichier. Il possde galement un nom et un prnom.
La classe Projet regroupe les informations ncessaires un projet. Le projet possde un
identifiant, qui sera pour nous lidentifiant gnr par Open Workbench. Il possde galement un nom,
une date de dbut, une date de fin. On peut vouloir mettre une description pour mieux comprendre le
projet.
Un projet est compos dun ensemble de tches et en possde au moins une. Il existe une relation de
composition entre ces deux entits car une tche ne peut exister en dehors dun projet.
Un projet possde une liste de jours fris qui lui est rattach. Cette liste est ncessaire savoir
combien de jours travaills il y a exactement entre deux dates, ce qui est utile lors du calcul de valeurs
tel que les valeurs du reste faire ou du budget initial.

22

Delphine GUENEGO

La classe Tache permet didentifier une tche, c'est--dire une tape du projet qui apparat dans
le planning. Une tche possde un identifiant, qui comme pour le projet, sera lidentifiant dOpen
Workbench. Une tche possde un nom, une date de dbut, une date de fin. On mmorise aussi le
chemin dans larborescence du projet pour pouvoir afficher cette information et viter la confusion
entre deux tches de mme nom. Il y a galement un attribut owb qui permet de dire si la tche est
importe du fichier XML ou alors si elle a t cre directement dans le portail.
Une tche possde un lien vers lentit Projet afin de savoir quel projet appartient chaque tche.
Une tche possde une liste daffectations. En effet, une tche peut tre associe plusieurs personnes.
On spare alors chacune des personnes en initiant la notion daffectation dcrite ci-dessous.
La classe Affectation correspond laffectation dun collaborateur une tche. Une affectation
possde un identifiant mais qui sera auto gnr, une date de dbut, une date de fin. Elle a galement
un attribut collab de type Collaborateur permettant didentifier la personne participant cette
affectation.
Il est ncessaire denregistrer les dates de dbut et de fin, car celles-ci peuvent tre diffrentes des
dates de dbut et de fin de la tche, une personne ne pouvant travailler que partiellement sur une tche.
Une affectation possde un budget, qui est en ralit la charge initialement prvue pour le
collaborateur sur la tche. Le budget de laffectation ne doit pas bouger au cours du temps.
Elle possde galement une valeur de reste faire, qui peut tre modifie tout moment puisque celleci est mise jour en fonction du travail effectu sur la tche.
Une affectation possde un lien vers lentit Tche pour savoir quelle tche elle se rfre.
Une affectation possde enfin une liste dimputations afin denregistrer tous les jours qui ont t
travaills par le collaborateur. Une imputation ncessitant denregistrer plusieurs informations, jai
extrait ces informations dans la classe Imputation prsente ci-aprs.
La classe Imputation permet denregistrer une imputation dun collaborateur sur une tche,
c'est--dire quelle permet denregistrer le temps travaill sur une tche pour une certaine journe.
Elle possde donc une date et une valeur. La valeur enregistre est une proportion du temps pass la
tche sur la journe correspondant la date. Cette valeur doit tre gale soit 0, 0.25, 0.5, 0.75 ou 1. En
effet, il nest pas intressant de dcouper plus finement le travail sur une journe.
Limputation possde un lien vers la classe Affectation pour savoir quel collaborateur et quelle
tche elle se rfre.

23

Delphine GUENEGO

4.5.2

Architecture
Larchitecture du portail Intranet est relativement simple.

Le portail est dvelopp en JSP. Les appels au serveur sont alors fait par des appels de Servlet.
Nous utilisons galement les technologies Ajax afin de recharger uniquement une partie des pages JSP.
L'utilisation de cette technologie ncessite des appels au serveur via les HttpRequest.
Le serveur que nous utilisons est un serveur Tomcat. Nous avions pens utilis Jboss mais
celui-ci paraissait trop lourd compar l'utilisation que nous devions en faire.
La base de donnes utilise est une base de donnes MySQL.
Afin de grer la persistance des donnes, nous avons utilis le framework Hibernate qui permet
de dfinir les entits persistantes et galement de faire des requtes la base plus simplement.

Portail
Intranet
accessible
dans
un

Servlet, HttpRequest

Serveur
Tomcat

Requtes SQLHibernate

Bases de
donnes
MySQL

JSP,
Javascript

24

Delphine GUENEGO

4.5.3

Environnement de dveloppement

4.5.3.1 Eclipse
Eclipse est un environnement de dveloppement. Eclipse permet dintgrer de nombreux
plugins afin damliorer lenvironnement.
Nous avons install la version WTP dEclipse qui intgre lensemble des plugins ncessaires pour
dvelopper des applications Web.

4.5.3.2 MySQL
MySQL est un serveur de base de donnes relationnelles.
Nous avons utilis galement loutil MySQLTools qui permet davoir une interface graphique
dadministration de la base de donnes. Cette interface permet de visualiser ltat de la base ainsi que
toutes les tables cres. Pour chaque table, on peut alors visualiser le schma, le contenu de la table,
ajouter des enregistrements ou en supprimer.

4.5.3.3 Hibernate
Pour grer la persistance de nos classes mtier, nous avons utilis le framework Hibernate.
Hibernate peut tre utilis de deux faons : avec un fichier de configuration XML ou avec les
annotations.
Pour la premire solution, on doit alors dfinir un fichier XML reprenant lensemble des classes
persistantes avec les attributs et leur type.
Pour la seconde solution, solution que nous avons utilise, il sagit dajouter des annotations
lintrieur du code Java des classes persistantes.
Hibernate permet, partir dun fichier de configuration, de faire le lien directement avec la base de
donnes afin que les tables soient cres correctement en fonction des annotations.

4.5.3.4 Apache Tomcat


Apache Tomcat est un conteneur de servlet J2EE. Il est galement utilis comme un serveur
HTTP.
Il permet de grer les servlets et les JSP.
Tomcat est assez lger pour pouvoir dmarrer rapidement. Il permet facilement de faire des
liens vers une base de donnes MySQL notamment.
Pour le dveloppement, nous avons intgr directement Tomcat dans Eclipse grce au plugin
ddi.

25

Delphine GUENEGO

4.5.3.5 Ext-JS
Ext-JS est un framework Javascript orient dveloppement dIHM. Cest un framework libre
open source.
Il permet de construire des applications Web riches avec de nombreux composants graphiques.
Ext-JS est support par lensemble des navigateurs courants comme Internet Explorer, Firefox, Safari,
Opera
Ext-JS dispose dune API complte qui est trs pratique pour un bon dveloppement laide de
ce framework.
Le site Internet prsente de nombreux exemples dutilisation de cet outil qui peuvent donc tre repris et
amliors.

4.5.4

Fonctionnalits dveloppes

4.5.4.1 Dfinition des classes mtier


Afin de dbuter le dveloppement de ce projet, jai repris les spcifications dfinies par moimme. Jai donc logiquement commenc par dfinir lensemble des classes mtier.
Pour chacune des classes dfinies dans le diagramme de classes, jai crit une classe Java
correspondante.
Comme je lai dit ci-dessus, nous avons utilis le framework Hibernate avec les annotations. Ces
annotations sont juste du code supplmentaire dans les classes Java classiques .
Ainsi jai utilis les annotations :
@Entity : permet de dfinir que la classe est une classe persistante et donc enregistre en base
@Id : permet de dfinir que lattribut est un identifiant (cl primaire dans la base)
@GeneratedValue : pour les identifiants auto gnrs
@ManyToOne, @OneToMany : pour les relations 0..*, 1..*,
@Temporal(TemporalType.DATE) : pour dfinir un attribut de type Date

26

Delphine GUENEGO

4.5.4.2 Interface graphique globale


Le portail devant tre utilis par les collaborateurs de lagence, il ma t demand de garder
une interface graphique similaire celle dun portail Intranet dj existant
(http://peopleonline.corp.thales).
Linterface se compose dune zone centrale o sont affiches toutes les donnes et de deux bandes
bleues sur les cots.
Cette interface est dfinie laide donglets afin de sparer les fonctionnalits. Chaque onglet permet
alors de basculer vers un cran spcial. Il peut y avoir lintrieur dun onglet, plusieurs autres sous
onglets.
Le style de lensemble de linterface est dfini dans un fichier CSS que jai donc repris totalement.
Cette interface est crite uniquement en HTML/CSS/ Javascript, cependant pour nos fonctionnalits,
nous avons ajout lutilisation du framework Javascript Ext-JS.

27

Delphine GUENEGO

4.5.4.3 Import/export de fichier Excel

Import :

Cette fonctionnalit a t dveloppe conjointement avec un autre stagiaire.


Lapplication doit permettre dintgrer des plannings dfinis dans Open Workbench. Ce logiciel
permet lexport du fichier Open Workbench au format XML, il est donc ncessaire au portail de
pouvoir importer des fichiers XML. Les fichiers XML imports ont le format prsent prcdemment
pour Open Workbench.
Afin de grer limport de fichier XML, nous utilisons Dom intgr dans Java grce la librairie
org.w3c.dom. Dom permet de parser tout un document XML et de rcuprer les informations que lon
souhaite dans ce document.
Pour rcuprer les informations voulues, on regarde donc par rapport aux noms des balises. Pour
les tches, on traite chaque balise Task une par une.
partir du fichier XML, il nous faut alors enregistrer les donnes en base afin dobtenir toutes les
informations ncessaires linterface de notre portail.
Ce fichier XML doit tre parser entirement. En effet, un fichier XML correspond un planning d'un
projet. Il faut alors bien mettre jour la base en fonction de ce fichier.
Notre application doit permettre plusieurs imports successifs d'un fichier pour un mme projet. Il nous
faut donc tout reprendre pour ne pas garder en base de fausses informations.
Ainsi lorsque l'on importe un fichier, nous devons tout d'abord vrifier que le projet existe dj en base
ou non. Si le projet existe dj, il faudra alors faire attention la mise jour de la base.
Dans le cas d'un nouveau projet, cela est assez simple, puisqu'il suffit d'ajouter les tches, les
affectations, etc. directement en base.
Dans le cas d'un nouvel import d'un fichier pour un projet existant, nous devons faire attention
plusieurs choses. Nous devons tout d'abord dtecter l'ajout de nouvelles tches par rapport aux
identifiants qui sont gnrs par Open Workbench. Ainsi si lidentifiant de la tche dans le fichier
XML napparat pas dans la base de donnes, cest donc une nouvelle tche. On enregistre alors
directement ces tches avec les affectations qui sont lies.
Il faut ensuite vrifier si les tches dj prsentes en base ont t modifies ou non : on peut par
exemple avoir chang les dates de dbut ou de fin, ajout des imputations pour un collaborateur, etc. Il
faut donc mettre jour la base en fonction de cela.
La dernire tape raliser est de vrifier qu'il n'y a pas eu de tches qui ont t supprimes
entre les deux imports de fichiers pour ce projet. Nous devons donc parcourir l'ensemble de la base
pour vrifier que les tches(affectations ou imputations) sont bien prsentes dans le fichier XML, faute
de quoi nous supprimons les tches(respectivement affectations et imputations) de la base.

28

Delphine GUENEGO

Nous avons eu des soucis dans lenregistrement des entits projet tches cause des identifiants
gnrs par Open Workbench. En effet, ces identifiants sont des chanes de caractres mais qui
peuvent contenir nimporte quel symbole. Nous avions donc des erreurs lorsque lon essayait dinsrer
en base notamment par rapport aux caractres rservs comme ou \. Nous avons contourn ce
problme en encodant les identifiants en base 64. Cela permet dtre sr que lon puisse insrer les
entits en base.
Lajout, la modification et la suppression dlments en base sont grs par le framework
Hibernate grce aux mthodes save, merge et delete.
Linterface de cette fonctionnalit a t ralise en simple JSP sans faire intervenir de lAJAX
(voir figure ci-dessous).
On peut alors importer le fichier grce un explorateur de fichiers. Il suffit ensuite de cliquer sur le
bouton Importer pour que celui-ci lance alors le parser XML qui permet de rcuprer lensemble
des donnes enregistrer dans la base de donnes.

Export :

Je me suis occupe de la partie Export dans son intgralit.


La partie Export doit permettre de gnrer un fichier XML qui soit comprhensible par Open
Workbench afin dtre intgr dans cet outil. Cet export est ncessaire car notre application permet
pour le moment de saisir les imputations, mais pas de crer ou mme simplement modifier un
planning. Une fois les imputations saisies, le chef de projet peut vouloir avoir la vue de ces
imputations dans Open Workbench afin dobtenir des bilans, des tats complets ou afin de modifier
des donnes.
Cela a ncessit un long travail de comprhension du fichier XML et surtout de la faon dont Open
Workbench le lisait, et donc quels taient les lments minimum ncessaires dans le fichier.
Il a donc fallu tester de manire incrmentale les fichiers gnrs. Il faut suivre exactement le fichier
qui est fait par Open Workbench afin dcrire un fichier comprhensible par loutil. Cependant
certaines donnes qui apparaissent dans le fichier enregistr ne sont pas absolument ncessaires, elles
ne sont donc pas rcrites dans le fichier cr.
Pour gnrer le fichier XML, nous reprenons donc lensemble des donnes prsentes dans la
base. Il nous faut alors savoir comment les mettre en forme par rapport ce quattend Open
Workbench.
Dans la version que jai faite, nous avons choisi de rcrire entirement le fichier XML.
Pour cela, nous avons utilis DOM tout comme pour limport et le parsing du fichier.
Au niveau de linterface graphique, il faut alors choisir le nom du projet dont on souhaite
exporter le fichier XML. Ceci peut poser souci dans le cas de deux projets de mme nom, cependant
cest la seule information que nous pouvions afficher. Une fois que lutilisateur a choisi le projet, cela
appelle alors une servlet de gnration du fichier XML. Ce fichier XML gnr sera alors affich dans
la page du navigateur. Il faut donc ensuite enregistrer ce fichier au format XML puis intgrer ce fichier
dans Open Workbench.
29

Delphine GUENEGO

Figure 10 : Ecran Import/Export

4.5.4.4 Saisie des imputations pour le collaborateur


Cette fonctionnalit a t la premire fonctionnalit dveloppe dans lapplication. Elle permet
chaque collaborateur de saisir les imputations dune priode donne pour lensemble des tches qui
lui sont affectes. Celle-ci doit tre quivalente la vue Imputation de la feuille ASDI, tout en
amliorant celle-ci videmment.
La liste des tches est affiche sous forme dun tableau. Chaque ligne du tableau correspond
une tche du collaborateur. Les colonnes comportent lensemble des informations de la tche.
Ainsi nous affichons le nom du projet correspondant, le nom de la tche, la date de dbut et la date de
fin de la tche. Afin didentifier la tche le mieux possible, on affiche alors le chemin dans
larborescence du projet sous la forme dune pop up qui saffiche au survol du nom de la tche.
On affiche galement le budget initial de la tche, le reste faire ainsi que la somme des
imputations dj effectues sur cette tche. Cependant les valeurs affiches ne concernent que le
collaborateur qui affiche la page, c'est--dire le collaborateur qui est authentifi dans lapplication.
Ainsi si une tche est affecte plusieurs collaborateurs, on affichera uniquement les valeurs du
collaborateur connect, celui-ci naura donc aucune vision du travail dj effectu par les autres
collaborateurs.
Ensuite on affiche une colonne pour chaque jour de la priode dimputations, dfinie ci-aprs.
Les valeurs modifiables pour chaque tche sont la date de dbut, la date de fin, le reste faire et
videmment la saisie des valeurs dimputation pour chaque jour de la priode.
Il nest pas possible de modifier le nom de la tche, le budget initial et la charge consomme (somme
des imputations). En effet, le budget initial est une rfrence qui est tablie au dbut du projet, et donc
qui nest plus jamais modifiable. La charge consomme quant elle, est une valeur calcule en
fonction des imputations prcdentes, on ne peut donc pas la modifier.
La priode qui est affiche afin de saisir les imputations correspond aux quinze jours
prcdents la date actuelle. Ceci permet de saisir les imputations des tches dj effectues.
Contrairement la version Excel, ici, on affiche lensemble des tches du collaborateur, et ce, pour
lensemble des projets auquel il participe. Les tches ne sont pas affiches uniquement si elles sont
dans la priode dimputations mais elles sont toutes affiches.
30

Delphine GUENEGO

On affiche la totalit des quinze jours prcdents y compris les week ends et les jours fris.
Cependant, ces jours particuliers seront affichs dune autre couleur dans linterface afin de bien
signaler aux collaborateurs qu priori, ce jour ci nest pas travaill. Il est nanmoins possible de saisir
des imputations ces jours ci, car il se peux, exceptionnellement, quun collaborateur travaille un jour
de week end.
Lorsquun collaborateur a saisi ses imputations pour une tche, il peut alors valider cette saisie
en cliquant sur le bouton Valider . Le bouton, dfini grce au framework Javascript peut alors faire
appel une Servlet Java qui permet de traiter les donnes et de les enregistrer en base. Au moment de
cet enregistrement, on rcupre alors la tche concerne, et on vrifie quil y a dj une imputation
pour la date de limputation ou non. Sil y a dj une imputation, cela signifie que la saisie est juste
une modification, sinon il faut alors lajouter.
Dans cet cran, on peut galement ajouter une tche. Cette fonctionnalit qui est nouvelle par
rapport la feuille Excel est trs intressante. En effet, si un collaborateur estime que le travail quil a
effectu ne correspond aucune tche dfinie, il peut alors ajouter sa propre tche avec le libell quil
choisit.
Il pourra alors dfinir le projet dans lequel intervient cette tche, la valeur du reste faire ainsi
que saisir ces imputations pour cette tche. Il est galement possible de dfinir les dates de dbut et de
fin de la tche. Il nest pas possible de dfinir le budget initial de la tche, car le budget initial est une
rfrence pour le projet, il ne faut donc pas le modifier au cours du temps. Si on rajoute une tche, cela
signifie quelle apparat en plus dans le budget ou alors quelle remplace une partie dune autre tche
auquel cas cette tche verra son reste faire diminuer. On ne peut pas non plus saisir la valeur du
consomm puisque celle-ci correspond la somme des imputations dj effectues sur la tche et est
donc une valeur calcule. La tche sera alors ajoute au projet, et ne sera visible dans le portail que par
le collaborateur qui la cre puisque celle-ci lui sera directement affect. Il nest pas possible daffecter
plusieurs personnes une tche cre via la portail. Il faudra alors que chacune des personnes cre une
tche indpendante. Les tches cres seront cres la racine du projet, c'est--dire quon ne soccuper
pas de la placer lintrieur de larborescence dun projet.
Le chef de projet qui exportera alors le projet en XML verra, aprs ouverture du fichier dans Open
Workbench que des tches ont t ajoutes.
On peut galement supprime une tche certains conditions. En effet, puisque nous autorisons
la cration de tches dans le portail, il doit aussi tre possible de supprimer une tche dj cre.
Cependant la suppression de tches ne peut pas se faire dans tous les cas. Il nest pas possible de
supprimer une tche qui a t importe depuis le fichier XML, car cela signifie que le chef de projet a
import le fichier et que par consquent il en a vrifi et valid le contenu.
La suppression est possible uniquement si la tche a t cre par le collaborateur connect, et si elle
na pas t import dOpen Workbench. En effet, mme si une tche a t cre par un collaborateur,
lors de lexport et du re import du planning, cette information disparat, il nest donc plus possible de
supprimer la tche.

Linterface a t dveloppe avec le framework Ext-JS prsent prcdemment.


Cette interface se compose dun tableau qui permet dafficher les tches. Ext-JS dfinit llment
GridEditorPanel qui permet de faire un tableau dont certaines cases sont ditables. Afin de charger
les donnes, on fait alors un appel une servlet Java qui nous renvoie alors un flux XML qui permet
dafficher les donnes dans le tableau grce au XML Reader dfini par le framework.
31

Delphine GUENEGO

Lutilisation du framework a permis deffectuer de belles interfaces et de simplifier le code. En


effet, de nombreuses fonctionnalits sont dfinies pour chaque lment du framework. Par exemple,
pour le tableau que nous affichons, il est possible de trier ce tableau suivant chacune des colonnes et
ce, par dfaut dans le framework. Cela aurait t beaucoup plus compliqu faire en utilisant
simplement les technologies HTML et Javascript.
Linterface comporte 3 boutons Ajouter une tche , valider , et Supprimer qui
permettent deffectuer les actions dfinies prcdemment.
De nombreux contrles sont fait sur linterface, et certains sont dfinis avec le framework Ext-JS.
Ainsi, lorsque lon saisit les imputations, il est obligatoire que la valeur de limputation soit une valeur
correcte (0, 0.25, 0.5, 0.75 ou 1). On peut contrler les valeurs saisies en appliquant un filtre sur
chaque case. Si on saisit une mauvaise valeur, la valeur est alors souligne en rouge, et ne sera pas
prise en compte pour la case.
Lorsque lon saisit une imputation, cela signifie souvent que la valeur du reste faire doit tre
modifie. Jai donc dfini un listener qui permet dafficher en rouge la valeur du reste faire des lors
quil y a eu une imputation sur la tche.
Par ailleurs, lors de lajout dune tche, on vrifie que les dates de dbut et de fin sont
correctes, c'est--dire que la date de dbut est bien antrieure ou gale la date de fin. Si ce nest pas le
cas, la nouvelle tche ne sera pas enregistre.

32

Delphine GUENEGO

4.5.4.5 Validation par le chef de projet


Aprs quun collaborateur ait saisi ces imputations pour une priode, il y a, bien entendu, une
vrification qui est faite par un responsable qui peut tre le chef de projet, le responsable dapplication,
etc. En effet, les imputations saisies par les collaborateurs servant suivre le planning dun projet,
danalyser les carts par rapport ce qui tait prvu, et autres bilans, il est ncessaire de vrifier les
donnes saisies. Les collaborateurs peuvent parfois se tromper dans ce quils saisissent mme
involontairement.
En ce qui concerne cette fonctionnalit, jai ralis uniquement une maquette de linterface
faute de temps. Cette maquette est susceptible dvoluer cependant elle possde toutes les informations
ncessaires effectuer cette fonctionnalit du portail.
Afin que le chef de projet valide les imputations de chacun des collaborateurs de son quipe, il
faut alors reprendre le nombre de jours imputs depuis le dernier import dun fichier XML. En effet,
limport dun fichier XML suppose que le chef de projet a export les donnes du portail en un fichier
XML pour le r intgrer dans Open Workbench et ventuellement quil a modifi le planning, et quil
a alors pris en compte les imputations prcdentes.
Une autre information qui peut tre importante pour le chef de projet est lcart sur le reste
faire. Lorsquun collaborateur saisit une imputation sur une tche, il voit alors le reste faire prvu, et
il peut le mettre jour. Cela permet de voir sil y prend lui-mme du retard sur la tche ou non. Lcart
est alors, pour une tche, la diffrence entre le reste faire prvu, et la somme des imputations et du
nouveau reste faire.
Par exemple :
Pour la tche A, le reste faire tait de 5. Le collaborateur impute 5 jours et r value le reste
faire 2. Cela donnera alors un cart de reste faire de -2 puisquil y a deux jours de
retard.
Inversement, si le reste faire tait de 5, quil a imput 2 jours et que le nouveau reste faire
est de 3, lcart sera de +3 jours.
Afin de mieux visualiser cet cart, les valeurs sont affiches de couleurs diffrentes : vert si
lcart est positif, et rouge si lcart est ngatif.
Pour le chef de projet, cette notion est importante puisque cela lui permet de voir certaines drives sur
les tches et en consquence de quoi, de communiquer avec son quipe pour comprendre les raisons de
ces drives.
La dernire colonne est la colonne tat qui permet juste de voir si les imputations du
collaborateur ont dj t valides ou non.
De mme que pour lcran de saisie des imputations expliqu prcdemment, cette interface a
t ralise avec le framework Ext-JS. De la mme manire, celle-ci contient un lment tableau
GridPanel . Les donnes sont charges via un appel une Servlet qui nous renvoie le rsultat sous
la forme dun flux XML qui sera alors lu via le XMLReader dExt-JS.

33

Delphine GUENEGO

4.5.4.6 Authentification
Je ne me suis pas du tout occupe de cette partie, cependant je peux la dcrire brivement.
Lauthentification est ncessaire pour savoir quel collaborateur est en ligne, et donc quelles
sont les tches afficher pour la saisie des imputations.
Cette authentification a t effectue grce aux paramtres dfinis dans le fichier web.xml de
lapplication. Ce fichier permet de dfinir des contraintes de scurit qui ncessite une authentification.
Il faut galement modifier un fichier de configuration du serveur sur lequel est dploye lapplication.
Lauthentification est base sur les donnes de la table Collaborateur et sur les champs login et mot de
passe. En effet, les paramtres dfinis permettent de dfinir quels sont les attributs prendre en compte
pour vrifier lauthentification.
Ainsi pour accder la page daccueil du portail, il est dabord demand de sauthentifier.
Lauthentification nest demande quune seule fois, on peut ensuite parcourir lensemble des pages du
portail.

34

Delphine GUENEGO

4.5.5

volutions futures

Nayant pas pass la totalit de mon stage sur ce sujet, il reste de nombreuses amliorations et
volutions possibles.

En effet, en ce qui concerne la validation par le chef de projet, jai uniquement ralis la
maquette. Il reste donc implmenter la totalit de cette fonction de validation. Pour cela, il faudra
srement modifier lgrement le modle mtier pour y inclure la notion dhistorique de la valeur du
reste faire afin de calculer les carts de charge pour les collaborateurs.
De mme, il faudrait introduire la notion de priode de validation. Ainsi un chef de projet ne doit
valider que les imputations quil na pas encore valides et les valeurs calcules dpendent donc de la
dernire date laquelle il a valid les imputations. Cette date doit aussi apparatre dans laffichage de
lcran de saisie des imputations puisquil ne sera pas possible pour un collaborateur de saisir ou de
modifier des imputations sur une priode dj valide. Ainsi au lieu dafficher les 15 jours prcdents
comme il fait lheure actuelle, il faudra afficher uniquement les jours partir de la date de validation
du chef de projet.

Dautre part, il a t envisag de modifier la fonction dexport. Actuellement, le fichier XML


qui est export est recre entirement partir des donnes de la base. Nanmoins, nous ne
sauvegardons pas lintgralit des donnes du fichier entrant (fichier import) puisque celles ci ne sont
pas toutes ncessaires. Ceci peut amener des pertes dinformations lorsque lon exporte le fichier.
Il serait donc intressant dans une version future de modifier le fichier import au dbut, (et
donc de le sauvegarder en plus des donnes de la base de donnes), ainsi on ne perdrait aucune donne.
Il faut alors pour chaque tche, vrifier sil y a eu des ajouts, des modifications ou des suppressions
dimputations.

Ces deux volutions sont celles qui seraient faire en premier lieu. Cependant, nous pouvons
penser de nombreuses autres volutions afin daugmenter les fonctionnalits de ce portail.

35

Delphine GUENEGO

4.5.6

Gestion du projet : SCRUM

Avant de commencer dvelopper rellement les premires fonctionnalits, mon responsable,


Mr MASCARO, a souhait mettre en place une mthode de dveloppement agile, nomme.
tant donn que jai travaill conjointement avec un autre stagiaire (du moins, pour une partie du
dveloppement), cette mthode nous a permis de mieux nous organiser deux.
Cette mthode de gestion de projets tait utilise pour la premire fois au sein de lagence
Thals sur ce portail Intranet. Notre responsable a choisi de tester cette mthode, car il y a une volont
de lagence de dvelopper cette mthode mme pour des projets se droulant chez le client.
SCRUM est une mthode agile pour la gestion de projets. Les mthodes agiles permettent de
concevoir des logiciels en se concentrant au maximum sur le client, et de rpondre activement ses
demandes. On peut retenir quatre valeurs principales dans les mthodes agiles :
Lquipe : on se concentre sur les personnes et leurs interactions plutt que sur les processus et
les outils
Lapplication : on prfre alors avoir un logiciel qui fonctionne correctement plutt quune
documentation complte. Par exemple, une documentation technique est secondaire, cependant
il faut quand mme un minimum de documentation.
La collaboration : le client doit tre impliqu dans le dveloppement, et il est prfrable de
communiquer avec le client directement plutt que de ngocier des contrats.
Lacceptation du changement : la planification initiale et la structure du logiciel doivent tre
flexibles. Il faut ragir au changement plutt que de vouloir suivre tout prix un plan.
Afin de mettre en place SCRUM, il faut tout dabord commencer par dfinir les diffrentes
fonctionnalits que doit possder lapplication concerne.
La mthode SCRUM utilise une planification trois niveaux : sprint, quotidien, et
release/projet.
SCRUM est une mthode itrative, et un sprint correspond une itration. Gnralement, les
sprints durent trente jours, cependant mon projet ntant pas un gros projet, les sprints que nous avons
dfinis durent sept jours. Chaque sprint permet de dfinir quelles seront les fonctionnalits
dvelopper durant ce sprint. Pour chacune des fonctionnalits, on dcompose le travail faire en
petites tches. Pour chaque tche, il faut alors valuer limportance de celle-ci en y affectant une valeur
entre 0 (moins important) 100(prioritaire). Il faut galement valuer le temps ncessaire effectuer
cette tche. Cette notion de temps est alors note en terme de points, un point correspondant un quart
de journe.
SCRUM impose une runion quotidienne entre le responsable et lensemble des
collaborateurs du projet. Cette runion permet de faire un tat davancement des diffrentes tches en
cours, les difficults rencontres ainsi que les tches restantes faire.
Jai trouv cette mthode trs intressante mettre en place. En effet, cela permet davoir un
rel objectif chaque moment. Les runions quotidiennes permettent de ne pas laisser traner un gros
souci mais de le rsoudre assez rapidement. De plus, cela permet davoir de rels changes entre les
collaborateurs dun projet.
36

Delphine GUENEGO

4.5.7

Difficults rencontres

Une des premires difficults a t la prise en main des diffrentes technologies utilises. En
effet, ce portail mle les technologies JSP/Servlet, Javascript (Ajax), Java et XML.
Lutilisation du framework Javascript Ext-JS a permis davoir de belles interfaces graphiques, mais ce
framework est assez compliqu dutilisation ds que lon souhaite faire des contrles et des choses
plus compliques que les traitements de base.
Lutilisation de la mthode SCRUM a galement pos quelques soucis. Il nest pas facile
dvaluer le temps ncessaire pour effectuer une tche. En effet, au dpart, il nest pas forcment
vident de savoir combien de temps va nous prendre une tche, et il y a eu quelques carts.
Par ailleurs, cela a t quelque peu difficile de grer mon temps puisque je ne consacrais pas
tout mon temps au dveloppement de ce portail, mais il fallait galement que je moccupe de la gestion
de plannings (comme je lai dcrit plus haut) et galement de la rdaction de ce rapport.
La difficult principale de ce projet est quil ny avait pas de rel cahier des charges. Ainsi il y a
eu de nombreuses modifications et volutions des fonctionnalits dsires tout au long du projet. Ceci
a fait perdre beaucoup de temps dans le dveloppement. De mme, je navais pas de maquette pour
linterface, et celle-ci a t modifie quelques fois avant dtre peu prs stable.

37

Delphine GUENEGO

Mission la Direction gnrale des Impts dans lquipe Composants


Communs

Cette partie correspond la deuxime grande partie de mon travail de stage.


En effet, partir du 01 juillet 2008, je suis alle travailler directement chez le client dans lquipe
Thals la Direction Gnrale des Impts (DGI).
Ma mission l bas tait lactivit de maintenance et de supports des composants communs. Jai t
appele afin de seconder le responsable de cette activit.

5.1

Contexte du projet : projet Copernic

Le contexte du projet est le projet Copernic.


Le projet Copernic est le nom de l'un des grands chantiers informatiques du ministre de l'Economie,
des Finances et de l'Industrie. Il consiste en une refonte totale du systme dinformations de la
Direction Gnrale des Impts (DGI) et de la Direction Gnrale de Comptabilit Publique (DGCP). Il
consiste faire voluer lensemble du systme dune gestion par impts une gestion par contribuable.
Le programme Copernic a dbut en 2001 et doit aller jusquen 2009 minimum. Lobjectif premier de
celui-ci est de regrouper les deux entits DGI et DGCP avec un mme systme dinformations.
Ce programme doit permettre au contribuable davoir une meilleure vision de sa situation fiscale via le
portail fiscal impots.gouv.fr en lui permettant de voir sa situation, deffectuer des dmarches simples
distance, davoir des informations gnrales, etc. Ces fonctionnalits sont dj prsentes pour le
contribuable, il est en effet possible de faire sa dclaration de revenus directement via le portail.
Du cot des agents des impts, ce programme doit permettre, suivant les droits de lagent concern, de
visualiser directement toutes les informations qui concernent un contribuable.

Voici le calendrier du programme :


2001 : lancement du programme
2002 : premire version du compte fiscal pour les particuliers
Fvrier 2005 : premire version du compte fiscal pour les professionnels
Mars 2005 : dploiement du portail mtiers des 80000 agents de la DGI
Avril Mai 2005 : dploiement du portail mtiers des 80000 agents de la DGCP
Novembre 2004 : nouvelle base des donnes patrimoniales
2007 : bascule du rfrentiel des personnes physiques et morales et du rfrentiel des
occurrences fiscales.
Dbut 2008 : premire bascule du recouvrement de limpt
2009 : fin de la migration du recouvrement de limpt et fin prvue du programme
Les chiffres du programme :
70 projets concerns
Cot de 1,3 milliards deuros sur 9 ans
Plus de 1000 personnes mobilises
38

Delphine GUENEGO

5.2

quipe Composants Communs

Lquipe de Composants Communs de la DGI est une quipe compose dintervenants


extrieurs aux impts tel que Thals ou dautres entreprises, et galement dagents des impts. Cette
quipe est dirige par Mr Stphane JUPIN.
Cette quipe est destine raliser des modules qui peuvent ensuite tre utiliss par plusieurs
projets dvelopps la DGI. Par exemple, il y a un module pour grer les chanes de batch, un module
pour la gestion derreurs,
Cest dans cette quipe que je suis intervenue.

5.3

SPPC

SPPC est labrviation de Socle de Pilotage de la Production Copernic.


Il est constitu dun ensemble doutils permettant dexploiter (installer, piloter, administrer, superviser)
tous les composants du systme informatique en production.

On peut dcomposer SPPC en trois lments distincts comme sur le schma ci-dessous :

Commande

Commande

Commande

Commande
Suivi Commande

Suivi Commande

Supervision

MA (Module
Applicatif)

NAD (Noeud
dADministration)

Console SPPC
(Interface)

Supervision

Indicateurs

Agent
local

Indicateurs

Comme le NAD et les agents locaux ne sont pas dploys sur les mmes machines physiques,
leur mode de communication doit tre distribu. Le mode de communication qui est tabli est le mode
par web services.
39

Delphine GUENEGO

5.3.1

Commande et supervision
On distingue deux notions principales dans SPPC : commande et supervision.

La notion de commande correspond une demande daction via la console SPPC. Cette action
peut tre de dmarrer ou darrter le module applicatif, de dmarrer une chane batch Cependant les
commandes dmarrer et arrt, cela ne correspond pas au dmarrage et larrt dun serveur, mais
plutt rendre accessible ou pas un service.
Une fois quune commande est lance, on peut alors suivre lvolution et le rsultat de cette
commande en appelant la fonction de suivi de commande. Ceci permet alors de voir si tout sest bien
pass et si on a bien le rsultat attendu.
La notion de supervision correspond la notion dindicateurs. Les indicateurs permettent
davoir des informations sur le module applicatif tel que son tat, le nombre moyen de connexions, etc.
Ces indicateurs sont dfinis dans un fichier de configuration comme nous le verrons plus loin et sont
enregistrs dans une base de donnes. A chaque instant, il ny a quune seule valeur de chaque
indicateur, celle-ci tant remplace chaque demande dindicateurs suivant la frquence dfinie dans
le fichier.

5.3.2

Module Applicatif

Le Module Applicatif (MA) correspond une partie dun projet. Il existe trois types de MA :
MAS, MAPB et MAPI.
Le MAS est le module applicatif de services. Il permet de dfinir un ensemble de services Web
disponibles.
Le MAPB est le module de batchs.
Le MAPI est le module dinterface.
Pour un mme projet, il est possible et mme frquent davoir les trois types de MA.
Chaque MA est packag sous la forme dun war et dploy sur une instance JBoss.
Pour le MAPB et le MAPI, ils sont arrts par dfaut lors du dploiement tandis que le MAS est
dmarr. Ces tats diffrents sont ncessaires pour savoir quelles sont les commandes que lon pourra
lancer via la console SPPC puisquil est en effet possible de dmarrer ou darrter un MA partir de la
console.
Un module applicatif possde un agent local qui tablit la communication avec le NAD.
Lagent local est la partie dporte du NAD embarque sur chaque module applicatif. Il est dploy
avec lapplicatif, mais ce dernier ne dpend pas de lagent local. Lapplicatif doit fonctionner sans la
prsence de lagent local. Lagent local est intgr au module applicatif en faisant appel un module
dvelopp pour chaque type de MA. Il existe donc trois types dagents locaux diffrents.

40

Delphine GUENEGO

Lagent local est compos de deux fonctionnalits :


Commandes : lancement et suivi des commandes
Supervision : collecte des indicateurs de supervision

5.3.3

NAD

Le Noeud dADministration (NAD) est le composant qui permet la console SPPC de piloter
un MA. La console SPPC ne communique avec un MA que par lintermdiaire du NAD qui lui est
ddi.
Le NAD est compos de quatre fonctionnalits :
Commandes : lancement et suivi des commandes
Supervision : collecte et sauvegarde des indicateurs de supervision
Cartographie Applicative : fournit la liste des agents locaux correspondant un OP ou OS. Il
sagit dun composant commun aux fonctionnalits commande et supervision
Routage : fournit les informations de routage dun agent local (adresse du serveur physique,
port) Il sagit dun composant commun aux fonctionnalits commande et supervision

Le NAD, qui doit tre en liaison avec le module applicatif quil doit piloter, doit tre configur en
fonction de ce module. Pour cela, il est ncessaire davoir quatre fichiers de configuration :

agents-locaux.xml

Un agent local comprend les informations relatives un serveur dapplication. Ces informations
permettent daccder au war dploy sur le serveur dapplication pour le module applicatif que lon
souhaite piloter.
La description XML dun agent local est la suivante :
<agentLocal>
<idAgentLocal>identifiant_agent_local</idAgentLocal>
<nom>nom_agent_local</nom>
<routage>
<numeroInstance>nom_war</numeroInstance>
<nomNP>nom_noeud_physique</nomNP>
<adresseNP>adresse_ip</adresseNP>
<numeroPortKex>port</numeroPortKex>
</routage>
</agentLocal>

41

Delphine GUENEGO

modules-applicatifs.xml

Le fichier modules-applicatifs.xml dcrit les objets pilots et les objets superviss.


Les objets pilots correspondent des objets sur lesquels il est possible de lancer des commandes.
Les objets superviss correspondent des objets pour lesquels il est possible de collecter des
indicateurs.
La description XML dun objet pilot est la suivante :
<objetPilote>
<idOP>identifiant_objet_pilote</idOP>
<nom>nom_objet_pilote</nom>
<type>type</type>
<agentLocal>
<idAgentLocal>identifiant_agent_local</idAgentLocal>
</agentLocal>
<action><verbe>action1</verbe></action>
<action><verbe>action2</verbe></action>
</objetPilote>

La description XML dun objet supervis est la suivante :


<objetSupervise>
<idOS>identifiant_objet_supervise</idOS>
<nom>nom_objet_supervise</nom>
<type>type</type>
<agentLocal>
<idAgentLocal>identifiant_agent_local</idAgentLocal>
</agentLocal>
</objetSupervise>

frequences.xml

Le fichier frequences.xml dcrit par frquence les indicateurs collecter par le NAD.
La balise <frequence valeurFrequence="1"> dfinit les frquences de collecte des indicateurs en
minutes. Les demandes dindicateur doivent tre tries par frquence de collecte.
La description XML dune demande dindicateur est la suivante :
< frequence valeurFrequence="1">
<demandeIndicateur>
<identifiant>identifiant_indicateur</identifiant>
<type>type_indicateur</type>
<moduleApplicatif>nom_module_applicatif</moduleApplicatif>
<typeObjet>type_objet_supervise</typeObjet>
<nomObjet>nom_objet_supervise</nomObjet>
<idInstanceObjet>identifiant_objet_supervise</idInstanceObjet>
<modeAgregation>mode_agregation</modeAgregation>
<seuilWarning>seuil_warning</seuilWarning>
<seuilCritique>seuil_critique</seuilCritique>
<sensComparaison>sens_comparaison</sensComparaison>
</demandeIndicateur>

42

Delphine GUENEGO

Ces 3 fichiers permettent de faire correctement la liaison avec lagent local du module applicatif
que lon souhaite grer. Il faut vraiment vrifier que lensemble est cohrent faute de quoi la
connexion au module applicatif ne peut pas stablir parfaitement et les commandes naboutissent pas.

NAD.DS

Le fichier NAD.DS dcrit laccs la base de donnes qui sert sauvegarder les indicateurs.
La description est la suivante :
<datasources>
<local-tx-datasource>
<jndi-name>${ds.nom}</jndi-name>
<connection-url>jdbc:oracle:thin:@10.155.28.246:1521:SPPC</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<min-pool-size>0</min-pool-size>
<max-pool-size>200</max-pool-size>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<idle-timeout-minutes>15</idle-timeout-minutes>
<prepared-statement-cache-size>100</prepared-statement-cache-size>
<user-name>sppc</user-name>
<password>sppc</password>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>

Lensemble de ces quatre fichiers est utilis lors de la gnration du NAD. En effet, il nest pas
ncessaire de dvelopper un NAD pour chaque module applicatif. Un NAD devant fournir chaque
fois les mmes fonctionnalits, il est possible de le gnrer.
Le NAD est compos de deux RPM(Red Hat Package manager) : un rpm application et un rpm de
configuration qui sont gnrs par un script shell. Une fois ces rpm gnrs, il suffit alors de les
installer sur une machine serveur pour que le NAD soit disponible.

43

Delphine GUENEGO

5.3.4

Console SPPC

La console SPPC est linterface graphique qui permet de piloter le module applicatif que lon
souhaite.
partir de cette interface, on peut alors lancer une commande, suivre une commande ou encore
visualiser les indicateurs.
La console SPPC doit tre configure pour communiquer avec le NAD. Cependant, je nai pas
utilis la console directement donc je ne peux expliquer cette procdure.
En effet, lors de mes dveloppements, jai utilis une IHM de test qui avait t dveloppe par lquipe
avant mon arrive. Cette interface se prsente sous la forme dun war quil suffit de dployer sur une
instance dun serveur JBoss. Linterface doit tre configure pour le NAD grce un fichier
urlNAD.properties. Ce fichier permet de dfinir lurl laquelle on peut accder au NAD.
Ce fichier pourrait tre :
urlNAD=http://localhost:8180/batch_exemple_NAD
urlNADext=http://localhost:8180/batch_exemple_NAD

Pour lancer une commande, il faut alors passer en paramtre un flux XML. IL y a un schma XML
pour chaque type de commande : dmarrer MAPI, dmarrer MAS, arrter MAPB, etc.
Le flux pourrait tre :
<listeCommandes>
<commande-unitaire>
<lancer-commande-valeur>
<commande>
<id-objet-pilote>
<type-objet>MAPI</type-objet>
<nom-objet></nom-objet>
<description></description>
<id-instance>MAPI-osatis</id-instance>
<module-applicatif>osatis</module-applicatif>
</id-objet-pilote>
<mode></mode>
<id-commande></id-commande>
<verbe>demarrer</verbe>
</commande>
</lancer-commande-valeur>
</commande-unitaire>
</listeCommandes>

Lorsque lon appelle le suivi de commande pour voir le rsultat dune commande, le rsultat se
prsente de la forme :
l'etat de la commande est : Reussie et l'etat de l objet pilote est : demarre

Pour visualiser les indicateurs, linterface nous renvoie un tableau avec lensemble des indicateurs qui
ont t dfinis dans le NAD pilot via le fichier frequences.xml
44

Delphine GUENEGO

5.4

Travail effectu

5.4.1

Modules applicatifs basiques

Lors de mon arrive dans lquipe et afin de prendre en main le fonctionnement de SPPC et de
tout lenvironnement, il ma t demand dinstaller moi mme un NAD sur une machine serveur et de
le piloter via lIHM de test. Ceci ma permis de voir les diffrents points auxquels il fallait faire
attention, en particulier, les quatre fichiers de configuration du NAD.
Aprs avoir bien pris en main le fonctionnement, jai alors du dvelopper un module applicatif
de chaque type (MAS, MAPI et MAPB) qui devront servir de base pour des tests de performance, des
tests de non rgression, lors de lintgration de nouveaux modules par lquipe de composants
communs. Par exemple, lorsque le module de gestion des ressources externes sera dvelopp, on
pourra alors lintgrer dans un des MA que jai dvelopp.

5.4.1.1 Environnement de dveloppement


5.4.1.1.1

Eclipse

De mme que pour mon activit prcdente, jai utilis lenvironnement de dveloppement
Eclipse.
Les technologies utilises tant du Java principalement, cet environnement est bien adapt.

5.4.1.1.2

Maven

Maven est un outil dvelopp par la fondation Apache. Cest un outil libre de construction et de
build de projets Java. Il est comparable loutil Make sous Unix.
Cet outil est pos sur la notion de POM (Project Object Model). Ce POM est dfini par un fichier
XML dans le projet, dans lequel on donne une description dtaille du projet notamment sur la gestion
des versions, des configurations, les dpendances vers dautres librairies, etc.

Lutilisation de Maven ncessite davoir une certaine structure dans les projets. Ainsi on doit
avoir dans le rpertoire de base le fichier pom.xml ainsi que deux rpertoires : src pour les sources et
target pour les fichiers gnrs. Dans le dossier source, on spare alors les fichiers en deux parties,
main pour le code lui-mme et tests pour la partie tests. De mme on spare encore lintrieur de
chacune de ces parties le code, des ressources externes (images, fichiers annexes, ).

45

Delphine GUENEGO

Figure 11 : Structure standard d'un projet Maven

Aprs lavoir install, lutilisation de Maven se fait via linvite de commandes sous Windows ou le
terminal sous unix.
On dispose alors de diffrentes commandes dont voici celles que jai utilises :
mvn compile : permet de compiler les classes sources
mvn eclipse:eclipse : permet de mettre jour le classpath du projet eclipse
mvn package : permet de cre un package du format dfini dans le fichier pom.xml
mvn install : permet dajouter le projet dans le rpertoire local maven

5.4.1.1.3

Tomcat

De mme que pour le portail, le serveur dapplication utilis est le serveur Tomcat.
Tomcat permet davoir un serveur lger et de pouvoir tre intgr directement dans Eclipse.

5.4.1.1.4

Putty

Putty est un logiciel permettant de se connecter distance des serveurs. Il est possible
dutiliser les connexions SSH, TelNet, RLogin, et Raw.
Putty est un mulateur de terminal, on peut alors accder toutes les fonctions Unix courantes afin de
travailler sur les fichiers prsents sur le serveur.
Cet outil est trs utile afin de dployer les modules applicatifs sur les serveurs voulus, de vrifier les
logs gnrs par les modules,

46

Delphine GUENEGO

5.4.1.2 Dveloppement des modules applicatifs

MAS

Le premier module applicatif que jai dvelopp est un MAS (module applicatifs de services).
Ce module devant servir effectuer des tests ultrieurs et non pas tre le plus complet possible,
jai fait un MAS qui ne fournit quun seul service. Le service fourni est uniquement de renvoyer une
chane de caractres.
Le MAS est un web service, il a donc fallu crer un projet dont la configuration est compatible avec la
cration dun web service.
Jai ainsi cr une classe interface ainsi quune implmentation de cette interface.
Afin de pouvoir appeler le service Web ainsi dfini dans dautres applications, notamment le
MAPI que jai dvelopp ensuite, il faut donc gnrer les stubs clients ainsi que le WSDL.
Cette procdure est dj effectue au sein de lquipe grce des scripts Ant.
Les scripts Ant permettent, via des fichiers de configuration, de gnrer toutes les classes des stubs
(bindingStub, Port, ServiceLocator, Service, ).

MAPI

Le MAPI que je devais dvelopp avait pour but de pouvoir appeler le MAS prcdemment
dvelopp.
Le MAPI est dvelopp en utilisant les technologies JSP/Servlet.
La servlet dveloppe doit alors faire appel au web service expos par le MAS, condition,
bien sr, que le MAS ait t dploy sur un serveur prcdemment. On appelle alors le web service
via lurl du service, et on rcupre la rponse. Cette rponse est alors affiche dans la page JSP.
Le MAPI doit galement permettre de voir les diffrents tats des deux modules applicatifs (MAS
et le MAPI lui mme) puisque ceux-ci peuvent tre arrts et dmarrs indfiniment au cours du
temps.
On doit donc voir travers le MAPI des pages diffrentes en fonction de ltat des modules.
Pour cela, jai utilis la notion de filtre de Servlet. Le filtre permet de renvoyer une erreur si le
service nest pas accessible. La dfinition des filtres se fait dans le fichier web.xml qui correspond
la configuration du serveur utilis pour dployer lapplication.

MAPB

Pour le MAPB, il y avait dj une version qui avait t dveloppe, je lai donc uniquement reprise
afin de bien comprendre ce que ce module faisait.

47

Delphine GUENEGO

5.4.1.2.1

Tests des modules applicatifs

Installation des modules applicatifs

Pour pouvoir tester chacun des trois modules applicatifs, il faut les dployer sur un serveur. Pour
cela, javais ma disposition, un serveur JBoss avec quatre instances.
Il faut alors gnrer les archives au format .war permettant de dfinir lapplication web. Ces fichiers
war sont crs partir de la commande Maven mvn package. En effet, dans notre fichier pom.xml,
nous avons dfini le type de package en tant que war, la commande gnre alors un war qui est mis
dans le dossier target de larborescence du projet.
Il faut alors transfrer ce war sur le serveur. Pour cela, nous utilisons FileZilla qui permet de faire des
transferts ftp. On transfre alors le fichier war dans le rpertoire :
/var/jboss/server/<nom_instance>/deploy.
Une fois le fichier dpos, il faut alors redmarrer le serveur par la commande :
/etc/init.d/jboss_<nom_instance> restart.
Larchive est alors prise en compte et on peut accder lapplication par le navigateur.

Installation des NAD

En ce qui concerne les NAD, leur installation ncessite un peu plus de travail. En effet, les NAD
doivent tre gnrs par un script Shell et ncessitent alors les quatre fichiers de configuration comme
dcrit plus haut dans la section NAD.
La procdure est la mme pour chacun des trois modules applicatifs.
Il faut commencer par crire les quatre fichiers de configuration avec les bons paramtres et les
bonnes url pour accder au module applicatif que lon souhaite piloter et galement la base de
donnes.
Pour la base de donnes, javais dj disposition une base avec les tables et les bons schmas
pour pouvoir tre utiliss par les NAD. La base de donnes est alors commune aux trois NAD que jai
gnrs.
Afin de gnrer les NAD, il faut excuter un script shell. Ce script Shell ncessite davoir une
structure de rpertoires sur le serveur o il se trouve.
Il faut alors se connecter via Putty sur une machine particulire qui est ddie la compilation de NAD
et crer ces rpertoires.
La structure doit alors tre la suivante :
- le rpertoire de base (par exemple, le nom du module applicatif pour lequel on gnre les NAD,
MAPIexemple)
- un sous rpertoire conf_NAD dans lequel se trouveront les quatre fichiers de configuration
- le fichier genere_NAD.sh
Une fois ces rpertoires crs, il faut alors transfrer les quatre fichiers de configuration crits sur
ce serveur via Filezilla dans le dossier conf_NAD.
48

Delphine GUENEGO

On peut alors excuter le script Shell genereNAD.sh grce la commande


sh genere_NAD.Sh <nomNAD>.
Ce script cre alors un certain nombre de rpertoires dont le rpertoire dploiement dans lequel se
situent les deux rpm que lon doit installer : le rpm applicatif et le rpm de configuration. Ces deux rpm
se nomment <nomNAD>-<versionNAD>.rpm et <nomNAD>-conf-<versionNAD>.rpm
Il faut alors transfrer ces rpm en local afin de les retransferer sur le serveur de tests, tout cela
en utilisant Filezilla.
Une fois les rpm sur le bon serveur de tests, il faut alors les installer.
Avant tout, il faut diter le fichier /etc/cop-deploiement.xml qui dfinit sur quelles instances du serveur
JBoss il faut installer les RPM.
Pour installer les rpm, il faut excuter la commande sudo rpm ivh <nomrpm> pour les deux rpm.

Utilisation de linterface de test

Comme je lai dit plus haut, linterface graphique que jai utilise est une interface de test
dveloppe en interne. Il a donc fallu linstaller et la configurer pour pouvoir lutiliser sur les diffrents
modules.
Linterface se prsente sous la forme dun war ainsi que des fichiers de configurations.
Il faut alors recopier larchive war sur une des instances JBoss disposition
(/var/jboss/server/<nom_instance>/deploy/).
Concernant les fichiers de configuration, il faut recopier un dossier nomm framework dans
/var/jboss/server/<nom_instance>/conf. Ce dossier contient le fichier urlNAD.properties dans lequel
on indique ladresse du NAD que lon souhaite piloter.
Une fois tout ceci fait, linterface est alors disponible via un navigateur.
Nous pouvons effectuer diffrents tests qui permettent de voir la bonne ralisation des
commandes envoyes.
Ainsi nous pouvons tester le fonctionnement du MAPI et les diffrentes pages qui saffichent
en fonction de ltat du MAP I et du MAS.
Une fois les modules dploys, le MAPI est ltat arrt et le MAS est dmarr.
Si on essaye dafficher la page daccueil du MAPI, on a alors une page derreur car il est arrt.
On envoie alors une commande dmarrer MAPI via l interface graphique correspondant au
NAD de ce MAPI. Si tout se passe bien, la commande dmarre russit et le MAPI est alors dmarr.
Si lon affiche la mme page que prcdemment, celle-ci est alors disponible.
Lorsque lon clique sur le lien pour appeler le service du MAS, a affiche alors la rponse que
jai dfini savoir une simple chane de caractres.

49

Delphine GUENEGO

Si lon excute ensuite la commande permettant darrter le MAS sur linterface qui lui est
consacre, et que lon clique sur le lien qui appelle le MAS, on a alors une page derreur car le service
est arrt.

On peut rsumer ces tests sur le diagramme suivant :


Si MAPI dmarr
Alors accs la page daccueil
Si MAS dmarr
Alors affichage rsultat du service
Sinon page erreur, service ferm
Sinon page erreur, service ferm

Les trois modules applicatifs que jai dvelopps mont permis de bien comprendre le processus
suivre pour pourvoir installer un module applicatif et le piloter. Ainsi, jai pu effectuer chacune des
tapes par moi-mme. Ces trois modules, bien quassez simples, doivent servir effectuer des tests
suite lajout de nouveaux composants dans ceux-ci. En effet, lquipe dans laquelle je suis
intervenue, dveloppe des composants lgers qui peuvent tre utiliss par dautres projets, il faut alors
sassurer que ces composants ne diminuent pas les performances, ne modifient pas les composants
prcdents, etc. Grce ces modules, il sera possible dintgrer ces composants et de les appeler, puis
de faire des tests pour vrifier que tout fonctionne bien.

50

Delphine GUENEGO

5.4.2

Support et livraison des nuds dadministration

Mon activit premire la Direction Gnrale des Impts tait le support et la maintenance du
module de supervisions des composants (SPPC).
Durant les deux mois passs l-bas, jai eu en charge ce module notamment lors de labsence
du responsable de celui ci. Jai donc du livrer des nuds dadministration dautres quipes de projet.
En effet, notre quipe est charge de gnrer les deux RPM pour les NAD et de les livrer dautres
quipes en particulier les quipes qui sont charges de tester les projets.
Pour livrer un ou plusieurs NAD, il faut alors suivre la procdure interne quil faut respecter
chaque livraison.
La premire tape consiste gnrer les deux RPM en utilisant les fichiers de configuration qui nous
ont t fournis par le projet concern (fichiers agents-locaux.xml, modules-applicatifs.xml,
frequences.xml et NAD.DS). On gnre ces RPM en utilisant le script Shell comme je lai dcrit cidessus. Les fichiers nous tant donns par les quipes dautres projets, il faut faire attention la
cohrence de ceux-ci. En effet, il y a un lien fort entre chacun des trois fichiers XML puisque les
identifiants sont rpercuts dun fichier lautre.
Une fois ces RPM gnrs, il faut alors crer une archive au format tar.gz dans lequel se situe
les deux RPM. Il faut dposer cette archive sur un serveur ftp ddi aux livraisons des NAD.
Pour accompagner cette archive, il faut tablir un bon de livraison dans lequel figure la date, la
version, ce qui a t livr, etc.
Il faut alors envoyer ce bon de livraison par mail lquipe entire qui est destine les RPM.

Cette activit ma permis de voir comment interagir avec dautres quipes projets, de voir comment
devait se passer une livraison et comment rdiger des bons de livraisons.

51

Delphine GUENEGO

5.4.3

Gonad

Aprs avoir bien compris le fonctionnement du support dapplications, notamment les NAD, il ma t
demand de raliser une application Web permettant de gnrer automatiquement ces NAD.

5.4.3.1 Description du sujet


La procdure pour gnrer les NAD est assez lourde.
Il faut commencer par crire les quatre fichiers de configuration, les transfrer par un logiciel de
transfert ftp sur le serveur de compilation, cre la bonne structure sur le serveur de compilation,
excuter le script Shell et enfin rcuprer les rpm pour les installer.
Lapplication web que je dois dvelopper doit permettre de simplifier toute cette procdure.
Elle devra alors permettre de tlcharger directement les quatre fichiers de configuration pour le NAD
(voir uniquement trois fichiers et remplir un formulaire pour la configuration de la base de donnes).
Une fois ces fichiers tlchargs, on devra pouvoir gnrer les deux rpm ncessaires au NAD et les
enregistrer sur le poste utilisateur lendroit o lon souhaite.
Cette application simplifiera grandement le travail effectuer puisquil ny aura plus alors qu
transfrer les deux rpm rcuprs via FTP sur le serveur dapplications.
Mme si cette application permettra de gnrer plus automatiquement les rpm, elle possde
quelques inconvnients par rapport au processus de gnration actuellement utilis. En effet, lors de
cette gnration automatique, on ne peut pas vrifier le contenu des fichiers et donc leur cohrence.

Le nom de lapplication a t choisi par rapport son utilisation : Gonad pour Gnration (O)
automatique de NAD.

52

Delphine GUENEGO

5.4.3.2 Environnement de dveloppement

5.4.3.2.1

Eclipse

De mme que pour mon activit prcdente, jai utilis lenvironnement de dveloppement
Eclipse.
Les technologies utilises tant du Java principalement, cet environnement est bien adapt.

5.4.3.2.2

Tomcat

De mme que pour le portail, le serveur dapplication utilis est le serveur Tomcat.

5.4.3.2.3

JSch

JSch est une implmentation Java du protocole SSH 2. Cest un outil gratuit sous licence BSD.
Cet outil permet lintrieur mme du code Java, dtablir des connexions SSH sur des serveurs, et de
pouvoir excuter toutes les commandes disponibles sur un terminal Linux.
Il va nous permettre de nous connecter directement au serveur de compilation afin de gnrer les
NAD.

Nayant pas de contraintes particulires sur les technologies utiliser notamment pour linterface, jai
dvelopp lapplication avec les technologies JSP/Servlet, Javascript et Java.

53

Delphine GUENEGO

5.4.3.3 Fonctionnalits dveloppes

5.4.3.3.1

Tlchargement fichier

Afin de gnrer les NAD, la premire tape est de tlcharger les quatre fichiers de
configuration qui permettant de configurer le NAD comme dcrit ci-dessus.
La page de tlchargement des fichiers est alors directement la page daccueil de notre application.
Pour pouvoir tlcharger ces fichiers, jai alors fait un formulaire HTML qui permet de choisir
le fichier en ouvrant un explorateur de fichiers grce au type de champ File . Ce type de champ
permet directement de transmettre un fichier enregistr en local.

Figure 12 : Tlchargement des fichiers

Afin de transmettre le contenu des fichiers slectionns, il faut alors dfinir le formulaire
HTML avec un paramtre particulier. Il faut dfinir le paramtre enctype la valeur multipart/formdata ce qui permet au formulaire de dire que les donnes envoyes seront des pices jointes, en
loccurrence les fichiers.

54

Delphine GUENEGO

Lorsque lon clique sur le bouton Tlcharger les fichiers, cela fait alors appel une servlet qui
permet denregistrer rellement les fichiers sur le serveur. La servlet permet alors de rcuprer chaque
fichier envoy comme pice jointe et de les enregistrer lendroit souhait ceci grce la classe
DiskFileUpload qui permet de parser la requte envoye la servlet et de rcuprer chaque fichier.
Mme si on ne peut pas contrler le contenu des fichiers, on peut au moins contrler le nom des
fichiers passs via le formulaire. En effet, le nom des fichiers est trs important lors de la gnration
des RPM par lexcution du script Shell, puisque le script vrifie le nom des fichiers.
Jai alors choisi de vrifier le nom des fichiers ds linterface graphique. Lorsque lon clique sur le
bouton Tlcharger les fichiers, cela fait alors une vrification des noms. Si un des noms est vide ou
mme erron, on affiche alors le ou les fichiers qui posent problme et lutilisateur est oblig de choisir
nouveau ces fichiers afin de les tlcharger.
Afin denregistrer les fichiers envoys, on cre un rpertoire dans lequel on enregistre les
quatre fichiers. Afin de permettre plusieurs utilisateurs dutiliser lapplication en mme temps, il ma
fallu grer des identifiants afin denregistrer les fichiers au bon endroit et de pouvoir les retrouver par
la suite.
Jai alors choisi de rcuprer lidentifiant du cookie de la session du navigateur de lutilisateur courant.
Cet identifiant est un nombre 32 chiffres.
Un utilisateur peut vouloir gnrer deux NAD diffrents dans le mme navigateur en utilisant les
systme donglets ou mme avec plusieurs fentres, cest pourquoi il ne fallait pas prendre en compte
uniquement cette notion didentifiant. Jai alors choisi dajouter ce nombre un numro qui est
incrment chaque nouveau tlchargement de fichier.
Exemple :
Lutilisateur A tlcharge des fichiers
rpertoire cr : 12345678901234567890123456789012
Lutilisateur A ouvre un nouvel onglet et tlcharge des fichiers
rpertoire cr : 12345678901234567890123456789012-1
Lutilisateur A ouvre un nouvel onglet et tlcharge des fichiers
rpertoire cr : 12345678901234567890123456789012-2

Lidentifiant ainsi cre est pass comme variable dans les requtes entre les servlets et les JSP afin de
pouvoir tre disponible tout moment.

55

Delphine GUENEGO

5.4.3.3.2

Gnration des RPM

La gnration des RPM peut tre faite uniquement une fois les fichiers de configuration
tlchargs, cest pourquoi lcran apparat aprs lcran prcdent et condition que les fichiers
soient bien tlchargs.
On peut alors choisir le nom des RPM qui seront gnrs, les deux RPM ayant le mme nom de base.
Ce nom sera alors pass comme paramtre dans la servlet qui est appel pour gnrer les RPM.
Voici la page HTML qui saffiche :

Figure 13 : Ecran de gnration des RPM

Pour gnrer les RPM, il faut alors russir communiquer avec le serveur de compilation. Pour
cela, il nous faut tablir une communication SSH afin de transfrer les fichiers de configuration
ncessaires pour les RPM , dexcuter le script Shell et de rcuprer les deux RPM alors gnrs.
Cette communication SSH est tablie en utilisant loutil JSch prsent dans la section JSch plus haut
dans ce document.
La connexion la machine de compilation se fait via une authentification. Pour utiliser JSch, il
faut alors fournir ladresse de la machine, le nom de lutilisateur et son mot de passe. Ces informations
mont t fournies par lquipe. Ces informations de connexion sont fournies via un fichier de
proprits qui est situ dans lapplication. Lauthentification sur le serveur peut chouer, si les
informations passs sont errones car lutilisateur a chang le mot de passe par exemple, ou alors que
la machine nest pas joignable. Dans ces cas l, le processus de gnration des rpm sarrte aussitt et
on indique lutilisateur quil y a un problme de connexion et quil faut ressayer ultrieurement. Si
tout se passe bien, une fois la connexion tablie, il est possible de raliser peu prs toutes les
commandes disponibles sur une machine Linux puisque la machine utilise ce systme dexploitation.

56

Delphine GUENEGO

La technologie JSch utilise la notion de canal sur le serveur. Un canal est alors ouvert avec un
certain type (exec, sftp, x11 ). Le canal doit alors tre connect au dbut, et dconnect une fois
toutes les oprations effectues.
Pour pouvoir copier les fichiers de configuration sur la machine, il faut commencer par crer un
canal sftp pour pouvoir excuter une quelconque action. Le canal sftp permet notamment dexcuter
les commandes de base et de transfrer ou de rcuprer des fichiers.
Il faut ensuite crer la bonne structure de rpertoire comme explique prcdemment. Ceci est
possible grce des fonctions dfinies par JSch sur ce type de canal tel que cd(<nom>),
mkdir(<nom>), Nanmoins toutes les commandes ne sont pas disponibles directement comme
mthode de ce type de canal.
partir de l, on peut alors transfrer les fichiers sur la machine lendroit voulu grce la mthode
put(FileInputStream f, String fileName).
Pour pouvoir excuter le script Shell (commande sh sous unix), il faut alors ouvrir un autre type
de canal JSch : exec. Ce canal permet dexcuter toute commande existante et non pas seulement celles
qui sont dfinies par des mthodes du canal Sftp. On peut alors combiner les commandes grce au
caractre &, rediriger les sorties par le >> ou <<,
On excute alors la commande suivante : sh genere_NAD.sh <nomNad> ce qui permet dobtenir la
mme chose que par une commande direct via Putty et donc de gnrer les RPM.
Les RPM sont alors gnrs sur la machine de compilation, il faut donc les recopier sur le
serveur dapplication o se trouve lapplication Web dans larborescence qui convient. Pour cela, on
ouvre nouveau un canal Sftp et grce la mthode get(String nom, OutputStream out), on rcupre
les fichiers. Jai choisi de recopier tous les RPM dans un mme dossier nomm generation. Cependant
on cre des sous rpertoires avec lidentifiant de lutilisateur (identifiant cre lors du tlchargement
des fichiers) dans lequel on recopie les deux rpm qui ont t gnrs. Cela permet dafficher
lutilisateur la possibilit de tlcharger uniquement les rpm quil a gnrs et non pas tous les rpm qui
ont t gnrs. Cependant si le mme utilisateur gnre les rpm pour deux NAD diffrents mais quil
a choisit le mme nom pour les deux rpm des deux NAD, cela crasera les deux premiers rpm qui ont
t gnrs.
Une fois les deux rpm recopis sur le serveur de lapplication Web, on peut alors supprimer
tous les fichiers qui ont t copis ou gnrs sur la machine de compilation pour le NAD concern.
Pour cela, on ouvre nouveau un canal de type exec dans lequel on excute la commande : rm r
<nomRep>. Ceci permet de supprimer tout le contenu du rpertoire ainsi que le rpertoire lui-mme.
Cette suppression automatique aprs chaque gnration de rpm vite dencombrer la machine de
compilation.

57

Delphine GUENEGO

Lexcution du script Shell pouvant tre dune certaine dure, jai alors choisi dafficher une popup
html qui permet de montrer que lexcution est en cours. Cette popup assez simple affiche uniquement
la chane <...> intervalle rgulier. Cela permet lutilisateur de voir que le systme est toujours actif
et que lexcution est en cours. Lutilisateur ne peut donc pas avoir limpression que le systme est
bloqu.

Figure 14 : Fentre d'attente d'excution

Lapplication tant une application Web, elle peut tre utilise par plusieurs personnes
simultanment, il faut donc grer les problmes de concurrence entre les utilisateurs. Cest pour cela
que jai choisi dutiliser un identifiant pour chaque session utilisateur comme expliqu dans la section
Tlchargement des fichiers plus haut dans ce document. Ces identifiants permettent denregistrer les
fichiers au bon endroit et ne pas tout mlanger lorsque lon recopie les fichiers, que ce soit lors du
tlchargement ou lors du transfert sur la machine de compilation.

Malgr lutilisation de rpertoires diffrents pour les diffrents NAD afin dexcuter le script
Shell, cela posait des problmes lors dexcutions parallles de ce script. Il faut donc synchroniser les
appels aux scripts Shell. Cet appel est fait via une servlet lors du clic sur le lien gnrer les rpm de
lcran de gnration des rpm(figure 13). La mthode doGet de la servlet est alors appele, et appelle
elle-mme des fonctions que jai dfinies.
Jai donc utilis la notion synchronized de Java qui permet de synchroniser les threads et de
grer les exclusions mutuelles.
Ainsi si deux utilisateurs souhaitent gnrer les rpm en mme temps, le premier utilisateur qui appelle
la mthode doGet pose un verrou, ce qui empche le second utilisateur dentrer dans le corps de cette
mthode tant que le premier na pas fini lexcution de celle ci. Cela permet de grer des excutions
squentielles et empche ainsi tout blocage.

58

Delphine GUENEGO

Voici le code de la mthode doGet :


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
/* Synchronisation de la gnration des rpm pour viter les accs
* concurrents la machine de compilation */
synchronized (this) {
try {
idSessionUtilisateur = (String) request.getParameter("id");
nomNad = request.getParameter("nomnad");
execution(request, response);
} catch (Exception e) {e.printStacktrace();}
}
}

Cette partie de gnration des rpm est la plus importante de lapplication. Elle ncessite
dtablir une connexion SSH au serveur et de transfrer des fichiers du serveur de lapplication la
machine de compilation et inversement.
Afin que les deux serveurs puissent communiquer entre eux, et que la connexion ssh aboutisse, il a
fallu ouvrir les autorisations daccs entre ces deux serveurs.

5.4.3.3.3

Rcupration des RPM

Une fois ltape prcdente de gnration des rpm ralise avec succs, on peut alors rcuprer
(tlcharger) les deux rpm qui ont t gnrs pour le NAD pour lequel on a tlcharg les fichiers au
dpart. Lorsque la gnration des rpm est finie, cela renvoie une page JSP dans laquelle on peut
tlcharger les rpm qui ont t gnrs. Cette page rpertorie lensemble des rpm qui ont t gnrs
par lutilisateur courant. En effet, il nest pas possible de tlcharger les rpm gnrs par dautres
personnes. La liste des rpm est tablie en regardant dans le dossier /generation/<identifiant> la liste
des fichiers prsents.
Pour chaque rpm, on dispose alors dun bouton Tlcharger le fichier qui permet denregistrer
le fichier sur lordinateur en local. Pour cela, le clic sur le bouton fait alors appel une servlet qui
permet de charger le rpm dans le buffer de la rponse de la servlet. En utilisant le type de rponse
application/download pour la rponse de la servlet, cela force le systme ouvrir une fentre de
tlchargement de fichier classique.
Le bouton Page daccueil permet de renvoyer la page daccueil de lapplication, c'est--dire
la page o il est possible de tlcharger les fichiers de configuration pour gnrer ensuite les RPM.
Cela permet de pouvoir gnrer plusieurs RPM de NAD en boucle.

59

Delphine GUENEGO

Figure 15 : Page enregistrer les rpm

Cette application Web va tre trs utile et va surtout permettre de simplifier la procdure de
gnration des RPM pour les NAD.
En effet, dans lquipe, on est souvent amen livrer des NAD aux autres quipes, et cet outil va donc
permettre un gain de temps.
Par ailleurs, le dveloppement de cette application ma permis dutiliser loutil JSch permettant de
faire des communications SSH avec un serveur.

60

Delphine GUENEGO

6 Conclusion
Cette exprience en tant que stagiaire chez Thals a t trs enrichissante.
En effet, ayant particip plusieurs projets au cours de ces cinq mois de stage, jai pu dcouvrir de
nombreuses phases dun projet.
La premire partie de stage se concentrant sur les notions de gestion de projets, de plannings,
etc, jai pu approfondir mes connaissances dans ce domaine. Jai ainsi pu apercevoir le travail dun
chef de projet sur les plannings, les vrifications effectuer et les bilans que lon peut en tirer.
travers mon travail sur les feuilles Excel, jai pu minitier au langage Visual Basic que je ne
connaissais pas avant ce stage.
Le dveloppement du portail Intranet ma beaucoup apport. En effet, sur ce portail, jai ralis la
phase dtude du besoin en collaboration avec Mr Thierry Bigot qui jouait alors plus ou moins le rle
du client, la phase danalyse du sujet, de conception et enfin de dveloppement. La partie
dveloppement ma permis dutiliser les technologies Java/J2EE en particulier JSP/Servlet et
Hibernate.
Ce portail va permettre aux chefs de projets et galement aux collaborateurs de simplifier la saisie des
imputations et le suivi de production.
La seconde partie de mon stage ma permis de dvelopper des applications orientes Web
Service et ma permis dutiliser de nouveaux outils. Ainsi jai pu dcouvrir lutilisation de Maven pour
la construction des projets. Cela ma galement permis dapprofondir mes connaissances en
JSP/Servlet.
Les outils que jai dvelopps vont tre utiliss par lquipe Composants Communs afin de tester les
nouveaux composants en ce qui concerne les modules applicatifs dveloppes et va permettre de
gagner du temps pour la gnration des NAD pour loutil Gonad.

tant intgre dans une quipe, jai pu voir les diffrentes phases dun projet et les contraintes
qui y sont lies. Ainsi lorsque jai livr des applications dautres quipes, jai ainsi du rdiger des
bons de livraisons, dposer les fichiers lendroit convenu, suivre les conventions de nommage de ces
applications livres
Ce stage ma galement permis davoir une relle vision de lenvironnement professionnel et
du travail dans une quipe projet. Jai ainsi constat limportance de la communication notamment lors
de lexpression du besoin pour un projet.
Jai galement eu des communications avec le client notamment pour le suivi de plannings et pour la
livraison dapplications la DGI. Jai pu constater limportance de bien assimiler les notions mtier
afin de simplifier, de clarifier les changes pour viter toute confusion qui pourrait tre dommageable
pour le projet et pour les relations futures avec le client.

61

Delphine GUENEGO

7 Planning

* Semaine dabsence
62

Delphine GUENEGO

8 Bibliographie
Eclipse : http://www.eclipse.org

MySQL : http://www-fr.mysql.com/
Hibernate : http://www.hibernate.org
Tomcat : http://tomcat.apache.org/
Framework Ext-JS : http://extjs.com/
Maven : http://maven.apache.org/
Putty : http://www.putty.org/
JSch : http://www.jcraft.com/jsch/
Open Workbench : http://www.openworkbench.org/

http://java.sun.com/j2se/1.5.0/docs/api/
http://java.developpez.com/faq/hibernate/
http://java.sun.com/j2ee/1.4/docs/api/index.html
http://www.dil.univ-mrs.fr/~massat/ens/java/jsp1.html
http://fr.selfhtml.org/
http://dcabasson.developpez.com/articles/java/maven/introduction-maven2/
http://fr.wikipedia.org/wiki/Apache_Maven
http://fr.wikipedia.org/wiki/PuTTY
http://fr.wikipedia.org/wiki/Red_Hat_Package_Manager
http://www.commentcamarche.net/tutlinux/linrpm.php3
http://commons.apache.org/fileupload/

63