21
Compte-Rendu SDL Auteurs : BOUTROUILLE Alexis BAILLEUL Pierre Tuteur : Ioan Marius Bilasco « Reprise de l’application de gestion de listes de présences des alternants » Master MIAGE 1 • Année 2012/2013 1

« Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

  • Upload
    doliem

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Compte-Rendu SDLAuteurs : BOUTROUILLE Alexis BAILLEUL Pierre

Tuteur : Ioan Marius Bilasco

« Reprise de l’application de gestion de listes de présences

des alternants »

Master MIAGE 1 • Année 2012/2013 1

Page 2: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du
Page 3: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Remerciements

Nous tenons à remercier M. Bilasco, notre tuteur de stage, qui nous a accordé sa confiance et attribué une mission valorisante durant ce stage de développement logiciel.

Nous le remercions également pour sa disponibilité, ainsi que ses conseils sur les choix technologiques à adopter tout au long de ce projet.

Enfin, nous profitons de ce rapport pour remercier la formation MIAGE et plus particulièrement, Anne-Cécile Caron, pour nous avoir donné la chance de participer à ce stage.

Page 4: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Table des matièresPrésentation du sujet 2

Présentation du projet 31.1 Etude de l’existant 3

1.2 Travail demandé 4

Travail effectué 52.1 Choix du framework : Symfony2 5

2.2 Intégration du projet sous Symfony2 7

2.3 Ajout de fonctionnalités 8

2.4 Architecture logicielle 11

2.5 Refonte graphique 12

Gestion et organisation du projet 142.1 Organisation avec notre tuteur 14

2.2 Organisation du groupe 14

2.3 Difficultés rencontrées 15

Conclusion 163.1 Sur le plan technique 16

3.2 Sur le plan humain 17

Webographie 18

Page 5: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Présentation du sujet

Dans le cadre de la formation en alternance pour les mentions MIAGE et Informatique, des rapports de présences aux différents cours de la formation sont demandés. Ils sont indispensables au SUDES pour le financement de la formation.

Historiquement, le suivi des alternants était effectué via des feuilles de présences imprimées. Ce système pouvant engendrer quelques inconvénients...

Désormais, la saisie des présences est informatisée. Cela passe donc par l’édition de différents tableaux récapitulatifs dans le but de faciliter le suivi.Grâce à cette trace informatique, il est maintenant possible pour le département FIL de générer des tableaux de bord avec diverses statistiques liées aux étudiants, ainsi qu’à la formation complète.

Le but de ce stage consiste en la reprise de l’application par le biais d’un framework MVC (Modèle - Vue - Contrôleur) et l’ajout de nouvelles fonctionnalités.

2

Page 6: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Présentation du projet

1.1 Etude de l’existant

L’application existante a été développée par Marius Ioan BILASCO. Le langage utilisé est du PHP couplé à une base de données MySQL.

Elle propose la génération de feuilles de présences en fonction de la personne qui est identifiée sur l’application (par exemple, un étudiant ne pourra voir que sa feuille de présence, tandis qu’un professeur aura accès à l’interface de tous les étudiants de la formation dans laquelle il enseigne).

Aussi, l’organisation de l’application ne permet pas une reprise «facile». Le code en lui même est lisible, mais les méthodes principales font appel à d’autres parties de l’application et il est difficile de retrouver le chemin emprunté par une méthode pour avoir son résultat.

Cependant, si ce code fragmenté constitue une gène au départ, après un certain temps d'adaptation, il permet de mieux cibler le rôle de chaque fonction et de les débugger rapidement.

3

Page 7: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

1.2 Travail demandé

Dans un premier temps, le travail demandé fût d’ajouter des fonctionnalités à l’application existante, telles que :

• la possibilité pour les personnes ayant les droits suffisants de pouvoir modifier les données des différentes séances (date, heure, intitulé...)

• rendre l’application indépendante du Google Calendar

• automatiser certaines tâches (pouvoir tout récupérer du Google Calendar)

