130
SOMMAIRE INTRODUCTION..............................................................1 I. PRÉSENTATION DE LA SOCIÉTÉ............................................5 1. LE GROUPE INFOTEL......................................................5 2. LES ACTIVITÉS.........................................................7 3. DOMAINE DEXPERTISE....................................................9 4. LES CHIFFRES CLÉS.....................................................10 5. LA DIVISION SUD OUEST.................................................11 II. L’UTILITÉ DES LOGICIELS ORM..........................................13 1. LE PROBLÈME..........................................................13 2. PRINCIPES DE LA PERSISTANCE.............................................16 3. IMPACTS SUR LES MÉTHODES DE DÉVELOPPEMENT.................................25 4. IMPACT SUR LES PERFORMANCES GÉNÉRALES....................................34 5. VERS UNE SOLUTION UNIQUE...............................................38 III....................DÉVELOPPEMENT ET MISE EN PLACE D’UN OUTIL DE GRC 41 1. CONTEXTE............................................................41 2. L’APPLICATION........................................................45 3. L’ARCHITECTURE TECHNIQUE...............................................51 4. L’ARCHITECTURE.......................................................56 IV. LE PROJET DADS-U.....................................................70 1. PRÉSENTATION DU LOGICIEL...............................................70 2. MISE À JOUR DU PROJET.................................................75

maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

SOMMAIRE

INTRODUCTION............................................................................................................................................. 1

I. PRÉSENTATION DE LA SOCIÉTÉ.............................................................................................................. 5

1. LE GROUPE INFOTEL......................................................................................................................................5

2. LES ACTIVITÉS...............................................................................................................................................7

3. DOMAINE D’EXPERTISE...................................................................................................................................9

4. LES CHIFFRES CLÉS......................................................................................................................................10

5. LA DIVISION SUD OUEST..............................................................................................................................11

II. L’UTILITÉ DES LOGICIELS ORM............................................................................................................. 13

1. LE PROBLÈME.............................................................................................................................................13

2. PRINCIPES DE LA PERSISTANCE.......................................................................................................................16

3. IMPACTS SUR LES MÉTHODES DE DÉVELOPPEMENT.............................................................................................25

4. IMPACT SUR LES PERFORMANCES GÉNÉRALES....................................................................................................34

5. VERS UNE SOLUTION UNIQUE........................................................................................................................38

III. DÉVELOPPEMENT ET MISE EN PLACE D’UN OUTIL DE GRC...................................................................41

1. CONTEXTE.................................................................................................................................................41

2. L’APPLICATION...........................................................................................................................................45

3. L’ARCHITECTURE TECHNIQUE.........................................................................................................................51

4. L’ARCHITECTURE.........................................................................................................................................56

IV. LE PROJET DADS-U.............................................................................................................................. 70

1. PRÉSENTATION DU LOGICIEL..........................................................................................................................70

2. MISE À JOUR DU PROJET..............................................................................................................................75

3. LA RÉSOLUTION DE BUGS.............................................................................................................................77

CONCLUSION............................................................................................................................................... 79

1. BILAN DU STAGE.........................................................................................................................................79

2. Bilan personnel......................................................................................................................................80

Page 2: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2/32

Page 3: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Introduction

Dans le cadre de ma formation du cycle d’ingénierie génie logiciel de l’EPSI de

Bordeaux, j’ai effectué mon stage de fin d’étude chez Infotel Bordeaux, pendant six mois

consécutifs. L’objectif initial de ce stage était la refonte totale d’une application de gestion de

la relation client (GRC). Il est à noter que ce stage s’inscrit dans la continuité de mon stage

précédent, effectué pour la même entreprise.

L’année précédente, Infotel m’avait pris en tant que stagiaire, ainsi qu’un autre élève

d’une école différente mais de même année, pour réaliser toute la partie précédant le codage

d’une application. Nous avons ainsi recueilli les besoins, élaboré les spécifications - générales

dans un premier temps - et recherché dans le monde de l’open source une solution existante

ayant une bonne couverture fonctionnelle. Cette dernière tâche s’est révéler partiellement

infructueuse. Infructueuse car aucun logiciel ne répondait aux besoins spécifiques d’Infotel en

matière de GRC. De plus, en ne considérant que les logiciels bâtis autour de la technologie

qui nous intéressait, le J2EE, le choix était plutôt restreint.

Nous avons ainsi décidé de ne pas construire le projet à partir d’une application

existante. Pour cela, nous avons réalisé conjointement une maquette, accompagné des

spécifications détaillées. Une fois cela réalisé, nous avons fait un premier pas dans l’univers

J2EE en créant l’étude de l’architecture. A cette époque, mon collègue et moi-même étions

tous deux novices dans ce domaine. Nous nous sommes donc appuyés sur les conseils des

experts Infotel pour achever ce dossier.

Notre premier stage s’acheva ainsi, et nous savions donc parfaitement ce qui nous

attendait cette année. Nous aurions à débuter le codage de l’application presque

immédiatement après l’entrée en stage, puis aurions à entamer une phase de tests, suivi de

toute une phase de migration de l’ancien système. Pour la fin du stage, si nous disposions

d’assez de temps, notre maître de stage avait également prévu de nous faire refaire une partie

1/8

Page 4: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

de l’application en .NET, dans le double but de nous former sur cette technologie et de

comparer les méthodes de développement avec une environnement J2EE.

C’est ainsi que mon deuxième stage chez Infotel débuta, le 1er mars 2007. Le sujet

principal de mon stage était donc bien celui décidé l’année précédente : concevoir une

application de gestion de la relation client.

D’un point de vue développement, nous sommes ainsi partis d’un projet vide. La

structure de celui-ci était donc laissée complètement à notre charge. Celle-ci se devait d’être

la plus claire et la plus souple possible, pour deux raisons majeure :

- Deux nouveaux stagiaires nous ont rejoints sur le projet au cours de notre stage,

respectivement un et deux mois après le début du développement. Pour qu’ils puissent

rapidement se familiariser avec notre structure, nous avons essayé de respecter

certaines règles et certains standards. De manière générale, l’évolutivité et la

maintenabilité d’une application repose avant tout sur sa structure. C’est donc un des

principaux facteurs à prendre en compte lorsque l’on début un nouveau projet.

- L’évolution fonctionnelle : tout au long du projet, certaines fonctionnalité ont du être

revue, ajoutées, ou même supprimer. Pour diminuer au maximum l’impact que

peuvent avoir de tels changements, nous avons veillé à avoir une structure

relativement souple.

Malgré cela, nous jouissions d’une certaine liberté sur ce projet. Notre principal objectif étant

de répondre aux besoins. Les choix techniques, même si ils devaient être justifiés, étaient

laissés à notre jugement.

La seconde phase de mon stage me laissait d’un côté moins libre de mes actions, mais était

d’un autre côté nettement plus organisé. Cette fois ci, nous étions sous les ordres du chef de

projet d’Infotel Bordeaux : monsieur Hervé Plagelet. Nous avons ainsi abordé un autre aspect

du développement, aspect que l’on aborde rarement dans une formation académique, bien

2/8

Page 5: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

qu’elle représente une part conséquente du métier d’ingénieur d’étude : la maintenance d’une

application existante.

En effet, lorsqu’une application est mise en production, cela ne signe pas nécessairement la

fin du projet, bien au contraire. Les logiciels n’ayant jamais à subir de correctifs ou de mises à

jour sont en réalité assez rare. C’est dans ce genre d’opération que l’on se rend compte de

l’importance de la clarté d’une structure, d’un code. Ainsi, j’ai été amené pendant les deux

derniers mois de mon stage à effectuer quelques mises à jour sur le logiciel DADS-U

(Déclaration Automatisé des Données Sociales – Unifiée).

Qui plus est, au cours des premières semaines de développement de l’application GRC,

l’utilisation d’un outil de mapping objet / relationnel (ORM) s’est présenté comme étant

incontournable. Le nom de Hibernate revenait sur un grand nombre de forums et était

préconisé par les experts d’Infotel. Peu familier avec la structuration en couche, je me

demandais alors à quoi pouvait bien servir un tel outil. Après une petite étude, j’ai rapidement

compris son rôle. Hibernate, ou tout outil ORM, est utilisé pour lié nos objets dans le code de

notre application à nos tables dans notre base de données. A première vue, la solution qu’il

propose semble très élégante et pratique, mais on est droit de se demander ce qu’il se passe en

réalité. En effet, Hibernate réalise un ensemble d’opérations invisibles pour le développeur.

Même si cela est le cas pour chaque framework, les accès aux bases de données sont des

opérations délicates car coûteuses en ressources. Les performances d’un système dépendent

en grande partie des ses accès aux données. J’ai donc décidé, conjointement avec mon maître

de stage de mener une recherche sur ce sujet.

Ce mémoire sera donc scindé en deux sous partie :

Dans un premier temps, je chercherais à prouver ou à infirmer l’utilité d’Hibernate dans une

application structurée en couche. Un tel framework peut avoir un impact à deux niveau : au

niveau du temps de développement et de la clarté du code et au niveau des performances. Un

développement plus rapide et une maintenance plus aisée signifie un gain de temps, donc

3/8

Page 6: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

d’argent en milieu professionnel. Des performances à la baisse peuvent entrainer une perte

d’argent sur certains systèmes. J’étudierai donc l’utilité d’un ORM dans un système

d’information et suivant ces deux axes.

Dans un second temps, je parlerais de mon stage. Cette partie sera donc séparée en deux

parties, chacune décrivant mon activité sur les deux projets sur lesquels je suis intervenu

durant mon stage. La première décrira ma méthode de travail sur l’application GRC et la

deuxième sur l’application DADS-U.

4/8

Page 7: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

I. Présentation de la société

1. Le groupe Infotel

1.1. Historique

Infotel a été créée fin 1979, par des professionnels de l’informatique.

Cette société de services a été fondée par Messieurs Bernard LAFFORET, actuel Président,

Michel KOUTCHOUK actuel Directeur Général et Alain HALLEREAU actuellement

directeur des produits France. Dès son origine, Infotel a développé des activités de service, de

formation et de recherche progicielle.

A ses débuts, cette société était spécialisée dans le secteur des grands systèmes. Au fil du

temps, elle a évolué et a su se diversifier vers de nouveaux secteurs informatiques tout en

maintenant son niveau d’expertise.

À la fin de l’année 2005, le groupe Odaxys a rejoint Infotel.

L’objectif d’Infotel a toujours été, depuis sa création, d’apporter à sa clientèle, en majorité

composée de grandes entreprises, des solutions techniques leur permettant de mettre en place

des applications performantes en temps réel avec de très grandes bases de données :

aujourd’hui, le web-to-database en est l’expression.

1.2. Implantations géographiques

Infotel est un acteur indépendant européen de réputation mondiale : ses progiciels sont vendus

dans le monde entier, soit directement pour la France et certains pays d'Europe, soit via des

accords de distribution mondiaux signés avec IBM.

Le siège de la société Infotel est actuellement localisé en région parisienne à Bagnolet.

5/8

Page 8: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Présente en France au travers de ses bureaux parisiens et de ses agences à Toulouse,

Bordeaux, Lyon, Nantes et Rennes, Infotel est également représentée à l’étranger via ses

filiales (situées aux USA, Royaume-Uni et Allemagne).

Figure 1.1 : Infotel dans le monde

1.3. Organisation juridique

Infotel SA est la société mère. Elle exerce deux activités opérationnelles: la formation et les

progiciels.

Infotel Conseil exerce les activités de prestation de services du Groupe et est basé à Neuilly-

sur-Seine ; l’activité du grand Sud-Ouest du Groupe est réalisée sur les sites de Toulouse,

Bordeaux., Nantes et Rennes.

6/8

Page 9: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 1.2 : Infotel en France

Infotel Corp. (Tampa - Floride) assure le support technique aux États-Unis et gère certains

distributeurs.

Infotel GmbH (Moers) distribue en Allemagne.

Infotel Software Ltd (Leeds) distribue au Royaume-Uni.

Figure 1.3 : Organisation juridique d’Infotel

7/8

Page 10: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2. Les activités

Depuis son origine, le cœur du métier d’Infotel se concentre autour de 3 activités principales :

les services ;

les formations ;

les progiciels.

2.1. Services

Infotel fournit des prestations de conseil, d'étude, d'audit de systèmes informatiques et de

TMA (Tierce Maintenance Applicative). La société conçoit et réalise des projets

d'informatique de gestion, en régie ou au forfait. Elle met en œuvre des méthodes et

techniques avancées allant du Web jusqu'aux bases de données.

Ces prestations couvrent la totalité du cycle de vie des applications, depuis leur conception

initiale jusqu’à leur évolution après leur mise en production.

Les équipes d’Infotel interviennent :

dans les phases d’étude, au niveau des choix d’architecture, des choix

méthodologiques, des spécifications et de la conception ;

dans les phases de réalisation, en prenant en charge partiellement ou totalement (au

forfait) la construction des applications et en assurant les tests et la recette ;

durant le fonctionnement opérationnel, en assurant la maintenance des applicatifs

(TMA), les audits de performances et les actions d’optimisation qui permettent de tirer

le meilleur parti des investissements consentis.

8/8

Page 11: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 1.4 : Activités d’Infotel

2.2. Formations

Le catalogue de formation inter-entreprise couvre des filières allant du grand système (MVS,

DB2, CICS) au client/serveur.

Pour répondre aux besoins de souplesse et de spécificité de certains clients, Infotel construit

des cours intra-entreprise sur demande.

Des séminaires thématiques apportent également des éléments de réflexion sur les grands

sujets d’actualité tels que le passage à l’Euro, ou encore Intranet.

2.3. Progiciels

Les progiciels développés par Infotel ont une réputation internationale (plus de 700 licences

dans le monde).

Cette activité est maîtrisée dans son ensemble (conception, réalisation et commercialisation).

Les produits développés par la société appartiennent à la catégorie des « utilitaires »

permettant d’assurer automatiquement la gestion et la maintenance automatique des bases de

9/8

Page 12: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

données. Ils contribuent à améliorer les performances et la qualité des services informatiques,

répondant à une demande précise du marché.

Infotel est spécialisé sur les bases de données DB2 d’IBM, ainsi que le système MVS d’IBM,

système d’exploitation des mainframes d’IBM.

3. Domaine d’expertise.

L'expertise d'Infotel s'étend sur toutes les couches du système d'information de l'entreprise, du

poste de travail au serveur central :

Figure 1.5 : Domaine d’expertise

au niveau du poste client (front-end), avec les navigateurs, les langages comme HTML,

XML, Javascript, Java ;

au niveau des serveurs intermédiaires (middle-end), avec la maîtrise des middlewares,

des couches réseau et des pare-feu, des systèmes d’exploitation comme Windows ou

Unix, des serveurs d’applications comme Websphere ou Tomcat, de Java (J2EE) et des

EJB, etc. ;

au niveau des serveurs centraux, avec une expertise reconnue des systèmes

d’exploitation comme z/OS, des moniteurs TP (CICS, IMS), des SGBD (IMS, DB2,

Oracle), des langages et des applications.

10/8

Page 13: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4. Les Chiffres clés

4.1. Humain

En 2007, l’effectif du groupe Infotel comprend 750 personnes, dont 190 au Sud-Ouest.

Qualification : les effectifs du Groupe sont caractérisés par une forte qualification. En effet,

Infotel compte 90 % d’ingénieurs (dont environ la moitié est issue de grandes écoles et l’autre

de formations universitaires).

Infotel mise sur la fidélisation de ses collaborateurs, et jouit d’un taux de turn-over très faible

(2006 : 2,9 %, 2005 : 2,5%, 2004 : 3,5%).

Figure 1.6 : Graphe d’évolution du nombre de collaborateur et du C.A.

4.2. Financier

Le chiffre d’affaire est en constante croissance depuis la création de la société. Cette

augmentation a été ralentie par la crise (1993-1995) qui a frappé l’économie mondiale.

11/8

Page 14: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 1.7 : Evolution du C.A.

5. La division Sud Ouest

La division sud ouest d’Infotel a vu le jour avec la création de l’agence d’Infotel Toulouse le

1er août 1989. Ses premiers pas se firent dans un environnement parfaitement maîtrisé par

Infotel : DB2 / IBM.

Actuellement, cette agence est dirigée par Monsieur Jérôme ANSTROUSSE.

Elle comprend environ 190 employés dont la majeure partie travaille sur des activités de

recherches et de services auprès des clients.

5.1. L’agence de Bordeaux

