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


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

 > 

Réalisation d'une application de Gestion de CV

( Télécharger le fichier original )
par Benito d'ALMEIDA
Pole Universitaire léonard de vinci - Ingénieur Informatique 2007
  

Disponible en mode multipage

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

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






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








"Ceux qui vivent sont ceux qui luttent"   Victor Hugo