Le souhait de M. Bilasco était d’utiliser un framework, ceci permettant d’organiser le travail et de le reprendre facilement si besoin. Le choix du framework était libre, et s’est rapidement porté sur deux possibilités :

• Spring : un framework utilisant la technologie J2EE

• Symfony2 : un framework utilisant la technologie PHP

Notre choix s’est donc porté sur Symfony2, le langage PHP étant déjà présent sur l’application, il était plus aisé d’ajouter des fonctionnalités en se basant sur l’existant.

4

Page 8: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Travail effectué

2.1 Choix du framework : Symfony2

Symfony2 est un framework codé en PHP qui permet de développer beaucoup d'applications web de la plus simple à la plus complexe.

Ce framework définit un squelette de base à respecter, mais dans lequel on peut y mettre tout le code que l'on souhaite.

Symfony permet de développer sur le principe du modèle MVC en séparant distinctement les 3 couches. Il fournit la possibilité de faire des tests unitaires et fonctionnels, de la ré-écriture d’URL très facilement et bien d’autres fonctionnalités.

Lancé en 2005, Symfony est aujourd'hui un framework stable connu et reconnu à l'international. Il dispose également d’une communauté active de développeurs, utilisateurs et d'autres contributeurs qui participent à l'enrichissement continu de l'outil. Symfony2 étant un script open source, il a également été écrit par toute la communauté : beaucoup de Français, mais aussi des développeurs de tous horizons : Europe, États-Unis, etc.

A noter qu’il s’agit d’un des frameworks PHP les plus utilisés dans le monde, et notamment dans les entreprises.

5

Page 9: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Inconvénients :

Toutefois, ce framework peut être délicat à aborder pour un débutant s'il n'a pas de bonnes connaissances en programmation orientée objet. Symfony est assez difficile à prendre en main et n’est pas simple à comprendre, que ce soit niveau utilisation ou niveau fonctionnement.

Aussi, une certaine maîtrise des technologies web et la connaissance du principe MVC sont nécessaires afin de pouvoir exploiter toute la puissance de cet outil.

Fig.1 Schéma du pattern MVC

6

Page 10: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

2.2 Intégration du projet sous Symfony2

Symfony2 nécessitait une programmation orientée objet, et le respect du modèle MVC. Nous nous sommes d’abord documenté pour mieux appréhender ce framework et voir les outils qu’il proposait. Il a ensuite fallu passer par une phase d’analyse assez conséquente, pour isoler les différentes couches du modèle à partir de l’existant.

Nous avons d’abord extrait le code de certains fichiers pour former la structure des vues, ce qui nous a donné la direction à prendre pour les autres couches du modèle.

La structure des vues a donc permis de mettre en place les contrôleurs. Le couples vues/contrôleurs a, quant à lui, défini les besoins pour la couche du modèle.

Concernant le modèle, de nombreux fichiers ont été repris et adaptés pour former des classes et enrichir cette couche. Les fonctions qui étaient propres à ces fichiers sont devenus des méthodes de classe. Ces classes communiquent entre elles par des appels de méthodes, comme pouvaient le faire les fichiers auparavant avec leurs fonctions. D’autres fichiers ont été convertis en objets, puisqu’ils dégageaient un comportement qui s’y prêtait. Pour exemple, il y a un objet d’authentification qui instancie une session qui lui est propre, il se charge de retransmettre cette session au besoin.

Par ailleurs, il y a quelques incompatibilités logiques entre le PHP traditionnel et le PHP sous Symfony2. Il est impossible d’utiliser la variable globale $_SESSION. Un des nombreux outils du framework : la gestion de session. Symfony2 possède son sous-système de session qui permet une gestion orientée objet puissante mais radicalement différente.

7

Page 11: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

2.3 Ajout de fonctionnalités

L’application existante permettait l’impression des feuilles de présence. Nous avons mis en place un système de «mode». Nous avons ajouté un mode «saisie» qui permet de compléter les informations des feuilles de présences et les stocker dans une base de données.