Emanation de l’agence de Toulouse, l’agence d’Infotel Bordeaux a vu le jour en janvier 2004.

Actuellement, cette agence est dirigée par Monsieur Jean-Phillipe Aurin, ingénieur d’affaire,

mon maître de stage.

Elle fait travailler plus d’une trentaine d’employés sur des activités de service auprès de

clients aquitains.

12/8

Page 15: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

5.2. Les projets Bordelais

Projets Client : L’agence de Bordeaux compte parmi ses clients de nombreux grands comptes

de la région mais aussi de sociétés de taille moyenne (Siemens Health Services, AGIRC-

ARRCO, Crédit Agricole, l’UNEDIC, Le Gan, la caisse d’épargne, l’armée de terre, Lectra,

rectorat de Bordeaux …).

Projets en interne : La société développe également des applications en interne sur lesquelles

elle s’appuie pour améliorer son fonctionnement (ex : la gestion des affaires, la gestion de la

relation client…).

13/8

Page 16: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

II. L’utilité des logiciels ORM

1. Le problème

Le langage de programmation Java, ainsi que la plupart des langages utilisés

actuellement pour le développement d’applications professionnelles sont de type Orientés

Objet (OO). D’un autre, la majorité des systèmes de bases données (SGBD) actuels sont de

type relationnel. Ces deux types d’approche de la modélisation des données peuvent poser

problème lorsque l’on essaie de les faire coexister au sein d’une même application. Procédons

tout d’abord à un rapide descriptif de ces deux modèles.

1.1. Le modèle relationnel

Pour illustrer ceci, imaginons un système de gestion des emprunts de livres dans une

bibliothèque. Il va donc nous falloir modéliser des personnes, avec leurs informations

personnelles, ainsi que des livres et leurs informations propres. Voici une représentation

simplifiée que l’on peut se faire pour ces deux entités :

Figure 2.1 : Schéma de 2 entités

14/8

Personne

- Identifiant

- Nom

- Prénom

- Adresse

Livre

- Identifiant

- Référence

- Titre

- Auteur

Page 17: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Schématisons maintenant la façon dont notre SGBD va les stocker :

Figure 2.2 : MCD des 2 entités

Cela signifie qu’une Personne peut posséder de 0 à n livres, et qu’un livre peut être

posséder par 0 ou 1 Personne. Afin de savoir quelle personne est en possession de quelle livre,

nous avons effectué une migration de d’identifiant. Dans les informations du livre, il y a

désormais un emplacement que nous pourront remplir avec l’identifiant de la personne ayant

emprunté le livre. Ce type de champ est appelé une clef étrangère. Dans notre base de

données, chaque entité sera en réalité représenté sous forme d’un tableau, où à chaque

colonne sera associé un champ, et à chaque ligne une nouvelle personne par exemple :

Figure 2.3 : Stockage dans la base de données

Voyons maintenant les différences et les problèmes que cela entraine avec une

représentation objet.

1.2. Le modèle objet

Dans le modèle relationnel, le type est obligatoirement un de ceux qu’implémente le

SBDG. Par exemple, le champ IdPersonne de la table Livre est un entier. Or, en Objet, un

15/8

Personne

- IdPersonne

- Nom

- Prénom

- Adresse

Livre

- IdLivre

- Référence

- Titre

- Auteur

- IdPersonne

0, n0,1

IdPersonne Nom Prénom Adresse

1 Dupont Pierre 3 rue du moulin

2 Martin Jean 15 avenue Thiers

Page 18: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

programmeur peut définir à volonté de nouveau type de champs, et les utiliser selon son bon

vouloir.

Nous allons construire deux Objets, Personne et Livre :

Figure 2.4 : Représentation objet simplifiée des deux entités

Le champ réservé pour connaître l’emprunteur d’un livre est donc maintenant de type

personne. Ce champ va directement pointé sur l’instance d’une personne.

Pour retrouver les informations d’un emprunteur dans le modèle relationnel, il faut

parcourir notre table jusqu’à ce que l’on trouve la personne avec le bon identifiant. En

représentation objet, on y accède directement. On peut également remarquer qu’une personne

possède un tableau de livre, pour connaitre directement tous les livres empruntés par une

personne sans effectuer de recherche, ce qui n’est pas possible avec le modèle relationnel.

Maintenant que nous avons vu les différences entre ces modèles, il suffit de comparer

les schémas 1.3 et 1.4 pour se rendre compte du problème soulevé par la liaison des ces deux

univers.

1.3. Les logiciels ORM

Comme nous venons de la voir, un logiciel de Mapping Objet / Relationnel (MOR ou

ORM, pour Object/Relationnal Mapping en anglais) est une couche de persistance connectant

les objets d'un système orienté-objet à des données stockées dans une base de données

16/8

Personne

- IdPersonne : entier

- Nom : chaîne

- Prénom : chaîne

- Adresse : chaîne

- Livre : tableau de Livres

Livre

- IdLivre : entier

- Titre : chaîne

- Auteur : chaîne

- référence : chaîne

- emprunteur : Personne

n 1

Page 19: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

relationnel. L'usage du Mapping Objet / Relationnel permet d'appliquer une analyse et une

modélisation orienté-objet proprement en cachant les spécificités liées à l'usage d'un système

relationnel.

Le MOR est très populaire dans le monde Java, et même s'il est assez peu connu dans le

monde .NET, il existe déjà beaucoup de logiciels – commerciaux ou libres – comme le très

célèbre Hibernate.

2. Principes de la persistance

Dans le monde Java, on parle de persistance d’informations. Ces informations peuvent

être des données ou des objets. Même s’il existe différents moyens de stockage

d’informations, les bases de données relationnelles occupent l’essentiel du marché.

Les bases de données relationnelles, ou SGBDR (Système de gestion de bases de données

relationnelles), les plus connues sont Oracle, Sybase, DB2, Microsoft SQL Server et MySQL.

Les applications Java utilisent l’API JDBC (Java DataBase Connectivity) pour se connecter

aux bases de données relationnelles et les interroger.

Les applications d’entreprise orientées objet utilisent les bases de données relationnelles

pour stocker les objets dans des lignes de tables, les propriétés des objets étant représentées

par les colonnes des tables. L’unicité d’un enregistrement est assurée par une clé primaire.

Les relations définissant le réseau d’objets sont représentées par une duplication de la clé

primaire de l’objet associé (clé étrangère).

L’utilisation de JDBC est mécanique. Elle consiste à parcourir les étapes suivantes :

- Utilisation d’une java.sql.Connection obtenue à partir de java.sql.DriverManager ou

javax.sql.DataSource.

- Utilisation de java.sql.Statement depuis la connexion.

- Exécution de code SQL via les méthodes executeUpdate() ou executeQuery(). Dans le

second cas, un java.sql.ResultSet est retourné.

- En cas d’interrogation de la base de données, lecture du résultat depuis le resultset

avec possibilité d’itérer sur celui-ci.

- Fermeture du statement.

17/8

Page 20: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

- Fermeture de la connexion.

Comme on peut le constater, même sans saisir tout le sens de ces étapes, l’interrogation

d’une base de données est une tâche rébarbative et couteuse en temps de développement. Il est

ainsi nécessaire de mettre en place une couche de persistance. La persistance peut être réalisée

de manière transparente ou non transparente. La transparence offre d’énorme avantages,

comme nous allons le voir dans les sections suivantes.

2.1. La persistance non transparente

Comme l’illustre la figure 2.5, une application n’utilisant aucun framework de persistance

délègue au développeur la responsabilité de coder la persistance des objets de l’application.

Figure 2.5 : Charge des développeurs sans framework

A moins de le mettre soit même en place, ce type d’architecture ne gère ni cache, qu’il

soit de premier ou second niveau, ni concurrence, ni clé primaire. De plus, ne traitant aucune

sorte d’association, il est d’autant plus lourd que le modèle métier est fin est complexe. En ce

qui concerne la lecture, le chargement se fait probablement au cas pas cas, avec une

duplication partielle de méthode selon le niveau de chargement requis.

Sous outil de mapping objet-relationnel, le développeur a la charge de coder lui-même

tous les ordres SQL et de répéter autant que de besoin ce genre de méthode.

18/8

Page 21: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Dans de telles conditions, la programmation orientée objet coûte très cher et soulève

systématiquement les même questions : si des objets sont associés entre eux, faut il propager

les demandes d’insertion, de modification ou de suppression en base de données ? Lorsque

nous chargeons un objet particulier, faut il anticiper le chargement des objets associés ?

La figure 2.6 illustre le problème de gestion de la persistance des instances associées à

un objet racine. Elle permet d’appréhender la complexité de gestion de la persistance d’un

graphe d’objets résultant d’une modélisation orientée objet.

Figure 2.6 : Problème lié aux objets fils

Pour utiliser une stratégie de persistance non transparente, le développeur doit avoir une

connaissance très avancée du SQL mais aussi de la base de données utilisée et de la syntaxe

spécifique de cette base de données.

2.2. La persistance transparente

Avec un framework de persistance offrant une gestion de des états des instances

persistantes, le développeur utilise la couche de persistance comme un service rendant

abstraite la représentation relationnelle indispensable au stockage final de ses objets.

19/8

??? ???

Page 22: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 2.7 : Charge des développeurs avec un ORM

La figure 2.7 illustre comment le développeur peut se concentrer sur les problématiques

métier et comment la gestion de la persistance est déléguée de manière transparente à un

framework. Un outil ORM permet de réduire considérablement le volume de code nécessaire

pour interroger une base de données. Il reste cependant nécessaire de posséder de bonnes

bases en SQL, afin de mieux comprendre les mécanismes de dialogue avec la base de

données.

Les avantages d’une solution de persistance vont plus loin que la facilité et l’économie

de code. La notion de « persistance par accessibilité » (persistence by reachability) signifie

non seulement que l’instance racine sera rendue persistante mais que les instances associées à

l’objet racine pourront aussi, en toute transparence, être rendues persistantes.

Cette notion fondamentale supprime la difficulté mentionnée précédemment pour la

persistance d’un réseau ou graphe d’objets complexe, comme l’illustre la figure 2.8.

Figure 2.8 : Relations entre objets pères et fils

20/8

Page 23: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.3. Le mapping objet-relationnel

Le principe du mapping objet-relationnel est simple. Il consiste à décrire une

correspondance entre un schéma de base de données et un modèle de classes. Pour cela, nous

utilisons des métadonnées, généralement incluses dans un fichier de configuration. Ces

métadonnées peuvent être placées dans les sources des classes elles-mêmes, comme le

précisent les annotations de la JSR 220 (EJB 3.0).

La correspondance ne se limite pas à celle entre la structure de la base de données et le

modèle mais concerne aussi celle entre les instances de classes et les enregistrements des

tables comme illustré à la figure 2.9.

Figure 2.9 : Correspondance entre une représentation relationnelle et objet.

21/8

Page 24: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

En haut de la figure, nous avons deux tables liées par la colonne ID_METIER. Dans le

diagramme de classes situé en dessous, les instances de Personne et Metier sont des entités

alors que celles d’Adresse sont considérées comme des valeurs (cette nuance est détaillée plus

tard). Dans la partie basse de la figure, un diagramme d’instances permet de visualiser le

rapport entre instances et enregistrements, aussi appelés lignes ou tuples.

En règle générale, une classe correspond à une table. Si on souhaite opter pour un modèle de

granularité plus fine, une seule table peut reprendre plusieurs classes, comme la classe

Adresse.

Les colonnes représentent les propriétés d’une classe, tandis que les liens relationnels entre

deux tables (duplication de valeur d’une table à une autre) forment les associations de notre

modèle objet.

Contrairement au modèle relationnel, qui ne définit pas de navigabilité, la conception du

diagramme de classes propose une ou plusieurs navigabilités. Dans l’absolu, il y a, au niveau

relationnel, une relation « PERSONNE * ------ 1 METIER », qui peut se lire dans le sens inverse :

« METIER 1 ------- * PERSONNE ». C’est là une des différences entre les mondes objet et

relationnel. Dans notre exemple, l’analyse a abouti à la définition d’une seule navigabilité

Personne * ----- 1 Metier.

Les différences entre les deux mondes sont nombreuses. Tout d’abord, chacun possède son

propre système de types. Ensuite, la très grande majorité des bases de données relationnelles

ne supporte pas la notion d’héritage, à la différence de Java. En Java, la notion de suppression

est gérée par le garbage collector alors qu’une base de données fonctionne par ordre SQL. De

plus, dans la JVM, les objets vivent tant qu’ils sont référencés par un autre objet.

Les règles de nommage sont également différentes. Le nommage des classes et attributs Java

n’est pas limité en taille, alors que, dans une base de données, il est parfois nécessaire de

nommer les éléments au plus court.

22/8

Page 25: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.4. Historique de la persistance des données en Java

La persistance d’objets en Java n’a été qu’une suite d’échecs et de déceptions. Avant

d’aboutir à des solutions telles qu’Hibernate, que nous verrons plus en détail au chapitre

suivant, le monde Java a dû subir la lourdeur de plusieurs solutions. Il est important de revenir

sur ce passé pour bien comprendre ce qui se joue dans le choix d’un framework de

persistance.

2.4.1. Les EJB (Enterprise JavaBeans)

Le souvenir le plus traumatisant sur ce thème sensible de la persistance dans les

applications orientées objet reste sans aucun doute la première version des EJB, il y a dix ans.

Il existait peu de frameworks de persistance à cette époque, et les entreprises se

débrouillaient avec JDBC. Les applications étaient orientées selon un modèle tabulaire et une

logique purement relationnelle plutôt qu’objet.

Les grandes firmes du monde Java ont fait un tel forcing marketing autour des EJB que

les industries ont massivement adopté cette nouvelle technologie.

Les EJB se présentent alors comme le premier service complet de persistance. Ce

service consiste en la gestion de la persistance par le conteneur, dit CMP (Container-Managed

Persistence). Bien que personne à l’époque ne parvienne réellement à faire fonctionner CMP,

l’engouement pour cette technologie est tel que les développeurs la choisissent ne serait-ce

que pour l’ajouter à leur CV.

Techniquement, CMP se révèle incapable de gérer les relations entre entités. De plus, les

développeurs sont contraints d’utiliser les lourdes interfaces distantes (remote). Certains

développeurs en viennent à implémenter leur propre système de persistance géré par les

Beans, ou BMP (Bean-Managed Persistence). Déjà décrié pour sa laideur, ce pattern

n’empêche cependant nullement de subir toute la lourdeur des spécifications imposées par les

EJB.

23/8

Page 26: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.4.2. TopLink et JDO

A la fin des années 90, aucun framework de persistance n’émerge. Pour répondre aux

besoins des utilisateurs des EJB, TopLink, un mappeur objet-relationnel propriétaire de

WebGain, commence à se frayer un chemin.

TopLink a pour principaux avantages la puissance relationnelle et davantage de

flexibilité de d’efficacité que les EJB, mais au prix d’une relative complexité de mise en

œuvre. Le problème de TopLink est qu’il s’agit d’une solution propriétaire et payante, alors

que le monde Java attend une norme de persistance transparente, libre et unique. Cette norme

universelle voit le jour en 1999 sous le nom de JDO (Java Data Object).

En décalage avec les préoccupations des développeurs, le mapping objet relationnel

n’est pas la préoccupation première de JDO. JDO fait abstraction du support de stockage des

données. Les bases de données relationnelles ne sont qu’une possibilité parmi d’autres, aux

côtés des bases objet, XML, etc. Cette abstraction s’accompagne d’une nouvelle logique

d’interrogation, résolument orientée objet mais aussi très éloignée du SQL, alors même que la

maîtrise de ce langage est une compétence qu’une grande partie des développeurs ont acquise.

D’où l’autre reproche fait à JDO, le langage d’interrogation JDOQL (JDO Query Langage) se

révélant à la fois peu efficace et très complexe.

En 2002, après trois ans de travaux, la première version des spécifications JDO connaît

un échec relatif. Jugeant la spécification incomplète, aucun des leaders du marché des

serveurs d’applications ne l’adopte, même si TopLink propose pour la forme dans ses API une

compatibilité partielle avec JDO.

Du côté des EJB, les déceptions des clients sont telles qu’on commence à remettre en

cause la spécification. Le version 2.0 vient à point pour proposer des remèdes, comme les

interfaces locales ou la gestion des relations entre entités. On parle alors de certains succés

avec des applications développées à partir d’EJB CMP 2.0. Ces quelques améliorations ne

suffisent toutefois pas à gommer la mauvaise réputation des EJB, qui restent trop intrusifs (les

entités doivent toujours implémenter des interfaces spécifiques) et qui brident la modélisation

