Mémoire de Projet de Fin D'étude Diplôme D'ingénieur D'état Génie Informatique MOKRINI Yassir
Mémoire de Projet de Fin D'étude Diplôme D'ingénieur D'état Génie Informatique MOKRINI Yassir
Mémoire de Projet de Fin D'étude Diplôme D'ingénieur D'état Génie Informatique MOKRINI Yassir
Génie informatique
Elaboré par :
MOKRINI Yassir
Sujet :
Encadré par :
Mes parents :
Que ce travail soit l’expression de ma reconnaissance de vos sacrifices consentis, votre soutien moral et matériel que
vous n’avez cessé de prodiguer.
Que Dieu vous préserve en bonne santé et vous accorde une longue vie.
J’espère que j’ai été à la hauteur de vous attentes. Que ce travail soit l’expression de mes profondes affections.
Je suis ravi de vous avoir à mes cotés durant mon cursus académique
C’était un grand honneur de vous rencontrer et d’étudier avec vous durant mes années du cycle d’ingénieur à
L’AIAC
Je vous remercie pour votre temps que vous avez consacré et le savoir que vous nous avez transmis tout au long de
notre formation à l’AIAC
Au Staff Administratif :
Je vous remercie pour avoir veiller à la qualité de notre formation en tant que futurs ingénieurs au sein de
l’établissement et aux efforts consacré pour notre réussite
A toute personne qui a contribué à mon éducation, à toute personne m’ayant aidé un jour, à travers un conseil, à
tous ceux qui ont contribué de près ou de loin à la réussite de ce projet.
MOKRINI Yassir
Remerciements
De prime abord, Merci à Dieu pour sa bonté et sa gratitude sans lesquelles je ne pourrai en
aucun cas être ici.
Ensuite, je tiens à remercier M. Redouane EL MOUSGHI et Mme. Amal BENDDRISS pour
leurs accueils, leurs orientations, leurs conseils ainsi que leurs précieuses directives et la
confiance qu’ils m’ont accordé tout au long du stage.
Je tiens à remercier vivement M. Mustapha Hain pour les conseils qu’il m’a prodigué et son
judicieux encadrement.
Mes remerciements vont également à mes professeurs de la filière génie informatique, le
chef de filière M. Adil REDOUANE et à l’ensemble des professeurs et cadres administratifs de
l’Académie Internationale Mohamed VI de l’Aviation Civile, pour la qualité de la formation
qu’ils m’ont assurée.
Nous espérons que ce projet de fin d’étude sera à la hauteur des attentes des membres de
jury.
Au terme de ce projet de fin d’étude, je tiens à présenter mes sincères remerciements à
tous ceux ou celles qui de près ou de loin ont contribué à sa réalisation.
Résumé
Le présent mémoire rend compte des travaux effectués lors de mon projet de fin d’études
au sein de la société MercureIT.
Cette solution permettra donc de préserver les donner dans un serveur distant en tout
sécurité afin de les exploiter plus tard.
Ainsi, elle offrira maintes fonctionnalités : permettre aux différents acteurs de collaborer
entre eux, la disponibilité des données et leurs sécurités, permettre aux utilisateurs de
consulter les travaux de leurs collègues de la même équipe et la possibilité d’importer et
exporter leurs travaux pour continuer hors ligne.
Pour atteindre les objectifs du projet, j’ai utilisé un ensemble d’outils et technologies. Pour
la gestion de projet j’ai opté pour la méthode Scrum vu sa complémentarité, pour la
modélisation j’ai utilisé le langage UML et j’ai exploité l’outil draw.io pour réaliser les différents
diagrammes. En outre j’ai fait le choix d’utiliser SqlServer comme SGBDR, et les technologies
de développement Spring pour la partie backend et Angular pour la partie frontend.
L’informatique décisionnelle (en anglais : DSS pour Decision Support System ou encore BI
pour Business Intelligence) désigne les moyens, les outils et les méthodes qui permettent de
collecter, consolider, modéliser et restituer les, matérielles ou immatérielles, d'une entreprise
en vue d'offrir une aide à la décision et de permettre aux responsables de la stratégie
d'entreprise d’avoir une vue d’ensemble de l’activité traitée.
Mais pour qu’un système BI soit opérationnel, il doit être alimenter par des données
précises, souvent c’est données son stoker dans les ordinateurs personnels des différents
acteurs de ce système, et dans la plupart des cas ces données stoker dans les terminaux locaux
rencontre plusieurs menaces qui peuvent aboutir à la perte définitive de la donnée (ex : perte
ou vole de l’ordinateur attaque cybercriminel …). Donc si les données sont les éléments
importons pour l’aide a la décision il faut les garder en sécurité jusqu’à exploitation par le
système BI.
C’est dans ce cadre j’ai effectué mon stage de fin d’études au sein de la société MercureIT
qui consiste en une immersion opérationnelle dans une équipe, portant sur les nouvelles
technologies de l’information et de la communication. Ce stage cible à concevoir et à
développer une solution pour augmenter la sécurité et la disponibilité des données
Le présent rapport est une synthèse du travail effectué durant mon stage. Il s’articule
autour de trois chapitres. Le premier chapitre définit le contexte général du projet, à savoir, la
présentation de l’organisme d’accueil ainsi que la présentation du projet. Le deuxième chapitre
détaille les spécifications fonctionnelles. Le troisième chapitre a comme objectif la
présentation des différents outils et technologies utilisés pour réaliser le projet.
1|P a g e
Chapitre 1
2|P a g e
Introduction
Dans ce chapitre, nous situons le projet dans son environnement organisationnel et
contextuel. Nous commençons par introduire l’organisme d’accueil, avant de présenter une
vue générale du projet. Nous exposons à la fin la démarche adoptée pour sa réalisation.
1.1. Infrastructure
MERCURE IT est une société de conseil et d’ingénierie informatique qui propose des
logiciels d’informatique de gestion et des services pour les petites et moyennes entreprises
(PME) créée en 2008, réactive et disponible plaçant la satisfaction client au centre de ses
motivations.
- Consulting :
Notre offre de Conseil, est basée sur une approche métier couplée d’une expertise
technique, pour anticiper et accompagner vos besoins.
- E-commerce :
Que vous ayez déjà une activité et que vous vouliez la développer, ou que vous souhaitiez
vous lancer dans la vente en ligne, nous somme capable d’étudier avec les solutions les plus
efficaces et les plus pérennes.
- Ingénierie applicative :
Nous offrons des services de développement applicatif et logiciel sur mesure, prenant en
compte les dernières technologies.
- Accompagnement :
Maîtrise d'ouvrage, Maîtrise d’œuvre, organisation... Nous analysons les contextes pour
préconiser méthodes et solutions.
3|P a g e
1.3. Organigramme
MERCURE IT est une société de service à taille humaine, réactive et disponible plaçant la
satisfaction client au centre de ses motivations.
4|P a g e
1.4. Clients de la société
Donc comme nous avons vu précédemment la société MercuerIT opère dans plusieurs
domaines de l’informatique ce qui lui donne avantage dans le marché pour attirer plusieurs
clients cherchant ses services.
Ichara conseil
Viadia
5|P a g e
2. Problématique
Or cette représentation comporte un risquée, car les données brutes dans les terminaux
locaux des différents acteurs du système sont susceptibles a la perte (vol de l’ordinateur, virus,
oublie de l’ordinateurs quelques part …..).
Donc comment peut-t-on protéger ces ressources du système jusqu’à leurs exploitation ?
et comment peut-t-on permettre aux différents utilisateurs de collaborer avec aisance ?
6|P a g e
Donc pour remédier à ce problème, on a décidé de mettre en place une plate-forme pour
centraliser ces données, d’une manière sécurisée et efficace comme le montre le schéma ci-
dessous :
Donc comme vous pouvez voire la différence le système BI au paravent extrait les données
a exploité des différents terminaux locaux des utilisateur, mais cette solution permet aux
différents su système de faire leur travail via une plate-forme centralisée qui permet
d’augmenter la sécurité et la disponibilité des données, et leur permet aussi de télécharger les
fichiers de données pour continuer leurs travails hors ligne et les chargés sur la plate-forme
par la suite.
3. Méthodologie de travail
7|P a g e
existe plusieurs méthodes agiles, telles que XP, SCRUM, Crystal Clear, etc. mais ont toutes pour
objectif d’augmenter la satisfaction du client tout en facilitant les développements.
En effet, la solution de faire des spécifications sur plusieurs semaines qui seraient figées ne
s’avère pas efficace à mercureIT. Nous avons donc choisi la méthode Agile parce que le besoin
n’est pas exprimé précisément, c’est une discussion avec le fonctionnel qui évolue tout au long
du projet. Nous pouvons ainsi être plus proches du besoin fonctionnel.
-Les individus et leurs interactions plutôt que les processus et les outils.
8|P a g e
projet, et la flexibilité des plannings. De nombreuses méthodes répondent à ces
caractéristiques, le graphique suivant présente ces méthodes recensées dans le Manifeste
Cette méthode décrit un chemin à suivre pour atteindre un but ainsi qu’un cadre de travail.
Afin d’obtenir une méthodologie complète, il est nécessaire d’associer Scrum à une autre
méthodologie Agile telle que eXtremeProgramming (ou XP). Le graphique suivant détaille la
voie à suivre pour obtenir la release d’une application :
9|P a g e
F IGURE 5: VUE DU PROCESSUS SCRUM
Comme dit dans la partie précédente, une méthode Agile fonctionne par itération de
développements cours, au sens Scrum, ces itérations sont nommées « Sprints ». Un Sprint est
d’une durée fixée, ne change jamais et se doit d’être inférieur à 6 semaines.
Le Product Backlog énumère les exigences du client sur un produit et sont triés par priorité.
Un Sprint Backlog est une tâche liée à un Product Backlog et à réaliser par l’équipe pendant
un Sprint. Durant un Sprint, toutes les tâches de développement, de la conception à la recette,
doivent être réalisées afin de produire en fin de Sprint un produit potentiellement livrable.
Une équipe, au sens Scrum, est constituée des développeurs, mais aussi de deux personnes
possédantes chacune un rôle précis et important : Le Product Owner, et le Scrum Master. Le
Product Owner est le représentant des clients et utilisateurs et est chargé de définir les
caractéristiques du produit développé par l’équipe (le Product Backlog). Plus précisément, il se
doit d’identifier les exigences d’un produit, de les prioriser pour définir chaque Sprint Backlog
de chaque Sprint, et de fournir les détails à l’équipe. Son but est défini l’objectif d’une release
et de prendre les décisions liées au planning de cette release. Pour effectuer ces tâches, le
Product Owner doit être une personne proche du métier visé par le produit, doit avoir une
relation confiance avec les clients et utilisateurs, et être ouvert à tout changement.
10 | P a g e
Le graphique ci-dessous résume les tâches de ce rôle :
Daily Scrum Meeting, réunions d’équipe quotidiennes permettant d’effectuer une revue du
sprint :
Un Scrum Master doit savoir être à l’écoute de son équipe, être apte à les motiver et à
favoriser la communication entre les membres. Il doit donc réellement s’intégrer dans le
développement et être professionnellement proche des développeurs. Enfin, il doit protéger
l’équipe de toute interaction extérieure, telles que le client et les utilisateurs.
3.1.1. Backlog
Pour résumer, le backlog scrum est destiné à recueillir tous les besoins du client que
l’équipe projet doit réaliser. Il contient donc la liste des fonctionnalités intervenant dans la
constitution d’un produit, ainsi que tous les éléments nécessitant l’intervention de l’équipe
11 | P a g e
projet. Tous les éléments inclus dans le backlog scrum sont classés par priorité indiquant
l’ordre de leur réalisation.
12 | P a g e
Une liste de fonctionnalités va être extraite de cette liste d’exigences et elles vont être
classées par ordre de priorité de réalisation. Cet ordonnancement est effectué en fonction de
la valeur ajoutée que les fonctionnalités apportent au produit. C’est cette liste de
fonctionnalité ordonnée qui constitue le backlog scrum.
3.1.2. Sprints
La méthode se caractérise par le partitionnement du projet en incréments, nommés «
sprint ».
Les sprints peuvent durer de quelques heures à quelques semaines (avec une préférence
pour deux semaines).
Chaque sprint commence par une estimation suivie d’une planification opérationnelle. Le
sprint se termine par une démonstration de ce qui a été réalisé.
Avant de démarrer notre projet, nous avons réalisé une analyse de ce qui doit être produit,
nous avons découpé le projet en 3 Sprints principaux :
4. Management du projet
13 | P a g e
permet d’identifier rôles et responsabilités et permet d’assurer le bon déroulement du projet
comme il permet de mesurer son avancement.
14 | P a g e
F IGURE 9: DIAGRAMME GANTT
15 | P a g e
Description :
- Une période de formation qui a duré un mois (du 10/02/2020 au 20/03/2020), dans
laquelle on a appris des modules de Spring, comme Spring boot, Spring Security et
Spring cloud.
- Une étape de planification de durée de 2semaines et demi (du 23/03/2020 au
08/04/2020), sur les méthodologies de travail et l’organisation de l’équipe.
- Une période d’analyse et conception de durée d’une semaine et demi (du
09/04/2020 au 20/04/2020), dans laquelle on a conçu nos diagrammes UML.
- Une période d’une semaine (du 21/04/2020 au 26/04/2020) sur laquelle on s’est mis
d’accord sur les technologies, avec lesquelles on va travailler, comme l’outil git, la
Framework Angular pour le développement du front end.
- Du 27/04/2020 au 30/06/2020 : on a réalisé les 3 sprints du projet.
16 | P a g e
- Matrice des risques :
On peut placer les risques dans la matrice selon deux paramètres, la gravité de son
impact, et sa probabilité.
• Zone Jaune:
Mais on doit être vigilant, car un risque peut changer de statuts et peux donc passer
d’une zone à l’autre.
• Zone Orange:
Pour ces risques-là vous pouvez, planifier des actions préventives et/ou correctives.
Pour remédier aux risques (R1, R2, R3) nous avons envisager les solutions suivantes :
17 | P a g e
• Zone Rouge:
Pour éviter ce risque l’équipe a décidé d’employer des outils pour collaborer à distance
comme la plate-forme Microsoft-teams.
Conclusion
Dans ce chapitre, nous avons présenté dans un premier temps une vue globale sur
l’organisme d’accueil, et dans un second temps, nous avons décrit le contexte et les objectifs
de notre projet. Enfin nous avons expliqué le processus de développement adopté pour la mise
en place de la solution. Sur la base de ce processus, nous avons établi un planning de travail
afin de donner une idée sur le déroulement du projet.
18 | P a g e
Chapitre 2
Analyse et conception
19 | P a g e
Introduction
La partie Analyse et Spécification a pour objectif la capitalisation de la connaissance du
métier du système à réaliser. Dans cette partie nous avons capturé les besoins fonctionnels du
système tout en définissant les activités attendues des différents utilisateurs par rapport au
système.
Les cas d’utilisations permettent de représenter les différentes fonctionnalités offertes par
le système à l’utilisateur.
Les cas d’utilisation constituent un moyen de recueillir et de décrire les besoins des acteurs
du système. Ils peuvent être aussi utilisés ensuite comme moyen d’organisation du
développement du logiciel, notamment pour la structuration et le déroulement de tests du
logiciel.
Un cas d’utilisation peut être considéré comme une collection de scénario possible qui
représente l’interaction entre les acteurs et le système.
-Administrateur.
-Utilisateur.
Chaque rôle remplie une mission assumée par des entités externes au système qui peuvent
être un ou plusieurs acteurs. La table suivante présente les missions des rôles identifiés.
20 | P a g e
Acteurs Missions
Administrateur -gérer les utilisateurs
-gérer les workflows
-géré les datasets
-envoyer/lire les message
Utilisateur -manipuler les datasets
-importer/exporter les datasets
- envoyer/lire les message
-consulter des vue
T ABLEAU 2: DESCRIPTION DES ROLES DU SYSTEME
La figure qui suit présente les cas d’utilisations du système pour les deux rôles.
21 | P a g e
F IGURE 11 : CAS D'UTILISATION ADMINISTRATEUR UTILISATEUR
Sommaire d’identification
Titre : authentification
Objectif : Ce cas d’utilisation permet à l’utilisateur de se connecter à l’application pour
pouvoir bénéficier de ses fonctionnalités.
Acteurs : - Administrateur
-utilisateur
Description Scenarios
Préconditions : aucune
Postconditions : utilisateur existe dans la base de données
Scenario nominal : se connecter sur la plate-forme
T ABLEAU 3:DESCRIPTION CAS D ’UTILISATION "AUTHENTIFICATION "
22 | P a g e
- Description cas d’utilisation gérer les datasets :
Sommaire d’identification
Titre : gérer les datasets
Objectif : ce cas d’utilisation permet la création, la suppression, et la modification des
datasets.
Acteurs : administrateurs
Description scenarios
Préconditions : authentification réussite
Postcondition : utilisateur est un administrateur
Scenario nominal : remplir le formulaire de création des datasets.
Suppression des datatsets
Ajouter ou supprimer de attributs du dataset
Attribuer les droits des datasets aux utilisateurs
T ABLEAU 4: DESCRIPTION CAS D ’UTILISATION GESTION DES DATASETS
Sommaire d’identification
Titre : gérer les utilisateurs
Objectif : ce cas d’utilisation permet de supprimer modifier les utilisateurs
Acteurs : administrateur
Description scenarios
Précondition : authentification réussite
Postcondition : utilisateur doit être un administrateur
Scenario nominal : voir la liste des utilisateurs, supprimer les utilisateurs, modifier les
utilisateur
T ABLEAU 5: DESCRIPTION CAS D 'UTILISATION GERER LES UTILISATEUR
23 | P a g e
- Description cas d’utilisation gérer les workflows :
Sommaire d’identification
Titre : gérer les workflows
Objectif : ce cas d’utilisation permet de créer supprimer modifier les workflows
Acteurs : administrateur
Description scenarios
Précondition : authentification réussite
Postcondition : utilisateur doit être un administrateur
Scenario nominal : ajouter des répertoires des workflows, supprimer les répertoires,
affecter les droits aux utilisateurs sur ces workflows
T ABLEAU 6: DESCRIPTION DU CAS D 'UTILISATION "GESTION DES WORKFLOWS "
Sommaire d’identification
Titre : envoyer et recevoir les messages
Objectif : ce cas d’utilisation permet aux différents utilisateurs de collaborer entre eux
Acteurs : administrateur utilisateur
Description scenarios
Précondition : authentification réussite
Postcondition : aucune
Scenario nominale : envoyer un message a un ou plusieurs destinataires
Lire les messages de l’émetteur
T ABLEAU 7: DESCRIPTION CAS D 'UTILISATION "ENVOYER /LIRE MESSAGE "
24 | P a g e
- Description cas d’utilisation manipuler les datasets :
Sommaire d’identification
Titre : manipuler les datsets
Objectif : ce cas d’utilisation permet aux utilisateurs d’ajouter du contenu aux datasets
Acteurs : utilisateur
Description scenarios
Précondition : authentification réussite
Postcondition : aucune
Scenario nominal : insérer des donnes dans le dataset les stocker dans le workflow
Sommaire d’identification
Titre : importer/exporter dataset
Objectif : ce cas d’utilisation permet de télécharger des datasets de la plate-forme et pour
travailler sans connexion et les charger ensuite
Acteurs : utilisateurs
Description scenarios
Précondition : authentification réussite
Postcondition : aucune
Scenario nominal : télécharger des datasets de la plate-forme et les charger sur la
plateforme
T ABLEAU 9:DESCRIPTION CAS D ’UTILISATION "IMPORTER /EXPORTER DATADSETS "
25 | P a g e
- Description cas d’utilisation consulter les vues des datsets :
Sommaire d’identification
Titre : consulter des vues datsets
Objectif : ce cas d’utilisation permet de voir des datasets ou une partie des datsests sans
les modifier
Acteurs : utilisateur
Description scenarios
Précondition : authentification réussite
Postcondition : aucune
Scenario nominale : avoir une vue sur les dataset sans pouvoir les modifier
T ABLEAU 10:DESCRIPTION CAS D ’ UTILISATION CONSULTER LES VUES DES DATSETS
2. Diagramme de séquences
26 | P a g e
2.1. Diagramme de séquence d’authentification
Description :
L’utilisateur est dirigé vers l’interface d’authentification, puit il saisit ses identifiant et il
clique sur le bouton de connexion, interface contrôle si le champs son remplient sinon elle
demande de ressaisir les identifiant, si oui le système vérifie si l’utilisateur existe dans la base
de données, si oui il est redirigé vers son espace de travail ,si non un message d’erreur s’affiche.
27 | P a g e
2.2. Diagramme de séquence de création des datasets
Description :
L’administrateur fait appel à l’interface de création des dataset, il saisit le nom de dataset
et confirme une vérification de l’existence de dataset est effectuée, puit il est redirigé vers
l’interface de création des attributs pour cette dataset, il ajoute les attributs nommer et typer
et confirme l’enregistrement puit la dataset est enregistrée dans la base de données.
28 | P a g e
2.3. Diagramme de séquence d’attribution des droits sur les datset
Description :
L’administrateur demande la liste des datasat, il sélectionne la datasat affiche ces détails,
puis il clique sur la liste des utilisateurs, dans le menu détail il sélectionne les utilisateurs il leur
attribut les droits d’accès et clique sur confirmer, ensuite les la configuration et enregistrer sur
la base de données.
29 | P a g e
Description :
Description :
L’émetteur va sur l’interface de messageries il sélectionne les destinataires, puit i saisie
l’objet et le corps du message, et appuie sur envoyer le message sera enregistrer et une
notification de réception va s’afficher chez le récepteur.
3. Diagramme de classes
Alors que le diagramme de cas d'utilisation montre un système du point de vue des acteurs,
le diagramme de classes en montre la structure interne. Il permet de fournir une
représentation abstraite des objets du système qui vont interagir pour réaliser les cas
d'utilisation.
30 | P a g e
F IGURE 17:DIAGRAMME DE CLASSES DU SYSTEME
- Une classe « User » qui contient les informations des utilisateurs de la plate-forme
- Une classe « Rôle » qui gère les rôles attribuer aux utilisateurs
- Une classe « privilège » qui gère les types d’accès à la plate-forme
- Une classe « right » pour sécuriser l’accès à la plate-forme
- Une classe « dataset » qui permet la création et la gestion composée d’une ou plusieurs
attributs
- Une classe « attribut » qui contient les champs de l’attribut qui est composer de cellules
- Une énumération « datatype » de type de données pour les attributs
31 | P a g e
- Description de la classe user
32 | P a g e
- Description de la classe dataset
33 | P a g e
Conclusion
Dans ce chapitre on s’est focalisé sur l’aspect fonctionnel et conceptuel du projet. D’abord
nous avons décrit la solution proposée, puis nous avons effectué une étude fonctionnelle avec
une vue d’ensemble des uses cases, ainsi nous avons présenté les diagrammes de séquence
pour chaque étape du processus et finalement nous avons présenté le diagramme de classe
de notre application.
34 | P a g e
Chapitre 3
Réalisation et implémentation
35 | P a g e
Introduction
Dans ce présent chapitre, nous présentons l’étude technique réalisée afin de se
préparer à l’implémentation du projet. L’environnement de développement mis en place est
présenté en quatre premières parties, suivies de la partie dédiée aux IHM de notre solution.
36 | P a g e
2. Technologie et Framework
37 | P a g e
La figure ci-dessous qui représente l’architecture du modèle MVC 2 :
38 | P a g e
Spring Boot apporte à Spring une très grande simplicité d'utilisation :
Spring Boot permet de déployer très facilement une application dans plusieurs
environnements sans avoir à écrire des scripts. Pour ce faire, une simple indication de
l'environnement (développement ou production) dans le fichier de propriétés (.properties)
suffit à déployer l'application dans l'un ou l'autre environnement. Ceci est rendu possible grâce
à la notion de profil à déclarer toujours dans le fichier de propriétés. Je vous présenterai des
exemples de cas d'utilisation.
39 | P a g e
• Le serveur Tomcat est un serveur Apache couplé avec un moteur web java, il permet
d’avoir la possibilité d’exécuter notre programme écrit en java.
La figure ci –dessous représente les interactions entre les différents éléments d’une application
Spring boot :
- Spring Security
Il s’agit d’une infrastructure de sécurité Java SE / Java EE qui fournit une authentification, une
autorisation, une authentification unique et d’autres fonctionnalités de sécurité pour les
applications Web ou les applications d’entreprise. On peut aussi s’authentifier avec Spring
Security en utilisant un jeton
40 | P a g e
- Valeur ajoutée de Spring Security
Spring Security fournit une solution complète en matière de sécurité pour les applications Java
JEE. Ce module permet de configurer toute la sécurité sur l’ensemble d’un système sans être
dépendant de l’environnement.
41 | P a g e
- UsernamePasswordAuthenticationToken obtient {nom d'utilisateur, mot de passe} de la
demande de connexion, AuthenticationManager l'utilisera pour authentifier un compte.
- AuthenticationManager a un DaoAuthenticationProvider (avec l'aide de
UserDetailsService & PasswordEncoder) pour valider l'objet
UsernamePasswordAuthenticationToken. En cas de succès, AuthenticationManager renvoie
un objet d'authentification entièrement rempli (y compris les autorisations accordées).
- OncePerRequestFilter effectue une seule exécution pour chaque demande à notre API. Il
fournit une méthode doFilterInternal () que nous implémenterons en analysant et validant
JWT, en chargeant les détails de l'utilisateur (en utilisant UserDetailsService), en vérifiant
Authorizaion (en utilisant UsernamePasswordAuthenticationToken).
- AuthenticationEntryPoint intercepte une erreur non autorisée et renvoie un 401 lorsque
les clients accèdent aux ressources protégées sans authentification.
Le référentiel contient UserRepository & RoleRepository pour fonctionner avec la base de
données, sera importé dans Controller.
Fonctionnement du jwt
42 | P a g e
F IGURE 22:EXPLICATION DU FONCTIONNEMENT DE J WT
Le client envoie ces identifiant au serveur, le serveur crée un jeton avec un clé secrète et
l’envoie au client, le client envoie une requête d’authentification avec le jeton en entête, le
serveur valide le jeton et accepte l’authentification.
43 | P a g e
La figure ci-dessus explique le fonctionnement en détail de l’authentification avec jwt cote
client :
Le composant App est un conteneur utilisant un routeur. Il obtient le jeton utilisateur et les
informations utilisateur du stockage de session du navigateur via token-storage.service. La
barre de navigation peut alors s'afficher en fonction de l'état et des rôles de connexion de
l'utilisateur.
Les composants de connexion et d'enregistrement ont un formulaire pour les données de
soumission (avec prise en charge de la validation de formulaire). Ils utilisent token-
storage.service pour vérifier l'état et auth.service pour envoyer des demandes de connexion /
inscription.
auth.service utilise Angular HttpClient (service $ http) pour effectuer des demandes
d'authentification.
Chaque requête HTTP par le service $ http sera inspectée et transformée avant d'être
envoyée par auth-interceptor.
La composante d'accueil est publique pour tous les visiteurs.
Le composant de profil obtient les données utilisateur du stockage de session.
Les composants BoardUser, BoardModerator, BoardAdmin seront affichés en fonction des
rôles du stockage de session. Dans ces composants, nous utilisons user.service pour obtenir
des ressources protégées de l'API.
44 | P a g e
2.5. Choix de la Framework Hibernate
Le tableau suivant illustre la comparaison entre les Framework libre de mapping objet
relationnel :
D’après cette étude, nous remarquons que Hibernate et OJB sont les mieux placés. Nous
préférons travailler avec Hibernate puisqu’il est le mieux documenté en plus de sa stabilité et
maturité. En effet nous remarquons que Hibernate est dans sa version 3.0 alors qu’OJB est
encore dans sa version 1.0.
45 | P a g e
2.7. Choix de maven
Maven est un outil open-source très populaire de build pour les projets Java, 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.
Chaque projet ou sous-projet est configuré par un POM qui contient les informations
nécessaires à Maven pour traiter le projet (nom du projet, numéro de version, dépendances
vers d'autres projets, bibliothèques nécessaires à la compilation, noms des contributeurs etc.).
Ce POM se matérialise par un fichier pom.xml à la racine du projet.
2.8. Javascript
JavaScript est un langage de programmation de scripts principalement employé dans les
pages web interactives mais aussi pour les serveurs avec l'utilisation (par exemple) de Node.js.
C'est un langage orienté objet à prototype, c'est-à-dire que les bases du langage et ses
principales interfaces sont fournies par des objets qui ne sont pas des instances de classes,
mais qui sont chacun équipés de constructeurs permettant de créer leurs propriétés, et
notamment une propriété de prototypage qui permet de créer des objets héritiers
personnalisés. En outre, les fonctions sont des objets de première classe. Le langage supporte
le paradigme objet, impératif et fonctionnel.
46 | P a g e
Framework a acquis une admiration extraordinaire pour lui-même, ce qui l’a rendu très
populaire parmi les services de développement d’applications Web.
Haute performance
Lors de la sélection d’un framework, l’un des composants clés pris en compte par les
concepteurs de sites Web est le fait que, lorsqu’ils doivent créer un nouvel élément ou inclure
un élément, le système l’aide ou le gâche. Avec Angular, vous pouvez être complètement
assuré que vous auriez la productivité de faire de nouveaux éléments, avec le cadre donnant
une aide complète sur chaque étape. En attendant, lorsque le groupe communautaire devient
solide et substantiel, il peut par conséquent vaincre quelques problèmes à l’intérieur du cadre.
Il fabrique des bibliothèques mutuelles qui travaillent avec le cadre et le rendent d’autant plus
intense et instinctif.
Le système évalue le balisage juste au moment où le code HTML a été empilé dans DOM.
47 | P a g e
des attributs personnalisés et des éléments qui peuvent développer le vocabulaire HTML
fondamental.
Complet
Le meilleur aspect concernant Angular est que c’est une réponse complète pour un
développement frontal cohérent. Les développeurs n’ont pas besoin de s’embarrasser de
n’importe quelle autre structure ou module, et peuvent sans effort créer des applications web
pilotées par les données utilisant ce framework JavaScript. Les activités REST vous permettent
de converser rapidement avec vos clients à partir du serveur et d’obtenir les informations
vraiment nécessaires pour vous connecter aux pages Web. Avec Angular, cette fonctionnalité
se transforme en objets JavaScript simples et instinctifs, en suivant la conception MVVM
(Model-View -View Model). Avec ce système, il devient sensiblement facile de structurer le
code source en suivant les fonctionnalités MVVM ou Model-View-Controller.
Un autre composant important d’Angular est qu’il peut développer HTML et le travailler
comme XML. Cela donne divers résultats imaginables pour les attributs et les étiquettes. De
plus, avec cette dépendance et cette liaison de données, chaque composant de l’exemple
MVVM peut être transmis naturellement sur l’interface utilisateur. Cela limite les exigences
pour les getters / setters, les wrappers et les déclarations de classe. De cette manière, Angular
vous donne une chance d’exprimer vos données aussi efficacement avec des primitives
JavaScript, ou comme ahurissant au moyen de types personnalisés.
Angular rend très simple l’organisation de choses comme les dépendances et le chargement
dynamique, et les utilise au besoin sans se soucier de l’instance et de l’espace de noms. Vous
avez juste à le nommer et l’Angular sera exact pour vous, il prend également soin du cycle de
vie complet des objets. Ainsi gère les dépendances d’une manière exceptionnelle.
Pour tester, le Framework vous permet d’isoler l’application en modules cohérents qui peuvent
avoir des conditions les uns sur les autres, mais qui sont indépendamment installés. Cela
adopte une stratégie stratégique de test car elle ne donne que les modules dont vous avez
besoin. Actuellement, puisque les conditions sont injectées, vous pouvez avoir une supervision
48 | P a g e
courante comme Angular $ HTTP et l’échanger sans effort avec $ httpBackend mépris pour un
test réussi.
- Permet la modularisation : Git permet une modularisation aisée de son projet. Que
vous soyez sur un projet de petite, moyenne ou grande taille, le besoin est sans cesse
présent de développer des fonctionnalités en parallèle. Git permet à l’aide des
branches de facilement atteindre vos fins.
- Permet d’annuler vos erreurs : dans votre éditeur de code, vous avez l’habitude
d’annuler vos modifications (CTRL+Z, CTRL+Y, …). Mais dès que vous fermez l’éditeur,
impossible d’annuler ce que vous venez à peine de modifier. Git apporte une solution
avec les commits avec la possibilité de passer d’un commit à un autre.
- Permet de travailler en mode déconnecté : nous n’avons pas internet à tout moment.
Nous ne sommes pas au boulot tout le temps. Mais quand on utilise Git, puisqu’on a
tout le code sur notre poste de travail, on peut continuer le développement partout où
on sera.
- Permet d’éviter des pertes de données : si vous travaillez à plusieurs sur un projet,
concilier vos modifications –quand on n’utilise pas un outil moderne– est très critique.
Il est difficile à vue d’œil d’identifier les modifications apportées par un collaborateur,
de comparer deux fichiers, ou de faire l’intégration de ces modifications. Avec Git, vous
identifiez clairement les modifications des autres collaborateurs, ce qu’ils ont ajouté ou
retranché, et pourquoi ils l’ont fait. Et lorsqu’ultérieurement une modification devient
critique, vous pouvez repartir en arrière sur une version préalable du fichier grâce à
l’historique des modifications.
49 | P a g e
3. Structure du projet
Dans cette partie nous représentons la structure de notre projet qui décrit les différents
modules en phase de développement.
- Spring Boot exporte REST Apis à l'aide de Spring Web MVC et interagit avec la base de
données SQL Server à l'aide de Spring Data SQL Server
- Le client angulaire envoie des requêtes HTTP et récupère les réponses HTTP, affiche les
données sur les composants. Nous utilisons également le routeur angulaire pour naviguer vers
les pages.
50 | P a g e
Structure du projet Spring boot :
51 | P a g e
•Dossier des fichiers CSS, JavaScript et les templates HTML
• Fichier application.properties qui contient les règles de gestion de base de données et du
Framework Spring boot
• Ficher pom.xml qui contient les dépendances utilisées pour le développement du projet
52 | P a g e
• Le répertoire node_module : contient les dépendances externe du projet (librairie
javascript,css,…)
• Le répertoire src : contient le code source relatif au projet
- Le répertoire app : contient la logique applicative du projet à savoir le package
core/module qui contient l’ensemble des modules importer de angular material, le
package Framework qui contient les services et model des entités de notre application
et la configuration de l’authentification par JWT, et le package views qui contient les
composantes de la page web de l’application
- Le répertoire assets contient les fichiers media que nous avons utiliser pour
l’application
- Le répertoire environments : contient les variables d’environnement (globale) du projet
53 | P a g e
Pour accéder à l’application, l’utilisateur doit tout d’abord s’authentifier en saisissant son
nom d’utilisateur et son mot de passe annuaire. L’application vérifie si les informations saisies
sont erronées ou vraies et réachemine l’utilisateur vers l’espace adapté.
L’utilisateur doit insérer ces identifiant pour la plate-forme en plus de son email puit il va
recevoir un email pour activer sa session.
54 | P a g e
F IGURE 30: ESPACE D 'ACCUEIL ADMIN
55 | P a g e
Le menu à gauche représente les fonctionnalités attribuées à l’utilisateur de la plate-forme
à savoir consulter son profile gérer la liste des datasets à laquelle il a droit, importer des dataset
dans la liste, accéder aux datasets pour les manipuler et le service de messagerie
L’administrateur doit donner un nom au dataset puit il peut ajouter autant d’attributs qu’il
veut à l’aide du bouton add (icone plus en vert) ensuit il doit les nommer et les typer puit il
appuie sur le bouton save(icone disquette noir) et la dataset sera créer .
56 | P a g e
4.6. Interface d’attribution des droits aux utilisateur
L’administrateur doit entrer dans le workflow spécifier et appuyer sur ajouter utilisateurs
Il aura une interface avec deux colonnes une de tous les utilisateurs et l’autre pour les
utilisateurs invités pour ajouter un utilisateur aux invités soit il sélectionne l’utilisateur et
appuie sur la flèche orientée vers la droite au milieu de la page soit il utilise la fonctionnalité
de « drag and drope » lorsqu’il a fini il doit appuyer sur done pour enregistrer les modifications
57 | P a g e
Cette interface permet aux différents utilisateurs de communiquer entre eux, l’utilisateur
doit entre les usernames des destinataires puit écrire son message enfin il appuie sur send
pour envoyer le message.
Conclusion
Dans ce chapitre nous avons vu les différentes technologies utiliser pour réaliser ce projet, les
phases de sa réalisation, sa structure et les interfaces qui permettent à l’utilisateur d’interagir
facilement avec la plate-forme
58 | P a g e
Conclusion générale
Mon projet de fin d’études, effectué au sein de la société Mercure IT et précisément au
sein de l’équipe développement Java, consiste à la mise en place d’une solution de
centralisation de données en faisant l’étude, l’analyse, la conception et la réalisation de cette
application web.
Les objectifs majeurs de notre solution sont : permettre de sécuriser les données et assurer
leurs disponibilités à tout moment, pour les exploiter dans des projets BI, et aussi donner la
possibilité aux utilisateurs de collaborer entre eux et même de travailler hors ligne.
En guise de perspective pour notre solution, nous proposons d’y ajouter un mécanisme de
règle de gestion pour les datasets, cela va permettre à l’administrateur d’être plus précis sur
les contraintes des dataset, ce qui engendrera une réduction des erreurs lors de l’insertion des
données par l’utilisateur de la plate-forme. On va rajouter des fonctionnalités qui seront utile
pour l’utilisateur lors de son travail sur la plate-forme comme les options de filtrer les datasets,
et faire de calcules arithmétique.
59 | P a g e
Bibliographies
Become a ninja with Angular
Hibernate 3.0 Gestion optimale de la persistance dans les applications Java/J2EE, Anthony
PATRICIO
Spring In Action, New York, Manning Publications Co., 2011,426, Craig Walls
60 | P a g e
Webographies
Why Learn the Spring Framework?
https://springframework.guru/learn-spring/
https://www.javainuse.com/spring/ang7-jwt
https://www.baeldung.com/spring-boot-security-autoconfiguration
Spring boot
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
angular spring boot Jwt
https://bezkoder.com/angular-spring-boot-jwt-auth/
Cours Spring boot M YOUSSFI
https://fr.slideshare.net/mohamedyoussfi9/mohamed-youssfi-support-architectures-
logicielles-distribues-bases-sue-les-micro-services-avec-spring-boot
Sécurité des Applications Web avec Json Web Token (JWT)
https://fr.slideshare.net/mohamedyoussfi9/scurit-des-applications-web-avec-json-web-
token-jwt
Model View Controller
https://sites.google.com/site/floriangrisoni/informatique/design-pattern-mvc
Java Entreprise Edition
http://www.jmdoudoux.fr/java/dej/chap-j2ee-javaee.htm#j2ee-javaee-1
Angular tutorial
https://angular.io/tutorial
61 | P a g e
Annexes
62 | P a g e
Annexe A : organisation du projet
1. Rôles et responsabilité
L’organisation du projet est la suivante :
• Cote MercureIT :
Responsable Rôle
M MOUSGHI Redouan Encadrant externe
• Cote AIAC :
Responsable Rôle
M HAIN Mustapha Tuteur
2. Organisation de réunion
Chaque réunion sera verbalisée par un compte rendu synthétisant l’état d’avancement du
projet et tous les points et décisions prises. Ce compte rendu sera envoyé à l’encadrant du
projet et les membres d’équipe projet.
• Procéder à l’évaluation de l’état d’avancement pour chacune des ressources ainsi que
le niveau de réalisation des objectifs prédéfinis.
3. Démarche de développement
Chaque attente du client peut être atteinte indépendamment des autres. L'utilisation d'un
cycle de vie permettant de développer chacun des modules de bout en bout séparément est
donc appropriée. Le produit final sera donc livré par lots successifs. Pour cette raison on a
adopté la méthode SCRUM de gestion de projet.
63 | P a g e
Le schéma ci-dessous représente une vue synthétique du processus SCRUM du projet
• Définir les fonctionnalités (Product Backlog) : Cette étape permet de définir précisément
l’ensemble des fonctionnalités, d'étudier l'interface homme-machine du système, de se former
aux outils utilisés.
• Développer : Cette étape consiste à coder les objets créés dans la partie modélisation.
• Tester : cette phase permet à l’aide des plans de tests, de tester le produit développé dans
l’ordre suivant : tests techniques et les tests fonctionnels.
64 | P a g e
Annexe B : technologies et outils utilisés
1. Technologie
1.1. Spring boot
Spring Boot est un framework qui facilite le développement d'applications fondées sur
Spring en offrant des outils permettant d'obtenir une application packagée en jar,
totalement autonome. L’utilité majeure du framework est de rassurer une auto-
configuration, cette fonctionnalité est la plus importante de Spring Boot. Elle permet
de configurer automatiquement votre application à partir des jars trouvés dans votre
Classpath. En d'autres termes, en important des dépendances, Spring Boot va consulter
cette liste puis produira la configuration nécessaire pour que tout fonctionne
correctement. Ainsi, la deuxième utilité majeure du Spring boot est les starters qui
viennent compléter l'auto-configuration et font gagner énormément de temps,
notamment lorsqu'on commence le développement d'un Microservice. Un starter va
apporter à votre projet un ensemble de dépendances, communément utilisées pour
un type de projet donné.
L'autre énorme avantage est la gestion des versions. Plus besoin de chercher quelles
versions sont compatibles puis de les ajouter une à une dans le pom.xml ! Il vous suffit
d'ajouter une simple dépendance au starter de votre choix. Cette dépendance va alors
ajouter, à son tour, les éléments dont elle dépend, avec les bonnes versions.
65 | P a g e
1.2. Hibernate
Hibernate est un Framework open source gérant la sauvegarde et la restauration des objets de
la base de données. C'est-à-dire qu'il consiste en un programme capable de se terminer sans
que ses données et son état d'exécution ne soient perdus.
Il est adaptable en terme d'architecture, il peut donc être utilisé aussi bien dans un
développement client lourd, que dans un environnement web léger de type Apache Tomcat
ou dans un environnement J2EE complet : WebSphere, JBoss Application Server et Oracle
WebLogic Server.
Hibernate apporte, en plus, une solution aux problèmes d'adaptation entre le paradigme objet
et les SGBD en remplaçant les accès à la base de données par des appels à des méthodes objet
de haut niveau.
Hibernate est un outil ORM (Object Relational Mapping) qui est une technique de
programmation qui mappe l'objet aux données stockées dans la base de données. De plus,
Hibernate implémente les spécifications de JPA (Java Persistence API) pour la persistance des
données, cette spécification Java fournit certaines fonctionnalités et standard aux outils ORM.
Le package javax.persistence contient les classes et les interfaces JPA.
66 | P a g e
1.3. Spring Security
Spring Security est un Framework de sécurité léger qui fournit une authentification et un
support d’autorisation afin de sécuriser les applications Spring. Il est livré avec des
implémentations d’algorithmes de sécurité populaires.
1.4. Angular
Angular (communément appelé "Angular 2+" ou "Angular v2 et plus") est un Framework côté
client, open source, basé sur TypeScript, et co-dirigé par l'équipe du projet « Angular » à
Google et par une communauté de particuliers et de sociétés. Angular est une réécriture
complète de AngularJS, cadriciel construit par la même équipe.
67 | P a g e
2. Outils
2.1. Git
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus
Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale
GNU version 2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est
utilisé par plus de douze millions de personnes.
68 | P a g e