De base, l’application est en mode «impression». Un bouton permet cependant de basculer vers le mode «saisie», à travers un paramètre «get». Ce bouton est géré via JavaScript, qui se charge de basculer d’un mode à l’autre et le valider. Naturellement, des contrôles ont été faits pour sécuriser ce fonctionnement, au niveau du contrôleur et du JavaScript.

Lorsque l’utilisateur est en mode impression, les feuilles de présences peuvent être imprimées comme auparavant (transformation du tableau au format .pdf qui permet ensuite l’impression). Lorsque l’utilisateur est en mode saisie, il est possible d’enregistrer les présences en base pour chaque créneau de chaque matière.

8

Page 12: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Fig.2 Feuille de présence en mode saisie

Une fois les checkbox cochées, l’utilisateur peut décider d’enregistrer sa saisie via le bouton «enregistrer».

Il est alors redirigé vers une page lui confirmant la réussite de la saisie :

Fig.3 Redirection de page confirmant la saisie

9

Page 13: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Une dernière fonctionnalité qui nous a été demandée sur laquelle nous travaillons actuellement : la réalisation d’un tableau qui permet de comparer le nombre d’heures qu’un étudiant doit effectuer en «théorie», avec le nombre d’heures qu’il a effectué réellement.

Ce tableau récapitulatif permettra donc de voir le nombre de présences / absences par mois. On pourra accéder à ces informations en fonction de plusieurs filtres : tri par formation et par mois.

10

Page 14: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

2.4 Architecture logicielle

• Base de données :

‣ Nous avons repris la base de données déjà existante en MySQL. Pour exploiter cette base, nous utilisions MySQL Workbench.

!

• Développement web :

- Framework :

‣ La reprise du projet reposant essentiellement sur la découverte et l’utilisation d’un framework MVC, nous avons utilisé l’un des plus populaires du moment pour le développement PHP : Symfony2

- Script :

‣ Pour basculer du mode saisie au mode impression, nous avons développer un script JavaScript qui permet d’afficher la page désirée à l’aide d’un bouton.

11

Page 15: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

2.5 Refonte graphique

Actuellement, l’application existante ne respecte pas la charte graphique du FIL. Il serait plus intuitif et cohérent pour les étudiants que l’application de feuilles de présences et le FIL se ressemblent visuellement afin de garder une certaine continuité dans la navigation.

Pour cela, nous avons réalisé une refonte graphique de l’application en suivant le modèle déjà réalisée pour le portail du FIL.

Fig.4 Application Unipres existante

12

Page 16: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Fig.5 Unipres après refonte graphique

13

Page 17: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Gestion et organisation du projet

2.1 Organisation avec notre tuteur

Concernant la fréquence des entrevues avec M. Bilasco, nous organisions les rendez-vous de façon hebdomadaire les premières semaines du projet. En effet, nous pensons qu’il est important de se voir régulièrement au début du projet pour ne pas s’égarer.

De plus, cela permet d’instaurer une certaine rigueur dans l’avancement du projet.

2.2 Organisation du groupe

De manière générale, nous avons suivi les jours imposés par l’emploi du temps pour réaliser le projet. A savoir que le Lundi était consacré au travail en binôme à l’Université (dans le but de faire un point sur notre avancement et les éventuels problèmes rencontrés) alors que le Vendredi, nous travaillions chacun de notre côté sur nos machines personnelles.

Aussi, la formation au framework utilisé (en l’occurrence Symfony2) n’étant pas une formalité, nous n’avons pas hésité à parcourir les forums, tutoriels et documentations dès que le temps nous le permettait.

14

Page 18: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

2.3 Difficultés rencontrées

La première difficulté pour nous a été de comprendre comment fonctionne l’application «derrière les rideaux». Le code qui nous a été donné ne comportant pas de documentation, il nous a fallu analyser toutes les classes et leur cheminement. Pour ce faire, M. Bilasco nous a conseillé de réaliser les diagrammes nécessaires.