des applications en ne supportant ni l’héritage ni le threading. A ces limitations s’ajoutent de

nombreuses difficultés, comme celles de déployer et de tester facilement les applications ou

24/8

Page 27: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

d’utiliser les classes en dehors d’un conteneur (serveur d’applications). L’année 2003 est

témoin que les promesses des leaders du marché J2EE ne seront pas tenues.

Début 2004, la persistance dans le monde Java est donc un problème non résolu. Les

deux tentatives de spécification ont échoué. EJB 1.x est un cauchemar difficile à oublier pour

les développeurs et JDO 1.x un essai manqué. Quant à EJB 2.0, si elle résout quelques

problèmes, elle hérite de faiblesses trop importantes pour s’imposer.

2.4.3. Un exemple d’ORM : Hibernate

Le 19 janvier 2002, Gavin King fait une modeste publication sur le site

theserverside.com pour annoncer la création d’Hibernate.

Hibernate est lancé sous le numéro de version 0.9. Depuis lors, il ne cesse d’attirer les

utilisateurs, qui forment une réelle communauté. Le succés étant au rendez-vous, Gavin King

gagne en popularité et devient un personnage incontournable dans le monde de la persistance

Java. Coécrit avec Christian Bauer, l’ouvrage Hibernate in Action sort l’année suivante et

décrit avec précision les problématiques du mapping objet-relationnel.

Pour comprendre l’effet produit par la sortie d’Hibernate, il faut s’intéresser à l’histoire

de son créateur, Gavin King.

Avant de se lancer dans l’aventure Hibernate, Gavin King travaillait sur des applications

J2EE à base d’EJB 1.1. Lassé de passer plus de temps à contourner les limitations des EJB

qu’à solutionner des problèmes métier et déçu de voir son code ne pas être portable d’un

serveur d’application à un autre et de ne pas pouvoir le tester facilement, il crée le framework

de persistance Open Source Hibernate.

Hibernate ne va cesser de s’enrichir de fonctionnalités au rythme de l’accroissement de

sa communauté d’utilisateurs. Le fait que cette communauté interagisse avec les développeurs

principaux est une des causes du succés d’Hibernate, et des projets Open Source en général.

Des solutions concrètes sont ainsi apportées très rapidement au noyau du moteur de

persistance, certains utilisateurs proposant même des fonctionnalités auxquelles des

développeurs confirmés n’ont pas pensé.

25/8

Page 28: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Les fonctionnalités clés d’Hibernate mêlent subtilement la possibilité de traverser un

graphe d’objets de manière transparente et la performance des requêtes générées. Critique

dans un tel outil, le langage d’interrogation orienté objet, appelé HQL (Hibernate Query

Language), est aussi simple qu’efficace, sans pour autant dépayser les développeurs habitués

au SQL. C’est d’ailleurs lui que nous avons utilisé pour interroger notre base de données dans

notre application.

La transparence est un autre atout d’Hibernate. Contrairement aux EJB, les POJO (Plain

Old Java Object) ne sont pas couplés à l’infrastructure technique. Il est de la sorte possible de

réutiliser les composants métier, chose impossible avec les EJB.

Dans l’interview d’octobre 2004, Gavin King évoque les limitations de JDO et des EJB.

Pour le premier, les problèmes principaux viennent du langage d’interrogation JDOQL peu

pratique, et de la volonté de la spécification d’imposer la manipulation du bytecode. Pour les

EJB 2.0, les difficultés viennent de l’impossibilité d’utiliser l’héritage, du couplage

relativement fort entre le modèle de les classes métier et l’infrastructure technique, ainsi que

du problème de performance connu sous le nom de n + 1 select.

En septembre 2003, Hibernate rejoint JBoss. A l’époque, l’annonce fait couler beaucoup

d’encre, des rumeurs non fondées prétendant qu’Hibernate ne pourra plus être utilisé qu’avec

le serveur d’application JBoss.

Ce rapprochement vise à encourager les grandes entreprises à adopter un outil Open

Source. Il est en effet rassurant pour ces dernières de pouvoir faire appel à des sociétés de

services afin de garantir le bon fonctionnement de l’outil et de bénéficier des formations. Au-

delà des craintes, JBoss a très certainement contribué à accroitre la pérennité d’Hibernate.

3. Impacts sur les méthodes de développement

Le rôle d’un outil de mapping objet-relationnel tel qu’Hibernate est de faire abstraction

du schéma relationnel qui sert à stocker les objets métier. Les fichiers de mapping permettent

de faire le lien entre le modèle de classes métier et le schéma relationnel. Avec Hibernate, le

26/8

Page 29: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

développeur d’application n’a plus à se soucier en théorie de la base de données. Il lui suffit

d’utiliser les API d’Hibernate, notamment l’API Session, et les interfaces de récupération

d’objets persistants.

Les développeurs qui ont l’habitude de JDBC et des ordres SQL tels que SELECT,

INSERT, UPDATE et DELETE doivent changer leur façon de raisonner au profit du cycle de

vie de l’objet. Depuis la naissance d’une nouvelle instance persistante jusqu’à sa mort, en

passant par ses diverses évolutions, ils doivent considérer ces étapes comme des éléments du

cycle de vie de l’objet et non comme des actions SQL menées sur une base de données.

Toute évolution d’une étape à une autre du cycle de vie d’une instance persistante passe

par la session Hibernate.

Tout comme la plupart des frameworks de l’univers J2EE, Hibernate se configure

entièrement à partir de fichiers XML. Le but d’Hibernate étant de lié une table d’une base de

données relationnelle à une classe, cette dernière doit être la plus simple possible. Elle doit

être simplement constituée de plusieurs attributs représentant chaque champ de la table, et des

méthodes permettant de donner une valeur, ou de retrouver une valeur, de ces attributs. Ce

type de classe est connu sous le nom de Plain Old Java Object (POJO). Nous étudierons cette

notion plus en détails un peu plus tard.

Pour ensuite faire correspondre un champ d’une table à un attribut d’un POJO, il faut

crée un fichier de configuration au format XML : un fichier de mapping. Ce type de fichier est

propre à chaque table, il faut donc créer un fichier de mapping par table.

Figure 2.10 : Structure simplifiée d’Hibernate

27/8

Page 30: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Nous verrons donc par la suite la structure et la composition d’un tel fichier.

3.1.1. Les POJOs

Les POJOs ne sont en rien réservés au domaine d’Hibernate. On peut dire que le

principe est aussi vieux que ne l’est la programmation, mais le nom n’a été donné que bien

plus tard.

Après l’apparition des EJBs avec J2EE en 1999, certains développeurs critiquèrent leur

trop grande complexité. Parmi eux, Martin Fowler, qui décida de donner un nom aux objets

basiques en suivant cette pensée : « Nous nous sommes demandés pourquoi tout le monde

était autant contre l'utilisation d'objets simples dans leurs systèmes et nous avons conclu que

c'était parce que ces objets simples n'avaient pas un nom sympa. Alors, on leur en a donné un

et ca a pris tout de suite. »

3.1.2. Les fichiers de mapping

Afin de savoir comment relier nos classes à nos tables dans notre base de données,

Hibernate va aller lire ses fichiers de mapping.

Chaque fichier de mapping doit renseigner précisément pour chaque attribut d’une

classe à quel champ de quel table il doit se référer.

Ces fichiers contiennent donc en quelques sortes une liste des attributs, indique leur rôle

par rapport à la base de données (clef primaire, étrangère ou autre) et bien entendu le nom de

la table et du champ attaché.

Etudions un exemple :

28/8

Page 31: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 2.11 : Exemple d’un fichier de mapping

La racine du fichier est la balise <hibernate-mapping>, indispensable à ce type fichier.

A l’intérieur, la balise <class> indique quelle classe on s’apprête à décrire. Notons qu’il est

possible d’avoir plusieurs classes décrites dans un même fichier dans le cas de classes

dépendantes d’une autre, comme les classes héritées par exemple.

Encore à l’intérieur, la balise <id> décrit l’identifiant de la table et sa méthode

d’incrémentation.

En dessous, une première propriété, une simple chaine de caractères.

Finalement, la dernière balise, est une des plus spécifiques au principe du MOR, et peut être

l’une des plus intéressantes. Comme nous l’avons vu précédemment, une relation (1, n)

entraîne non seulement une migration de la clef d’un côté, mais également une migration

d’une collection d’objets liée à l’instance de l’objet de l’autre côté.

Cela peut être très utile. Dans notre exemple ci-dessus, la table Typesite est une table de

paramètres. Si on cherche, à un moment donné, à charger toutes les sociétés d’un certain type,

pour reprendre l’exemple ci-dessus, il nous suffira de faire une recherche sur le type, qui

possédera une collection de toutes les sociétés appartenant à ce type.

29/8

Page 32: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Il nous est donc possible de récupérer la liste des sociétés en deux lignes de codes.

Habituellement, il faudrait soit passer une requête SQL, soit parcourir la liste des sociétés et

ne sélectionner que celles dont le type correspond.

Toutefois, afin de ne pas effectuer de requêtes inutiles, tout ce qui a un rapport avec une table

étrangère n’est pas chargé par défaut. Il faut spécifier manuellement ce que l’on veut charger.

Cela s’appelle le lazyloading, et nous l’aborderons plus tard.

3.2. Gestion de la session Hibernate

La maîtrise des fichiers de mapping est une chose, l’utilisation correcte d’une API en est

une autre. Dés que l’on sort des exemples simples et que l’on désire essayer d’utiliser

Hibernate dans une application quelque peu complexe, la gestion des instances de

SessionFactory, Session, Transaction et même Configuration1 devient vite délicate.

Il est courant que les utilisateurs se déportent vers des frameworks tels que Spring parce

qu’ils proposent des automatismes de gestion de la session Hibernate. Basculer vers un tel

framework uniquement pour cette raison - même si elle représente un certain confort - est un

mauvais choix. On multiplie de la sorte les dépendances avec d’autres frameworks et on

allonge les délais de mise à jour des frameworks de niveaux inférieurs. En clair, Si une

nouvelle version d’Hibernate est disponible le jour J du début du développement, étant donné

que l’on dépend aussi de Spring, qui encapsule Hibernate, il sera nécessaire d’attendre le

support de cette nouvelle version d’Hibernate par Spring pour profiter des dernières

fonctionnalités.

3.2.1. La session Hibernate

Comme l’explique le manuel de référence d’Hibernate, une session Hibernate a une

durée de vie courte, en accord avec un traitement métier, et, surtout, est threadsafe. Il ne faut

pas considérer la session hibernate comme un cache global. Si deux traitements, ou threads,

1 Objets de l’API Hibernate permettant de gérer les connexions avec la base de données.

30/8

Page 33: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

parallèles venaient à utiliser une même session, Hibernate ne pourrait garantir les données. Il

s’agit là non d’une limitation mais d’un choix intentionnel de conception.

Dans les applications web, un thread est facilement identifiable. Une requête du

navigateur s’effectue via une requête HTTP, laquelle s’exécute dans un thread. Comme la

durée de traitement d’une requête HTTP peut être considérée comme très courte dans notre

contexte, il paraît légitime d’associer la durée de vie d’une session Hibernate au traitement

d’une requête HTTP. La courte durée de vie et le fait que la session ne soit pas threadsafe sont

donc respectés.

Un filtre de servlet associé à une classe utilitaire permettent de gérer la session de

manière transparente. Ce couplage est une variante du pattern Thread Local ou encore du

pattern Open Session in View.

La fonction de ces deux patterns très proches est de garantir une bonne gestion de la

session. Leur principal avantage est de permettre à la session de rester ouverte jusqu’à ce

qu’une vue (JSP) soit rendue. Cela s’avère primordial si on injecte des objets persistants dans

nos pages et que certains d’entre eux soient des proxy non initialisés, puisque ce système

permet le chargement tardif des proxy au rendu de la JSP.

3.2.2. La classe utilitaire HibernateUtil

La classe HibernateUtil est une classe qu’il est fortement recommandé d’utiliser lorsque

l’on utilise Hibernate. Elle est basée sur le pattern Singleton. Elle est donc instanciée une

seule fois, et partagée pour toute l’application.

Cette implémentation, que l’on pourrait considérer comme quelques peu banale, est en

réalité un moyen de contourner un « problème » d’Hibernate. Une session s’obtient à partir

d’un objet SessionFactory. Or, cet objet a besoin de recourir aux fichiers de mapping lors de

sa création. Il est donc inconcevable qu’à chaque fois qu’un utilisateur se connecte à

l’application, ou pire, à chaque fois qu’il effectue une requête, que l’application charge à

nouveau les différents fichiers de mapping. L’impact sur les performances serait désastreux,

voire même fatale pour le serveur.

31/8

Page 34: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Cette classe, non présente dans Hibernate, mais recommandée jusque dans la

documentation officielle, s’impose donc de fait. D’un côté, son absence peut paraître étrange

au premier abord, mais d’un autre côté, cela rend la gestion des sessions et des transactions

plus souple.

3.3. Le cycle de vie d’un objet manipulé par Hibernate

3.3.1. Les différents états

Pour être persistant, un objet doit pouvoir être stocké sur un support lui garantissant une

durée de vie potentiellement infinie. Le plus simple des supports de stockage est un fichier qui

se loge sur un support physique. La sérialisation permet, entre autres, de transformer un objet

en fichier.

Hibernate ne peut se brancher sur une base de données objet mais peut travailler avec

n’importe quelle base de données qui dispose d’un pilote JDBC de qualité. Une nouvelle

fonctionnalité permet à Hibernate de traiter des supports XML comme source de donnée.

Les concepts que nous allons aborder ici sont communs à toutes les solutions de

mapping objet relationnel, fondées sur la notion d’état.

La figure 2.12 illustre les différents états d’un objet. Les états définissent le cycle de vie

d’un objet.

32/8

Page 35: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 2.12 : Différents états d’un objet.

Un objet persistant est un objet qui possède son image dans le datastore et dont la durée

de vie est potentiellement infinie. Pour garantir que les modifications apportées à un objet

sont rendues persistantes, c'est-à-dire sauvegardées, l’objet est surveillé par un « traqueur »

d’instances persistantes. Ce rôle est joué par la session dans Hibernate.

Un objet transient est un objet qui n’a pas son image stockée dans le datastore. Il s’agit

d’un objet temporaire, qui meurt lorsqu’il n’est plus utilisé par personne. En Java, le garbage

collector le ramasse lorsqu’aucun autre objet ne le référence.

33/8

Page 36: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Un objet détaché est un objet qui possède son image dans le datastore, mais qui échappe

temporairement à la surveillance opérée par la session. Pour que les modifications

potentiellement apportées pendant cette phase de détachement soient enregistrées, il faut

réattacher manuellement cette instance à la session.

3.3.2. Entités et valeurs

Pour comprendre le comportement, au sens Java, des différents objets dans le contexte

d’un service de persistance, nous devons les séparer en deux groupes : les entités et les

valeurs.

Une entité existe indépendamment de n’importe quel objet contenant une référence à

cette entité. C’est là une différence notable avec le modèle Java habituel, dans lequel un objet

non référencé est un candidat pour le garbage collector. Les entités doivent être explicitement

rendues persistantes et supprimées, excepté dans le cas où ces actions sont définies en cascade

depuis un objet parent vers ses enfants. Les entités supportent les références partagées et

circulaires. Elles peuvent être versionnées.

Un état persistant d’une entité est constitué de références vers d’autres entités et

d’instances de type valeur. Les valeurs sont des types primitifs, des collections, des

composants et certains immuables. Contrairement aux entités, les valeurs sont rendues

persistantes et supprimées par référence (reachability).

Puisque les objets de types valeurs et primitifs sont rendus persistants et supprimés en

relation avec les entités qui les contiennent, ils ne peuvent être versionnés indépendamment

de ces dernières. Les valeurs n’ont pas d’identifiant indépendant et ne peuvent donc être

partagées entre deux entités ou collections.

Tous les types Hibernate, à l’exception des collections, supportent la sémantique null.

Jusqu’à présent, nous avons utilisé les termes classes persistantes pour faire référence

aux entités. Cependant, dans l’absolu, toutes les classes persistantes définies par un utilisateur

et ayant un état persistant ne sont pas nécessairement des entités. Un composant, par exemple,

est une classe définie par l’utilisateur ayant la sémantique d’une valeur.

34/8

Page 37: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

3.4. Configuration

La configuration d’Hibernate – les informations de connexion à la base données,

