Rapport Kmar
Rapport Kmar
Option :
Université de Sfax Analyse de donnés
(Big Data)
École supérieur d’informatique
et de multimédia de Sfax
présenté à
Réalisé par:
Dammak Yessine
Encadrant Entreprise:
Ellouze Haitham
Orange Restricted
Rémerciment
Avant de présenter mon projet, nous dédions d’abord ce travail à toute personne qui a
investi ne serait-ce que quelques moments pour me supporter au cours de cette aventure dont
nous sommes très fiers.
Nous tenons à remercier de tout cœur Mr Haithem Ellouze pour son professionnalisme,
dévouement et support continu qui m’a permis de livrer un projet de qualité et d’apprendre le
vrai savoir-faire du métier.
Sommaire
Introduction Générale......................................................................................................1
Chapitre 1 : Cadre général...............................................................................................2
Introduction........................................................................................................2
1.1 Présentation de l’entreprise..................................................................2
1.1.1 Sofrecom Tunisie.....................................................................2
1.1.2 Domaines d’activités de Sofrecom Tunisie.............................3
1.1.3 Charte Organisationnelle de Sofrecom Tunisie.......................3
1.2 Contexte du projet.................................................................................4
1.3 Introduction du sujet.............................................................................4
1.3.1 Problématique..........................................................................4
1.4 Méthodologie de travail.........................................................................5
1.4.1 Choix de la méthodologie Agile..............................................5
1.4.2 Scrum..................................................................................61.5
..........................................................................Plan de travail
.................................................................................................7
Conclusion...........................................................................................................7
Chapitre 2 : Sprint 0 : Analyse et Conception...............................................................8
Introduction........................................................................................................8
2.1 Analyse des besoins................................................................................8
2.1.1 Identification des acteurs.........................................................8
2.1.2 Besoins fonctionnels................................................................8
2.1.3 Besoins non fonctionnels.........................................................9
2.1.4 Diagramme de cas d’utilisation global....................................9
2.2 Conception : Diagramme de classe....................................................10
2.3 Planification des sprints......................................................................11
2.4 Architecture de l’application..............................................................12
2.4.1 Architecture physique............................................................12
2.4.2 Architecture logicielle...........................................................13
2.5 Environnement de travail...................................................................14
2.5.1 Environnement matériel.........................................................14
2.5.2 Environnement logiciel..........................................................14
2.5.3 Environnement de développement........................................16
Conclusion.........................................................................................................16
Chapitre 3 : Sprint 1: Authentification et Accès..........................................................17
Introduction......................................................................................................17
3.1 Prérequis...............................................................................................17
3.1.1 Json Web Token....................................................................17
3.1.2 Contrôle d'accès basé sur les rôles.........................................18
3.2 Spécifications fonctionnelles...............................................................19
3.3 Sprint Planning....................................................................................20
3.3.1 Sprint Backlog.......................................................................20
3.3.2 Sprint 1 Goal: Contrôle d'accès basé sur les rôles.................20
3.4 Sprint Revue.........................................................................................21
3.4.1 Réalisation...................................................................21,22,23
3.4.2 Tests du Sprint 1....................................................................24
3.5 Sprint Rétrospective............................................................................24
Conclusion.........................................................................................................24
Bibliographie...................................................................................................................25
Figures
Figure 1. Sofrecom à l'international............................................................................................2
Figure 2. Structure de Sofrecom Tunisie....................................................................................3
Figure 3. Organigramme Managérial..........................................................................................4
Figure 6. Méthodes de gestion de projet.....................................................................................5
Figure 7. Framework Scrum.......................................................................................................6
Figure 8. Planification du projet par Sprints...............................................................................7
Figure 9. Diagramme de cas d’utilisation global........................................................................9
Figure 10. Diagramme de classe...............................................................................................10
Figure 11. Architecture n-tiers..................................................................................................13
Figure 12. Architecture multicouche........................................................................................13
Figure 13. Architecture en composants.....................................................................................13
Figure 14. Logo draw.io............................................................................................................14
Figure 15. Logo PlantUML.......................................................................................................14
Figure 16. Logo Microsoft Word..............................................................................................15
Figure 17. Logo Microsoft Teams..............................................................................................15
Figure 18. Logo GitHub.............................................................................................................15
Figure 19. Logo Visual Studio Code........................................................................................15
Figure 20. Logo MySQL Workbench.......................................................................................15
Figure 21. Logo Eclipse IDEA.................................................................................................15
Figure 22. Logo Bruno..............................................................................................................15
Figure 23. Logo Angular...........................................................................................................16
Figure 24. Logo Spring Boot....................................................................................................16
Figure 25. Fonctionnement du JWT pour l’authentification.....................................................18
Figure 26. Auth Guard pour le contrôle d’accès.......................................................................18
Figure 27. Spring Security Pre Authorize.................................................................................19
Figure 28. Raffinement du cas d’utilisation « S’authentifier ».................................................19
Figure 29. Raffinement du cas d’utilisation « Gestion des Utilisateurs ».................................19
Figure 30. Sprint Backlog 1......................................................................................................20
Figure 31. Interface d’authentification......................................................................................21
Figure 32. Bouton de déconnexion...........................................................................................22
Figure 33. Interface de gestion d’utilisateurs............................................................................22
Figure 34. Interface d'ajout d'Utilisateur...................................................................................23
Figure 35. Rubriques par rôle...................................................................................................23
Figure 37. Test de l'authentification avec Bruno......................................................................24
Tableaux
11
12
14
14,15,16
Acronymes
Ce rapport est structuré de manière à offrir une vue d'ensemble complète du projet,
depuis son origine jusqu'à sa réalisation. Il commence par une présentation de l'entreprise et
de son contexte, suivi d'une introduction détaillée du sujet traité ainsi que la réalisation des
différents composants du projet.
1
Chapitre 1
Cadre général
Introduction
Dans ce chapitre, nous allons décrire l’entité d’accueil au sein de laquelle nous avons
effectué notre stage d’été , nous mettrons en évidence le contexte du projet, nous définirons
brièvement notre solution/sujet tout en analyser l’existant, nous introduiront la méthodologie
adaptée et nous établirons le plan de travail adapté tout au long du projet.
Pour plus de 50 ans, Sofrecom est devenu l’un des leaders internationaux en
télécommunication. Etant partie du groupe Orange, Sofrecom est muni d’un savoir-faire
unique des métiers du numérique. Etant implantée sur plusieurs continents et ayant plus de
200 clients dans plus de 100 pays.
2
Lancé en 2012, Sofrecom Tunisie est la plus importante filiale du groupe Sofrecom
dans la zone MEA devenu une partie prenant très importante du conseil et d’ingénierie en
télécommunications.
Avec plus de 400 experts, Sofrecom Tunisie fournit à ses clients des services cogitant
autour de plusieurs métiers informatiques et managériaux.
Nous présentons ici la charte organisationnelle de l’entreprise. Notons que nous avons
été placés dans la direction Orange Wholesale
3
Dans le contexte de stage d’été pour l’obtention du diplôme au sein de Sofrecom
Tunisie et dans la direction Orange Wholesale dont l’un de ses spécificités le développement
de solutions « from scratch », notre projet a pour objectif la conception et la réalisation d’un
référentiel interne de gestion de collaborateurs.
Ainsi, nous avons identifié un besoin de gérer les données collaborateurs ainsi que
leurs mouvements entre les différents directions, départements et pôles.
4
1.4 Méthodologie de travail
Pour mieux réaliser et implémenter notre solution, nous avons besoin d'opter pour une
méthodologie.
1.4.2 Scrum
Scrum est un framework pour développer et maintenir des produits complexes et/ou
changeants. Autrement dit, Scrum est un framework de gestion de projet qui permet de
5
délivrer des produits de la plus grande valeur ajoutée dans une approche itérative et
incrémentale. [3]
Considérée “un environnement de gestion de projet” plus qu’une méthodologie, la
méthodologie Scrum n’impose aucune pratique bien déterminée et laisse à l’équipe la libre
main des décisions à prendre et prochaines étapes par rapport au développement du produit
ou solution.
6
A la fin de chaque Sprint, il y a lieu la Sprint Revue, cet événement Scrum réunit
toute l'équipe Scrum y compris le Product Owner, en invitant nos stakeholders / parties
prenantes, où le but est de faire la démonstration du travail effectué toute au long du Sprint,
ainsi pour collecter leurs feedbacks.
A la fin de chaque Sprint également, toute l'équipe se réunit à la Rétrospective ou
chacun s’exprime d’une manière libre et transparente sur le déroulement du Sprint, ainsi que
sur les choses s’étant bien passées et les difficultés rencontrées. L’objectif c’est l'amélioration
continue des prochains Sprints.
Pour un meilleur suivi, nous effectuons également une mêlée quotidienne (daily
meeting ou standup quotidien) où chacun exprime son avancement, problèmes et blocages
rencontrés pour un meilleur partage de connaissance, savoir-faire et visibilité d’avancement
par toute l’équipe.
Nous trouvons toutes nos fonctionnalités dans le Product Backlog, défini par le
Product Owner et duquel on extrait nos tâches pour le prochain Sprint, dans le Sprint
Backlog.
L’orchestration des différentes cérémonies et réunions ainsi que les Sprints se fait par
le Scrum Master.
Conclusion
Dans ce chapitre, nous avons compris notre besoin, choisi la méthodologie de travail et
planifié notre projet.
Au cours des prochains chapitres, nous expliquerons la réalisation et la mise en place des
différents Sprints. Nous commençons par le premier Sprint : Sprint 0 concernant l’analyse et
conception.
7
Chapitre 2
Sprint 0 : Analyse et Conception
Introduction
Dans ce chapitre, nous examinerons les besoins satisfaits par notre solution, tant
fonctionnels que non fonctionnels. Nous définirons également la conception, l’architecture
logique et l’architecture physique de notre application. Enfin, nous conclurons ce chapitre en
décrivant l’ensemble de l’environnement de travail dans lequel nous avons mené ce projet.
Afin d’assurer la bonne gestion des données collaborateurs, notre solution proposée
respectera les spécifications qui suivent :
Gestion des Utilisateurs.
Authentification.
Gestion des Collaborateurs.
Génération des Indicateurs Clés de Performances KPIs.
Gestion des Mobilités.
Configuration et jeu de données.
Ces besoins seront notamment satisfaits par notre application, mais sont l’objet de
plusieurs améliorations opérationnelles dans d’autres futurs cas possibles.
8
En plus des besoins fonctionnels, notre application doit assurer, d’un point de vue non
fonctionnel :
La sécurité : Les données traitées par l’application sont très cruciales donc
nécessitent une haute sécurité d’accès. Pour ce fait, on va implémenter un accès de
contrôle par rôle et utiliser les Web Tokens pour l’accès.
La maintenabilité : Afin d’assurer que les futurs développeurs de pouvoir maintenir
l’application, on a opté pour une documentation appropriée.
La Fiabilité : Les données sont très sensibles, on opte donc à un backup régulier de
base de données.
L’utilisabilité : L’ergonomie joue un rôle important dans l’utilisabilité de la
plateforme. Dans ce contexte, on fait en sorte que chaque fonctionnalité soit
accessible en 3 clics maximum depuis la page d’accueil.
9
1.7 Conception : Diagramme de classe
10
1.8 Planification des sprints
Pour le bon déroulement de notre projet, nous avons opté à la planification par sprints
suivante :
Sprint 1 Accès
Nous allons détailler chaque fonctionnalité en plusieurs User Stories dans le tableau
suivant, afin de les rendre plus compréhensibles.
Pour estimer la complexité de nos User Stories, nous avons utilisé la séquence de
Fibonacci (1 ; 2 ; 3 ; 5 ; 8 ; 13). De plus, nous avons attribué une priorité à chacune de nos
User Stories comme suit :
H : Haute priorité.
M : Moyenne priorité.
F : Faible priorité.
11
Fonctionnalité ID User Story Priorité Story
Points
En tant qu’application web, nous avons opté pour une architecture permettant
une communication depuis l’utilisateur (navigateur), au serveur de présentation
(frontend), au serveur d’application (backend) jusqu’au serveur de base de données.
12
Figure 9. Architecture n-tiers
13
Dans cette partie, nous avons défini l’architecture de l’application, logicielle et
physique.
Pendant le stage, nous avons travaillé sur une machine avec la configuration suivante :
Spécification Détails
RAM 16,0 Go
Dans cette partie, nous allons présenter les différents logiciels dont nous avons fait usage
pendant la réalisation du projet.
14
Figure 14. Logo Microsoft Microsoft Word: Microsoft Word
Word est un logiciel de traitement de texte
développé par Microsoft qui permet
de créer et d'éditer des documents
professionnels.
15
1.10.3 Environnement de développement
Conclusion
Ce chapitre a permis de définir les besoins fonctionnels et non fonctionnels ainsi que
la conception de l’application en termes de classes et d’entités.
Nous avons également présenté l'architecture logicielle et physique de l'application,
planifié les différents sprints et détaillé nos tâches sous forme de User Stories.
De plus, nous avons défini l’environnement de travail nécessaire à la réalisation de ce
projet. Toutes ces étapes constituent le résultat du Sprint 0, dédié à l’analyse des besoins et à
la conception de notre application.
Les chapitres suivants décriront en détail la réalisation des différents sprints.
16
Chapitre 3
3.1 Prérequis
Avant de présenter la réalisation de ce Sprint 1, nous allons définir quelques termes,
auxquels nous avons été amenés à comprendre afin d’implémenter la fonctionnalité
d’authentification et gestion d’accès.
Après, nous allons présenter le Product Backlog du Sprint 1, après on va enchaîner
avec le Sprint Planning, le Sprint Revue incluant le travail réalisé, et le Sprint Rétrospective.
Le JWT (JSON Web Token) est un standard qui permet de transmettre de manière
sécurisée des informations entre des parties sous forme d'objet JSON. Il est souvent utilisé
pour l’authentification et l’autorisation dans le contexte de développement des applications
web. [4]
Le JWT est composé de trois parties : Header (en-tête), payload et signature.
Fonctionnement du JWT
Pour se connecter, l’utilisateur fournit ses identifiants ou credentials (nom
d’utilisateur et mot de passe) au serveur (backend).
Dans le cas où les informations fournies sont valides, le serveur génère un JWT
contenant ces informations et le renvoie au client (frontend).
Le JWT est stocké dans les Cookies en tant que HTTPOnly Cookies, pour des
mesures de sécurité et qui sont illisibles par le frontend.
Pour chaque requête ultérieure vers le serveur (backend), le client inclut le JWT dans
l’en-tête de la requête. Cela permet au serveur de vérifier l’identité de l’utilisateur pour
accéder aux ressources demandées.
Si le JWT n’est pas validé, le serveur renvoie une réponse d’erreur.
17
On peut observer le fonctionnement du JWT dans la figure qui suit :
Au niveau client (frontend), on utilise les Guards afin de définir pour chaque route,
qui y a accès.
18
Au niveau serveur (backend), on utilise l'autorisation de Spring Sécurité
@preauthorize.
19
Figure 27. Raffinement du cas d’utilisation « Gestion des Utilisateurs »
3.3 Sprint Planning
3.3.1 Sprint Backlog
Pendant le Sprint 1 Planning, nous avons fixé comme objectif principal du Sprint le
contrôle d’accès basé sur les rôles. Autrement dit, après ce Sprint, il est prévu d’avoir
l’authentification et l’accès à notre application, basé sur le rôle de l’utilisateur.
20
3.4 Sprint Revue
Ci-dessous, nous présentons les différentes interfaces que nous avons réalisées
pendant ce Sprint 1.
Nous avons effectué la Sprint Revue, durant laquelle nous avons invité les différentes
parties prenantes (Stakeholders) afin de leur démontrer le travail effectué tout au long du
Sprint 1 et de collecter leur retour et feedbacks. Toute l’équipe Scrum est présente pendant
cette réunion.
3.4.1 Réalisation
Dans cette partie, nous présenterons la réalisation des différentes interfaces de notre
application concernant l’authentification et la gestion utilisateur.
C’est l’interface d’authentification, où l’utilisateur doit écrire son mot de passe ainsi
que son identifiant (Cuid est le terme utilisé au sein de l’entreprise pour identifier les
collaborateurs).
21
Figure 30. Bouton de déconnexion
22
Figure 32. Interface d'ajout d'Utilisateur
Comme démontré dans la figure ci-dessus, pour chaque rôle, on a des rubriques bien
spécifiques et des fonctionnalités bien spécifiques.
A la fin du Sprint, les différentes parties prenantes ont donné un retour sur le travail
effectué, qui a été positif, ainsi que des remarques d’amélioration.
23
3.4.2 Tests du Sprint 1
Nous avons testé nos différentes fonctionnalités, côté serveur, en utilisant Bruno :
Conclusion
En guise de conclusion, nous avons traité le Sprint 1 pendant ce chapitre. Au cours
duquel nous avons fait face à plusieurs obstacles et difficultés auxquels nous avons appris
beaucoup de savoir-faire en y remédiant.
Nous avons bien mis en place l’aspect sécurité de notre application en utilisant des
outils standards tels que Spring Security, JWT et Angular Guard afin d’assurer la sécurité de
nos utilisateurs et données.
24
Bibliographie
(1) https://www.sofrecom.com/a-propos-de-nous/nos-bureaux.html
(2) https://www.qrpinternational.fr/blog/glossaire/scrum-cest-quoi-definition-scrum/
(3) https://www.atlassian.com/fr/agile/scrum
(4) https://jwt.io/introduction
(5) https://support.atlassian.com/jira-software-cloud/docs/view-and-understand-the-
velocity-chart/
(6) https://docs.github.com/fr/actions/about-github-actions/understanding-github-actions
25
26