portefeuilleadriengenest.e-monsite.comportefeuilleadriengenest.e-monsite.com/medias/files/... ·...
Transcript of portefeuilleadriengenest.e-monsite.comportefeuilleadriengenest.e-monsite.com/medias/files/... ·...
Adrien GENEST BTS Service informatiques
Lycée Raoul Follereau aux organisations
Option SLAM
Rapport de stageTechnicentre Industriel de Nevers
1 Rue Benoît Frachon
58640 Varennes Vauzelles
2014-2015
Du 9 février au 3 juin 2015
Plan :
PLAN :.................................................................................................................................................. 2
REMERCIEMENTS :.......................................................................................................................... 1
INTRODUCTION............................................................................................................................... 2
Présentation de l’entreprise :......................................................................................................................... 2
Présentation du Technicentre de Varennes-Vauzelle :....................................................................................3
Présentation du service Informatique :.......................................................................................................... 4
AUTRE TÂCHES EFFECTUÉ DURANT LE STAGE:....................................................................5
Page d’accueil :.............................................................................................................................................. 6
Page gestion bibliothèque :............................................................................................................................ 7
Page gestion stock :....................................................................................................................................... 8
Planning et tableau de bord :......................................................................................................................... 9
PRÉSENTATION DU PROJET :.................................................................................................... 10
MCD............................................................................................................................................................ 11
MLD:........................................................................................................................................................... 12
Requête récursive........................................................................................................................................ 13
Interface de DP............................................................................................................................................ 15
Remerciements :
Je tiens à remercier tout d’abord Sébastien Coussy, responsable du service informatique du technicentre Industriel de Nevers pour m’avoir accueilli au sein de son service.
Je tiens ensuite à remercier Jérôme Gagnard mon tuteur durant mon stage, qui m’aura guidé et aider dans toutes les tâches que j’ai réalisé durant ces 8 semaines.
Je tiens enfin à remercier toutes les personnes du service informatique local du technicentre industriel de Nevers pour l’aide qu’ils m’auront apporté durant les 8 semaines mais aussi pour leur accueil chaleureux.
1
Introduction : Dans le cadre de ma formation en BTS Services Informatiques aux Organisations spécialité (Solutions logicielles et applications métiers), j’ai effectué un stage d’une durée de 8 semaines du 9 février 2015 au 03 avril 2015 au sein du service informatique du technicentre SNCF à Varennes Vauzelle.
Je vais d’abord présenter la SNCF et le technicentre puis je continuerai sur le projet que j’ai réalisé durant mon stage ou je devais développer une application en WinDev.
Présentation de l’entreprise : Le Technicentre SNCF (Société nationale des chemins de fer français) de Varennes-Vauzelles qui compte plus de 1200 employé s’occupe de la maintenance mais aussi la rénovation des TER (Transport express régional) de toute la France. Il y a 38 Technicentre en tout en France qui embauche plus de 20 000 personnes. Il existe deux types de technicentre, les technicentres de maintenance (intervention légère sur les trains) anciennement appelé EMM mais aussi les technicentres industrielle (intervention lourde sur les trains) anciennement appelé EIM. Le technicentre de Varennes-Vauzelles est un technicentre industriel, il est aussi appelé TIN (Technicentre Industriel de Nevers).
La SNCF est une entreprise séparée en 5 entités principales depuis le 1er janvier 2015 qui sont SNCF infra, SNCF Proximités, SNCF Voyages, SNCF Logistique et Gare et Connexions. Le technicentre de Varennes-Vauzelles se situe dans le domaine matériel de la SNCF qui est dans la branche opération Industrielle et il s’occupe de l’entretien des TER qui appartient à l’entité SNCF Proximités.
2
SNCFSiège social
La Plaine Saint-Denis, Saint-Denis (France)
SNCF Infra
RFF (Réseau ferré de France)
Opération industrielle
Domaine Matériel
Technicentre SNCF
SNCF Proximités
TER(train express
regional
SNCF Voyages
TGV(train à grande
vitesse)
SNCF Logistique
Fret
Gare et Connexions
Gare de Nevers
Présentation du Technicentre de Varennes-Vauzelle :Lieu de l’organisation : 1 rue Benoit Frachon, 586410 Varennes-Vauzelle (A compléter)
Numero de telephone : 0386936419
Ci-dessous un organigramme du technicentre de Varennes-Vauzelle:
Le service informatique appartient aux ressources humaines car peut être que les ressources humaines ont numérisé ou veulent numérisé les documents administratif ou sinon peut-être que le service informatique permet d’améliorer les conditions de travail au sein du technicentre en développant des applications par exemple.
3
Direction du Technicentre
Catherine Trevet
Responsable amélioration
ContinueFred Marie
UO transverses
UU Pièces réparables du
matériel
UO Maintenance engins
Pôle Ingénierie Matériaux
Assistante de Direction J Laporte
Pôle Ingénierie
Qualité environnement
COSI
Pôle Logistique Industrielle
Ressources humaines
Service Informatique
Sebastien CoussyPôle
Industrielle
Présentation du service Informatique : J’ai exercé mon stage dans le service informatique qui est composé d’une dizaine de personne. Environ la moitié de ces personnes s’occupe de la partie réseau du technicentre tandis que les autres s’occupent plutôt du développement Informatique pour le Technicentre.
Pourquoi il y a encore un service informatique local au Technicentre de Nevers?
Il y a encore un service informatique au technicentre de Varennes-Vauzelles contrairement aux autres technicentre car comme il compte beaucoup d’employés, le service informatique permet de répondre à la demande du technicentre plus rapidement que si il était sous-traiter ou externaliser.
4
Sebastien CoussyResponsable du service
informatique
Lucas FerrandonAdministrateur réseaux et
sytèmes
Cedric Marchal Stagiaire BTS SIO
Administrateur sytsème et réseaux
Jérôme GagnardDéveloppeur application et
WebChef de projet
Damien DefienneAlternant CS2I
Développeur Application et Web
Chef de Projet
Nicolas GodetDéveloppeur Application et
LogicielleChef de projet
Adrien GenestStagiaire BTS SIO
Développeur d'application
Thibault GerbeaultAlternant CS2I
Développeur Web et Chef de projet
Julien GagnardDéveloppeur d'application et
WebChef de Projet
Aymeric MaillerAlternant
Adminsitrateur système et réseaux
Autre tâches effectué durant le stage: Durant mon stage j’ai effectué un document expliquant toutes les étapes préalable à un projet comme l’étude de l’existant, la critique de l’existant et enfin l’analyse des besoins.
J’ai aussi réalisé un diagramme de Gantt qui indique l’ordre des tâches que j’ai effectué et à quelle date je l’ai ai réalisé.
Le technicentre SNCF a fait une demande au service informatique concernant une application permettant la gestion d’un catalogue de produit mais qui permet aussi d’ajouter les produits du catalogue au stock, ensuite l’application nous permettait d’anticiper la commande d’un produit grâce à la date de péremption et le délai de réapprovisionnement. L’application utilise une base de données en locale.
Pour cette application, je me suis servi de ce MCD :
e
L’application était composée de trois fenêtres :
- la fenêtre principale qui se lance au lancement et qui permet de choisir la fenêtre que l’on souhaite ;
- la fenêtre de gestion de la bibliothèque qui permet de gérer les produits dans la bibliothèque ;
- la fenêtre gestion des stocks qui permet de gérer les produits dans le stock grâce à une date de péremption et un délai de réapprovisionnement ;
5
0,10, n
t_produit_bibliotheque
produit_bibliotheque_id
produit_bibliotheque_reference
produit_bibliotheque_commentaire
produit_bilbiotheque_designation
produit_blibliotheque_delai_reapprovisionnement
produit_bibliotheque_cache
t_produit_stock
produit_stock_id
produit_stock_produit_bibliotheque_id
produit_stock_produit_bibliotheque_reference
produit_stock_produit_bibliotheque_commentaire
produit_stock_produit_bilbiotheque_designation
produit_stock_produit_bibliotheque_delai_reapprovisionnement
produit_stock_numero
produit_stock_date_peremption
produit_stock_date_sortie
Page d’accueil :
Voici la page d’accueil qui est la page qui apparait lors du lancement de l’application. Cette page ne comporte que deux boutons qui permettent de savoir sur quelles pages ont veut être redirigées.
Elle comporte aussi le logo de l’application qui est inspiré du Pop’art.
Le logo se nomme POP pour Prévoyance de l’Obsolescence des Produits.
6
Page gestion bibliothèque :
La page gestion bibliothèque est la page qui permet d’ajouter au catalogue des produits.
Elle est composée d’un tableau qui contient les produits déjà ajoutées au catalogue avec toutes leurs informations. La colonne visible permet de savoir si oui ou non le produit sera visible sur la page gestion des stocks lorsque l’on cherchera un produit dans la bibliothèque.
Le tableau comporte deux boutons :
- + qui permet d’afficher les champs de saisie sur la droite pour pouvoir ajouter un nouveau produit ;
- - qui permet de supprimer le produit sélectionné dans le tableau.
Lorsque l’on sélectionne une ligne du tableau, ses valeurs seront transmises aux champs de saisie et il sera possible de modifier le produit.
Tous les champs de saisie définissent un produit de la bibliothèque mais il n’y a que la référence et l’id qui sont obligatoires.
Le bouton Enregistrer permet soit de modifier un produit si une ligne du tableau est sélectionner ou soit d’ajouter un nouveau produit si on avait cliqué sur « + ».
Enfin le bouton imiter permet de copier un produit qui est déjà ajouté au tableau, seul l’id et la référence doivent changer car ils sont uniques, il suffit ensuite juste de l’enregistrer pour pouvoir l’ajouter au tableau.
7
Page gestion stock :
La page gestion bibliothèque est la page qui permet d’ajouter au stock des produits qui sont dans le catalogue ou non.
Cette page contient un tableau qui stocke les produits dans le stock, les lignes du tableau peuvent être de trois états :
- Rouge, si le délai entre le réapprovisionnement et la date de péremption est négatif, ce qui veut dire qu’il faut recommander le produit ;
- Normal, le produit est toujours dans le stock et il n’as pas besoin d’être recommander. - Grisé, Le produit est sorti.
Le tableau comporte aussi deux boutons :
- + qui permet d’afficher les champs de saisie sur la droite pour pouvoir ajouter un nouveau produit au stock;
- - qui permet de supprimer le produit du stock sélectionné dans le tableau.
Lorsque l’on sélectionne une ligne du tableau, ses valeurs seront transmises aux champs de saisie et il sera possible de modifier le produit.
Le champ Produit « bibliothèque » est le champ qui comporte tous les produits de la bibliothèque que l’on a mis à « Visible » avec leur référence et leur désignation.
Le bouton Enregistrer permet soit de modifier un produit si une ligne du tableau est sélectionner ou soit d’ajouter un nouveau produit au stock si on avait cliqué sur « + ».
Pour que l’ajout fonctionne les champs référence, id et désignation ne doivent pas être vide.
8
Enfin le bouton imiter permet de copier un produit qui est déjà ajouté au tableau, seul l’id changera.
Une fois l’application prête à être installée sur des postes, j’ai réalisé son bilan.
Planning et tableau de bord :
Durant les 8 semaines de mon stage, j’ai réalisé des tableaux de bord hebdomadaires qui expliquait toutes les tâches que j’ai effectué durant mon stage.
Voici à quoi ressembler ces tableaux de bords :
Au tout début de mon projet j’ai aussi réalisé un diagramme de Gantt qui planifier les tâches que je devais réaliser durant tout le stage et aussi un planning de ma présence.
9
Présentation du projet : Contexte : La direction du technicentre industriel de Nevers souhaitait pouvoir faire le suivi de question-réponse avec les organismes syndicaux.
La mission que l’on m’a confiée durant ce stage était donc de développer une application en WinDev permettant le suivi des questions-réponses des organismes syndicaux autour d’une base de données déjà existante sous PostgreSQL qui devra réaliser l’édition des documents synthétiques pour les différentes réunions des délégués du personnel. L’un des principaux objectifs était de rendre l’application plus rapide que ce soit pour l’interface ou les traitements
Réalisation (Développement, Test, etc.).
J’ai donc dû commencer par faire une analyse de l’existant puis faire sa critique et continuer sur les besoins que le projet nécessité.
10
Organisme syndical
Secrétaire de
direction
Direction
Agent
Application DP
Groupe
1- L’organisme pose une question à une date
2- la secrétaire associe la question à un groupe, à un hème et aux questions liée si besoins
3- Le groupe associe la question à l’un de ses agents 4- L’agent répond aux questions
qui lui ont été affectés
5- La direction peut modifier puis imprimer les questions-réponses
6- Réunion entre la direction et les organismes
Après l’analyse de l’existant j’ai réalisé la critique de l’existant mais aussi l’analyse des besoins:
MCD:
11
0,n
0,n
1,1
1,1
0,n
1,1
1,1
0,n
1,1
1,1
1,10,n
1,1
0,n
0,n
0,n
1,1
0,n
0,n
1,1
1,10,n
1,10,n
t_question
question_id
question_num
question_libelle
question_date
question_ordre
t_theme
theme_id
theme_libelle
theme_ordre
t_syndicat
syndicat_id
syndicat_nom
syndicat_ordre
t_reponse
reponse_id
reponse_libelle
reponse_piece-jointe
reponse_ordre
t_groupe
groupe_id
groupe_nom
t_agent
agent_id
agent_nom
agent_prenom
agent_poste
t_ensemble
ensemble_id
ensemble_nom
ensemble_ordre
t_sous_theme
sous_theme_id
sous_theme_libelle
sous_theme_ordre
tj_question_groupe
question_groupe_id
tj_question_agent
question_agent_id
tj_question_reponse
question_reponse_id
MLD:t_sous_theme (sous_theme_id, sous_theme_libelle, sous_theme_ordre, #theme_id)
t_theme (theme_id, theme_libelle, theme_ordre)
t_syndicat (syndicat_id, syndicat_nom, syndicat_ordre)
t_groupe (groupe_id, groupe_nom)
t_agent (agent_id, agent_nom, agent_prenom, agent_poste, #groupe_id)
t_reponse (reponse_id, reponse_libelle, reponse_piece-jointe, reponse_ordre, #agent_id)
t_question (question_id, question_num, question_libelle, question_date, question_ordre, #theme_id, #syndicat_id, #groupe_id, #reponse_id, #ensemble_id)
t_ensemble (ensemble_id, ensemble_ordre, #question_id)
tj_question_groupe (question_groupe_id, #question_id, #groupe_id)
tj_question_agent (question_agent_id, #question_id, #agent_id)
tj_question_reponse (question_reponse_id, #question_id, #reponse_id)
Voici le MCD et le MLD que j’ai réalisé d’après les besoins que l’on m’a énoncé avant de connaitre l’existant, ils étaient tous les deux très proches de l’existant. Les seules différences sont les attributs manquant comme l’archivage pour les entités.
12
Requête récursive Ensuite pour pouvoir différencier les thèmes et les sous thèmes, j’ai dû faire une requête récursive sous PostgreSQL :
WITH RECURSIVE sub_tree ( theme_id , theme_libelle , theme_parent_id , theme_ordre_impression , rang , chemin , chemin_tri ) AS ( -----------------------------------------------------------------------
SELECT theme_id , theme_libelle
, theme_parent_id , theme_ordre_impression
, 1 , theme_libelle::text , theme_ordre_impression::text FROM %1.v_theme WHERE theme_parent_id IS NULL ---------------------------------------------- UNION ---------------------------------------------- SELECT t1.theme_id , t1.theme_libelle
, t1.theme_parent_id , t1.theme_ordre_impression
, t2.rang + 1 , chemin ||' ' || t1.theme_libelle
, chemin_tri || '-' || t1.theme_ordre_impression
FROM %1.v_theme t1 INNER JOIN sub_tree t2 ON t2.theme_id = t1.theme_parent_id ) ------------------------------------------------------------------------ SELECT chemin_tri , chemin , organisme_ordre_impression , reponse_ordre_impression , question_numero , question_libelle , question_date , question_id , question_organisme_id , question_organisme_nom , theme_id , theme_libelle , liaison_id , liaison_regroupement_id , liaison_ordre_impression , reponse_id , reponse_libelle , piece_jointe_id
13
, piece_jointe_libelle , CASE WHEN liaison_id IS NOT NULL THEN ( SELECT MIN(question_numero) as mini FROM %1.v_liaison l1
JOIN %1.v_question q1 ON q1.question_id = l1.liaison_question_id WHERE liaison_regroupement_id = l.liaison_regroupement_id ORDER BY mini ) ELSE question_numero END AS num_impression_liaisonFROM sub_tree sLEFT OUTER JOIN %1.v_question q
ON question_theme_id = s.theme_id LEFT OUTER JOIN %1.v_reponse r
ON q.question_id = r.reponse_question_id LEFT OUTER JOIN %1.v_piece_jointe p
ON r.reponse_id = piece_jointe_reponse_idLEFT OUTER JOIN %1.v_liaison l
ON q.question_id = l.liaison_question_id LEFT OUTER JOIN %1.v_organisme o
ON question_organisme_id = o.organisme_idORDER BY chemin_tri, organisme_ordre_impression, num_impression_liaison, liaison_ordre_impression, question_numero
Cette requête est une requête CTE (Common table expression ou table d’expression partagé), elle permet de faire appel à une vue « temporaire » qui va faire d’abord une requête sur une table récursive, puis faire une sous requête grâce au Union pour faire le lien entre l’id parent est l’id enfant dans cette même table.
Dans cette requête, pour pouvoir différencier les thèmes et les sous-thèmes, j’ai mis dans la vue temporaire sub_tree, un paramètre rang qui contient la valeur du rang des thèmes pour indiquer leurs niveaux par rapport aux autres. Mais j’ai aussi créé un paramètre « chemin » qui permet de connaitre l’arborescence d’un thème pour savoir si il est un thème parent ou un thème enfant, ce champ permet donc de trier plus facilement sous la forme d’un arbre car on a directement le chemin des thèmes.
La seconde requête permet de faire appel à la CTE et de faire le lien entre celle-ci et les tables de la base de données. Cette requête permet de d’ajouter directement les données dans un arbres car elles sont déjà trié dans l’ordre.
14
Interface de DPVoici l’interface de l’application DP qui permet de faire la gestion des liaisons, questions, réponse et pièce-jointe.
Pour arriver à cette interface, j’ai rédigé un document Word qui contenait plusieurs maquettes avec pour chacune leurs spécifications techniques. Ce document comportait ensuite un tableau dans lequel, il y avait tous les besoins que nécessitait l’interface et en face de ces besoins on cochait pour chaque interface si oui ou non elle répondait aux besoins. Ensuite j’ai choisi la maquette qui répondait le plus aux besoins et j’ai justifié pourquoi.
Cette interface est basée sur un arbre qui est rempli par une base de données en PostgreSQL.
Dans cet arbre, on trouve d’abord les thèmes, puis les sous-thèmes si il y en à, vient ensuite soit les liaisons qui comporte des questions, puis des réponses, puis des pièce-jointe ou sinon il apparait directement les questions avec leur réponses et pièces jointes.
Ensuite il est possible de choisir des filtres en haut, soit par date et par thème qui mettent à jour l’arbre automatiquement.
Ensuite pour chaque ligne sélectionnée dans l’arbre, des champs de saisie vont apparaitre sur la droite pour pouvoir modifier la donnée sélectionnée dans l’arbre.
15
Enfin un bouton lier permet de lier les questions entre elle, un bouton supprimer permet de supprimer la ligne que l’on à sélectionnée et enfin un bouton ajouter permet d’ajouter un nouvel élément à l’arbre un niveau en dessous de l’élément que l’on à sélectionnée.
16
Conclusion sur le stage :
Ce stage au sein du service informatique local du technicentre industriel de Nevers m’a été très bénéfique.
Il m’aura permis d’acquérir de nouvelles compétences comme l’utilisation du logiciel WinDev pour développer ou encore du SGBD PostgreSQL, il m’a aussi permis de voir comment fonctionnait un service informatique.
Ce stage a parfaitement répondu à mes attentes et il m’a permis de conforter mon choix de poursuivre dans le secteur informatique.
17