l’emplacement des divers fichiers de mapping, et bien d’autres choses – se fait, comme on

aurait pu le deviner, grâce à un fichier XML.

Voici un aperçu d’un fichier de configuration :

Figure 2.13 : Exemple d’un fichier de configuration

On peut remarquer une chose, nous avons nommé une balise <session-factory>, avec un

attribut nom.

Cette session factory est en charge de nous fournir une session, comme son l’indique, afin

d’accéder à notre base de données. Le nom que nous lui avons donné permet de la retrouver

grâce à JNDI.

3.5. L’outil Hibernate Tools

L’outillage disponible autour d’Hibernate sous le nom d’Hibernate Tools permet

d’accroître la productivité.

L’éditeur de mapping simplifie l’écriture des fichiers de mapping. De leur côté, les

requêtes sont testées rapidement grâce à Hibernate Console tandis que le schéma de base de

données est généré rapidement avec SchemaExport.

35/8

Page 38: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Globalement, il existe deux moyens principaux de développer un projet informatique

selon que l’entreprise possède un historique de conception orientée objet fondé sur la

modélisation du schéma relationnel ou que l’application à développer est destinée à utiliser ou

enrichir un schéma relationnel existant. Dans le premier cas, notre point de départ est la

conception fonctionnelle et dans le second le schéma de base de données.

Si UML est ancré dans l’entreprise, après les spécifications fonctionnelles commencent

les spécifications techniques. Parmi les différents diagrammes entrant en jeu pendant les

phases de modélisation techniques, le diagramme de classes nous permet de modéliser notre

modèle métier.

Un outil de modélisation UML générera assez facilement les sources de nos classes

persistantes. En le personnalisant, il serait possible de générer directement les fichiers de

mapping. Cette personnalisation par un métamodèle définissant

4. Impact sur les performances générales

4.1. Test de performances

Les tests unitaires ne sont pas les seuls à effectuer dans un projet informatique. Ils

garantissent la non-régression de l’application et permettent de tester un premier niveau de

services fonctionnels. Ils doivent en conséquence être complétés de tests fonctionnels de plus

haut niveau.

Ces deux types de tests ne suffisent pas, et il faut éprouver l’application sur ses cas

d’utilisations critiques. Ces cas critiques doivent résister de manière optimale (avec des temps

de réponse cohérents et acceptables) à un pic de montée en charge. On appelle ces derniers

tests « tests de montée en charge » ou « stress test » en anglais. Ils permettent généralement de

tester aussi l’endurance des applications. Load runner de Mercury est une solution qui permet

de tester efficacement la montée en charge des applications. Il existe d’autres solutions, dont

certaines sont gratuites.

36/8

Page 39: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Les stratégies de test de performance des solutions de persistance sont complexes à

mettre en œuvre, car elles doivent mesurer l’impact d’un composant (par exemple, le choix

d’un framework) donné sur une architecture technique physique.

Les éléments à prendre en compte lors d’une campagne de tests de performance sont les

suivants :

flux réseau ;

occupation mémoire du serveur d’applications ;

occupation mémoire de la base de données ;

charge CPU du serveur d’applications ;

charge CPU de la base de données ;

temps de réponse des cas d’utilisation reproduits.

Figure 2.14 : Architecture du test

Cet exemple simplifié vaut pour des applications de type web uniquement. Dans le cas de

client riches, il faudrait aussi intégrer des sondes de mesure sur les clients.

