Rapport de Stage
Réalisation d'une application de Gestion de
CV.
CVtech
-----------------------------------------------------------------------------------------------------------------
Auteur : Benito d'ALMEIDA
Responsable de stage : Cyril Magliano
Maître de stage : Miloud Hassani
-----------------------------------------------------------------------------------------------------------------
Remerciements
Avant de présenter ce mémoire de fin
d'études en Informatique, je tiens tout d'abord à remercier tous
ceux qui ont participés à la réalisation de ce
mémoire tant par leurs conseils que par leurs sollicitudes.
A M Pierre DALMAZ, Président du Groupe SFEIR
A M Cyril Magliano, Directeur du BU BAA et BMC
A mes collègues et amis
Et enfin, à la mémoire de tous ceux qui de
près ou de loin on une pensée particulière pour moi.
Sommaire
Remerciements
2
Sommaire
3
Introduction
5
Présentation de l'entreprise
7
1. Le groupe SFEIR
7
2. Vocation et enjeu
9
3. Evolution
11
4. Clients
12
5. Implantations
13
6. Environnement humain
14
7. Environnement matériel
15
8. Tâches secondaires
15
9. Planning réel et mode travail
16
Présentation du projet
« CVTECH »
17
10. Présentation de l'application
17
11. Fonctionnalités
17
12. Exigences
18
12.1. Environnement technique
18
12.2. Périmètre de la
prestation
18
13. Spécifications
18
13.1. Gestion d'une personne
18
13.2. Gestion de Cv
19
13.3. Gestion de la fiche collaborateur
19
13.4. Génération automatique
de CV
19
13.5. Module de recherche
19
Conception et Réalisation
20
14. Conception
20
15. Modélisation UML
20
16. Cahier de charges fonctionnel
21
17. Spécification techniques
23
18. Réalisation
24
18.1. Plateforme de travail
24
18.2. Architecture logicielle cible
24
18.2.1. GWT
25
18.2.2. Hibernate
27
18.2.3. Spring
28
18.3. Environnement de
développement
28
18.3.1. Eclipse
29
18.3.2. Power AMC
29
C'est un outil de modélisation qui permet
à la fois de faire du Merise et de l'UML.
29
18.3.3. Apache Tomcat
29
18.3.4. MySQL
29
18.3.5. Maven 1.2
29
18.3.6. La méthodologie MDA
30
19. Développement du
module « Gestion de Cv »
31
19.1. Les DO
31
19.2. Les DAO
31
19.3. HQL : Langage de requête
d'Hibernate
32
19.4. Les Beans
32
19.5. Les services
32
19.6. Les interfaces
33
Bilan
34
20. Difficultés
rencontrées
34
21. Etat d'avancement
34
Conclusion
35
Bibliographie
36
LEXIQUE
37
Glossaire
39
Introduction
Nous sommes au coeur de la transformation du siècle qui
dure déjà bien plus d'un demi-siècle. L'informatique
reconnaît une hausse depuis le « soit disant » bug
de l'an 2000. Elle est due à l'informatisation de la majeure partie des
taches, à la puissance des processeurs qui ne cesse de grandir et
surtout aux nouvelles technologies de l'information et de la communication. Ces
changements posent, naturellement, un grand challenge aussi bien pour les
décideurs politiques que pour les entreprises. Cette transition
amènent les entreprises à repenser leurs stratégies et
leurs structures, d'où cet engluement pour les développeurs java
J2ee et .NET.
L'Internet est un système de communication qui permet
de communiquer et de s'échanger des informations. Cette communication
permet donc, de généraliser l'utilisation des outils
informatiques (logiciel), avec des clients légers plus performant,
(navigateur web devenu plus complet donc pas besoin d'installer le logiciel sur
des machines individuelle). Ceci permet d'accéder aux ressources sans
contraintes particulières.
La technologie java J2ee est une technologie qui utilise un
ensemble d'API java :
·
Servlets : Conteneur Web
·
Portlets : Conteneur Web (extension de l'API Servlet)
·
JSP : Framework Web
·
JSF : Java Server Face, Framework Web, extension des JSP
·
EJB : Composants distribués transactionnels
· JNDI :
API de connexion à
des
annuaires, notamment
des annuaires
LDAP
· JDBC :
API de connexion à
des
bases de
données
·
JMS : API de communication asynchrone
· JCA :
API de connexion,
notamment à des
PGI
·
JavaMail :
API de gestion des
mails
· JMX :
Extension d'administration des applications
· JTA :
API de gestion des
transactions
·
JAXP : API d'analyse
XML
· JAXM :
API de communication
asynchrone par XML
· JAX-RPC :
API de communication
synchrone par XML, par exemple à l'aide du protocole
SOAP
· JAXB :
API de
sérialisation par
XML
· JAXR :
API de gestion des
registres XML, permettant d'enregistrer des
Web Services en
ebXML
· RMI :
API de communication
distante entre des objets java
·
Java IDL :
API de communication
entre objets Java et objets non-Java, via le protocole
CORBA
Proposant ainsi de pouvoir développer des applications
qui pourront tourner sous de différents navigateurs, et disposer de la
sécurité que procure une application métier java.
En se penchant un peu plus sur le sujet de notre stage, la
diffusion d'information, est ce qui a de plus sensible. En effet, afin
d'éviter les effets de foules ou les débordements, ou de erreurs
de communications, les sociétés de bourses diffusent en temps
réelle ou en temps opportun, des avis sur toutes les transactions
possibles, dans le monde boursier. Et des règles de gestions strictes
permettent de contrôler cette diffusion, afin qu'une information trop
important soit diffuser trop tôt ou trop tard. La technologie
utilisée à alors permis de contrôler tous les flux.
Ce mémoire essayera de parler du fonctionnement bref et
des règles de gestions et du fonctionnel, les méthodes de
modélisation, les atouts au sein du Groupe, les conditions dans
lesquelles, j'ai évolué durant le stage et un peu plus en
détails, les taches effectuées. Le présent travail se
subdivise en deux parties. La première est consacrée à la
présentation générale. La seconde partie est
dédiée aux termes techniques et aux taches effectuées.
Présentation de
l'entreprise
1. Le
groupe SFEIR
Le groupe SFEIR (Société Française
d'Expertise Informatique et de Réalisation) est une des nombreuses
sociétés de services en informatiques et en ingénierie
(SSII) spécialisée dans les nouvelles technologies. Bien
positionnée à l'échelon national, son but est de proposer
son savoir-faire aux sociétés, entreprises, et personnes qui
veulent optimiser, rationaliser ou bonifier leur système d'information
avec les nouvelles technologies.
Fondée par une équipe qui avait
déjà au préalable, conduit de grandes divisions dans des
SSII internationales, son modèle est basé sur ses propres
fondamentaux qui sont autant de piliers sur lesquelles reposent la
qualité du service ainsi que la renommé grandissante qui
l'accompagne :
v Nos valeurs : Une réflexion commune a
été menée par des groupes de collaborateurs sur le
thème des valeurs et des principes associés que SFEIR souhaite
faire partager au quotidien
v Solidarité : Nous mettons nos
qualités personnelles et notre énergie au service de tous, en
nous sentant responsables et solidaires du succès de chacun". Je
favorise l'intégration des nouveaux arrivants, Je sais trouver le temps
nécessaire pour aider les autres dans leur recherche de solution, Je
transmets spontanément mes connaissances, Je contribue à aplanir
les difficultés dans les situations conflictuelles, J'accepte
d'appliquer toute décision prise en commun
v Sens du service : Notre sens du service nous
conduit à nous adapter au contexte humain et technique de nos clients,
à faire valoir nos convictions tout en respectant celles des autres". Je
prends en compte les particularités de l'environnement dans lequel
j'interviens. En mission chez nos clients, je suis à l'écoute des
hommes et des femmes avec qui je travaille. Je fais en sorte que le client
s'approprie le fruit de mon travail. Je m'adapte aux évolutions de ma
mission et m'assure que les objectifs restent bien compris par tous. J'accepte
que mes propositions soient critiquées, voire remises en question. Je
suis attentif au fait que je représente mon entreprise auprès des
clients
v Évolutivité : Acteurs du changement,
nous développons nos compétences, évoluons avec
l'entreprise et assurons sa pérennité". Je suis attentif à
l'évolution des métiers et des techniques afin de proposer des
axes de développement pour l'entreprise et pour moi-même. Je
participe à l'élaboration des mes objectifs et je mesure leur
niveau de réalisation. Pour évoluer, j'accepte de me remettre en
cause dans mon travail quotidien, j'imagine et je propose des
améliorations.
v Rigueur : "Nous méritons la confiance et la
fidélité de nos clients et de nos partenaires par notre rigueur,
notre fiabilité et le respect de nos valeurs". Je communique avec
honnêteté et transparence toute information nécessaire au
bon déroulement de la mission. Pour atteindre mes objectifs, je
définis un plan d'action et une démarche. J'utilise les normes et
les méthodes en vigueur. Je mets tout en oeuvre pour tenir mes
engagements dans les délais définis ; en cas de
difficultés, je préviens et je propose des solutions de
remplacement. J'aborde préalablement en interne tout sujet qui peut
impliquer un changement dans la relation avec le client
v Reconnaissance de l'autre : "Disponibles et à
l'écoute, nous respectons la différence et créons un
climat propice à l'expression et à l'épanouissement de
tous". Je respecte chacun, quelle que soit sa place dans l'entreprise. Je
prends le temps de l'écoute et du dialogue. Je reconnais les efforts que
quiconque fait à mon égard et je lui fais savoir. Quand j'engage
la responsabilité d'une autre personne, je valide avec elle les
objectifs et les moyens.
v Engagement : Nous relevons des défis toujours plus
importants en exigeant de nous-mêmes ambition, pugnacité et sens
des responsabilités". Je veille au caractère concret
(contrôlable et mesurable) des objectifs sur lesquels je m'engage. Je
sais faire preuve d'initiative et de ténacité pour atteindre mes
objectifs fixés. J'accepte la prise de risque. J'assure le suivi de mes
engagements. Je m'investis pleinement dans mon travail tout en respectant un
équilibre entre vie professionnelle et vie personnelle
v La proximité avec les clients a pour but de
répondre aux besoins quotidiens et d'accompagner les évolutions
et assure donc d'une bonne réactivité face aux demandes
éventuelles.
v La proximité avec les collaborateurs, dans la
confiance, le respect des personnes et la mise en valeur des
compétences.
v Le développement des soirées de partage et des
entretiens afin de faciliter l'intégration des collaborateurs, la suivie
et l'intégration chez les clients.
v Le développement par les unités d'expertise,
afin de capitaliser les savoir-faire acquis et d'anticiper sur les nouveaux
besoins.
Le groupe SFEIR englobe aujourd'hui 2 agences
implantées sur différents sites ainsi qu'une filiale
Spécialisée en assistance à Maîtrise d'Ouvrage et en
Gestion de la Relation Client. On distingue alors :
· SFEIR Ile de France (située à Paris).
· SFEIR Benelux
· ELS INFORMATICA
2.
Vocation et enjeu
Le groupe SFEIR est composé de plus de 250 personnes
dont la volonté est d'offrir le meilleur service informatique aux
clients afin de les aider à intégrer les nouvelles technologies
dans leur patrimoine informatique.
Pionnier dans la mise en oeuvre des architectures n - tiers,
SFEIR est spécialisé dans la conception et les
développements d'applications dans le domaine des architectures
nouvelles. En tant que prestataire en ingénierie, sa vocation principale
est donc d'apporter des solutions aux problèmes que rencontrent ses
clients.
Le professionnalisme qui est un moteur omniprésent
s'appuie sur une capacité d'engagement et une pertinence technologique
vis-à-vis des clients. L'objectif étant clairement d'assurer
le développement maîtrisé de l'entreprise grâce
à la capitalisation du savoir-faire des collaborateurs.
Dans le domaine informatique, les SSII seront les acteurs
majeurs du futur. Les exemples de sociétés qui font appels
à l'externalisation sont en constante progression depuis plusieurs
années et la tendance est amenée à s'intensifier. Pour
profiter du marché informatique (Conseil, Infogérance, Logiciels
et Progiciels, Ingénierie) qui pèse plus de 20 milliards d'euros
en France, SFEIR s'appuie sur des domaines de compétences variées
tels que :
· Direction de projet (assistance à Maîtrise
d'Ouvrage - Maîtrise d'Oeuvre).
· Gestion de projet (Pilotage opérationnel en
forfait ou en régie).
· Développement avec la méthode Agile
· Analyse et conception (UML, Merise et outils
décisionnels).
· Développement (J2EE, .NET, etc.).
· Expertises (Décisionnel avec l'optimisation des
performances et migration technologique / Architecture N - tiers :
Framework, choix technologique, WorkFlow, etc.).
· Architectures (Client Léger, Client Riche,
Client Lourd, Aide au choix et la définition des architectures et des
outils).
· Formation (Méthodes et outils avec n°
d'agrément.
· Audit, conseil et ingénierie en gestion des
relations client.
A ces différents s'ajoute d'autre démarche qui
différencie SFEIR des autres SSII. Ce sont :
· Une démarche Qualité fondée sur
une certification ISO 9001
· Des équipes hautement qualifiées et
suivies par une direction Technique de très haut niveau
· La capacité de contracter un engagement de
résultats sur vos projets
· Une maîtrise de l'intégralité du
cycle de vie du système d'information
3.
Evolution
Le groupe SFEIR observe une croissance régulière
depuis sa création. En effet, son savoir-faire, son professionnalisme et
son souci permanent d'une relation client privilégié semble
convaincre progressivement le marché.
L'ambition du groupe semble en adéquation avec les
chiffres qui révèlent une augmentation du chiffre d'affaire ainsi
que du nombre de collaborateurs. SFEIR est un bon exemple de cet essor toujours
grandissant avec une embauche de collaborateurs qui s'accélère
encore plus depuis 2007 au notamment à l'acquisition de nouveaux clients
ainsi qu'à la pérennisation des anciens avec de nouvelles
missions obtenues.
Les chiffres clés :
4. Clients
La clientèle de SFEIR a généralement
besoin de gérer de grandes bases de données qui doivent
être sécurisées, ce sont donc des entreprises qui ont
besoins d'applications complexes et très fiables.
La liste des clients, toujours plus longues, comportes aussi
bien de grands groupes tels que BNP Paribas ou encore M6 que des plus petites
sociétés qui ont en commun la satisfaction des services qui leurs
sont apportés et dont la qualité permet plus ou moins de les
fidéliser.
3 grands secteurs se distinguent :
- Bourse, Marché et capitaux
- Banque, Finance et assurance
- Industrie, Service et Télécom
5. Implantations
Contexte du stage
6.
Environnement humain
Mon stage s'est déroulé au sein des locaux de
SFEIR à Suresnes. Ce qui laisse, en plus de la direction, un minimum de
30 collaborateurs pour les missions en forfait dispatchés en
équipe de développement. L'organigramme montre ainsi la
hiérarchie établie dans l'agence parisienne et le cadre humain
dans lequel j'ai travaillé jusqu'alors.
Pour ce stage, j'ai été intégrée
en tant que ingénieur d'étude et de développement.
J'ai donc tout d'abord pu profiter logiquement d'une
proximité par rapport aux autres collaborateurs toujours disponibles
pour distiller des conseils techniques. Ceci permet une intégration et
une mise en situation assez rapide en bénéficiant du concours de
tous.
7.
Environnement matériel
En ce qui concerne le matériel, tout le personnel
dispose d'un ordinateur équipé d'un processeur Intel Pentium IV
allant de 3 à 4GHZ, 1024 Mo DDR, avec plus de 100 Go de disque dur. Tous
les ordinateurs possèdent comme système d'exploitation Windows XP
Professionnel ainsi qu'une connexion illimitée à internet.
Tous les collaborateurs possèdent un compte sur le
serveur principal de l'agence ce qui permet aussi bien d'accroître la
rapidité de configuration d'un ordinateur ou encore l'accès aux
différents projets existants et toute la documentation
nécessaire.
Les principales technologies utilisées par SFEIR sont
J2EE et .NET (bien que d'autres technologies peuvent être
employées selon les désirs du client) ainsi les collaborateurs
utilisent fréquemment les différents logiciels liés
à ces nouvelles technologies. On peut aussi être amené
à utiliser des logiciels open source autant que des logiciels payants,
suivant les besoins du clients.
8. Tâches secondaires
Durant toute ma période au sein de l'entreprise, mon
statut est équivalent à celui d'un nouveau membre recruté
afin d'intégrer l'équipe de développeurs. A ce titre, je
fus soumis aux exigences qu'implique ce statut dans n'importe quelle SSII. En
effet, l'objectif secondaire est aussi de pouvoir répondre et apporter
mes capacités et mes connaissances techniques sur d'autres projets ou
missions prioritaires économiquement et/ou temporairement. La
réalisation d'une série de tests sur une application
boursière ou encore la formation d'une jeune recrue sont autant
d'exemples qui rentrent dans ce cadre de missions secondaires :
v Réalisation de tests fonctionnels et techniques sur
une application de gestion de portefeuille client pour le compte de la
société EURONEXT.
v Formation d'une nouvelle recrue sur les méthodes et
outils de tests. (durée : une journée).
Je me suis donc familiarisé avec l'outil de tests et
les méthodes utilisées pour les réaliser et j'ai pu ainsi
développer un atout qui est le transfert de compétence. Ce qui
est toujours très enrichissant pour ma future intégration dans le
monde de l'entreprise et surtout dans le monde des SSII.
9. Planning réel et mode
travail
Pour la suivie du projet, un compte rendu d'activité
était envoyé chaque soir par email, à mon responsable
direct. En plus à la fin de chaque semaine, ensemble, nous validions
l'état d'avance du projet.
Présentation du
projet « CVTECH »
10.
Présentation de l'application
L'objectif principal de mon stage est la réalisation
d'une application intranet qui se présente sous le nom de
CVTECH. (Gestion dynamique d'un
Cvthèque).
Tenant compte de la difficulté de maintien en
cohérence de la base de donnée des CV des collaborateurs et leurs
différents domaines, SFEIR Ile de France a décidé de se
doter d'un outil de gestion interne. En complément de l'aspect
« Edition des CV », des fonctionnalités ont
été ajoutées afin de faciliter la recherche de profils ou
de projets particuliers, et l'ajout de nouvelles compétences.
En effet, l'application gère un réel suivi des
collaborateurs à travers les missions qu'ils ont déjà ou
qu'ils seront amenés à effectuer. CVTECH se
divise alors en 3 modules principaux étroitement liés les uns les
autres :
v Gestion du module personne.
v Gestion du module CV et compétence.
v Gestion du module Domaine.
11.
Fonctionnalités
L'application CVTECH doit permettre :
v De gérer une fiche d'information sur chaque
Utilisateur.
v De gérer une fiche d'information sur tous les CV.
v De gérer une fiche d'information sur de
différentes compétences et domaine.
v De générer automatiquement les CV des
Personnes à partir d'extraction de données dans la base.
v D'effectuer des recherches, d'une part sur les
compétences et le domaine des personnes et d'autres part, sur les
missions réalisées par les personnes de SFEIR Ile De France.
L'application doit aussi permettre de gérer les
données de référence et paramètres utilisés
dans les différents modules réalisés.
12. Exigences
12.1. Environnement technique
L'application doit être développée sur un
mode Client / Serveur ou sous la forme d'une application avec client
léger. Tenant compte de l'évolutivité de l'application et
de l'aspect « requêtes », la mise en oeuvre d'une
base de données est indispensable, et elle doit respecter les
différentes formes normales.
12.2. Périmètre de la prestation
L'objectif du projet est la réalisation de
l'application CVTECH dans un cadre méthodologique rigoureux. Pour cela,
en complément du développement de l'application, les documents
suivants sont livrables :
ü Document de conception.
ü Cahier de recette.
ü CD d'installation.
ü Documentation utilisateur.
13.
Spécifications
Les spécifications ont été
rédigées par mon tuteur, mes collègues et moi et m'ont
été remises après la lecture du cahier de charges. Ce sont
en faite, les recommandations du directeur de la BU (business unit) Banque,
finances et Assurance (qui joue le rôle de client) qui définit les
fonctionnalités principales que devra pouvoir effectuer les futurs
utilisateurs de l'application.
13.1. Gestion d'une personne
L'application doit permettre d'ajouter, modifier, supprimer
une personne donc ses CV aussi en cascades.
Au minimum, une personne a :
· Son nom
· Ses prénoms
· Sa date de naissance
· Son Adresse
· Son numéro de Téléphone
· Son Email principale
· Son numéro de sécu
· Son statut matrimonial
Lors de la suppression de la personne, il y a une suppression
en cascade de ses CV précédés d'un message
d'avertissement.
13.2. Gestion de Cv
L'application doit permettre d'ajouter, modifier, supprimer un
CV d'une personne. Le CV d'une personne contient au moins :
· le nom donné au Cv
· Le type du CV
· Les différentes compétences,
· Le domaine
· Les expériences
13.3. Gestion de la fiche collaborateur
L'application doit permettre d'ajouter, modifier, supprimer
une fiche collaborateur. Au minimum, une fiche collaborateur contient :
· Nom et Prénom du collaborateur.
· Le titre du collaborateur (ingénieur de
développement, consultant, chef de projet, ...). Ce titre doit
être choisi dans une liste paramétrable.
· Date et Lieu de naissance.
· Statut marital (célibataire / Marié,
...)
· La date de début d'activité
professionnelle dans l'informatique.
· La liste des diplômes obtenus et des formations
réalisées.
· La liste des connaissances informatique.
· Les langues étrangères connues avec le
niveau.
· Une liste de « Divers » et une
autre de « loisirs ».
En complément de cette fiche, tout collaborateur doit
pouvoir être lié à une unité développement
(Business Unit) et un ensemble de fiches de mission complétées
par la période de la mission ainsi que sa durée, les tâches
réalisées dans cette mission et son profil pour cette mission
(chef de projet, ingénieur qualité, ...).
13.4. Génération
automatique de CV
A partir des données décrites
précédemment, une génération automatique des CV des
collaborateurs doit être réalisée. Cette
génération doit être paramétrables. L'idée
étant d'extraire des données XML de la base de données
puis d'appliquer une transformation (XSL/FO par exemple) pour
générer des fichiers au format PDF.
13.5. Module de recherche
En complément de la gestion des CV des collaborateurs,
un outil de recherche doit être mis en oeuvre afin de permettre, par
exemple, des extractions des compétences des collaborateurs sur certains
domaines techniques ou encore des extractions de la liste des
références de l'agence dans tel ou tel domaine.
Conception et
Réalisation
14. Conception
Après lecture du cahier de charges et
réalisation des IHM, une étape devient indispensable, celle de
l'élaboration du cahier de charges fonctionnel et des
spécifications techniques.
Cette étape essentielle dans le projet va conditionner
la qualité, la rapidité et la simplicité du
développement et aussi faciliter la reprise du projet par une autre
personne.
15.
Modélisation UML
De toute évidence, je me suis tourné vers une
conception objet à l'aide du standard UML (objet relationnel Modeling
Language, traduisez "langage de modélisation objet
unifié") qui est devenu incontournable. Cet outil
méthodologique fournit les éléments indispensables pour
remédier aux inconvénients majeurs de l'approche objet :
v Un langage (pour s'exprimer clairement à l'aide des
concepts objets), qui doit permettre de représenter des concepts
abstraits (graphiquement par exemple), limiter les ambiguïtés
(parler un langage commun, au vocabulaire précis, indépendant des
langages orientés objet), faciliter l'analyse (simplifier la comparaison
et l'évaluation de solutions).
v Une démarche d'analyse et de conception objet, pour
ne pas effectuer une analyse fonctionnelle et se contenter d'une
implémentation objet, mais penser objet dès le départ,
définir les vues qui permettent de décrire tous les aspects d'un
système avec des concepts objets.
Ainsi, l'UML comble une lacune importante des technologies
objet que je compte utiliser par la suite. Il permet d'exprimer et
d'élaborer des modèles objet, indépendamment de tout
langage de programmation. De plus il normalise les concepts objet.
Les auteurs d'UML préconisent d'utiliser une
démarche guidée par les besoins des utilisateurs du
système, centrée sur l'architecture logicielle, itérative
et incrémentale car un processus de développement qui
possède ces qualités fondamentales favorise la réussite
d'un projet (conseil que j'ai bien évidemment suivi).
16. Cahier de
charges fonctionnel
L'objectif du cahier des charges fonctionnelles, tout d'abord,
est de décrire de manière fonctionnelle l'application. Je
définis ainsi qu'il me faut établir une application permettant
l'utilisation partielle ou totale de fiches internes selon un profil
d'utilisateur. Ainsi le document décrit, à l'aide de
scénarios, toutes les fonctionnalités que doit posséder
CVTECH ainsi que les différents acteurs amenés
à l'utiliser.
Ainsi l'application est divisée en « uses
cases » ou cas d'utilisation, comportant chacun son scénario
selon l'acteur, et regroupé en package. Un diagramme de cas
d'utilisation a été réalisé pour pouvoir
étaler la charge de travail sur la période du stage.
Diagramme de cas d'utilisation
Le cas d'utilisation est ensuite détaillé en un
ou plusieurs scénarios. Un scénario est une suite
d'échanges entre des acteurs et le système pour décrire un
cas d'utilisation dans un contexte particulier. C'est un enchaînement
précis et ordonné d'opérations pour réaliser le cas
d'utilisation.
Bordereau du cas d'utilisation
Nom :
|
|
Date:
|
|
Auteur(s) :
|
Benito d'ALMEIDA
|
Entreprise
|
SFEIR
|
But :
|
Mettre a jour les compétence et les différentes
expérience de la personne
|
Pré condition(s):
|
Etre éligible d'un CV
|
Poste condition(s):
|
Aucune
|
Visible action(s):
|
|
Scénario(s) :
|
Sc1 : l'utilisateur gère son état civil et
son CV par défaut si il en existe.
|
Sc2 : l'utilisateur peut créer un nouveau CV en
relation avec un autre domaine
|
Sc3 : L'utilisateur est maître sur ses informations et
peut afficher et imprimer son Cv.
|
Business Rule(s)
|
Br1 : Il y a des champs obligatoires à remplir dans une
fiche.
|
Br2 : la suppression d'une personne implique la suppression de
ts ses cv
|
Br3 : une personne doit avoir au moins un Cv.
|
Br4 : le domaine est obligatoire.
|
Les IHM ont été réalisées selon
une ergonomie et une convivialité d'utilisation
Le cahier de charges fonctionnel est donc une première
approche du projet en omettant toute notion technique.
17.
Spécification techniques
L'objectif du spécifications techniques est
d'approfondir les fonctionnalités déjà
élaborés en rédigeant des solutions adaptées et
cohérentes. Ce document décrit ainsi en détails tout
l'aspect technique de l'application. A savoir, son organisation, le diagramme
de classes avec une description pour chacune d'elles et l'enchaînement
des appels de méthodes au cours du déroulement d'un cas
d'utilisation.
Diagramme de classes
18.
Réalisation
Dans cette partie je présente la plateforme de travail
et les étapes du développement du module mission que j'ai choisi
comme exemple.
18.1. Plateforme de travail
Cette plateforme de travail assiste le développeur
à partir de l'étape de modélisation UML jusqu'au
déploiement de l'application sur le serveur. Cette plateforme est
utilisée par toutes les équipes de projets soit en interne ou en
externe et ce pour les raisons suivantes :
· Diminuer les risques tout au long du projet.
· Faciliter les différentes phases du projet.
· Augmenter la qualité de ce qui est produit
(faire bien et du premier coup).
· Augmenter le niveau d'adéquation entre le besoin
et le produit réalisé.
· Diminuer les coûts et délais de
développement.
18.2. Architecture logicielle cible
v La couche présentation :
contient les composants qui doivent interagir avec l'utilisateur de
l'application, comme les pages Web, les formulaires, ainsi que tout ce qui
régit le comportement de l'interface utilisateur. J'utilise GWT
v La couche métier :
Intègre les fonctionnalités et les traitements propres
à l'application. Ces fonctionnalités sont
implémentées avec des composants avec états. Cette couche
est générée en utilisant le Framework Spring IOC.
v La couche d'accès aux données :
Fournit une interface simple pour accéder aux données et
les manipuler. Les composants de cette couche abstraient la sémantique
de la couche de données sous-jacente. Chaque composant fournit
typiquement des méthodes pour créer, lire, mettre à jour
et effacer des entités de données. L'outil utilisé ici est
Hibernate qui produit des objets DAO pour les entités définies
dans le model UML.
v La couche stockage de données :
comprend l'ensemble des sources de données de l'application,
constitué principalement du SGBD. Dans mon cas c'est MySQL
18.2.1. GWT
GWT (Google Web Toolkit)
est un Framework développé par Google, permettant de créer
des pages web dynamiques en utilisant la technologie AJAX. Son fonctionnement
consiste à créer l'interface graphique en utilisant le langage
Java (à l'instar de la technologie swing pour les applications locales).
Le code java est ensuite compilé et transformé en code
javascript/AJAX. Ce dernier sera embarqué dans un serveur d'applications
qui se chargera de le transmettre au navigateur web. Ce Framework est apparu en
2006 et est sous licence open source.
Au delà du simple Framework, cette solution promue par
Google apporte une nouvelle approche du développement d'application de
type client léger. En effet, le développeur fait ici abstraction
quasi complète de la complexité habituelle liée au
javascript/css/html.
Le FrameworK 1(*): est un espace de travail modulaire. C'est un
ensemble de
bibliothèques,
d'outils et de conventions permettant le développement rapide
d'applications. Il fournit suffisamment de briques
logicielles et impose
suffisamment de rigueur pour pouvoir produire une application aboutie et facile
à maintenir. Ces composants sont organisés pour être
utilisés en interaction les uns avec les autres (voir
urbanisation).
Des tentatives de francisation du terme ont été
faites. On trouve ainsi parfois les termes cadre d'applications, proposé
par l'
Office
québécois de la langue française
[1] ou cadriciel
[2].
Un framework fournit un ensemble de fonctions facilitant la
création de tout ou d'une partie d'un système logiciel, ainsi
qu'un guide architectural en partitionnant le domaine visé en modules.
Un framework est habituellement implémenté à l'aide d'un
langage à objets, bien que cela ne soit pas strictement
nécessaire : un framework objet fournit ainsi un guide
architectural en partitionnant le domaine visé en
classes et en
définissant les responsabilités de chacune ainsi que les
collaborations entre classes. Un sous-ensemble de ces classes peuvent
être des
classes
abstraites.
Le déploiement à grande échelle de
bibliothèques d'objets exige un framework ; celui-ci fournit un
contexte où les composants sont ré-utilisés.
Si l'utilisation du terme
bibliothèque
est limitée à l'ensemble des fonctions du système, le
terme de framework peut être employé par extension pour inclure
également l'
architecture
logicielle préconisée pour cette bibliothèque
(organisation en couches, utilisation du modèle
MVC, etc), voire l'environnement
de développement bâti autour (
Microsoft .NET +
Visual Studio, etc)
même si celui-ci est capable de gérer différents
frameworks.
On trouve différents types de frameworks :
v Framework d'infrastructure système : pour
développer des
systèmes
d'exploitation, des
interfaces
graphiques, des outils de communication. (exemple :
Framework .Net,
Eclipse,
NetBeans,
Struts)
v Framework d'intégration
intergicielle :
pour fédérer des applications hétérogènes.
Pour mettre à dispositions différentes technologies sous la forme
d'une interface unique. (exemple : Ampoliros avec ses interfaces RPC,
SOAP, XML)
v Frameworks d'entreprise : pour développer des
applications spécifiques au secteur d'activité de
l'entreprise.
v Frameworks orientés
Système
de gestion de contenu
Les principaux avantages de ces frameworks sont la
réutilisation de leur code, la standardisation du
cycle de vie du
logiciel (Spécification, développement, maintenance,
évolution), ils permettent de formaliser une architecture adaptée
au besoin de l'entreprise. Ils tirent partie de l'expérience des
développements antérieurs.
Ces frameworks sont en quelque sorte des
progiciels
extrêmement souples et évolutifs
Ajax 2(*): ou
Asynchronous
JavaScript And
XML (« XML et
Javascript asynchrones »), est un
acronyme désignant
une solution
informatique libre pour
le développement d'
applications
Web.À l'image
de
DHTML ou de
LAMP, AJAX n'est pas une
technologie en elle-même, mais un terme qui évoque l'utilisation
conjointe d'un ensemble de technologies libres couramment utilisées sur
le Web :
· HTML (ou
XHTML) pour la structure
sémantique des informations ;
·
CSS pour la présentation des informations ;
· DOM et
JavaScript pour afficher
et interagir dynamiquement avec l'information présentée ;
· l'objet
XMLHttpRequest pour
échanger et manipuler les données de manière asynchrone
avec le serveur Web.
· XML.
En alternative au format XML, les applications AJAX peuvent
utiliser les fichiers texte ou
JSON. Les applications AJAX
peuvent être utilisées au sein des
navigateurs Web qui
supportent les technologies décrites précédemment. Parmi
eux, on trouve
Mozilla,
Firefox,
Internet Explorer,
Konqueror,
Safari ou
encore
Opera. Toutefois, ce dernier
ne supporte pas les transformations XSLT nativement pour les versions
antérieures à la 9.0
Java Swing3(*) : est une
bibliothèque
graphique pour le
langage de
programmation Java, faisant partie du package
Java Foundation
Classes (JFC), inclus dans
J2SE. Swing constitue l'une des
principales évolutions apportées par Java 2 par rapport aux
versions antérieures.
Swing offre la possibilité de créer des
interfaces
graphiques identiques quel que soit le
système
d'exploitation sous-jacent, au prix de performances moindres qu'en
utilisant
Abstract Window
Toolkit (AWT). Il utilise le principe Modèle/Vue-Contrôleur
(M/VC, les composants Swing jouent en fait le rôle de Contrôleur au
sens du
MVC) et dispose de plusieurs
choix d'apparence (de vue) pour chacun des composants standard
Javascript : est un
langage de
programmation de type
script,
orienté
objets à prototype, principalement utilisé pour les
pages Web dynamiques.
18.2.2. Hibernate
Hibernate est un Framework de mapping objet/relationnel ou de
persistance de données pour J2EE. En effet, la couche applicative voit
les données comme des classes dont le contenu reste en mémoire
même après la fin d'exécution du programme. D'où
persistance objet des données. De plus, le lien entre les classes
exposées et la source physique des données (moteur base de
données relationnelle) est défini par un fichier XML. D'où
mapping objet relationnel.
18.2.3. Spring
SPRING est un conteneur dit « léger »,
c'est-à-dire une infrastructure similaire à un serveur
d'application J2EE. Il prend donc en charge la création d'objets et la
mise en relation d'objets par l'intermédiaire d'un fichier de
configuration qui décrit les objets à fabriquer et les relations
de dépendances entre ces objets. Le coeur de SPRING et ce qui fait sa
très grande force sont la mise en oeuvre du design pattern «
Inversion Of Control » ou encore « Dependency Injection ».
L'idée du pattern IOC est très simple, elle consiste, lorsqu'un
objet A a besoin d'un objet B, à déléguer à un
objet C la mise en relation de A avec B.
18.3. Environnement de
développement
Cette partie présente les différents outils et
logiciels de développement utilisé avec l'architecture
logicielle.
18.3.1. Eclipse
Eclipse est un environnement de développement
intégré (Integrated Development Environment) dont le but est de
fournir une plate-forme modulaire pour permettre de réaliser des
développements informatiques. Tout le code d'Eclipse a été
donné à la communauté par I.B.M (open source). Eclipse
peut être installé sur les plates-formes Windows (98ME et SE / NT
/ 2000 / XP) et Linux et nécessite, quel que soit la plate-forme,
obligatoirement qu'un JDK 1.3 minimum y soit installé.
18.3.2. Power AMC
C'est un outil de
modélisation qui permet à la fois de faire du Merise et de
l'UML.
18.3.3. Apache Tomcat
Tomcat est un conteneur de servlet J2EE. Issu du
projet Jakarta, Tomcat est désormais un projet principal de la fondation
Apache. Tomcat implémente les spécifications des servlets et des
JSP de Sun Microsystems. Il inclut des outils pour la configuration et la
gestion, mais peut également être configuré en
éditant des fichiers de configuration XML. Comme Tomcat inclut un
serveur HTTP interne, il est aussi considéré comme un serveur
HTTP.
18.3.4. MySQL
MySQL est un serveur de bases de données relationnelles
SQL développé dans un souci de performances
élevées. Il est multi-thread, multi-utilisateurs. C'est un
logiciel libre développé sous double licence en fonction de
l'utilisation qui en est faite : dans un produit libre (open-source) ou
dans un produit propriétaire. Dans ce dernier cas, la licence est
payante, sinon elle est libre.
18.3.5. Maven 1.2
Maven est un outil open source de build pour les projets Java
très populaire, conçu pour supprimer les tâches difficiles
du processus de build. Maven utilise une approche déclarative, où
le contenu et la structure du projet sont décrits, plutôt qu'une
approche par tâche utilisée par exemple par Ant ou les fichiers
make traditionnels. Cela aide à mettre en place des standards de
développements au niveau d'une société et réduit le
temps nécessaire pour écrire et maintenir les scripts de
build.
Le coeur d'un projet Maven 2 est le modèle objet projet
(appelé POM pour project object model). Il contient une description
détaillée du projet, avec en particulier des informations
concernant le versionning et la gestion des configurations, les
dépendances, les ressources de l'application, les tests, les membres de
l'équipe, la structure et bien plus encore. Le POM prend la forme d'un
fichier XML (pom.xml) qui est placé dans le répertoire de base du
projet.
18.3.6. La méthodologie MDA
MDA est une méthodologie dont le principe est de se
dire que la plus grande partie de l'application doit pouvoir être
conçue indépendamment de la technologie utilisée pour
l'implémenter. Le résultat de cet effort de conception, ce sont
des modèles qui peuvent être spécifiés par un
langage standard, et lui aussi indépendant de la technologie
d'implémentation : UML. AndroMDA est l'outil utilisé dans
notre architecture et qui permet d'extraire toutes les informations qu'il peut
d'un model UML y applique un ensemble de modèles de conception et de
paramètres de configuration pour produire tout le code
générique de l'application.
L'intérêt de la méthode MDA :
· Diminue le travail de production de code redondant.
· Garantie la conformité des interfaces
d'implémentation au modèle. de conception.
· Pas besoin d'assurer manuellement la cohésion
des objets métiers java avec le modèle.
Concrètement si le modèle change :
· Les interfaces java sont
régénérées.
· Les classes implémentant ces interfaces sont
à mettre à jour.
· Les classes utilisant ces interfaces sont
éventuellement à mettre à jour.
Les interfaces java générées ne seront
jamais modifiées manuellement. La méthodologie MDA n'exempte pas
d'implémenter les objets métiers.
19.
Développement du module « Gestion de Cv »
J'ai choisi de présenter les étapes de
développement de ce module car il a des relations directes avec tous les
autres modules. Lors de l'édition d'un CV, on remarque qu'on a besoin
d'information provenant des autres Classes.
Durant toutes le étapes du développement de
CVTECH je suis le cycle MDA. A chaque modification du model UML je
régénère mon code et je le déploie, comme dans la
figure suivante:
« Cycle MDA »
Dans le code de l'application il faut distinguer entre ce qui
est généré automatiquement et non modifiable, ce qui
généré et modifiable et ce qui est à créer.
Ce schéma résume les différents et
principaux types de composants de l'application (toujours en prenant
l'exemple du module mission):
19.1. Les DO
Ce sont de simples classes java qui représentent les
entités métier de l'application avec des accesseurs set () et get
(). Les DO sont des objets de type open source ou POJO qui contiennent
l'état de persistance et la fonction métier.
19.2. Les DAO
C'est l'ensemble de classes permettant de cacher le code
manuel SQL/JDBC de la logique métier. C'est le moyen de l'isolation de
la couche persistance de la couche métier. Lors de leur
génération ces classes dispose déjà de
méthodes d'accès aux entités de la base de données
comme la création, modification et suppression de lignes dans les
tables. Or dans le cas d'une requête particulière (un select
conditionné par exemple), on leurs ajoutent de nouvelles méthodes
en utilisant le langage HQL.
19.3. HQL : Langage de
requête d'Hibernate
Hibernate fourni un langage d'interrogation extrêmement
puissant qui ressemble (et c'est voulu) au SQL. Mais ne soyez pas distraits par
la syntaxe ; HQL est totalement orienté objet, comprenant des notions
d'héritage, de polymorphisme et d'association.
19.4. Les Beans
Les objets métiers sont représentés
d'abord par les objets de type « Beans » de l'application
qui établissent le niveau 1 de la couche. On les appelle des
« Beans » parce que leur construction suit les
règles des JavaBeans (Objets sérialisables avec accesseurs) afin
d'être accessible aux bibliothèques de balises Struts qui
travaillent essentiellement avec des Beans Pour ce module, j'ai
implémenté une classe nommée
« PersonneBean.java » qui contient que des méthodes
get et set afin de permettre l'accès aux différents champs de la
classe.
19.5. Les services
Le deuxième niveau de la couche métier se
complète avec la classe « MissionServiceImpl.java»
permettant de réaliser des actions sur les « Beans».
Toutes les règles métier sont à
implémentées dans cette classe qui est accessible via son
interface « MissionService.java». Cette classe joue aussi le
rôle de l'intermédiaire entre la couche présentation et
accès aux données.
19.6. Les interfaces
Dans la communication RPC, nous utilisons beaucoup des
interfaces. Du coté client nous avons le Stub, qui est
représenté par une interface, du coté serveur nous avons
le skeloton qui est représenté par la classe qui
implémente cette interface.
Lorsque la communication est établie, une instance de
chaque objet est créée de chaque niveau de la communication.
Nous avons aussi des interfaces de chaque objet qui
implémente AsynchrCallback
Bilan
20.
Difficultés rencontrées
Les différentes difficultés ont
été le choix des outils.
Afin de faire la modélisation, nous avions eu le choix
entre Power AMC, MagicDraw, ArgoUML, OMONDO.
Le choix des autres outils n'a pas été plus dur.
En fait j'utilise déjà eclipse comme IDE, et j'aime beaucoup
programmer en Java J2EE.
J'ai choisi MySQL comme base de données, parce qu'il
est open source, sur et gratuit.
21. Etat
d'avancement
Ayant fini la conception, j'ai commencé le
développement des différents modules. L'application
séparée en plusieurs couches. Non seulement elle est une
application cliente - serveur, mais en plus au niveau du client nous avons une
application qui suis la technologie 2 tiers (couche métier et couche vue
ou web). Et au niveau Serveur, nous avons une architecture 2tiers aussi :
la couche métiers et la couche DAO.
Pour ma part j'avance module par module, c'est-à-dire,
l'identification et la gestion des Personnes.
Il reste la saisie des différents critères et
l'édition du CV.
Conclusion
La société SFEIR est une SSII grandissante, qui
a plus de 250 collaborateurs, en Ile de france. Elle dispose de client grand
compte et estime à 1000 collaborateurs avec un CA de 100 millions
d'euros en 2012. Cette disposition lui permet d'être étroitement
en contact avec le besoin du moment et des exigences de ses clients.
Notre thème de stage s'est déroulé au
sein de SFIER à suresnes. Le projet sur lequel nous avions
évolué était assez enrichissant et rebondissant. J'ai
appris aussi bien en rigueur scientifique, en gestion de projet, en
documentation, en versionnage et sauvegarde. Nous avons aussi les
différents cas de test, les différents documents de livraison, de
spécification, bref, depuis la phase d'analyse à la livraison du
projet.
L'outil de développement utilisé au sein de
SFEIR est un mélange de plusieurs Framework agissant à de
différents niveaux au sein d'une application n tiers ou J2EE. Du
coté client, au niveau WEB, nous avons du MVC avec du GWT, au niveau
Service, de l'inversion de contrôle avec du Spring IOC. Du coté
serveur, nous avions eu aussi du Spring IOC, du coté DAO, pour le
mapping et la persistance des objets, nous avons, Hibernate. Nous avons
utilisé Tomcat comme serveur d'application et Comme base de
données MySQL. Ce stage est très enrichissant. Les
différentes évolutions demandées par le client, ont
été rendues en temps et en heure, permettant d'augmenter et de
faire perdurer la confiance mutuelle.
Bibliographie
http://fr.wikipedia.org/wiki/Java_2_Enterprise_Edition
http://www.memoireonline.com/
http://www.sfeir.com
http://librapport.org/getpdf.php?get=841&id=17&pagename=FILE:download/document%20view
JDK1.4.2
http://java.sun.com/j2ee/1.4/docs/api/index.html
Maven1.2
http://java.developpez.com/faq/maven/
Apache tomcat
http://tomcat.apache.org/MagicDraw 9.5 (UML)
Un outil de versionnement (CVS / SVN)
Spring IOC
http://www.martinfowler.com/articles/injection.html,
http://smeric.developpez.com/java/uml/avalon/ioc/
Eclipse 3
http://www.eclipse.org/
GWT
http://code.google.com/webtoolkit/
Hibernate 3.0
http://www.hibernate.org/hib_docs/reference/fr/html/
MySql
http://www-fr.mysql.com/
LEXIQUE
Apache TomCat
Conteneur "Open Source" de Servlet J2EE. Il fait
parti du projet Jakarta au sein de la fondation Apache. TomCat
implémente les spécifications des Servlets et des JSP de Sun
Microsystems. Comme TomCat inclut un serveur HTTP interne, il est aussi
considéré comme un serveur HTTP.
Batch
Ou traitement automatique par lots, c'est un
enchaînement automatique de commandes sans intervention d'un
opérateur. En général le déclenchement de ces
traitements est automatisé.
CVS
Acronyme de "Concurrent Versions System", CVS est un
logiciel libre sous licence GPL de gestion de versions. Il aide les sources
à converger vers la même destination et fait ainsi de la gestion
concourante
de versions ou de la gestion de versions
concurrentes.
HTML
Langage informatique créé et
utilisé pour écrire les pages Web. C'est un langage de balises
surtout axé sur la mise en forme du texte.
J2EE
"Java 2 Platform Entreprise Edition", c'est une
spécification pour le langage de programmation Java de Sun plus
particulièrement destiné aux applications d'entreprise. Dans ce
but, toute implémentation de cette spécification contient un
ensemble d'extension au FrameWork Java standard (J2SE) afin de faciliter la
création d'applications réparties.
JavaScript
Langage de programmation de type script
principalement utilisé pour dynamiser et augmenter les
fonctionnalités des pages Web. [16]
JSP
"Java Server Pages", technologie basée sur
Java qui permet aux développeurs de générer dynamiquement
du code HTML, XML ou tout autre type de page Web. La technologie permet au code
Java et à certaines actions prédéfinies d'être
ajoutés dans un contenu statique.
Module
On parle ici de module pour définir les objets
Natural.
MS Access
Gestionnaire de base de données fourni par
Microsoft.
MySQL
Gestionnaire de base de données
libre.
Oracle
Système de gestion de base de données
relationnelle fourni par Oracle Corporation et couramment utilisé dans
les applications sur différentes plates-formes.
Servlets
C'est une API qui permet de générer
dynamiquement des données au sein d'un serveur HTTP. Ce programme Java
s'exécute dynamiquement sur le serveur Web et permet l'extension des
fonctions de ce dernier : accès à des bases de données,
transactions...
SGBD
Abréviation pour Système de Gestion de
Base de Données.
SQL
"Structured Query Language" ou langage
structuré de requête est un pseudo-langage informatique standard
et normalisé destiné à interroger ou manipuler une base de
données relationnelle.
Sun Microsystems
Constructeur d'ordinateurs et éditeur de
logiciels américain.
UML
"Unified Modeling Language", c'est un langage
graphique de modélisation des données et des traitements.
XML
"eXtensible Markup Langage", standard du W3C qui sert
de base pour créer des langages de balisage : c'est un
"métalangage".
Glossaire
* 1 Définition de
Wikipedia
* 2 Selon Wikipedia
* 3 Toujous selon Wikipedia
|