Ensuite, nous avons rencontré beaucoup de problèmes quant à la configuration de l’application existante pour la faire tourner sur nos machines respectives.

Passé toutes ces étapes et après le choix du framework pour le développement, la principale difficulté pour nous a été de se familiariser avec celui-ci. En plus de comprendre la mécanique du framework, la configuration - qui requiert de nombreux fichiers - est très sensible selon le système d’exploitation utilisé. Cette partie a représenté pour nous une part importante du projet en terme de difficultés.

Pour parer ce problème, nous avons finalement trouvé une solution bien pratique : l’utilisation d’un IDE qui se charge de créer l’architecture du projet sans configuration. De plus, il offre toutes les actions indispensables afin de faciliter le développement, tels que l’auto-complétion, la compilation instantanée, etc.

Enfin, trouver du temps pour avancer sur le projet en fin de semestre a été assez compliqué du fait des projets annexes (CAR, BDD) et des examens.

15

Page 19: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Conclusion

3.1 Sur le plan technique

En tant que seconde expérience dans le domaine de l’informatique, ce stage a été pour nous très enrichissant.

Sur le plan technique, il nous a permis d’acquérir de nouvelles compétences. Dans la découverte et l’utilisation du framework Symfony2, nous avons eu l’occasion d’approfondir nos connaissances en PHP orienté objet.

L’auto-formation a été bénéfique dans le sens où nous serons certainement confronté à l’utiliser dans un futur professionnel proche, lors de l’apprentissage de nouvelles technologies pour lesquelles nous n’aurions pas eu de formation au préalable.

Nous avons également découvert un nouvel IDE (Environnement de Développement Intégré), «NetBeans». Plus habitué à l’utilisation de «Eclipse», ce nouvel IDE se révèle très puissant par sa facilité d’utilisation. De plus, il supporte plusieurs langages de programmation fréquemment utilisés tels que : Java, PHP, XML, JavaScript, etc.

Pourquoi avoir choisi NetBeans ? Pour sa facilité d’implémentation du framework Symfony2. Il suffit simplement de spécifier le chemin d’accès du fichier .zip du framework, et l’IDE se charge de construire de façon autonome l’architecture du projet.

De plus, nous avons eu l’occasion de réutiliser une partie des enseignements reçus en MIAGE avec notamment, le principe du modèle MVC étudié en cours de CAR (Conception d’Applications Réparties).

16

Page 20: « Reprise de l’application de gestion de listes de ...bilasco/PT/1617/unipres_rapport.pdf · Présentation du projet 3 1.1 Etude de l’existant 3 ... Un des nombreux outils du

Il est toujours rassurant de voir que la formation reçue est pertinente et nous offre par ce biais une grande autonomie dans le travail.

En définitif, cette seconde expérience dans le domaine du développement informatique nous a été très profitable. Elle nous a permis de développer de nouvelles compétences et de prendre des responsabilités sur le plan décisionnel, afin de mener à bien la mission qui nous était confiée.

3.2 Sur le plan humain

Ce stage de développement de logiciel nous aura aussi permis d’approfondir nos notions de gestion de projet en plusieurs points. D’abord via la répartition des tâches. Chacun d’entre nous ayant des facilités dans des domaines différents, il a été naturel de répartir le travail en considérant les forces de chacun. Ceci nous a également permis de renforcer mutuellement nos compétences, en s’entraidant dans le travail.

La gestion du temps fût aussi un point important à gérer. L’année scolaire est rythmée par des rendus réguliers et il est important de savoir avancer de façon égale peu importe la période. Pour essayer de garder un avancement constant, nous veillions à toujours essayer de travailler sur un aspect du projet par semaine, et ce même durant les périodes d’examen. De ce fait, nous avons gardé les parties demandant moins de temps pour ces périodes.

Enfin, cette expérience nous aura aussi permis d’avoir une simulation de projet que nous pourrions avoir en entreprise avec un client. Le besoin étant exprimé par notre tuteur, la réalisation et l’aboutissement du travail était de notre responsabilité.

17