Le site Torpedo (http://www.middlewareresearch.com/) propose une étude comparative des

solutions de persistance. Ce benchmark ne se fonde cependant que sur les le nombre de

requêtes générées par les différents outils pour une application identique. De plus, le cas

d’utilisation employé est d’une grande simplicité, puisqu’il consiste en la manipulation d’un

modèle métier de moins de cinq classes persistantes.

Un tel comparatif est d’un intérêt limité. En effet, les outils de persistance sont bien plus

que de simples générateurs de requêtes SQL. Ils gèrent un cache et la concurrence et

permettent de mapper des modèles de classes relativement complexes. Ce sont sur ces

37/8

Page 40: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

fonctionnalités qu’il faut les comparer. De plus, un outil générant deux requêtes n’est pas

forcement moins bon que son concurrent qui n’en gère qu’une. Enfin, une requête SQL

complexe peut s’exécuter dix fois plus lentement que deux requêtes successives pour un

même résultat.

Dans cette optique, le test de performance suivant permet de constater qu’une mauvaise

utilisation d’Hibernate peut impacter dangereusement les performances d’une application. Il

démontrera à l’inverse qu’une bonne maîtrise de l’outil permet d’atteindre des performances

proches d’une implémentation à base de JDBC. Ce test a été réalisé par Anthony Patricio, un

des membres de l’équipe d’Hibernate

La figure 2.15 illustre une portion du diagramme de classes d’une application métier

réelle qui entre en jeu dans un cas d’utilisation critique. Ce qui est intéressant ici est que ce

graphe d’objets possède plusieurs types d’associations ainsi qu’un arbre d’héritage.

Figure 2.15 : Modèle objet ayant servit au test

La base de données stocke :

38/8

Page 41: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

- 600 instances de la classe A.

- 7 instances de la classe B.

- 50 instances de la classe C.

- En moyenne, 5 instances de la classe D sont associées par instance de la classe A.

- 150 instances de la classe E.

- 10 instances de la classe F, dont 7 de F2 et 3 de F1.

- 20 instances de la classe G et 1 de H.

Comme on peut le constater, la base de données est volontairement peu volumineuse.

Concernant l’architecture logicielle, l’objectif est de mesurer l’impact d’une mauvaise

utilisation d’Hibernate sur le serveur et les temps de réponse. Les testeurs ont donc optés pour

une implémentation légère à base de servlets (avec Struts) et d’Hibernate, le tout tournant sur

Tomcat. Les configurations matérielles des machines hébergeant le serveur Tomcat et la base

de données relationnelles (Oracle) sont de puissance équivalente. La problématique réseau est

masquée par un réseau à 100 Mbit\s.

L’objectif est de mesurer l’impact d’une mauvaise utilisation d’Hibernate avec un petit

nombre d’utilisateur simulés (une vingtaine).

L’énumération des chiffres des résultats du test n’est pas importante en elle-même. Ce

qui compte est avant tout leur interprétation. Alors que le nombre d’utilisateurs est faible, une

mauvaise utilisation d’Hibernate double les temps de réponse, multiplie par quatre les allers-

retours avec la base de données et surcharge la consommation CPU du moteur de servlets. Il

est facile d’imaginer l’impact en pleine charge, avec plusieurs centaines d’utilisateurs.

Il est donc essentiel de procéder à une expertise attentive d’Hibernate pour ses

applications. Mal maîtrisé, un tel outil peut apporter plus de problèmes qu’en résoudre dans

un projet. Dans le cas contraire, il peut apporter des gains de temps en développement

considérables sans pour autant freiner de manière excessive les performances.

4.2. Les caches

39/8

Page 42: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Hibernate propose deux niveaux de cache. Le premier niveau est spécifique à chaque session

crée par Hibernate. Le second est partagé entre toutes les sessions Hibernate en cours :

Cache de niveau 1 : Hibernate stocke tous les objets persistants dans une zone de travail

propre à chaque session. Il permet de limiter le nombre d’accès en base de données pour

une session donnée. Ce cache ne peut être désactivé mais vider à la demande.

Cache de niveau 2 : contrairement au précédent cache, celui-ci est optionnel et commun à

toutes les sessions Hibernate. Il est possible de choisir en plusieurs implémentations de

cache niveau 2 – EHCache, JBossCache, OSCache… Ce cache permet d’accroître les

performances sur les points les plus sollicités de l’application. Il propose des stratégies en

lecture seule ou lecture et écriture.

5. Vers une solution unique

Gavin King, qui a crée Hibernate pour pallier les lacunes des EJB 1.1, a depuis lors rejoint

le groupe d’experts chargé de la spécification JSR 220 des EJB 3.0 au sein du JCP (Java

Community Process).

La figure 2.16 illustre l’historique de la persistance en mettant en parallèle EJB, JDO et

Hibernate. Les blocs EJB Specs et JDO Specs ne concernent que les spécifications et non les

implémentations, ces dernières spécifications (JSR 243 pour JDO 2.0 et JSR 220 pour EJB

3.0) ne sont pas encore finalisées au premier trimestre 2005. Les détails sont consultables à

l’adresse http://www.jcp.org/en/jsr/all.

40/8

Page 43: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 2.16 : Historique des solutions ORM.

Deux raisons expliquent la coexistence des spécifications EJB et JDO. La première est

qu’EJB couvre beaucoup plus de domaines que la seule persistance. La seconde est que

lorsque JDO est apparu, EJB ne pas efficacement aux attentes de la communauté Java.

Depuis la donne a changé. Il paraît désormais inutile d’utiliser conjointement EJB 3.0 et

JDO 2.0. C’est la raison pour laquelle la proposition de spécification JSR 243 a été refusée

par le JCP le 23 janvier 2005. Le problème est qu’en votant non à cette JSR, le JCP ne

garantissait plus la pérennité de JDO, alors même qu’une communauté existe déjà. La réaction

de cette communauté ne s’est pas fait attendre et a nécessité un second vote, cette fois

favorable, le 7 mars 2005.

L’existence des deux spécifications est elle une bonne chose ? A l’évidence, il s’agit d’un

frein à l’adoption d’une seule et unique spécification de persistance. Certains estiment

toutefois que le partage du marché est sain et que la concurrence ne fera qu’accélérer l’atteinte

d’objectifs de qualité. Un effort important est cependant déployé pour que les deux

spécifications finissent par se rejoindre à moyen terme.

Pour atteindre cet objectif, l’adhésion des vendeurs de serveurs d’applications sera

décisive. Historiquement, ils ont déjà renoncé à JDO et sont liés aux EJB. Leader du marché,

JBoss implémente déjà la plupart des spécifications EJB 3.0. Oracle, propriétaire actuel de

TopLink, a également produit une implémentation des EJB 3.0 pour son serveur

d’application.

L’apparation des EJB 3.0 a solutionné les problèmes suivant :

41/8

Page 44: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Les classes persistantes ne sont plus liées à l’architecture technique puisqu’elles n’ont plus

besoin d’hériter de classes techniques ni d’implémenter d’interfaces spécifiques.

La conception objet des applications n’est plus bridée et l’héritage est supporté.

Les applications sont faciles à tester.

Les métadonnées sont standardisées.

42/8

Page 45: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

III. Développement et mise en place d’un outil de GRC

1. Contexte

1.1. Relation du stage précédent

Ce stage est la continuité de celui que j’avais entrepris l’année dernière, dans le cadre de

ma deuxième année d’ingénierie. Pendant ce stage, j’avais été amené à réaliser toute la partie

analyse et étude du besoin pour la conception d’un outil de gestion de la relation client

(GRC), en collaboration avec un autre stagiaire d’une autre école.

Infotel dispose actuellement d’un outil, nommé « Sales », pour que ses commerciaux

puissent gérer leurs contacts et leurs affaires. Mais les performances de ce dernier laissant à

désirer, et étant bâti autour d’une technologie vieillissante – MS Access – Infotel Toulouse à

décidé d’entreprendre la création d’un nouvel outil et d’en confier le développement à son

antenne de Bordeaux.

Mon stage de l’année précédente consistait donc dans un premier temps à réaliser une

étude du besoin et à rechercher dans le monde de l’open source si un outil pouvant répondre

au besoin. Après avoir passé en revu de nombreux logiciels, nous en sommes venu au fait que

très peu d’entre eux pouvaient répondre au besoin assez spécifique d’Infotel. Nous en avons

néanmoins sélectionné une demi-douzaine, pour les étudier plus en détails. Bien que leur

couverture fonctionnelle était assez pauvre vis à vis de notre projet, certaines de leurs

caractéristiques étaient assez intéressantes pour être reprises et inclut dans nos spécifications

détaillées.

Au final, nous avons décidé de partir d’un projet vide, basé sur la technologie J2EE,

avant tout dans un but pédagogique. Nous avons donc réalisé un dossier d’architecture – sorte

de nomenclature des différents outils de développements et technologies utilisés – et conçu

43/8

Page 46: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

une première maquette de l’application. Nous avons ainsi fait les premières étapes d’un cycle

en V précédant le codage :

Figure 3.1 : Cycle en V

1.2. Objectifs du stage

Avant de commencer ce stage, il était clair que l’objectif principal de celui-ci serait

d’achever l’application de gestion de la relation client. Toutefois, nous avons très vite appris

que l’application de GRC n’était pas la seule en cours de restructuration.

A l’initiative d’Infotel Toulouse et en collaboration avec Infotel Bordeaux, les

développements internes ont été normalisés et mutualisés. Un document avait même était crée

pour établir certaines normes de choix techniques, mais également certains éléments plus

basique de programmation : utilisation de pattern, proscription d’anti-pattern.

Ainsi, en plus de devoir respecter certaines normes de développement, notre application

et les autres en cours de développement se devaient de partager des composants communs. A

terme, Infotel souhaite pouvoir créer rapidement de nouvelles applications à partir des

anciennes, en réalisant par exemple un framework interne.

Toutefois, notre objectif principal restait d’achever le développement de cette application,

jusqu’à sa mise en place sur un serveur de production. Cela ne se résume donc pas

simplement à de la programmation. Une phase importante de tests, la reprise des données de

44/8

Page 47: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

l’ancien système d’information et la rédaction de la documentation utilisateur et de la

documentation technique sont autant d’aspects à ne pas négliger.

Dans son ensemble, sur une durée totale de neuf mois, j’aurais ainsi pu aborder

l’ensemble des phases de gestion d’un projet.

1.3. L’équipe de développement

J’ai effectué la totalité de ce stage en collaboration avec au moins une personne.

Contrairement à l’année précédente, l’équipe a été en constante évolution tout au long du

stage.

Pendant les premières semaines, j’étais avec le même collègue que mon stage de l’année

dernière, un élève en 3ème année d’ingénierie. Puis très vite, nous avons été mis en contact

avec une stagiaire d’Infotel Toulouse en master 2 en informatique. L’équipe de Toulouse a

par la suite grossit pour atteindre quatre stagiaire, répartis sur deux projets internes. De notre

côté, un étudiant en master 1 en informatique nous a rejoint en mai, suivi par un élève de

deuxième année d’ingénierie de l’EPSI en juin. Le premier des deux arrivants ayant déjà une

expérience de développement en J2EE, il a pu participer au développement. En revanche le

deuxième, arrivé plus tardivement et n’ayant pas de réels expérience dans ce domaine nous a

prêté main forte sur les taches de fin de projet.

D’un point de vue commutation, il n’y a pas eu de réels soucis à Bordeaux. Nous

occupions une salle, séparée de l’équipe de développement salariée. Nous pouvions donc

parler librement, nous déplacer, ou nous montrer nos écrans. Cela fut forcément un peu plus

délicat pour Toulouse. En effet, nous avions la possibilité de communiquer soit par courrier

électronique, soit par téléphone, et pouvions échanger des documents et des données via un

serveur commun ou un espace nous était réservé. Malgré cela, les projets, des deux côtés,

étant en constante évolution, il n’était pas toujours aisé de tenir au courant l’équipe

toulousaine des changements et de l’évolution des spécifications fonctionnelles et

réciproquement. Le point le plus épineux résidait dans le développement de composants

communs, qui devaient répondre aux besoins de plusieurs applications. Ces composants ne

45/8

Page 48: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

pouvaient être développés que par une équipe simultanément. Nous nous sommes donc

partagés la création des ces composants.

1.4. Les ressources matérielles

En ce qui concerne le matériel, nous disposions bien entendu chacun d’un ordinateur

personnel, relié au réseau de l’entreprise. Nous avions également accès au serveur CVS

(Concurrent Versions System).

Le principe d’un serveur CVS est de déposer les sources d’un projet sur un serveur

unique et centralisé. De ce fait, il évite aux développeurs de devoir s’échanger manuellement

les fichiers qu’ils viennent de créer, modifier.

Un serveur de démonstration a également été mis en place, pour que toutes les

personnes concernées par le projet puissent avoir accès à n’importe quel moment à notre

prototype. Ce serveur a été mis en place au cours du mois de mai, dés la réalisation d’un

prototype possédant déjà un certain nombre des fonctionnalités demandées.

1.5. Portée du stage

A l’origine, cette application devait uniquement remplacé l’ancienne application de

gestion de la relation client – Sales – pour les raisons citées précédemment. Cependant, nous

avons appris, mon collègue et moi-même, que cette application serait également utilisé sur les

sites de Nantes et Rennes, qui ne disposait à ce jour ni de Sales, ni de réel outil de GRC. Ce

nouveau besoin a été confié à mon maître de stage par m. Jean-Marie Meyer, directeur

d’Infotel Grand Ouest (Toulouse, Bordeaux, Nantes et Rennes) se situant à Toulouse.

1.6. La gestion du projet

Comme il l’a été dit précédemment, nous avons adopté un cycle en V pour créer ce projet.

Un des points très appréciable et très enrichissant de ce stage fut que la gestion du projet nous

46/8

Page 49: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

avait été confiée. Bien entendu, nous n’étions responsable du travail de personne, ni ne

donnions de tâches à personne. Mais nous étions tenus de tenir certains délais, d’établir et de

présenter un planning de développement à notre maître de stage et de nous répartir les taches

entre nous quatre. Cela ne paraît pas évident à première vue, et ne l’est en effet pas toujours !

Estimer avec justesse une tache de développement relève de l’empirisme. Or, quand on

aborde un terrain inconnu, ici le J2EE et ses multiples frameworks et bibliothèques, il ne reste

que l’expérience passé sur d’autres projets et sur d’autres technologies.

Nous avions également une relative liberté d’un point de vue choix technologiques.

Relative, car nous avions certaines contraintes en rapport avec les serveurs de production

d’Infotel. Certaines parties n’en avaient en revanche aucune et nous laissait donc le choix.

Dans cette partie, après avoir présenté l’application réalisée au cour de ce stage, nous

parcourrons les cinq dernières étapes du cycle en V. Pour la partie codage, je parlerai

principalement de l’architecture choisie et des frameworks utilisés pour développer

l’application, car cela représente une partie significative de mon stage. Je ne traiterais pas le

code produit par ceux-ci, mais plutôt l’apport qu’ils apportent en termes de gestion de projet.

2. L’application

2.1. Genèse du projet

Le principal rôle d’une application de gestion de relation client est de conserver une

trace de tout événement ayant eu lieu avec un client ou un contact de l’entreprise. La GRC a

pour but de fidéliser le client et de lui fournir une qualité de service optimale. La finalité est

donc de lui procurer un sentiment de service personnalisé. En clair, cela signifie

principalement de pouvoir enregistrer un maximum d’informations pertinentes concernant un

client et de pouvoir y accéder simplement.

Des logiciels de ce type existent évidemment déjà sur le marché, dans le monde du libre

comme dans celui du payant. Une étude menée l’an passé nous a révélée que chacun de ces

logiciels ne dispose que d’une pauvre couverture fonctionnelle et d’une architecture trop

lourde pour être reprise efficacement. L’application réalisée au cours de ce stage a été

développé depuis un projet vide, de manière à parfaitement s’adapter aux exigences d’Infotel.

47/8

Page 50: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.2. Les besoins fonctionnels

Les commerciaux d’Infotel disposent d’un accès à un logiciel de GRC avec une base de

données commune à toutes les agences. Un commercial est lié à une et une seule agence.

Cette agence gère plusieurs sociétés, et assigne à chacune au moins un commercial, ou

plusieurs dans le cas de clients importants. Un commercial peut s’occuper de plusieurs

sociétés en même temps. Ces sociétés possèdent toutes au moins un contact avec qui les

commerciaux communiquent. Une société peut bien entendu posséder plusieurs contacts.

Lorsqu’un commercial d’une agence et un contact d’une société échangent des

informations de quelque manière que ce soit (e-mail, téléphone, rendez-vous…), cela donne

lieu à un événement. Un événement s’inscrit dans un contexte que l’on appelle une affaire.

Une affaire est donc en réalité un ensemble d’événements, de même type (prospection, vente

d’un logiciel), relatifs à une société. Un événement n’est donc lié qu’à un seul commercial et

un seul contact. Une affaire, elle, n’est pas liée aux contacts et seuls les contacts de la société

et les commerciaux gérant celle-ci pourront générer un événement dans cette affaire.

Chaque affaire possède une plate forme technologique, c'est-à-dire un ensemble de

détails techniques qu’il est nécessaire de connaitre lors de l’affaire. En bref il s’agit du

matériel et de l’ensemble des technologies mis à disposition par la société pour l’affaire. La

durée maximale d’une affaire étant indéfinie, une société peut changer de plateforme

technologique, ou en posséder de nouvelles au fil du temps. C’est pour cela qu’une affaire, et

par conséquent une société, peuvent posséder plusieurs plateformes technologiques.

Il est possible qu’une société appartienne à un ensemble de sociétés : un groupe. Une

société n’étant désignée que pour une seule adresse géographique, il peut s’agir simplement

d’une des agences de cette société (un exemple : France Télécom Bordeaux lac, membre du

groupe France Télécom).

Nous avons réalisé la conception du MCD (cf. Annexe I) et du MPD (cf. Annexe II) de

cet existant.

48/8

Page 51: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.3. Ergonomie

L’ergonomie de l’application fut un point très discutée de l’application sur laquelle nous

avons du revenir à plusieurs reprises pour toujours satisfaire les exigences d’Infotel. Une

première maquette avait été réalisée un an auparavant, en version statique (HTLM, CSS et

javascript). Nous n’avions eu des retours sur celle-ci de la part de seulement deux

commerciaux. Au début de stage, nous avons heureusement eu les impressions de l’ensemble

des commerciaux toulousains et bordelais, ainsi qu’une contrainte supplémentaire

d’homogénéisation des applications internes à Infotel. L’interface a donc complètement été

repensée, comme en témoigne les annexes I et II.

Le premier gros changement s’est effectué au niveau de la navigation par pop-up. En

effet, un système de navigation sur différentes fenêtre est en règle générale plus adaptée à un

interface d’un client lourd qu’à celle d’une application web. Les pop-up ont donc été

supprimés. Leur contenu devant désormais s’afficher dans la fenêtre principale.

Le deuxième changement notable s’est fait sur le menu. A l’origine disposé en haut de

l’application, horizontalement, il a été déplacé sur la gauche et devait s’affiché alors

verticalement. Nos anciens pop-up contenant des onglets, il a fallu trouver une alternative à

ceux-ci : chaque point de menu devait disposer alors d’un sous menu, donc chaque partie

représente un onglet.

Enfin, on notera également que l’entête a subi une forte diminution de hauteur, de

manière à ne pas occuper une trop grande proportion de l’écran pour les faibles résolutions, et

l’apparition d’un pied de page.

Nous avons ensuite élaboré les différents composants de la maquette (tables, barre de

recherche, formulaires, etc…) en intégrant et en mélangeant les divers composants crées dans

les précédentes maquettes des logiciels de GDA, développé par l’équipe toulousaine et de

GRC.

49/8

Page 52: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.3.1. La barre de recherche

Cette barre de recherche est l’origine fortement inspirée d’un logiciel de GRC libre :

vTiger. Elle a toutefois subit quelques modification pour coller parfaitement au besoin

d’Infotel.

Le principe de cette barre est très simple. Elle est tout d’abord constitué de trois champs

texte, chacun associé à un combo box, contenant une liste de champs de recherche – comme

par exemple nom, ville, code postal, etc…. Il est donc possible d’effectuer grâce à cette barre

une recherche en précisant simultanément trois critères. Pour une recherche plus rapide, il est

également possible de n’afficher que des entités ne commençant que par une lettre donnée de

l’alphabet, en cliquant sur un des 26 boutons prévus à cet effet.

Le but de cette barre est avant tout de trouver et d’accéder rapidement à une

information, et non d’afficher une quelconque liste statistique.

2.3.2. Le fil d’Ariane

Ce composant est présent sur de nombreux sites, car il présente deux gros atouts pour

l’utilisateur :

Il permet de se situer dans l’application : après avoir ouvert et refermer plusieurs

sections, il n’est pas toujours évident de savoir où l’on se situe par rapport à la racine

de l’application.

Il permet de revenir rapidement en arrière : une fois l’information acquise, il est

possible grâce à cet élément de revenir à n’importe quel endroit de l’application

précédemment ouvert.

Remarque : ce composant est en général présent sur des sites tels que les forums.

50/8

Page 53: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.3.3. Le menu

Le menu possède une petite particularité donc il est intéressant de parler ici. Bien que

statique à première vue, ce menu peut ouvrir un sous menu en fonction du point de menu sur

lequel l’utilisateur a cliqué. En effet, les liens contenus dans les sous menu n’auraient aucun

sens si un certain contexte n’avait pas été ouvert préalablement.

Prenons par exemple le point de menu « Sociétés ». En cliquant dessus, l’application

affiche la liste des sociétés connus. Le menu reste pour l’instant inchangé. En revanche, en

cliquant sur une des sociétés de la liste affiche les informations relatives à celle-ci, ainsi que le

sous menu « Société », contenant des liens supplémentaire permettant d’afficher les contacts

de cette sociétés, sa liste d’affaire ou des informations sur sa plateforme technologique.

Si l’utilisateur clique ensuite le point de menu « Affaires », le sous menu se ferme, et le

menu revient à son état initial.

Ce type de menu permet donc de regrouper les informations concernant une entité en

différentes catégories, à la manière des onglets.

2.4. Fonctionnalités

On peut diviser l’application en trois sections distinctes :

2.4.1. Section accès aux données

Cette partie regroupe les points de menu « Sociétés », « Contacts », « Affaires » et

« Evénements ». A l’intérieur de cette section, chaque rubrique se comporte grosso modo de

la même manière. Chacune d’entre elles permet soit de visualiser des informations saisies

dans la base de données, soit d’en insérer de nouvelles.

Le schéma de navigation se déroule toujours de la même manière : en cliquant sur une

des rubriques, une première page contenant une barre de recherche – décrite précédemment -

et une table de données vide s’affiche. En effet, l’application n’effectue aucune requête non

51/8

Page 54: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

spécifiée par l’utilisateur. Ainsi, à partir de cette page, il est possible soit d’ajouter une

nouvelle entité soit d’effectuer une recherche afin d’accéder à une information particulière.

Dans le cas d’un ajout, un formulaire permettant d’enregistrer une nouvelle entité

s’affiche alors.

Dans le cas d’une recherche, les entités répondant aux critères spécifiés seront affichés

sur la même page, dans la table qui était jusqu’à présent vide. Les résultats sont paginés sur un

nombre prédéfini dans les spécifications de manière à ne pas surcharger le serveur et à garder

une bonne lisibilité pour l’utilisateur. Un clic sur une des lignes de cette table affichera les

informations détaillées sur l’entité représentée par ces lignes. Ces informations sont

présentées dans un formulaire similaire à celui de l’ajout, mis à part que les champs sont bien

entendu remplis.

2.4.2. Section états et statistiques

Actuellement, cette partie permet seulement d’afficher et d’imprimer des états, via la

rubrique « Reporting » du menu. Elle a été nommée ainsi en prévision de futures fonctions,

notamment l’affichage de statistiques, qui pourraient être demandées dans une prochaine

version.

En réalité, cette partie ne permet donc pour l’instant que d’afficher une liste d’états. Ces

états peuvent être affichés sous différents formats (PDF, Excel, Word) ou être imprimés

directement.

2.4.3. Section administration

Cette section est, comme son nom l’indique, réservée aux administrateurs. Elle permet

de modifier les tables de paramètres, comme par exemple la table « civilité », de gérer les

comptes utilisateurs et les différentes agences d’Infotel.

L’application GRC comporte une douzaine de tables de paramètres. Il a été décidé de ne

pas laisser aux utilisateurs la possibilité d’enrichir ces tables, pour éviter qu’elles deviennent

trop volumineuse et donc difficilement utilisables. C’était par exemple le cas dans l’ancienne

52/8

Page 55: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

application, « Sales ». On pouvait y recenser plus de cinquante fonctions de salariés

différentes.

3. L’architecture technique

D’un point technique, ce projet possède une seule contrainte, celle de réaliser un client

léger. Plusieurs type d’architecture sont possibles pour réaliser une application de ce genre :

PHP/MySql, J2EE, Ruby on Rails, Ajax, DotNet etc.…

Dans un but pédagogique, afin que nous nous formions et acquérions une nouvelle

expérience pendant ce stage, il a été décidé que nous développerions ce logiciel autour d’une

architecture très populaire à l’heure actuelle : J2EE.

3.1. Introduction à J2EE.

3.1.1. Définition.

Comme son nom l’indique, Java 2 Enterprise Edition est destiné aux gros systèmes

d’entreprises. Les logiciels employés à ce niveau ne fonctionnent pas sur un simple PC mais

requièrent une puissance beaucoup plus importante. Pour cette raison, les applications doivent

être constituées de plusieurs composants pouvant être déployés sur des plates-formes

multiples afin de disposer de la puissance de calcul nécessaire.

En effet cette technologie, qui est totalement gratuite, fournit un ensemble de composants

standardisés facilitant le déploiement des applications, des interfaces définissants la façon

dont les modules logiciels peuvent être interconnectés, et les services standards grâce

auxquels ces modules peuvent communiquer.

53/8

Page 56: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

3.1.2. Pourquoi J2EE ?

J2EE met à la disposition du développeur toute une infrastructure, une multitude de services,

nécessaires au développement d’applications d’entreprise. Un grand nombre de

fonctionnalités sont mises à contribution au niveau système de façon à produire des

applications robustes, sûres, faciles à entretenir et susceptibles d’accompagner

l’accroissement des besoins.

Concevoir une infrastructure distribuée n’est pas une mince affaire. C’est pourquoi les

architectures basées sur J2EE sont intéressantes. Tous les éléments fondamentaux sont déjà en

place. Concevoir une infrastructure spécialement adaptée à des besoins spécifiques

nécessiterait un temps et un investissement considérables. De plus, même en cas de succès,

cette infrastructure ne pourrait recevoir aucun composant standardisé et ne pourrait interagir

avec aucune autre application développée par ailleurs. Cela impliquerait donc un travail

considérable pour une solution non satisfaisante.

3.1.3. L’architecture multitiers

Une des thèmes récurrent du développement d’applications J2EE est la décomposition

de celles-ci en plusieurs niveaux, ou tiers (de l'anglais tier, signifiant étage ou niveau). Il

s’agit là d’une des pierres angulaires de J2EE, ce qui justifie une petite explication.

Une application est composée de trois couches fondamentales.

La première a pour rôle d’afficher les données pour l’utilisateur, et de collecter les

informations qu’il saisit. Cette interface est appelée couche de présentation car sa

fonction consiste à présenter les données à l’utilisateur et à lui permettre de fournir des

informations au système. La couche de présentation est la partie de l’application

responsable de la création et du contrôle de l’interface présentée à l’utilisateur et de la

validation de ses actions.

Sous cette couche de présentation, on trouve la logique métier qui permet à

l’application de fonctionner et de traiter les données. Dans une application de paye par

exemple, la logique métier multiplie les heures travaillées par la salaire horaire pour

54/8

Page 57: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

déterminer combien chaque employé doit toucher. La logique métier est mise en

œuvre à partir des règles métiers. Cette partie de l’application constitue l’essentiel du

tiers médian.

Toutes les applications d’entreprise ont besoin d’écrire et de lire des données. Cette

fonctionnalité est assuré par la couche d’accès aux données également appelée

couche de persistance, qui assure la lecture et l’écriture à partir de différentes sources.

L’architecture J2EE est basée sur une la notion d’application n-tiers. Grâce à cette

architecture, il est facile de construire des applications performantes et fiables basées sur des

applications à 2, 3 ou n-tiers (généralement 5). J2EE fournit toute l’infrastructure nécessaire.

Figure 3.2 : Architecture 5-tiers

3.2. Choix du serveur Web/applicatif J2EE.

Nous n’avions que peu d’expérience vis-à-vis des différents serveurs applicatifs J2EE.

Le rapport d’architecture que nous avions pour référence préconisait l’utilisation de JBoss, un

55/8

Interface utilisateur

Modèle métier

Règles métier

Correspondance Objets

métier/sources de données

Accès aux données

Page 58: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

logiciel libre et gratuit. En effet, dans le domaine des serveurs d’applications libre, seuls

existent JOnAS et JBoss AS.

JBoss est soutenu par une large communauté de développeurs, et on peut ainsi trouver

beaucoup d’informations à son sujet sur Internet. Il met en œuvre la technologie JMX

Microkernel pour la gestion et l’administration du serveur Applicatif. Cette technologie le

rend modulaire, extensible, et permet l’administration de l’ensemble des services activés dans

JBoss sous une interface Web unique.

Le serveur Applicatif JBoss qui intègre le moteur de servlet Tomcat présente les

caractéristiques suivantes :

Bonne performance ;

Serveur application largement répandu et Open Source ;

Multi plateforme

Support complet de la norme J2EE 1.4 (serveur applicatif certifié)

possibilité d’administration de l’ensemble des services au travers d’une interface Web

unique ;

déploiement à chaud d’applications ou de composants.

Au vue de ses qualités, nous l’avons donc choisi pour notre projet.

3.3. Choix de la version de la machine virtuelle Java (JVM).

La plate-forme J2EE définit un ensemble de services normalisés (JDBC, JCA, Servlet,

JSP, JDO, JavaMail, EJB, JMS, JNDI, XML, Web Services, …) qui permettent de

standardiser le développement des systèmes d’information d’entreprise en java. L’utilisation

de ces services garantit aux applications la pérennité et leur assure la compatibilité avec la

totalité des serveurs d’application conformes à la norme.

On définit plusieurs niveaux de version pour la plate-forme J2EE, celle-ci étant

considérée habituellement comme suffisamment complète et mâture à partir de la version 1.2.

La conformité à la norme J2EE 1.2 est donc un seuil minimal à respecter. La dernière norme

publiée par Sun est J2EE 1.5 (JEE 5.0).

56/8

Page 59: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Or, le serveur applicatif choisi, JBoss AS, est certifié compatible J2EE 1.4 depuis juillet

2004. Toutefois il a depuis implémenté un support partiel de la JVM 1.5, surtout avec les EJB

3, qui incluent les génériques et les annotations.

Pour cette raison, nous choisissons J2EE 1.5.

3.4. Choix de la base de données.

En ce qui concerne la base de données, notre choix s’était rapidement tourné vers

PostgreSQL. Ce système de gestion de base de données est un produit libre, basé sur une large

communauté de développeurs et d’entreprise, et était de plus préconisé pour les applications

internes à Infotel. Cependant, il nous a été communiqué au cours du développement que le

SGBD utilisé sur les serveurs de recette et de production est en réalité MySQL. Nous avons

ainsi du effectuer une rapide migration.

Pour accéder à ses données, il nous un système qui assure la couche de persistance des

données. Il nous a été conseillé d’utiliser le Framework Hibernate, qui est également libre et

Open Source. En effet, il est parfaitement compatible avec notre serveur applicatif, et ne

restreindra pas les fonctionnalités de celui-ci.

Pour finir, nous utiliserons les drivers de l’API Java DataBase Connectivity propre à

notre SGBD.

3.5. Synthèse de l’étude.

L’architecture proposée se base sur les éléments suivants:

le moteur de servlets Tomcat 5.5 ;

le serveur EJB JBoss 4.0.4 ;

le serveur web Apache 2.2.3

un ensemble de pages JSP (dynamiques) ;

une base de données MySQL.

Cette architecture présente les caractéristiques suivantes :

57/8

Page 60: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

multiplateforme;

évolutivité;

coût de licence nul (utilisation de logiciels libres);

respect de la norme J2EE 1.4.

Le schéma ci-dessous présente l’architecture retenue:

Figure 3.3 : Schéma de l’architecture de la GRC.

4. L’architecture

La phase de codage à proprement parler a commencé un mois après le début de mon

stage et a duré trois mois. Je présenterais les différentes parties du développement en fonction

des couches à laquelle elles appartiennent, et non dans l’ordre chronologique de leur

traitement. Les spécifications pouvant rapidement évolué, nous avons du revenir de temps à

autre sur certaines d’entre elles.

En présentant l’architecture partie par partie, je vais donc montrer ce qu’aurait était un

développement fait « d’un bloc », avec des spécifications fixes. En effet, structurer un

programme en couches permet d’améliorer sa maintenabilité et de mieux répartir les

ressources humaines.

58/8

Page 61: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Lors du début du développement nous n’étions que deux et avions besoin de voir tous

les aspects d’une application 5-tiers. La répartition des taches s’est donc fait par modules,

plutôt que par couche.

4.1. Interface utilisateur

4.1.1. La maquette

L’objectif dans un premier temps était de concevoir une interface utilisateur dont

l’ergonomie conviendrait à toutes les applications interne en cours de développement. Lors de

la réunion du 22 mars, nous avons présenté notre maquette aux commerciaux d’Infotel

Toulouse et celle-ci n’a pas fait l’unanimité. La navigation a été tout d’abord remise en

cause : basée sur un système de pop-up et d’onglets, elle ne suivait pas les standard du web

pour certains. Bien que cette spécification n’ait pas été la seule à avoir été discuté, elle seule

suffisait pour nous faire refaire une autre maquette et de repenser complètement l’ergonomie.

Nous avons pu profiter de cette journée à Toulouse pour avoir un aperçu d’un des projets

toulousains – la gestion des candidatures (GDC) – et nous apercevoir des grosses divergences

d’un point de vue interface. D’une manière générale, seulement quelques spécifications

générales furent modifiées, mais une grosse partie des spécifications détaillées était à revoir.

A notre retour nous avons donc dans un premier temps réalisé une maquette, ou plutôt ce

que nous appellerons des modèles. Ces modèles sont en réalité deux ou trois pages d’exemple,

montrant la disposition des différents éléments d’une page (menu, fil d’Ariane, barre de

recherche, etc…), la structure elle-même des pages et de manière plus basique, les couleurs,

les polices et tout autre effet de style.

Du fait que nous n’ayons eu que quelques pages à réaliser, et que nous nous sommes

inspirés du meilleur des deux précédentes maquettes, celles de la GRC et de la GDC, cette

tache fut accompli en l’espace d’une semaine, bien plus rapidement que l’année précédente. A

la fin du premier mois de stage, nous étions donc presque aptes à commencer le

développement. Presque, car le framework à utiliser pour la couche présentation n’avait

toujours pas été décidé, et celui devait faire l’objet d’une étude.

59/8

Page 62: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4.1.2. Choix d’un framework de présentation

Une des tâche que nous devions accomplir dans les plus brefs délais était de choisir un,

ou plusieurs, frameworks de présentation. Pendant la réunion de Toulouse, nous en avions

retenu trois : Struts, JSF et Shale.

4.1.2.1. Struts

Struts est né d’un besoin de séparation entre l’interface utilisateur, les données, et les

actions. Il fait partie du projet Jakarta de l’Apache Sotfware Foundation. Il est de ce fait open-

source et bénéficie d’apports constants des développeurs de part le monde.

Ce framework permet la conception et l'implémentation d'applications Web de taille

importante et d'être gérées par différents groupes de personnes. En d'autres termes, les

designers, développeurs de composants logiciels peuvent gérer leur propre part du projet de

manière découplée. De plus, Struts est basé sur le design pattern MVC2.

D’un point de vue isolation des couches, il est très intéressant, car il s’appuie sur

l’architecture Modèle Vue Contrôleur (MVC) :

La vue représente ce que l’utilisateur voit. Aucun traitement n’est effectué dans cette

partie

Le contrôleur fait le lien entre la vue et le modèle. Il ne doit lui non plus effectué

aucun traitement. Il doit intercepter les différents événements levés par une vue,

appelé si nécessaire une méthode du modèle, et renvoyer une vue à l’utilisateur.

Le modèle est donc en charge d’effectuer tous les traitements : accès aux données,

traitement des données saisies par l’utilisateur ainsi que toutes les interactions avec la

base de données. Il représente

Voici un schéma qui illustre l’intégration d’une architecture MVC dans une architecture

5-tiers :

60/8

Page 63: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 3.4 : Principe du modèle MVC

4.1.2.1.1 Avantages de struts

Les avantages de Struts sont les suivants :

- validation automatique des formulaires du côté serveur,

- l’utilisation des taglibs permet de ne plus avoir de code Java dans les pages JSP,

- internationalisation facilitée,

- pour les applications complexes, Struts permet de voir l’application comme une suite

de composants de base : Vues, Actions, Modèles,

- lisibilité du code plus simple,

- permet de gagner en évolutivité,

- augmentation constante du nombre de personnes compétentes pour exploiter Struts,

- framework structuré,

- la librairie Tiles permet la structuration des pages,

- prend en compte les problèmes de sécurité et de performance.

61/8

Page 64: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4.1.2.1.2 Inconvénients de Struts

Ce framework n’a pas que des avantages :

- pour des applications Web très simple, Struts introduit un niveau de complexité et de

mise en route trop important.

- changement de version assez rapide

- nécessite un container de JSP à partir de la version 1.1 et de Servlet à partir de la

version 2.2

4.1.2.2. Java Server Faces

JavaServer Faces (JSF) est un framework d’applications web basées sur java EE qui a

pour but de simplifier le développement des interfaces utilisateur. JSF s’utilise conjointement

avec des JavaServer Pages, mais peut tout aussi bien se servir de d’autres technologies

d’affichage, telle que XUL.

4.1.2.2.1 Avantages de JSF

Les avantages de JSF sont les suivants :

- Architecture structurée autour des composants. Permet de créer des composants

personnalisés.

- Système de navigation statique et dynamique très souple.

- Personnalisation des labels (internationalisation, messages d’erreurs).

- JSF a été créé dans le but de permettre des développements de type RAD (liaison

champ/donnée).

- Séparation claire de la couche métier, permettant un prototypage efficace.

- Possibilité d’initialiser certains paramètres dans un fichier de configuration grâce

aux managed beans.

62/8

Page 65: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

- framework structuré.

- JSF est une spécification javaEE.

- génère une forte dynamique et une communauté grandissante.

4.1.2.2.2 Inconvénients de JSF

Ses désavantages sont les suivants :

- Framework relativement récent, et donc pas encore mûr.

- Documentation peu riche, du fait de sa maturité.

- Validation coté serveur uniquement.

4.1.2.3. Choix

Struts a été le premier de son genre à voir le jour. De ce fait, et de par l’aide

considérable qu’il apporte au développement d’applications web, il a su s’imposer en tant que

référence.

D’un autre côté, JSF a été créé en prenant ce dernier comme modèle, et a su garder ses

bons points, tout en améliorant certains autres. L’engouement autour de JSF est important,

mais n’est pas encore parvenu s’imposer comme standard. JSF est un projet encore jeune, ce

qui le fait souffrir d’un certain manque de documentation, et de quelques bugs (la version 1.2

non supporté par JBoss 4 par exemple).

Techniquement, les deux se valent. D’un point de vue méthode, un léger avantage se fait tout

de même sentir pour JSF, qui parait plus souple d’utilisation que son ainé.

En considérant de plus les avis des experts techniques d’Infotel, notre choix se porte

donc sur Struts.

63/8

Page 66: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4.1.3. Construction de la couche présentation à l’aide de Struts

La couche présentation est constitué d’un ensemble de pages appelées Java Server

Pages, ou plus simplement jsp. Ces pages sont en quelque sorte des pages HTML, enrichit

grâce à du pseudo-code java. A l’instar du PHP ou de Ruby on Rails, il est possible de rendre

dynamique ces pages qui sont à la base statique.

Plus précisément, ces pages doivent être contenues sur un serveur possédant un moteur

de jsp, tel que le célèbre Tomcat. Quand une page de cette sorte est demandée, le serveur

effectué un traitement prenant en entrée une page et restituant en sortie une page constituée

uniquement d’HTML, avant d’être renvoyée à l’utilisateur. C’est grâce à cela que les

applications web peuvent être ouvertes depuis n’importe quel navigateur, sans avoir besoin

d’installer un plugin, un framework autre machine virtuelle.

Struts possède quelques outils afin de faciliter la création de telles pages

4.1.3.1. Struts Tiles

En règle général, les pages d’une application web, ou même d’un site web, possède des

parties communes. Le plus souvent, ces parties sont l’entête, le menu et le pied de page. Mais

inclure ces parties dans chaque page est une solution à éviter.

En effet, le moindre changement sur une de ces parties impacterait de modifier

l’ensemble des pages contenant cette partie. Le code redondant est à bannir, car il est

difficilement maintenable, et cela vaut aussi pour les pages web.

Tiles propose une solution simple, et très efficace pour éviter ce problème : le

découpage des pages jsp en plusieurs jsp. Il est ainsi possible créer une page jsp, simplement

en en assemblant d’autre. Pour cela, il faut tout d’abord définir que ce que l’on appelle des

layout. Ils sont en réalité l’ossature de la page. Un layout va définir est agencer plusieurs

zones. Ensuite, à l’aide d’un fichier XML, les pages sont créées en définissant pour chaque

chacune :

un layout,

les pages jsp devant remplir chaque zone de la page

un nom, afin que l’on puisse l’appeler depuis le reste de notre application.

64/8

Page 67: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Ce système gère également un système d’héritage, qui permet de définir des modèles de

pages. Par exemple, on crée une page que l’on appellera « .exemple », constituée d’une partie

entête, menu, pied de page et corps. On définit la page jsp associée à chaque partie. Si l’on

souhaite par la suite crée une page « .exemple2 », dont seul le corps diffère de « .exemple », il

suffit de faire hériter « .exemple2 » de cette dernière, et de redéfinir sa partie corps.

4.1.3.2. Struts Taglib

Comme nous l’avons vu, les pages JSP sont constitué d’HTML et de pseudo-code java

appelé scriptlet. Le problème avec ces scriptlets et qu’il a très vite tendance à rendre difficile à

lire une page jsp en mélangeant deux types de syntaxes complètement différentes.

Dans le but de rendre plus compréhensibles les pages JSP, Struts fournit quatre librairies

de balises à incorporer directement dans nos pages web permettant de remplacer en majeur

partie les actions faites par les scriptlets :

Bean, permet d’effectuer des actions des entités java. Elle sert principalement à

récupérer des données.

HTML, permet uniquement de générer des composants HTML.

Logic, permet de remplacer toutes les structures de contrôles que l’on pourrait trouver

dans des scriptlets.

Nested est la réunion des trois librairies décrites ci-dessus. Elle n’apporte rien de plus

si ce n’est de toutes les regrouper.

4.1.3.3. L’intertionalisation

Même si l’application n’est pas destinée à être utilisée à l’étranger, il est d’usage de

prévoir une éventuelle traduction et de séparer complètement les libellés du code. Cela peut

être utile si le libellé venait tout simplement à être renommé, pour ne pas avoir à le traquer

dans toute l’application.

65/8

Page 68: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Struts permet cela grâce à la création d’un fichier de ressource, externe au code,

contenant tout les libellés. La structure de fichier est on ne peut plus simple, chaque ligne est

basée sur le même modèle : Une clé = un libellé, par exemple « menu.company = Société ».

Il suffit ensuite d’utiliser la clé associée au libellé souhaité dans nos pages JSP.

4.1.4. La sous-couche contrôle

Lors de l’envoi d’un formulaire au serveur, la première étape avant de traiter les

données est de vérifier que celles-ci soient conformes, comme par exemple le format des

dates, la présence des champs obligatoire, etc… Ce genre d’action est appelée la validation et

est gérée par une couche sous jacente de la couche présentation : le contrôleur.

Avec Struts, la validation peut s’effectuer de deux manières totalement différentes :

Côté client : la validation s’effectue à l’aide de contrôles réalisés en JavaScript, évitant

ainsi de trop nombreux échanges entre le client et le serveur, à l’aide du plugin

« Validator » de Struts. Le code JavaScript est généré automatiquement mais peut

bien entendu être remplacé par un script personnalisé. Toutefois, une validation côté

client reste en général superficielle. D’une part car elle peut ne pas avoir été effectué

(JavaScript désactivé, plantage du script), et d’autre par car elle ne peut avoir un accés

direct aux données présentes dans la base de données. Les contrôles d’intégrité des

données ne sont pas faisables par exemple. C’est pourquoi il est très fortement

recommandé d’effectuer systématiquement une validation côté serveur, et

accessoirement côté client.

Côté serveur : la validation s’effectue donc une fois que l’utilisateur a envoyé ses

données, qu’elles aient été pré-validées ou non (pour les raisons susmentionnées). Ce

contrôle consiste à implémenter une méthode qui sera appelée à chaque chargement du

formulaire.

Dans notre, nous nous sommes contentés d’effectuer une validation côté serveur

uniquement. Le serveur n’ayant pas à subir une charge trop importante, le serveur peut être

sollicité sans crainte d’une baisse trop importante des performances. Qui plus est, le

66/8

Page 69: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

JavaScript est langage auquel nous essayions de recourir le moins possible, du fait des

problèmes qu’il pose en terme de compatibilité entre navigateurs.

4.2. Le modèle de données

La couche métier contient un ensemble de classes représentant les entités dans la base de

données, mais modéliser sous forme d’objet. Pour simplifier au maximum le modèle de

données, une entité est représentée par une table dans la base de données et par une classe

dans notre application.

Ces classes n’effectuent aucun traitement des données à proprement parler. Leur unique

but est de stocker et de restituer un ensemble de valeurs dans des variables. Les méthodes, on

peut plus basique, permettant d’effectuer ces types d’actions sont appelées des getters (de

l’anglais to get qui signifie obtenir) et des setters (de l’anglais to set qui signifie définir). Une

classe uniquement constituée de variables, de getters et de setters est communément appelée

un Plain Old Java Object (POJO).

Notre couche modèle n’est donc en réalité qu’un ensemble de POJOs qui servent à relier

notre couche de logique métier avec celle d’accès aux données. Ces deux couches vont ainsi

communiquer uniquement via ces objets, et resteront donc relativement indépendante l’une de

l’autre :

- Dans un sens, après avoir effectué les traitements nécessaires, la couche de logique

métier va enregistrer les données une classe de type modèle et la transmettre à la

couche d’accès afin qu’elle y soit enregistrée.

- Réciproquement, si la couche de logique métier désire obtenir des données

provenant de la base, elle va les demander à la couche d’accès aux données qui les

retournera sous forme d’un ou plusieurs POJOs.

Cette structure permet ainsi de travailler sur chacune de ses couches sans se soucier de

quelconques dépendances. Les seules possibles sont en fonction du modèle de données, qui

est en général établit bien avant la construction de ces couches.

67/8

Page 70: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4.3. La couche de logique métier

La couche de logique métier est la partie de l’application qui la rend spécifique à un

besoin. C’est ici que toutes les règles métier vont prendre un sens et être activées. Jusqu’à ce

stade de l’application, l’utilisateur n’a saisi que des données brutes, en remplissant un

formulaire ou effectuant une action, comme cliquer sur un bouton « supprimer » par exemple.

Mais ce type d’action peut avoir une ou plusieurs conséquences sur le comportement de

l’application.

Prenons une règle métier simple provenant de l’application GRC :

«  La création d’une société entraîne automatiquement la création d’une affaire de type

prospection pour celle-ci ».

D’un point de vue utilisateur, la création d’une société ne doit pas changer : il doit se

contenter de remplir un formulaire. Une fois les données saisies et contrôlées, la couche de

logique métier va donc devoir se charger de cette tâche.

Toujours dans le but d’éliminer les dépendances entre couches, les données en entrée ne

sont non pas des formulaires, mais des POJOs. Les formulaires sont en effet gérés de manière

bien spécifique dans Struts comme nous venons de le voir. Si l’application devait changer de

framework de présentation, la couche logique métier ne serait donc pas à revoir.

4.4. Le framework Spring.

Il nous a vivement été conseillé par les experts techniques d’Infotel d’utiliser le

framework Spring. Celui-ci a vu le jour suite à la réaction de quelques développeurs par

rapport à la complexité de l’utilisation de certains éléments de J2EE, comme notamment les

EJBs. En effet, plutôt que d’avoir à implémenter une ou plusieurs interfaces ou d’hériter pour

chaque classe de notre application, Spring propose de les gérer par le biais de fichiers de

configuration. L’impact sur le code en est donc fortement réduit. Cette mise en œuvre simple

et efficace, qui lui vaut l’appellation de conteneur dit « léger », nous permet donc de

conserver notre architecture basée sur les POJOs.

68/8

Page 71: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Spring est constitué des modules suivants :

Figure 3.5 : Modules du framework Spring

Il permet d’intégrer trois différents concepts :

4.4.1. L’inversion de contrôle

Le pattern d’inversion de contrôle est aussi appelé principe d’Hollywood car il fait

référence à la phrase "Ne nous appelez pas, c'est nous qui vous appellerons".

En principe, une application fait appel à un ou plusieurs framework. Ici, l’inverse se

passe : c’est le framework qui fait appel à l’application. Le flot d’exécution du logiciel est

ainsi géré par le framework, ce dernier faisant appel à des blocs de code de l’application. Cela

n’a aucun impact sur le code à proprement parler, si ce n’est l’utilisation de quelques classes

spécifiques à

Ce principe permet de mettre en œuvre un autre principe, celui d’injection des

dépendances. Etant donné que le framework a le contrôle sur les instanciations d’objet, il

peut égaler « injecter » pour un objet père tous les objets fils dont il dépend. Ces dépendances

ont simplement besoin d’être décrites dans un fichier de configuration.

69/8

Page 72: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4.4.2. La programmation orientée aspect

Voici une définition tirée de Wikipédia : « La programmation orientée aspect (POA, en

anglais aspect-oriented programming - AOP) est un paradigme de programmation qui permet

de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une

application. Par exemple, le principe de l'inversion de contrôle (en anglais, IOC, Inversion Of

Control) peut être implémentée par AOP.

La programmation orientée aspect est une technologie transversale et n'est pas liée à un

langage de programmation particulier mais peut être mise en œuvre aussi bien avec un

langage orienté objet comme Python qu'avec un langage impératif comme le C, le seul

prérequis étant l'existence d'un tisseur d'aspect pour le langage cible.

4.4.3. La couche d’abstraction

La couche d'abstraction permet d'intégrer d'autres frameworks et librairies avec une plus

grande facilité. Cela se fait par l'apport ou non de couches d'abstraction spécifique à des

frameworks particuliers. Il est ainsi possible d'intégrer un module d'envoi de mails en toute

facilité.

Ce framework, grâce à sa couche d'abstraction, ne concurrence pas d'autres frameworks

dans une couche spécifique d'un modèle architectural MVC mais s'avère un framework multi-

couches pouvant s'insérer au niveau de toutes les couches; modèle, vue et contrôleur. Ainsi il

permet d'intégrer Hibernate pour la couche de persistance ou encore Struts pour la couche

présentation.

70/8

Page 73: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

4.4.4. Intégration de Spring à l’application

Lors du commencement du développement, l’intégration de Spring n’avait pas encore

été évoquée. Cela ne nous a été spécifié qu’environ un mois plus tard pour un souci

d’homogénéité et de mutualisation des applications internes. Cette intégration tardive ne nous

aura au final que peu handicapé. D’une part car nous devions assimiler le fonctionnement de

deux autres frameworks – Struts et Hibernate – et d’autre part car Spring est relativement

léger à mettre en œuvre dans un projet.

La première étape fut de décrire tous nos objets métier pour les instancier à l’aide du

framework (cf. paragraphe L’inversion de contrôle). Pour cela nous avons du effectuer un

léger refactoring (réécriture de certaines parties du code), notamment dans la partie contrôle –

gérée – Struts, afin d’éliminer presque totalement les dépendances avec la couche de logique

métier.

En second lieu, la couche d’abstraction aura permit d’utiliser plus facilement Hibernate,

en nous permettant de supprimer les appels à la classe HibernateUtil afin d’initialiser une

transaction.

Au final, l’intégration de Spring à notre projet nous a permit de mieux isoler les couches

applicatives, de clarifier certaines parties du code et de simplifier l’initialisation de notre

source de données.

71/8

Page 74: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

IV. Le projet DADS-U

1. Présentation du logiciel

1.1. La norme DADS-U

La Déclaration Automatisée des Données Sociales (DADS) est une formalité obligatoire

que les entreprises ont a effectuer chaque année. Cela consiste grosso modo pour une société à

déclarer ses salariés, leur nombre d’heures travaillées ainsi que le salaire qui leur a été versé.

Les informations individuelles transmises aux organismes de protection sociale leur

permettent de calculer les droits liés à chaque salarié.

Deux types de déclarations étaient réalisés par les entreprises, la DADS-TDS et la

DADS-CRC (caisses de retraite complémentaire).

Dans le cadre de la simplification administrative et de la modernisation des déclarations

sociales, le rapport du secrétaire d'état aux PME, au commerce et à l'artisanat auprès du

ministre de l'économie, des finances et de l'industrie, sous le titre "Simplifions : 37 mesures

pour les PME", prévoyait, dans sa mesure n°13, la fusion de la DADS-TDS et de la Dads-

CRC :

L'unification de ces normes a abouti à la DADS-U : Déclaration Automatisée de

Données Sociales-Unifiée. Elle permet aux entreprises d’utiliser un seul type de déclaration

unifiée pour l’ensemble des organismes.

1.1.1. Avantages

La déclaration par l'entreprise sous une forme unifiée, des seules informations utiles, induit

différents avantages :

72/8

Page 75: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Une économie de temps et de travail administratif.

Grâce à une norme unifiée intégrée dans son système de paie, l’entreprise peut accomplir

en une seule fois plusieurs déclarations nominatives des données sociales.

Une grande fiabilité grâce à une offre gratuite de services associés :

o une fonction de contrôle est disponible sur net-entreprises (www.net-entreprises.fr)

pour tester, qualifier les données avant l’envoi du fichier définitif et permettre un

meilleur traitement de la DADS-U dès sa réception en limitant les rejets.

o l’envoi d’un compte rendu d’exploitation et des solutions aux anomalies

d’identification des salariés facilitent une communication plus performante et

devancent les difficultés de gestion.

Un langage commun.

Tenu par des interlocuteurs clairement identifiés qui assurent une meilleure relation client

au travers des échanges entre l’entreprise et les différents organismes destinataires (Centres

Régionaux TDS, Institutions de Retraite Complémentaire, Institutions de Prévoyance et

Caisses de Congés Payés du Bâtiment et des Travaux Publics).

1.1.2. Le circuit de déclaration

Une déclaration implique plusieurs acteurs :

L’émetteur est la personne, morale ou physique habilitée à déposer au titre d’une ou

plusieurs entreprises la DADS-U. L’émetteur peut être l’entreprise ou un tiers

déclarant (SSII, cabinet comptable, centre de gestion agréé ...).

Les centres de dépôt sont les organismes chargés de réceptionner les DADS-U. Ces

centres sont en charge d’effectuer des contrôles de formes, mais également des

contrôles métier sur les déclarations. Si une anomalie est détectée lors de ces

contrôles, la DADS-U est refusée. Il existe 3 types de centres de dépôts différents :

73/8

Page 76: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

o Centres de Transfert des Données Sociales (TDS) : sites de gestion des

déclarations pour les partenaires TDS. Ils recueillent les DADS, les traitent et

diffusent les informations vers tous les partenaires TDS concernés

o Le portail net-entreprises est un Site de dépôt de déclaration mis en place par

les principaux organismes sociaux pour faciliter et privilégier la

dématérialisation des déclarations sociales via Internet

o Le site Sintia est un site de dépôt des déclarations pour les sociétés

d’assurances, ils recueillent les déclarations, traitent et diffusent les

informations vers tous les partenaires concernés.

Les organismes destinataires sont tous les partenaires concernés par la norme DADS

dont voici une liste non exhaustive : les organismes de sécurité sociale (l’URSSAF,

l’ACOSS, le CNAV..), les services fiscaux (la DGI, le CDI et les CDA), les

organismes de l’assurance chômage (l’Unédic et les Assedic), les organismes des

régimes de retraite du personnel des fonctions publiques territoriales et hospitalières

(CNRACL et IRCANTEC), les institutions de retraites complémentaires (Agirc-

Arrco)...

L’annexe V présente un schéma du circuit de déclaration.

1.2. Présentation technique du projet

1.2.1. L’architecture du logiciel

Le projet initial a été achevé il y a maintenant 2 ans. La solution proposée consiste en un

client lourd, bâti autour d’un environnement J2SE 1.3. L’interface a été entièrement réalisée

avec l’API Swing. Du fait des changements de la législation, l’application a besoin d’être

mise à niveau annuellement.

Le logiciel est composé de plusieurs modules, qui ne permettent pas seulement de créer

le message à envoyer. Il est possible de gérer toutes les données présentes dans la base de

74/8

Page 77: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

données, créer diverses éditions, ou effectuer les contrôles préalables afin de savoir si les

données sont bien conformes à la norme DADS-U.

Le schéma suivant illustre l’architecture du logiciel.

Figure 4.1 : Modules de DADSU

Un des points intéressants de l’application et qui mérite une explication est le processus

d’extraction des données.

75/8

Solution

DADS

2005

Fichiers de travail

PRSO

Fichiers de travail

PPUB

Module d’extraction des données

Base de données 

Regroupement des

données utiles issues

de l’application

PRSO ou PPUB (selon

statut de l’entreprise)Module de génération du fichier DADS-U

Génération du fichier DADS-U

Expédition

Editions diverses et sauvegardes

Soumission de l’extraction

Données à extraire pour la constitution du

fichier DADS-U

Paramétrage

Contrôles des données et mises à

jour

Page 78: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

1.2.2. Le mécanisme d’extraction

Afin de pouvoir conserver les données déjà saisies par tous les clients de Siemens, un

mécanisme d’extraction des données un serveur AS400 a été mis en place. Ce processus

nécessite une phase de préparation :

Une fois le logiciel installé, il est tout d’abord impératif de procéder au paramétrage de

l’application. Ce paramétrage consiste en générale à renseigner certaines équivalences entre la

codification de l’établissement et la codification DADS. En effet, les hôpitaux, relevant du

public, et les cliniques, relevant du privé, disposent de codes différents pour désigner une

même valeur. Un exemple concret : si la civilité « Monsieur » est désignée par le code « M »

par les hôpitaux, elle est représentée par « 01 » par les cliniques. La norme DADS possède

quant à elle sa propre codification. Pour chaque code du public, appelé la nomenclature

PPUB, ou chaque code du domaine privé, appelé nomenclature PRSO, il faut faire

correspondre un code de la nomenclature DADS. Cette dernière est obtenue en lançant un

processus : la préparation à l’extraction. Une fois le paramétrage effectuée, l’extraction peut

être lancée.

Toute demande d’extraction soumise depuis l’application DADS-U déclenche une série

d’opérations. En premier lieu, un service RPG, crée par Siemens, est exécuté sur l’AS400 afin

d’extraire toutes les données dans fichiers au format CSV (fichiers textes). Ces fichiers sont

mis sur un répertoire partagé de l’AS400. L’utilisateur peut suivre l’avancement de

l’extraction depuis l’application grâce à un système impliquant différents fichiers CSV

(« Extracti.CSV ») sollicités uniquement pour témoigner de la progression du processus.

Une fois l’extraction terminée, l’application peut désormais importer les fichiers CSV

dans sa base de données, grâce à un mécanisme d’importation.

Le schéma suivant illustre le mécanisme d’extraction des données depuis l’application

DADSU.

76/8

Page 79: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 4.2 : Fonctionnement de l’extraction

2. Mise à jour du projet

Les mises à jour du projet à réaliser concernent la quasi-totalité des modules, mis à part

celui de l’extraction. Le service RPG est en effet mis à jour directement par Siemens. Les

tâches sont regroupées de la manière suivante :

mise à exécution du cahier des charges.

Rédaction de plan de tests.

Rédaction des spécifications techniques.

résolution de bugs des versions précédentes.

Dans un premier temps, afin de me familiariser à l’environnement DADS, j’ai était

assigné sur le module d’édition, dont les changements ne provoquent aucun impact sur les

autres modules. La spécificité de cet environnement provient non seulement de la norme

DADS elle-même, et de son regroupement des données en structures et sous structures, mais

77/8

Page 80: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

également de la structure de l’application, techniquement parlant. L’application a été à la base

conçue en tenant compte des futures mises à jour que les modifications de la législation

entraînent. Ainsi, la majorité des classes à modifier héritent « en cascade » d’autres classes, et

peuvent implémenter plusieurs interfaces. Cela oblige à garder une certaine homogénéité du

code.

Dans un second temps, j’ai ensuite travaillé sur des modifications plus délicates, telles

que la modification du message à envoyer aux centres de dépôts, ou l’ajout de nouvelles

structures dans l’application. De telles modifications ne sont pas anodines, et requiert un petit

moment de recherche et de réflexion. Pour ne pas oublier, et surtout pour ne pas que chacun

ait à effectuer ce travail, nous mettions régulièrement un site interne de type wiki.

Une fois suffisamment familiarisé avec le logiciel, j’ai pu commencer à rédiger un

document technique à l’attention de Siemens.

2.1. Rédaction des spécifications techniques

Les spécifications techniques doivent constituer une aide pour les potentiels futurs

développeurs ayant besoin de réaliser diverses modifications sur l’application. Pour cela, ce

document doit résumer le fonctionnement technique de l’application, fournir des exemples

d’opérations susceptibles d’être refaites plus tard – tels que la modification d’une édition,

l’ajout d’un champ dans l’interface utilisateur, etc.

J’ai donc eu à réaliser ce document qu’après avoir effectuer plusieurs tâches sur des

modules différents. La partie des spécifications techniques que j’ai rédigée ne concernait bien

entendu que les parties auxquelles j’avais du précédemment apporté des modifications, et

donc comprendre le fonctionnement.

2.2. Rédaction de plan de test

Les plans de test sont un document résumant l’ensemble des vérifications qui ont été

faîtes après chaque modification. Deux aspects ont été testés à chaque fois :

78/8

Page 81: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

L’aspect fonctionnel : s’assurer de la cohérence entre le résultat fournit par

l’application et le résultat attendu après une manipulation.

L’aspect technique : consiste en générale à des tests unitaires. On doit s’assurer que

l’application reste stable en cas d’erreur de manipulation.

L’aspect performance : dans une moindre mesure, des tests de performances ont du

être réalisés. Ceux-ci ne constituaient pas une préoccupation majeure pour ce projet.

Ces plans de test devaient être livrés à Siemens afin qu’il puisse contrôler ce qui a été

vérifié, et ce qui ne l’a pas été. De son côté, Siemens devait également réaliser des tests avant

d’accepter le projet. Les anomalies constatées au cours de ces derniers donnent lieux à des

retours, qui, si elles s’avèrent réelles, sont recensées en tant que bug.

3. La Résolution de bugs

Des bugs, ou anomalies, trouvés par Siemens ou par ses clients sur les versions

précédentes se devaient d’être résolu. Il existe en général trois niveaux de sévérité pour un

bug :

Mineur : bug ne provoquant aucun blocage. Il représente simplement un défaut.

Majeur : bug entraînant l’échec d’une des fonctionnalités. L’application peut

cependant toujours remplir sa tâche.

Bloquant : comme son l’indique, bloque le déroulement de l’application et empêche

celle-ci de fournir le résultat attendu.

Pour mieux organiser le recensement et la résolution des bugs, Siemens dispose d’un outil

open-source nommé Mantis.

79/8

Page 82: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

3.1. Le système de Mantis

Mantis propose une solution complète afin de résoudre les bugs détectés de manière la

plus efficace possible.

Tout d’abord, un utilisateur ayant trouvé un bug la soumet au système Mantis. Son état

alors définit tel que « En attente ». La saisie d’un mantis se doit d’être la plus complète

possible afin que l’équipe de développement puisse reproduire et identifié le bug. Pour cela

des informations sur la reproductibilité du bug et sur les conditions de son apparition peuvent

être saisie. Des documents peuvent également être attachés afin de décrire plus en détail le

bug.

Le responsable de l’équipe de développement (MOE), après avoir constaté le bug,

change son statut en « Accepté », signifiant qu’il est pris en considération. Un nombre de

jour / homme est alors fixé en accord avec la MOA. Le chef de projet assigne ensuite le

mantis à un développeur, modifiant ainsi son statut en « Assigné », signifiant que le bug est

en cours de traitement.

Une fois le bug résolu, son statut change en « Résolu ». La MOA peut ainsi constater si

le bug a bien été éliminé ou non.

80/8

Page 83: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Conclusion

1. Bilan du stage

La première des applications sur laquelle j’ai travaillé, la gestion de la relation client, a

été achevée dans les temps. L’application est fonctionnelle et actuellement sur un serveur de

recette afin que les différents commerciaux puisse la tester. L’actuel manque de retours

l’empêche pour l’instant de passer sur un serveur de production, et d’effectuer la migration.

D’un point de vue fonctionnel, quelques points prévus l’année dernière ont été

abandonnés pour l’instant et réservés pour une éventuelles versions 2, tel que la

synchronisation des contacts avec Outlook. Cela avait été décidé avant le démarrage du

développement, lors de notre réunion à Toulouse. Quelques fonctionnalités additionnelles ont

en revanche été ajoutées.

D’un point de vue performance, l’application ne souffre pour l’instant d’aucun

ralentissement notable. Pour nos tests, nous avons converti, puis importé une partie de la base

de données de la GRC. Celle-ci concerne toutes les sociétés et les contacts gérés par les

agences de Toulouse et Bordeaux, ce qui représente environ 2000 contacts. De ce côté-là,

l’objectif est donc atteint.

En ce qui concerne l’application DADSU, le projet a été livré dans les délais prévus. Les

retours émis par Siemens me sont pour l’instant inconnus. L’ensemble du cahier des charges a

été exécuté, les plans de tests et les spécifications ont été accepté, et la totalité des bugs

résolus. Une réserve cependant à ce sujet ; la livraison d’une nouvelle version entraînera

certainement la détection de nouvelles anomalies à résoudre.

81/8

Page 84: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2. Bilan personnel

A tous points de vue, ce stage aura été pour moi une réussite. Premièrement, j’ai

découvrir, en profondeur, l’univers du J2EE. Possédant auparavant une très faible expérience

dans ce domaine, je connais désormais plusieurs frameworks, intervenant sur des aspects

différents de l’application. Dans une moindre mesure, j’ai également consolidé mon

expérience en ce qui concerne le développement d’interfaces web. Toujours d’un point de vue

technique, j’ai pu appris énormément quant au développement en Java, et à l’utilisation de

l’IDE Eclipse.

Mon sujet de recherche ainsi que les deux projets sur lesquels j’ai travaillé m’auront

permis de réellement me rendre compte de l’apport d’une solution MOR dans un projet. Si la

complexité d’un tel framework peut rebuter de prime abord, le gain considérable de temps

qu’il apporte n’est pas en reste.

Plus humainement, ce stage m’aura permis de vraiment apprécié le travail d’équipe. J’ai

pu me rendre compte comment le travail en équipe pouvait avoir des conséquences sur ma

manière de programmer, d’aborder des problèmes, et de les résoudre. J’ai également pu

apprécier d’être supervisé par un chef de projet de qualité, ce qui a quelques peu changé ma

vision sur ce métier.

Au final, ce stage aura également été une réussite, car j’ai ainsi pu trouver l’entreprise

dans laquelle débuter ma carrière. La transition c’est effectué sans aucun problème, et je tiens

à remercier encore une fois toute l’équipe d’Infotel Bordeaux pour leur accueil chaleureux.

82/8

Page 85: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Glossaire

API :

Framework :

1/8

Page 86: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Nomenclature des figures

Figure 1.1 : Infotel dans le monde (p6).

Figure 1.2 : Infotel en France (p7).

Figure 1.3 : Organisation juridique d’Infotel (p7).

Figure 1.4 : Activités d’Infotel (p9).

Figure 1.5 : Domaine d’expertise (p10).

Figure 1.6 : Graphe d’évolution du nombre de collaborateur et du C.A. (p11).

Figure 1.7 : Evolution du C.A. (p12).

Figure 2.1 : Schéma de 2 entités (p14).

Figure 2.2 : MCD des 2 entités (p15).

Figure 2.3 : Stockage dans la base de données (p15).

Figure 2.4 : Représentation objet simplifiée des deux entités (p16).

Figure 2.5 : Charge des développeurs sans framework (p18).

Figure 2.6 : Problème lié aux objets fils (p19).

Figure 2.7 : Charge des développeurs avec framework (p20).

Figure 2.8 : Relations entre objets pères et fils (p20).

Figure 2.9 : Correspondance entre une représentation relationnelle et objet. (p21).

Figure 2.10 : Structure simplifiée d’Hibernate (p27).

Figure 2.11 : Exemple d’un fichier de mapping (p29).

Figure 2.12 : Différents états d’un objet. (p33).

Figure 2.13 : Exemple d’un fichier de configuration (p35).

Figure 2.14 : Architecture du test (p37).

Figure 2.15 : Modèle objet ayant servit au test (p38).

Figure 2.16 : Historique des solutions ORM. (p41).

Figure 3.1 : Cycle en V (p44).

Figure 3.2 : Architecture 5-tiers (p55).

Figure 3.3 : Schéma de l’architecture de la GRC. (p58).

Figure 3.4 : Principe du modèle MVC (p61).

2/8

Page 87: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Figure 3.5 : Modules du framework Spring (p69).

Figure 4.1 : Modules de DADSU (p75).

Figure 4.2 : Fonctionnement de l’extraction (p77).

3/8

Page 88: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Tables des matières

INTRODUCTION............................................................................................................................................. 1

I. PRÉSENTATION DE LA SOCIÉTÉ.............................................................................................................. 5

1. LE GROUPE INFOTEL......................................................................................................................................5

1.1. Historique.......................................................................................................................................5

1.2. Implantations géographiques.........................................................................................................5

1.3. Organisation juridique....................................................................................................................6

2. LES ACTIVITÉS...............................................................................................................................................8

2.1. Services...........................................................................................................................................8

2.2. Formations......................................................................................................................................9

2.3. Progiciels.........................................................................................................................................9

3. DOMAINE D’EXPERTISE.................................................................................................................................10

4. LES CHIFFRES CLÉS......................................................................................................................................11

4.1. Humain.........................................................................................................................................11

4.2. Financier.......................................................................................................................................11

5. LA DIVISION SUD OUEST..............................................................................................................................12

5.1. L’agence de Bordeaux...................................................................................................................12

5.2. Les projets Bordelais.....................................................................................................................13

II. L’UTILITÉ DES LOGICIELS ORM............................................................................................................. 14

1. LE PROBLÈME.............................................................................................................................................14

1.1. Le modèle relationnel...................................................................................................................14

1.2. Le modèle objet............................................................................................................................15

1.3. Les logiciels ORM..........................................................................................................................16

2. PRINCIPES DE LA PERSISTANCE.......................................................................................................................17

2.1. La persistance non transparente...................................................................................................18

2.2. La persistance transparente..........................................................................................................19

2.3. Le mapping objet-relationnel........................................................................................................21

2.4. Historique de la persistance des données en Java.........................................................................23

2.4.1. Les EJB (Enterprise JavaBeans).................................................................................................................23

4/8

Page 89: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.4.2. TopLink et JDO..........................................................................................................................................24

2.4.3. Un exemple d’ORM : Hibernate...............................................................................................................25

3. IMPACTS SUR LES MÉTHODES DE DÉVELOPPEMENT.............................................................................................26

3.1.1. Les POJOs.................................................................................................................................................28

3.1.2. Les fichiers de mapping............................................................................................................................28

3.2. Gestion de la session Hibernate....................................................................................................30

3.2.1. La session Hibernate.................................................................................................................................30

3.2.2. La classe utilitaire HibernateUtil...............................................................................................................31

3.3. Le cycle de vie d’un objet manipulé par Hibernate........................................................................32

3.3.1. Les différents états...................................................................................................................................32

3.3.2. Entités et valeurs......................................................................................................................................34

3.4. Configuration................................................................................................................................35

3.5. L’outil Hibernate Tools..................................................................................................................35

4. IMPACT SUR LES PERFORMANCES GÉNÉRALES....................................................................................................36

4.1. Test de performances...................................................................................................................36

4.2. Les caches.....................................................................................................................................40

5. VERS UNE SOLUTION UNIQUE........................................................................................................................40

III. DÉVELOPPEMENT ET MISE EN PLACE D’UN OUTIL DE GRC...................................................................43

1. CONTEXTE.................................................................................................................................................43

1.1. Relation du stage précédent.........................................................................................................43

1.2. Objectifs du stage.........................................................................................................................44

1.3. L’équipe de développement..........................................................................................................45

1.4. Les ressources matérielles.............................................................................................................46

1.5. Portée du stage.............................................................................................................................46

1.6. La gestion du projet......................................................................................................................46

2. L’APPLICATION...........................................................................................................................................47

2.1. Genèse du projet...........................................................................................................................47

2.2. Les besoins fonctionnels................................................................................................................48

2.3. Ergonomie....................................................................................................................................49

2.3.1. La barre de recherche..............................................................................................................................50

2.3.2. Le fil d’Ariane...........................................................................................................................................50

2.3.3. Le menu....................................................................................................................................................51

2.4. Fonctionnalités.............................................................................................................................51

2.4.1. Section accès aux données.......................................................................................................................51

5/8

Page 90: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

2.4.2. Section états et statistiques.....................................................................................................................52

2.4.3. Section administration.............................................................................................................................52

3. L’ARCHITECTURE TECHNIQUE.........................................................................................................................53

3.1. Introduction à J2EE.......................................................................................................................53

3.1.1. Définition..................................................................................................................................................53

3.1.2. Pourquoi J2EE ?........................................................................................................................................54

3.1.3. L’architecture multitiers...........................................................................................................................54

3.2. Choix du serveur Web/applicatif J2EE...........................................................................................55

3.3. Choix de la version de la machine virtuelle Java (JVM).................................................................56

3.4. Choix de la base de données.........................................................................................................57

3.5. Synthèse de l’étude.......................................................................................................................57

4. L’ARCHITECTURE.........................................................................................................................................58

4.1. Interface utilisateur......................................................................................................................59

4.1.1. La maquette.............................................................................................................................................59

4.1.2. Choix d’un framework de présentation....................................................................................................60

4.1.2.1. Struts.............................................................................................................................................60

4.1.2.1.1 Avantages de struts....................................................................................................................61

4.1.2.1.2 Inconvénients de Struts..............................................................................................................62

4.1.2.2. Java Server Faces...........................................................................................................................62

4.1.2.2.1 Avantages de JSF........................................................................................................................62

4.1.2.2.2 Inconvénients de JSF..................................................................................................................63

4.1.2.3. Choix..............................................................................................................................................63

4.1.3. Construction de la couche présentation à l’aide de Struts.......................................................................64

4.1.3.1. Struts Tiles.....................................................................................................................................64

4.1.3.2. Struts Taglib...................................................................................................................................65

4.1.3.3. L’intertionalisation.........................................................................................................................65

4.1.4. La sous-couche contrôle...........................................................................................................................66

4.2. Le modèle de données..................................................................................................................67

4.3. La couche de logique métier.........................................................................................................68

4.4. Le framework Spring.....................................................................................................................68

4.4.1. L’inversion de contrôle.............................................................................................................................69

4.4.2. La programmation orientée aspect..........................................................................................................70

4.4.3. La couche d’abstraction............................................................................................................................70

4.4.4. Intégration de Spring à l’application.........................................................................................................71

IV. LE PROJET DADS-U.............................................................................................................................. 72

6/8

Page 91: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

1. PRÉSENTATION DU LOGICIEL..........................................................................................................................72

1.1. La norme DADS-U.........................................................................................................................72

1.1.1. Avantages.................................................................................................................................................72

1.1.2. Le circuit de déclaration...........................................................................................................................73

1.2. Présentation technique du projet..................................................................................................74

1.2.1. L’architecture du logiciel..........................................................................................................................74

1.2.2. Le mécanisme d’extraction.......................................................................................................................76

2. MISE À JOUR DU PROJET..............................................................................................................................77

2.1. Rédaction des spécifications techniques.......................................................................................78

2.2. Rédaction de plan de test.............................................................................................................78

3. LA RÉSOLUTION DE BUGS.............................................................................................................................79

3.1. Le système de Mantis....................................................................................................................80

CONCLUSION............................................................................................................................................... 81

1. BILAN DU STAGE.........................................................................................................................................81

2. BILAN PERSONNEL.......................................................................................................................................82

GLOSSAIRE.................................................................................................................................................... 1

NOMENCLATURE DES FIGURES...................................................................................................................... 2

Bibliographie..........................................................................................................................................................8

7/8

Page 92: maxime.morand.free.frmaxime.morand.free.fr/CRM/Rapport/Memoire.w2003.doc  · Web view3. Impacts sur les méthodes de développement 25. 4. Impact sur les performances générales

Mémoire

Développement d’un ERP de GRC Date : 13/09/2007

Bibliographie

Gavin King & Christian Bauer « Hibernate in action », Broché, 2004.

Livre coécrit par le père d’Hibernate en personne. Ce livre, en plus de présenter

techniquement les possibilités d’Hibernate, traite notamment du délicat problème du mapping

objet-relationnel, qui est à l’origine de la création d’Hibernate.

Documentation d’Hibernate (http://www.hibernate.org/hib_docs/v3/reference/fr/html/)

Documentation extrêmement riche, en particulier pour un projet open-source. Elle m’a permis

de répondre à un grand nombre d’interrogations techniques.

Tutoriel Jakarta Struts par Serge Tahé (format PDF)

Ce tutoriel très complet m’a fournit une aide précieuse quant à l’apprentissage du framework.

8/8