SlideShare une entreprise Scribd logo
Institut Supérieur de Management, Administration et de Génie
Informatique
Mémoire de fin d’études
Bac+5 en Ingénierie Informatique
Conception et développement d’une Plateforme
de mise en relation des porteurs
Présenté par : Oussama BAHLOULI
Encadré par : Pr. Hassane BAKHOUS (ISMAGI)
M. Mustapha LARHROUCH (SQLI RABAT)
Composition du Jury:
-…………………………………………………………………………………...Président
- …………………………………………………………………………………..Examinateur
-………………………………………………………………………………….. Examinateur
Année universitaire 2019-2020
2
3
Dédicaces
A ma chère mère,
A mon cher père,
Qui n'ont jamais cessé, de formuler des prières à mon égard, de me
soutenir
Et de m'épauler pour que je puisse atteindre mes objectifs.
Je dédie aussi ce travail à tous ceux qui m’ont aidé à dépasser les
moments difficiles.
Á tous ceux qui auraient voulu partager ma joie. . .
Qu’ils trouvent en ce travail l’expression de ma gratitude pour l’attention
qu’ils portent constamment à mes réussites.
4
Remerciement
Au terme du stage de projet de fin d’étude au sein de la société « SQLI ISC RABAT», on
adresse un remerciement spécial à M. Hassane Bakhous, Professeur à l'ISMAGI, pour son
encadrement, son soutien illimité, ainsi que pour tous ses conseils instructifs durant toute la
période de ce travail.
On souhaite également remercier et exprimer notre profonde gratitude à notre encadrant
externe, M. Mustapha LARHROUCH, pour son soutien, ses conseils et ses directives
précieuses tout au long de ce projet.
On tient à exprimer aussi nos remerciements à M. SIJILMASSI Mehdi, manager Microsoft,
Pour sa disponibilité ses directives et ses conduites dont il nous avait épargné à chaque fois
qu’il était sollicité, malgré les multiples occupations liées à ses fonctions
Avec beaucoup d'égard, nous ne manquerions pas d'exprimer notre grande reconnaissance à
tous les enseignants et administrateurs de L’Institut Supérieur de Management
d’Administration et de Génie Informatique de RABAT, sans oublier les membres de jury qui
ont accepté de juger notre travail. Et également le personnel de SQLI ISC, pour l’expérience
enrichissante et pleine d’intérêt qu’ils nous ont fait vivre durant la période de stage.
Et également le personnel de SQLI ISC, pour l’expérience enrichissante et pleine d’intérêt
qu’ils nous ont fait vivre durant la période de stage.
Une vive reconnaissance est exprimée à toutes les personnes qui ont contribuée de près ou de
loin à l'élaboration et à la réalisation de ce travail.
5
Résumé
Ce document est un rapport de stage qui s'est déroulé du 03 Février au 31 Juillet 2020 au sein
de l’entreprise SQLI Rabat pour la préparation du diplôme d'ingénieur en développement
informatique.
L'objet de stage était de participer à la conception et réalisation d’une plateforme de mise en
relation des porteurs pour SQLI ISC RABAT, cette plateforme regroupe la totalité des
fonctionnalités nécessaires pour une bonne gestion opérationnelle des différents modules au
sein des locaux de SQLI RABAT, de ce fait cet outil réside une solution digitale interne
indispensable pour les recruteurs de SQLI puisqu’il regroupe numériquement toutes les
évaluations des candidats.
Mots clés: ASP .NET CORE, ANGULAR 9, CQRS pattern, Mediator Pattern,
EVALUATION, CANDIDAT, RECRUTEMENT.
6
Abstract
This document is an internship report which took place from February 3 to July 31, 2020
within the SQLI Rabat Company for the preparation of the engineer degree in computer
development.
The purpose of the internship was to participate in the design and implementation of a
platform for connecting carriers for SQLI ISC RABAT, this platform brings together all the
functionality necessary for good operational management of the various modules within the
premises of SQLI RABAT, therefore this tool resides in an internal digital solution essential
for SQLI recruiters since it digitally gathers all the candidates' evaluations.
Keywords: ASP .NET CORE, ANGULAR 9, CQRS pattern, Mediator Pattern,
EVALUATION, CANDIDATE, RECRUITMENT.
7
‫ملخص‬
‫تقرير‬ ‫عن‬ ‫عبارة‬ ‫الوثيقة‬ ‫هذه‬‫ل‬‫من‬ ‫الفترة‬ ‫في‬ ‫تم‬ ‫داخلي‬ ‫تدريب‬03‫إلى‬ ‫فبراير‬31‫يوليوز‬2020‫شركة‬ ‫في‬SQLI,‫الرباط‬
‫المعلومات‬ ‫تكنولوجيا‬ ‫تطوير‬ ‫في‬ ‫الهندسة‬ ‫درجة‬ ‫على‬ ‫للحصول‬.
‫في‬ ‫المشاركة‬ ‫هو‬ ‫التدريب‬ ‫من‬ ‫الغرض‬ ‫كان‬‫ل‬ ‫منصة‬ ‫وتنفيذ‬ ‫تصميم‬‫مع‬ ‫لتواصل‬‫ال‬‫موظفي‬‫ن‬‫لدى‬ ‫المستقلين‬SQLI ISC
RABAT‫ه‬ ‫تجمع‬ ،‫الالزمة‬ ‫الوظائف‬ ‫جميع‬ ‫المنصة‬ ‫ذه‬‫إلدارة‬RH‫داخل‬ ‫المختلفة‬ ‫للوحدات‬‫شركة‬SQLI RABAT،
‫األداة‬ ‫هذه‬ ‫فإن‬ ‫وبالتالي‬‫عن‬ ‫عبارة‬‫داخلي‬ ‫رقمي‬ ‫حل‬‫مهم‬‫في‬ ‫التوظيف‬ ‫لمسؤولي‬SQLI‫التقييم‬ ‫عملية‬ ‫يسهل‬ ‫ألنه‬‫و‬‫ال‬‫تتبع‬
‫ل‬‫لمر‬‫ت‬‫شحين‬‫اجل‬ ‫من‬‫توظيف‬‫هم‬.
‫الرئيسية‬ ‫الكلمات‬ASP .NET CORE, ANGULAR 9, CQRS pattern, Mediator Pattern, :
EVALUATION, CANDIDAT, RECRUITMENT.
8
Liste des abréviations
 ISMAGI : Institut Supérieur de Management d'Administration et de génie informatique.
 PFE : Projet de Fin d'Etude.
 RH : Ressource Humaines.
 API : Application Programming Interface.
 SWOT : Strengths - Weaknesses - Opportunities – Threats.
 UML : Unified Modeling Language.
 HTTPS : HyperText Transfer Protocol Secure.
 SSL : Secure Socket Layer.
 JWT : JSON Web Token.
 CQRS : Command Query Responsibility Segregation.
 SQL : Structured Query Language
 SGBDR : Système de Gestion de Bases de Données
 DEVOPS : Development Operations
 CLR : Common Language Runtime
 SPA : Single Page Application
9
Liste des figures
Figure 1 : FILIALES SQLI ...................................................................................................... 16
Figure 2 : Métiers de SQLI ...................................................................................................... 17
Figure 3 : Exemple d’une liste des partenaires ........................................................................ 19
Figure 4 : Exemple des offres .................................................................................................. 20
Figure 5 : Exemple de liste des besoins (freelance) ................................................................. 20
Figure 6: La méthodologie SCRUM ........................................................................................ 23
Figure 7:Logo GitLab............................................................................................................... 24
Figure 8: Issue board de Gitlab ................................................................................................ 24
Figure 9: GitLab repository...................................................................................................... 25
Figure 10: Logo Microsoft Teams ........................................................................................... 26
Figure 11: L'interface utilisateur Microsoft Teams.................................................................. 27
Figure 12: Profile de projet ...................................................................................................... 28
Figure 13: SWOT de projet...................................................................................................... 29
Figure 14: Diagramme de GANTT. ......................................................................................... 30
Figure 15: Cas d'utilisation «Administrateur et Manager» ...................................................... 34
Figure 16: Cas d'utilisation «Partenaire» ................................................................................. 35
Figure 17:Diagramme de séquence Authentification............................................................... 37
Figure 18: Diagramme de séquence ajouter utilisateur............................................................ 38
Figure 19: Scénario du diagramme de séquence «Ajouter Utilisateur»................................... 38
Figure 20: Diagramme d'activité pour «Manager» .................................................................. 39
Figure 21: Diagramme d'activité pour «Partenaire» ................................................................ 40
Figure 22: Diagramme d'activité pour «Administrateur» ........................................................ 41
Figure 23: Diagramme de classe .............................................................................................. 45
Figure 24: Modèle physique des données ................................................................................ 46
Figure 25: Couches applicative................................................................................................ 47
Figure 26:Architecture propre ; représentation des couches en oignon ................................... 48
Figure 27: Architecture du back-End....................................................................................... 49
Figure 28: Le pattern CQRS..................................................................................................... 50
Figure 29: Le pattern Médiator ................................................................................................ 51
Figure 30: Exemple de mapping .............................................................................................. 52
Figure 31: L'architecture de NGXS.......................................................................................... 53
Figure 32: Le pattern Façade.................................................................................................... 54
Figure 33: Utilisation du JWT.................................................................................................. 56
Figure 34: Power Designer....................................................................................................... 58
Figure 35: SQL SERVER 2017 ............................................................................................... 59
Figure 36: VISUAL STUDIO 2019......................................................................................... 59
Figure 37: Visual Studio Code................................................................................................. 60
Figure 38: GitLab..................................................................................................................... 60
Figure 39: Azure App service .................................................................................................. 61
Figure 40: Framework .Net Core ............................................................................................. 61
Figure 41: La bibliothèque SignalR ......................................................................................... 62
Figure 42: Email SendGrid Azure............................................................................................ 63
Figure 43: Angular 9 ................................................................................................................ 63
Figure 44: Material Design ...................................................................................................... 64
Figure 45: Le processus de déploiement d'une application BACKEND ................................. 65
10
Figure 46: Page d’authentification ........................................................................................... 66
Figure 47: changement de mot de passe lors de la première authentification.......................... 66
Figure 48: CONFIRMATION DE CHANGEMENT DE MOT DE PASSE PAR MAIL....... 67
Figure 49: REINITIALISER LE MOT DE PASSE – 1ERE ETAPE...................................... 67
Figure 50: réinitialiser le mot de passe – 2ème étape............................................................... 68
Figure 51: réinitialiser le mot de passe – 3ème étape............................................................... 68
Figure 52: Dashboard - Espace Admin .................................................................................... 69
Figure 53: La liste des utilisateurs............................................................................................ 69
Figure 54: La recherche des utilisateurs par rôle ..................................................................... 70
Figure 55: La recherche des utilisateurs par partenaire............................................................ 70
Figure 56: Formulaire d'ajout d'un utilisateur par l'admin ....................................................... 71
Figure 57: Formulaire d'ajout d'un admin ................................................................................ 71
Figure 58: Formulaire d'ajout d'un skill center manager.......................................................... 72
Figure 59: Modifier un utilisateur ............................................................................................ 72
Figure 60: Liste des partenaires ............................................................................................... 73
Figure 61: Désactiver un partenaire ......................................................................................... 73
Figure 62: Désactiver tous les comptes associés au partenaire................................................ 74
Figure 63: Formulaire de modification d'un partenaire............................................................ 74
Figure 64: Liste des skill centers.............................................................................................. 75
Figure 65: Liste des types de technologies............................................................................... 75
Figure 66: Liste des technologies............................................................................................. 76
Figure 67: Dashboard - Espace Manager ................................................................................. 76
Figure 68: La liste des offres.................................................................................................... 77
Figure 69: Formulaire d'ajout d'une offre................................................................................. 77
Figure 70: La liste des compétences ........................................................................................ 78
Figure 71: Liste des propositions d’une offre .......................................................................... 78
Figure 72: les informations d'un candidat ................................................................................ 79
Figure 73de : Le tableau de board Kanban pour le recrutment................................................ 80
Figure 74: Fiche d'entretien d'un candidat ............................................................................... 80
Figure 75: Archiver une offre................................................................................................... 80
Figure 76: Notification de nouvelle proposition ...................................................................... 81
Figure 77: Dashboard - Espace Partenaire ............................................................................... 81
Figure 78: Liste des offres pour partenaire .............................................................................. 82
Figure 79: Proposer un candidat............................................................................................... 82
Figure 80: Détails d'une proposition d’offre ............................................................................ 83
Figure 81: Liste des candidats.................................................................................................. 83
Figure 82: Maquette pour l’Authentification ........................................................................... 87
Figure 83: Maquette pour la liste des offres............................................................................. 87
Figure 84: Maquette pour ajouter une offre ............................................................................. 88
Figure 85: Maquette pour suivre les offres .............................................................................. 88
Figure 86: Maquette pour la liste des propositions .................................................................. 89
Figure 87: Maquette pour envoyer les propositions................................................................. 89
Figure 88: Maquette pour l'ajout d'un candidat........................................................................ 90
11
Liste des tableaux
Table 1: Les formations SQLI.................................................................................................. 18
Table 2: Description de diagramme de cas d'utilisation «Administrateur et Manager» .......... 35
Table 3: Description de diagramme de cas d'utilisation «Partenaire» ..................................... 36
Table 4: Scénario du diagramme de séquence «Authentification»......................................... 37
Table 5: Dictionnaire de données............................................................................................. 44
12
Table de matières
Dédicaces ................................................................................................................................... 3
Remerciement............................................................................................................................. 4
Résumé....................................................................................................................................... 5
Abstract ...................................................................................................................................... 6
‫ملخص‬........................................................................................................................................... 7
Liste des abréviations................................................................................................................. 8
Liste des figures ......................................................................................................................... 9
Liste des tableaux..................................................................................................................... 11
Table de matières ..................................................................................................................... 12
Introduction générale................................................................................................................ 14
Chapitre 1 : Présentation de lieu de stage........................................................................... 16
Introduction ....................................................................................................................................... 16
1. PRÉSENTATION ..................................................................................................................... 16
2. Métiers du groupe...................................................................................................................... 17
3. Formation .................................................................................................................................. 18
Conclusion......................................................................................................................................... 18
Chapitre 2 : Etude préliminaire .......................................................................................... 19
Introduction ....................................................................................................................................... 19
1. Etude Préalable.......................................................................................................................... 19
A. Etude de l’existant................................................................................................................. 19
B. Critique de l’existant ............................................................................................................. 20
C. Solutions proposées............................................................................................................... 21
2. Management du projet............................................................................................................... 21
A. Introduction ........................................................................................................................... 21
B. La méthode agile SCRUM .................................................................................................... 22
C. Les outils de pilotage de projet.............................................................................................. 24
D. Profile de projet..................................................................................................................... 28
E. SWOT.................................................................................................................................... 29
F. Diagramme de Gantt ............................................................................................................. 30
Conclusion......................................................................................................................................... 31
Chapitre 3 : Analyse & conception .................................................................................... 32
Introduction ....................................................................................................................................... 32
1. Spécification des besoins........................................................................................................... 32
A. Les acteurs............................................................................................................................. 32
13
B. Besoins fonctionnels.............................................................................................................. 32
C. Besoins non fonctionnels....................................................................................................... 33
D. Les diagrammes de cas d’utilisation...................................................................................... 34
E. Diagrammes de séquence ...................................................................................................... 36
F. Diagramme d'activité............................................................................................................. 39
G. Dictionnaire des données....................................................................................................... 42
H. Diagramme de classe............................................................................................................. 44
2. Architecture applicative............................................................................................................. 47
A. Description d’architecture ..................................................................................................... 47
B. Architecture Back-End.......................................................................................................... 48
C. Architecture Front-End.......................................................................................................... 53
D. Sécuriser l’API REST ........................................................................................................... 55
Conclusion......................................................................................................................................... 57
Chapitre 4 : Réalisation ...................................................................................................... 58
Introduction ....................................................................................................................................... 58
1. Outils de travail ......................................................................................................................... 58
2. Technologies utilisées ............................................................................................................... 61
3. Déploiement sur Microsoft Azure (Saas).................................................................................. 65
4. Description de l’application ...................................................................................................... 66
A. Authentification..................................................................................................................... 66
B. Espace Admin : ..................................................................................................................... 68
C. Espace Manager : .................................................................................................................. 76
D. Espace Partenaire : ................................................................................................................ 81
Conclusion......................................................................................................................................... 84
Conclusion générale ................................................................................................................. 85
Bibliographie............................................................................................................................ 86
Annexes.................................................................................................................................... 87
14
Introduction générale
Loin d'être un éphémère phénomène de mode, ou une tendance passagère, l'intégration des
systèmes d'informations est fortement ressentie par l'ensemble des organisations. En effet, Il
ne fait désormais plus aucun doute que la mise en place d'un système informatique améliore
les performances, augmente le rendement et facilite la gestion de travail au sein de
l’entreprise.
SQLI ISC se distingue par la manière innovante dont vous choisissez les stagiaires, car il
organise chaque année une compétition E-Challenge au niveau national, après notre
participation cette année à la 14e édition du concours organisé par SQLI Rabat, nous avons
passé les trois étapes du concours et nous avons décroché un stage PFE pour une période de 6
mois.
Étant un leader dans le domaine de développement des solutions IT qui a comme objectif la
digitalisation des systèmes informatiques, l'entreprise SQLI ISC RABAT nous a confié le
développement et la mise en place d’une application web interne basé sur l'architecture .NET
dédié aux managers de SQLI RABAT, notamment les partenaires de l'entreprise ,afin
d’effectuer le processus de recrutement avec succès et d’une manière automatisée.
Notre application est conçue pour assister les managers de SQLI ISC, afin qu'elle envoie une
notification d'offre d'emploi aux partenaires, afin de proposer un ensemble de profils des
freelances, l'application aide également à gérer tous les processus de recrutement depuis la
proposition jusqu'a le recrutement.
Au bout de ce travail, on est censé réaliser une plateforme d’évaluation riche de
fonctionnalités qui se base sur les technologies de Microsoft. Ce projet nous a donné
l’opportunité de renforcer nos compétences de développement, d’adaptation et
d’apprentissage des nouvelles technologies, notamment la découverte du la Platform Azure, et
le déploiement back-end et front-end d’une application .NET.
Le but de ce rapport est de présenter un aperçu exhaustif et détaillé du travail effectué et de
ressortir les solutions apportées aux difficultés rencontrées les managers (SKILL CENTER)
au cours du processus de recrutement des freelances.
15
De ce fait, on a essayé de fournir un rapport qui contient cinq parties, dans sa première partie,
on parlera du contexte général du projet : on présente l’organisme d’accueil, la présentation
du client et une description fonctionnelle détaillée de la démarche suivie pour le
développement du projet. La deuxième partie est consacrée aux différentes fonctionnalités
qu’offre notre plateforme.
Puis on présentera la modélisation du projet, la définition de l’environnement technique, et
l’architecture du projet. Le rapport s’achève par une présentation des interfaces développées
et une conclusion pour lister les différents atouts du projet, les difficultés rencontrées et les
perspectives d’amélioration possibles.
16
Chapitre 1 : Présentation de lieu de stage
Introduction
Ce chapitre présente le contexte général ainsi qu’une présentation de l'organisme d'accueil
sera en premier lieu, et ensuite la formation préalable au stage
1. PRÉSENTATION
Créé en 1990, le Groupe SQLI est le leader français des sociétés de services spécialisées dans
les Nouvelles Technologies de l'Information et de la Communication. L’entreprise se
positionne en tant que "Grand Spécialiste" unique en France en proposant une offre globale
alliant la capacité de production industrielle d'un groupe international à l'expertise et la
souplesse d'un spécialiste, en mesure de donner de la valeur aux innovations des entreprises
qu'elle accompagne.
Le groupe est spécialisé sur trois segments de compétence :
• Les technologies & usages Internet (Microsoft, Java/J2EE, Open Source…)
• Les nouvelles offres SAP (NetWeaver, CRM…)
• La Business Intelligence (BO, Cognos, Open Source…)
Figure 1 : FILIALES SQLI
17
Le Groupe SQLI est l’une des rares agences internationales dédiée à l’expérience digitale et au
Commerce Unifié à disposer d’un réseau d’agences aussi étendu avec notamment 26 agences
réparties dans 11 pays lui permettant de couvrir efficacement l’Europe. Ce réseau d’agences
locales apporte conseil et approche commerciale de proximité aux clients et prospects.
A ce réseau d’agences locales, SQLI a choisi d’associer 6 centres de services digitaux répartis
dans 4 pays, qui lui permettent de répondre avec flexibilité et agilité à tous ses clients et
notamment les grands comptes nationaux / internationaux, pour leurs projets de déploiement de
plateformes à l’échelle mondiale. [1]
2. Métiers du groupe
Pour aider les entreprises à tirer parti des technologies Internet, SQLI propose un
accompagnement global sur tout le cycle du projet : des prestations de conseil pour aider les
clients à faire les bons choix, la mise en œuvre concrète de ces choix par la réalisation et
l’intégration et un accompagnement dans le déploiement des projets et le transfert de
compétences.
Figure 2 : Métiers de SQLI
18
3. Formation
L'objectif principal de SQLI est l'intégration des stagiaires, donc pour faciliter cette intégration,
l'entreprise vous propose un mois de formation sur toutes les technologies et outils nécessaires
du travail.
En tant que stagiaire Microsoft au sein de SQLI RABAT, vous suivez une formation complète
par des experts techniques.
FORMATION FORMATEUR TOTAL HEURES (h)
HTML/CSS CHAOUAY Youness 16
JAVASCRIPT CHAOUAY Youness 24
C# AZZI Younesse 16
ANGULAR 5 OTMANI Chihab 32
ASP MVC/ Web API/ EF MAJID Mostafa 16
Formation Skills El HAJAMI Siham 8
REACT ADAD Hamza 40
Table 1: Les formations SQLI
Conclusion
Ce chapitre est une présentation de lieu de stage.
Le chapitre qui suit port sur l’étude préliminaire.
19
Chapitre 2 : Etude préliminaire
Introduction
Dans ce chapitre, nous commençons par présenter l’étude de l’existant suivit d’une critique de
ce dernier. Ensuite, nous décrivons notre solution proposée et les objectifs à atteindre ainsi que
la méthodologie adoptée.
1. Etude Préalable
A. Etude de l’existant
L’étude de l’existant est une phase importante pour bien comprendre l’état et les moyens du
fonctionnement actuel.
L’existant actuel consiste en des fichiers Excel qui permet de recrute les collaborateurs et suivre
les propositions des partenaires et un process manuel de communication entre les porteurs (les
entreprises qui gèrent ces profils) et SQLI pour annoncer les offres ou les besoins.
Le fichier se compose de plusieurs onglets :
 Partenaires :
Figure 3 : Exemple d’une liste des partenaires
20
 Les offres :
Figure 4 : Exemple des offres
 Liste des besoins :
Figure 5 : Exemple de liste des besoins (freelance)
B. Critique de l’existant
L'étude de l’existant nous a permis de dégager un certain nombre d'insuffisances et de lacunes
par exemple :
 Le processus de recrutement prend beaucoup de temps lors de l'utilisation de fichiers
Excel.
 Un ensemble de tâches répétitives sans automatisation.
 La communication entre les acteurs (Manager SQLI et Les partenaires) prend beaucoup
de temps.
 L'absence d'une base de données de recrutement avec un historique fiable.
21
C. Solutions proposées
Notre projet de fin d’étude est venu comme réponse à des besoins exprimés par la direction des
ressources humaines et des Skill center managers, dont l’objectif général est la réalisation d’une
plateforme de mise en relation des porteurs. Cette plateforme regroupe la totalité des
fonctionnalités nécessaires pour une bonne gestion opérationnelle des différents modules au
sein des locaux de SQLI RABAT.
Dans ce projet, nous proposons de créer une plateforme de recrutement, qui aide les managers
RH de SQLI à communiquer avec leurs partenaires et à envoyer des offres de recrutement,
ensuite les partenaires proposent des candidats, Enfin, les responsables RH choisissent les
candidats qui peuvent obtenir le poste.
La solution cible se compose de 6 modules :
• Gestion des utilisateurs.
• Gestion des offres.
• Gestion des porteurs.
• Gestion des propositions.
• Gestion des candidats.
• Gestion des fiches d’évaluation.
• Gestion des statistiques et de suivi séquentiel des entretiens.
2. Management du projet
A. Introduction
Dans le chapitre qui suit, nous allons donner les trois fonctions principales de la gestion de
projet La planification, L’Exécution, le Contrôle.
22
B. La méthode agile SCRUM
Le choix d'une méthode de développement constitue une étape très importante permettant
D’avoir une meilleure organisation des différentes phases du projet.
Pour la conduite de notre projet nous avons décidées d'adopter la méthode "Scrum".
La méthode SCRUM met l’accent sur l’esprit d’équipe et sur le fait que tous les acteurs doivent
avancer dans la même direction pour atteindre un même objectif.
SCRUM repose sur une intense collaboration de l’équipe qui se focalise sur une partie limitée
et maîtrisable des fonctionnalités à réaliser.
L’équipe SCRUM est répartie en 3 rôles :
 Le Product Owner :
C’est le responsable du produit, il représente les clients et les utilisateurs en transcrivant leurs
besoins, définit et priorise les demandes produit
 Le Scrum Master :
Il n’est pas le chef de projet mais il a pour charge de faciliter l’application de Scrum.
Sa mission est de tout mettre en œuvre pour que l’équipe travaille dans de bonnes conditions et
se concentre sur l’objectif du projet.
Il porte également une attention particulière au respect des différentes phases de Scrum.
 L’équipe Scrum :
L’équipe se gère en toute autonomie et est en charge du développement du produit.
Il n’y a pas de notion de hiérarchie. Toutes les décisions sont prises ensemble.
Elle regroupe les rôles habituellement nécessaires à un projet (architecte, concepteur,
développeur, etc…).
 Pilotage du projet avec Scrum :
La première étape consiste à effectuer une première planification de l'itération ou Sprint
23
Planning dans le jargon des développeurs.
Cette réunion fera ressortir les éléments prioritaires de la liste des exigences fonctionnelles du
produit.
Chaque exigence représente une User Story ou "histoire utilisateur". En accord avec le client,
aussi appelé Product Owner, les premières livraisons devraient être effectuées à la fin de cette
itération (qui dure de 2 à 4 semaines suivant le nombre des user Stories présentes dans le
Backlog).
Le backlog est l'ensemble des US à développer durant l'itération en cours. Une autre réunion
appelée Revue de Sprint ou Sprint Review est organisée à la fin de chaque Sprint durant laquelle
les développeurs présentent au client les fonctionnalités développées.
Ce dernier pourra ainsi tout de suite donner son feedback, ce qui présente l'avantage de gagner
beaucoup de temps et d'ajuster les fonctionnalités ou les méthodes de travail le cas échéant.
Vient ensuite une rétrospective de Sprint ou Sprint Rétrospective qui permet à tous les acteurs
d'améliorer des choses et de s'améliorer également.
Une autre particularité de la méthode Scrum est la réalisation de mêlées quotidiennes ou Daily
Scrum qui permet à l'équipe de développeurs de synchroniser leur travail.
Cette réunion qui ne dure pas plus de 15 minutes permet à chacun de déterminer ce qu'ils ont
réalisé depuis la dernière mêlée, de fixer ce qu'ils auront à terminer avant la prochaine Daily
Scrum et d'identifier les obstacles qui pourraient les bloquer. [2]
Ci-après, une figure résumant le processus de Scrum.
Figure 6: La méthodologie SCRUM
24
C. Les outils de pilotage de projet
 GitLab :
Figure 7:Logo GitLab
GitLab est un logiciel libre de forge basé sur git proposant les fonctionnalités de wiki,
un système de suivi des bugs, l’intégration continue et la livraison continue. Développé par
GitLab Inc. et créé par Dmitriy Zaporozhets et par Valery Sizov, le logiciel est utilisé par
plusieurs grandes entreprises informatiques.
Figure 8: Issue board de Gitlab
Le tableau de bord ou issue board de Gitlab vous permet de suivre de près les tâches en cours
et les issues, Il est conçu de manière à ce que les informations et données pertinentes vous
sautent aux yeux.
Ce tableau de bord se base sur la notion de Workflow et chaque liste utilisée se rapporte à une
étape précise du processus de développement.
25
Depuis ce tableau de bord, chaque membre de votre équipe qui prend en charge un même projet
est en mesure d’apporter des modifications à tous les fichiers du projet. Les autres membres
seront au courant en temps réel des modifications apportées.
Figure 9: GitLab repository
Le dépôt (repository) est un répertoire dont la structure décrit le graphe de commit, les branches,
etc.
Un repository est ce que vous utilisez pour stocker code de projet dans GitLab et le modifier
avec le contrôle de version.
Un repository fait partie d'un projet, qui possède de nombreuses autres fonctionnalités.
26
 Microsoft teams
Figure 10: Logo Microsoft Teams
Microsoft Teams est une application de communication collaborative propriétaire (Saas)
officiellement lancée par Microsoft en novembre 2016.
Microsoft Teams reprend les fonctionnalités Microsoft suivantes : Skype
Entreprise, Exchange, SharePoint ou encore StaffHub :
SharePoint est une application permettant le partage d'informations entre plusieurs individus.
Microsoft Exchange est un logiciel de groupe de travail (appelé également groupware)
proposant une messagerie électronique.
StaffHub est une application permettant de gérer des plannings d'équipes à distance.
Lync ou Skype for business est une plateforme de "communication unifiée" intégrant un
ensemble de moyens de communication comme les appels vidéo ou audio, messagerie
instantanée, etc.
27
Figure 11: L'interface utilisateur Microsoft Teams.
En raison de l'épidémie de COVID-19, nous sommes passés au travail à distance, en utilisant
Microsoft Teams, qui aide à organiser des réunions, à partager des fichiers et à travailler en
équipe.
28
D. Profile de projet
F
A
I
B
L
E
Taille I
M
P
O
R
T
A
N
T
Enjeu
Output matériels
Complexité
Innovation
Autonomie de l’équipe
Intégration dans l’organisation
Figure 12: Profile de projet
- Le projet est un projet de taille, Enjeu et output matériels moyennes
- Sa complexité et innovation sont très moyennes.
- L'équipe n'est pas indépendante.
- Le projet s’insère dans une organisation.
29
E. SWOT
L’analyse ou matrice SWOT est un outil de stratégie d'entreprise permettant de déterminer les
options offertes dans un domaine d'activité stratégique. Il vise à préciser les objectifs de
l'entreprise ou du projet et à identifier les facteurs internes et externes favorables et défavorables
à la réalisation de ces objectifs. SWOT a été décrit comme l'outil éprouvé de l'analyse
stratégique.
• Force : caractéristiques de l'entreprise ou du projet qui lui donnent un avantage sur les
autres.
• Faiblesses : caractéristiques de l'entreprise qui désavantagent l'entreprise ou le projet par
rapport aux autres.
• Opportunités: éléments de l'environnement que l'entreprise ou le projet pourrait
exploiter à son avantage.
• Menaces : éléments de l'environnement qui pourraient causer des problèmes à l'entreprise
ou au projet.
Figure 13: SWOT de projet
Forces :
- Cohérence et homogénéité des
informations, intégrité, unicité des données
- Optimisation et harmonisation des
processus de gestion
- Minimisation des interfaces et
globalisation de la formation
Faiblesses :
-Une nouvelle architecture doit être apprise
en peu de temps pour pouvoir l'utiliser
Opportunités :
- Souplesse et pérennité sur le long terme
- Evolution maîtrisée du systéme
d'information et centralisation de la
maintenance
- adaptabilité des decisions et actions en se
basant sur les tables de bords
Menaces :
-Ralentissement du développement après
l'épidémie de Covid 19.
Projet
30
F. Diagramme de Gantt
La planification de projet vise à établir des prévisions raisonnables et à prévoir
l'ordonnancement des phases sur le plan des délais pour la mise en œuvre des travaux
d'ingénierie et la gestion du projet.
Ces prévisions sont indispensables pour mener une gestion de projet efficace. Parmi les outils
de planification de projet, nous avons optée pour le diagramme de GANTT, un outil qui permet
de planifier un projet et rendre plus simple le suivi de son avancement.
Il est à noter que pour prioriser les besoins dans un contexte itératif, nous avons eu recours à la
méthode MoSCoW qui est plus compréhensible que d'autres techniques de priorisation comme
élevé/moyen/faible.
La figure suivante illustre l'enchainement et la durée prévisionnelle des différentes activités et
tâches du projet.
Figure 14: Diagramme de GANTT.
31
Conclusion
Ce chapitre avait pour objectif la présentation de la deuxième partie de projet de fin d’études,
son contexte général, les méthodes de gestion adoptées pour le mener ainsi que le
déroulement du projet tout au long des phases constituant le cycle de développement.
Le chapitre qui suit port sur l’analyse et la conception informatique.
32
Chapitre 3 : Analyse & conception
Introduction
Dans le chapitre qui suit, nous allons donner une description des différents éléments dégagés
dans la phase d’analyse et conception. Tout d’abord, on va décrire la méthodologie de travail,
les acteurs.
Ensuite établir les principaux diagrammes UML élaborés dans la phase de conception.
1. Spécification des besoins
A. Les acteurs
 Administrateur : C’est la personne principale du système et il gère tous les autres
utilisateurs; comme l'ajout, la modification, la suppression et la consultation.
 Manager : ou Manager de Skill Center c'est la supérieure hiérarchique d'un Skill
center (Microsoft, Java, Front End…), son rôle dans notre application est de lancer
des offres aux partenaires et d'évaluer les candidats,
 Partenaire : C'est une autre entreprise, elle travaille en sous-traitance (Outsourcing),
son rôle dans la application est de proposer des candidats au Manager.
B. Besoins fonctionnels
 L’Administrateur (responsable de recrutement) peut :
 Gérer les utilisateurs (Ajouter, modifier, supprimer, afficher la liste,
rechercher)
 Skill Center Manager peut :
 Créer une offre.
 Suivi une offre.
 Archiver une offre.
 Suivi des propositions.
 Remplir une fiche d'évaluation de l'entretien.
 Notifier les partenaires.
33
 Partenaire peut :
 Gérer les candidats (les freelances).
 Uploader le CV d’un candidat
 Consulter les offres.
 proposer des candidats pour une offre.
 Gérer les responsable partenaires (si admin partenaire).
 Notifier les managers.
C. Besoins non fonctionnels
Ce sont des exigences qui ne concernent pas spécifiquement le comportement du système mais
plutôt identifient des contraintes internes et externes du système.
Les principaux besoins non fonctionnels de notre application se résument dans les points
suivants :
Ergonomie : L’interface de l’application doit être simple et utilisable afin que l’utilisateur
puisse l’exploiter sans se référer à des connaissances particulières, en d’autres termes, notre
application doit être lisible et facile à manipuler par n’importe quel utilisateur.
Scalabilité : l’application doit être capable de répondre à la demande quel que soit la charge au
quelle elle est soumise.
Modularité : Dès le départ, il faut penser à réaliser une application qui soit modulaire ce qui
permettra d’ajouter des modules développés à part et de retrancher d’autre module ce qui
donnera une flexibilité lors du développement.
Maintenabilité : Il nous permettra de résoudre la non-conformité de l’application et à adapter
cette dernière afin qu’elle continue de fonctionner sur des versions plus récentes des logiciels
de base.
En plus de la testabilité et le fonctionnement avec un optimum de temps, l'application doit
garantir les besoins suivants :
Sécurité : La sécurité de l'application s'appuie sur deux notions principales, l’authentification
des utilisateurs et la non répudiation, à savoir que:
 L'authentification repose sur la vérification du couple login/mot de passe de l'utilisateur.
 La non-répudiation assure qu'un utilisateur ne peut pas nier avoir effectué une tâche au
niveau de l'application.
34
Navigabilité : L'application doit disposer tout d'abord d'un menu simple qui peut servir à
l'utilisateur pour mieux interagir avec l'application et visible dans toutes les interfaces de
l'application.
D. Les diagrammes de cas d’utilisation
Les diagrammes de cas d'utilisation sont des diagrammes UML utilisés pour donner une
vision globale du comportement fonctionnel d'un système logiciel.
Ils sont utiles pour des présentations auprès de la direction ou des acteurs d'un projet, mais
pour le développement, les cas d'utilisation sont plus appropriés.
Un cas d'utilisation représente une unité discrète d'interaction entre un utilisateur (humain ou
machine) et un système.
Il est une unité significative de travail. Dans un diagramme de cas d'utilisation, les utilisateurs
sont appelés acteurs (actors), ils interagissent avec les cas d'utilisation (use cases).
 Cas d’utilisation «Administrateur et Manager» :
Le diagramme présenté dans la figure suivante est le diagramme associé aux services qu’offre
notre plateforme au de l’utilisateur interne SQLI (Admin et Manager),
Il s’agit d’une représentation de la collecte des besoins fonctionnels du même cas
d’utilisation:
Figure 15: Cas d'utilisation «Administrateur et Manager»
35
 Description de diagramme :
Titre Cas d'utilisation «Administrateur et Manager»
But
Gestion de :
 Utilisateurs
 Offres
 Propositions
 Notifications
Résumé
L’acteur, après l’authentification, accède à l’interface
administrateur ou manager et choisit l’interface de gestion selon le
besoin
Acteur Administrateur - Manager
Table 2: Description de diagramme de cas d'utilisation «Administrateur et Manager»
 Cas d’utilisation «Partenaire» :
Le diagramme présenté dans la figure suivante est le diagramme associé aux services qu’offre
notre plateforme au partenaire,
Il s’agit d’une représentation de la collecte des besoins fonctionnels du même cas
d’utilisation:
Figure 16: Cas d'utilisation «Partenaire»
36
 Description de diagramme :
Titre Cas d'utilisation «Partenaire»
But
Gestion de :
 freelances
 responsables partenaires
Consulter les offres.
Proposer des freelances.
Résumé
L’acteur, après l’authentification, accède à l’interface de
partenaire et choisit l’interface selon le besoin
Acteur Partenaire
Table 3: Description de diagramme de cas d'utilisation «Partenaire»
E. Diagrammes de séquence
Le diagramme de séquence permet de montrer les interactions d'objets dans le cadre d'un
scénario d'un Diagramme des cas d'utilisation.
Dans un souci de simplification, on représente l'acteur principal à gauche du diagramme, et
les acteurs secondaires éventuels à droite du système.
Le but étant de décrire comment se déroulent les actions entre les acteurs ou objets.
37
 Diagramme de séquence «Authentification» :
Figure 17:Diagramme de séquence Authentification
 Scénario du diagramme de séquence «Authentification» :
Scénario nominal
Action de l’acteur Réactions du système
1. L’utilisateur demande une connexion au
système.
3. L’administrateur saisit son login et son
mot de passe.
5. Le système se connecte et ouvre la
session.
2. Le Système affiche l’interface de
connexion.
4. Le système vérifie si l’utilisateur existe
dans sa base.
Dans le cas où l'utilisateur saisit son login ou mot de passe erroné, le système demande de
les retaper de nouveau.
Table 4: Scénario du diagramme de séquence «Authentification»
38
 Diagramme de séquence «Ajouter utilisateur» :
Figure 18: Diagramme de séquence ajouter utilisateur
 Scénario du diagramme de séquence «Ajouter Utilisateur» :
Scénario nominal
Action de l’acteur Réactions du système
1. L’administrateur demande l’ajout d’un
nouvel utilisateur
3. L’administrateur remplit le formulaire du
nouvel utilisateur et valide l’ajout
2. Le système affiche le formulaire du
nouveau nom de l’utilisateur.
4. Le système vérifie et sauvegarde le
nouveau nom de l’utilisateur.
Dans le cas où l’administrateur entre un nom utilisateur existant, ou les champs vide : Le
système demande de vérifier le nom du nouvel utilisateur.
Figure 19: Scénario du diagramme de séquence «Ajouter Utilisateur»
39
F. Diagramme d'activité
Les diagrammes d'activités permettent de déterminer des traitements a priori séquentiels.
Ils offrent un pouvoir d'expression très proche des langages de programmation objet:
spécification des actions de base (déclaration de variables, affectation etc.), structures de
contrôle (conditionnelles, boucles), ainsi que les instructions particulières à la programmation
orientée objet (appels d'opérations, exceptions etc.).
Ils sont donc bien adaptés à la spécification détaillée des traitements en phase de réalisation.
On peut également utiliser de façon plus informelle pour décrire des enchaînements d'actions
de haut niveau, en particulier pour la description détaillée en cas d'utilisation.
 Diagramme d'activité pour «Manager» :
Figure 20: Diagramme d'activité pour «Manager»
40
 Diagramme d'activité pour «Partenaire» :
Figure 21: Diagramme d'activité pour «Partenaire»
41
 Diagramme d'activité pour «Administrateur» :
Figure 22: Diagramme d'activité pour «Administrateur»
42
G. Dictionnaire des données
Un dictionnaire des données est une collection de métadonnées ou de données de référence
nécessaire à la conception d'une base de données relationnelle.
Il revêt une importance stratégique particulière, car il est le vocabulaire commun de
l'organisation
Nom Type de données Visibilité Classificateur
Id Int Private Candidat
ProfileCode String Private Candidat
FirstName String Private Candidat
LastName String Private Candidat
Poste String Private Candidat
Level String Private Candidat
School String Private Candidat
Disponibility String Private Candidat
UnitDisponibility String Private Candidat
Experience String Private Candidat
ActualJob String Private Candidat
ContractType String Private Candidat
Notes String Private Candidat
Id Int Private Competency
Name String Private Competency
Id Int Private Interview
Rating Double Private Interview
Notes String Private Interview
CreatedOn DateTime Private Interview
LastModification DateTime Private Interview
Id Int Private Notification
Text String Private Notification
CreationDate DateTime Private Notification
43
IdEntity String Private Notification
IsActive Bool Private Notification
Id Int Private NotificationType
Name String Private NotificationType
Id Int Private Offer
Title String Private Offer
Place String Private Offer
Description String Private Offer
Status String Private Offer
Duration Int Private Offer
BackExperience Int Private Offer
FrontExperience Int Private Offer
CreationDate DateTime Private Offer
IsArchived Bool Private Offer
Id Int Private Partner
Email String Private Partner
Name String Private Partner
PhoneNumber String Private Partner
AdressePhysique String Private Partner
ResponsableName String Private Partner
Logo Byte Private Partner
IsActive Bool Private Partner
Id Int Private Proposition
Price Double Private Proposition
Date DateTime Private Proposition
Remark String Private Proposition
IsValide Bool Private Proposition
Id Int Private Role
Name String Private Role
Id Int Private SkillCenter
44
Name String Private SkillCenter
Id Int Private Status
Name String Private Status
Id Int Private Tag
Name String Private Tag
Id Int Private TagType
Name String Private TagType
Id Int Private User
FirstName String Private User
LastName String Private User
Login String Private User
Password String Private User
Email String Private User
PasswordChanged bool? Private User
LastConnection DateTime? Private User
IsActive Bool Private User
Table 5: Dictionnaire de données
H. Diagramme de classe
Le diagramme de classes est un schéma utilisé en génie logiciel pour présenter les classes et
les interfaces des systèmes ainsi que les différentes relations entre celles-ci. Ce diagramme
fait partie de la partie statique d'UML car il fait abstraction des aspects temporels et
dynamiques.
Une classe décrit les responsabilités, le comportement et le type d'un ensemble d'objets.
Les éléments de cet ensemble sont les instances de la classe.
Une classe est un ensemble de fonctions et de données (attributs) qui sont liées ensemble par
un champ sémantique.
Les classes sont utilisées dans la programmation orientée objet. Elles permettent de modéliser
un programme et ainsi de découper une tâche complexe en plusieurs petits travaux simples.
45
Les classes peuvent être liées entre elles grâce au mécanisme d'héritage qui permet de mettre
en évidence des relations de parenté. D'autres relations sont possibles entre des classes,
chacune de ces relations est représentée par un arc spécifique dans le diagramme de classes.
Figure 23: Diagramme de classe
Le diagramme de classes identifie les classes de notre système et les associations entre elles.
Nous avons modélisé comme classes les éléments suivant :
 Partenaire
 Candidat
 Notification
 Type de notification
 Rôle
 Proposition
 Compétence
 Statut
 Offre
 Utilisateur
 Skill Center
 Interview
 Tag
46
 Type de tag
NB : Les classes composées de (ID, NAME) héritent de la classe Reference (ID, NAME)
I. Modèle physique des données (MPD)
Le modèle physique des données (MPD) consiste à implanter une base de données dans
un SGBDR
Le langage utilisé pour ce type d'opération est le SQL. On peut également faire usage d'un
AGL qui permet de générer automatiquement la base de données.
Figure 24: Modèle physique des données
47
2. Architecture applicative
A. Description d’architecture
Après l'achèvement de l'étude fonctionnelle du projet, vient la phase de l'étude technique.
Cette partie décrit les contraintes techniques, définit les Framework et les technologies de
Développement utilises et présente l'architecture logicielle de l'application.
La structuration d'une application permet de présenter cette dernière en des couches logiques:
La couche de présentation, la couche métier et la couche de manipulation de données. Ainsi,
une application structurée en couches est facilement maintenable dans la mesure où un nouvel
intervenant est capable, à partir de la description de l'architecture, de comprendre le rôle de
chaque composant développé et de s'insérer rapidement dans cette logique.
L’architecture du projet se base sur un développement web standard Asp.net MVC
(HTML/CSS), cette technologie offre plusieurs avantages
• Sécurité : Sécurité renforcée dû à l’exécution coté serveur
• Respect des standards Web (Usability standards) : Angular 9 coté présentation.
• Tendance et compétences dans le marché.
Les différentes couches communiquent entres elles selon le modèle suivant :
Couche Présentation (Angular 9)
Web API Service (JWT Token)
Injection de dépendance
Couche métiers
Couche d’accès aux données
Couchecommon
Interfaces,Entites
Base de données
Figure 25: Couches applicative
48
B. Architecture Back-End
Figure 26:Architecture propre ; représentation des couches en oignon
Dans ce diagramme, le flux des dépendances va du cercle extérieur vers le cercle le plus
intérieur. La couche Noyau de l’application tire son nom de sa position au cœur de ce
diagramme. Par ailleurs, comme vous pouvez constater sur le diagramme, la couche Noyau de
l’application n’a aucune dépendance vis-à-vis des autres couches de l’application. Les entités
et les interfaces de l’application se trouvent au centre même du diagramme. Juste après vers
l’extérieur, mais toujours dans la couche Noyau de l’application, viennent les services de
domaine, qui implémentent généralement les interfaces définies dans le cercle central.
À l’extérieur de la couche Noyau de l’application, les couches Interface utilisateur et
Infrastructure dépendent toutes deux de la couche Noyau de l’application, mais elles ne
dépendent pas (nécessairement) l’une de l’autre. [3]
49
Figure 27: Architecture du back-End
 Projet Web : Correspond aux couches qui contiennent le Web, UI and Présenter
concernes.
Dans le contexte de notre API, cela signifie qu'il accepte les entrées sous forme de
requêtes http sur le réseau (par exemple, GET / POST / etc.) Et renvoie sa sortie sous
forme de contenu au format JSON / HTML / XML, etc.
Presenters contiennent des références et des types spécifiques au Framework .NET, ils
vivent donc également ici conformément à la règle de dépendance, nous ne voulons
pas en transmettre.
 Projet Core : Correspond aux couches qui contiennent le cas d'utilisation et
préoccupations de l'entité et c'est aussi là que nos interfaces externes sont définies.
Ces couches internes contiennent nos objets de domaine et nos règles métier.
Le code de cette couche est principalement du C# pur - aucune connexion réseau, base
de données, etc. n'est autorisée.
Les interfaces représentent ces dépendances et leurs implémentations sont injectées
dans nos cas d'utilisation.
 Projet Infrastructure : Correspond aux couches qui contiennent la base de données
and Gateway concerns.
Ici, nous définissons les entités de données, l'accès aux bases de données
(généralement sous la forme de Repositories), les intégrations avec d'autres services
réseau, les caches, etc.
Ce projet / couche contient l'implémentation physique des interfaces définies dans
notre couche domaine.
50
a) Le pattern CQRS
Le pattern CQRS (Command Query Responsibility Segregation) repose sur un principe
simple : la séparation, au sein d’une application, des composants de traitement métier de
l’information (“command” / écriture) et de restitution de l’information (“query” / lecture).
Ce seul principe fournit un cadre d’architecture extrêmement intéressant pour le
développement d’applications, en levant un certain nombre de contraintes et en faisant
apparaître de nouvelles opportunités. [4]
Figure 28: Le pattern CQRS
51
b) Le pattern Médiator
Le patron de conception Médiateur définit un objet (Médiator) qui encapsule la manière dont
un ensemble d'objets interagit. Il permet une communication plusieurs à plusieurs.
Le patron de conception Médiateur fournit une interface unifiée pour un ensemble d'interfaces
d'un sous-système.
Il est utilisé pour réduire les dépendances entre plusieurs classes.
Lorsqu'un logiciel est composé de plusieurs classes, les traitements et les données sont
répartis entre toutes ces classes. Plus il y a de classes, plus le problème de communication
entre celles-ci peut devenir complexe.
En effet, plus les classes dépendent des méthodes des autres classes plus l'architecture devient
complexe. Cela ayant des impacts sur la lisibilité du code et sa maintenabilité dans le temps.
Le modèle de conception Médiateur résout ce problème. Pour ce faire, le Médiateur est la
seule classe ayant connaissance des interfaces des autres classes. Lorsqu'une classe désire
interagir avec une autre, elle doit passer par le médiateur qui se chargera de transmettre
l'information à la ou les classes concernées
Figure 29: Le pattern Médiator
52
 Le package MediatR :
Dans l'environnement .Net, vous pouvez utiliser le médiateur avec l'installation du package
MediatR avec packages NuGet, c'est une implémentation simple et légère du patron de
conception médiateur qui permet de réduire au maximum le couplage et donc les dépendances
entre vos différentes classes et modules (ce qui aide à éviter le code spaghetti).
c) Mapping (DTO, Model)
AutoMapper est un mappeur objet-objet, qui vous permet de résoudre les problèmes de
mapping de mêmes propriétés dans un objet d'un type à un autre objet d'un autre type.
Vous pouvez faire le mapping entre les classe POCO et DTO avec l'installation du package
AutoMapper dans packages NuGet
Par exemple, le mappage d'un objet entité Employe lourde au EmployeDTO pourrait être
fait avec AutoMapper automatiquement.
Figure 30: Exemple de mapping
53
C. Architecture Front-End
a) Le pattern NGXS
NGXS est un State Management Pattern et Library pour Angular.
Il agit comme une source unique de vérité pour l'état de votre application, fournissant des
règles simples pour des mutations d'état prévisibles.
NGXS est modélisé d'après le modèle CQRS couramment implémenté dans des bibliothèques
comme Redux et NgRx, mais réduit le passe-partout en utilisant des fonctionnalités
TypeScript modernes telles que les classes et les décorateurs.
NGXS est un state management Framework qui implémente le modèle de conception CQRS,
tout comme Redux [5].
Figure 31: L'architecture de NGXS
54
b) Le pattern Façade
Le patron de conception (ou design pattern) façade a pour but de cacher une conception et une
interface complexe difficile à comprendre.
Une façade peut être utilisée pour :
 rendre une bibliothèque plus facile à utiliser, comprendre et tester;
 rendre une bibliothèque plus lisible;
 réduire les dépendances entre les clients de la bibliothèque et le fonctionnement
interne de celle-ci, ainsi on gagne en flexibilité pour les évolutions futures du système;
 assainir une API que l'on ne peut pas modifier si celle-ci est mal conçue, ou mieux
découper ses fonctionnalités si celle-ci n'est pas assez claire
Figure 32: Le pattern Façade
55
D. Sécuriser l’API REST
REST (pour REpresentational State Transfer) est un style d’architecture basé sur le protocole
HTTP et qui permet de manipuler des ressources via un URI. Pour manipuler ces ressources,
une API REST utilise les méthodes HTTP suivantes :
 GET : Récupération d’une ressource;
 POST : Ajout d’une ressource;
 PUT : Mise à jour partielle d’une ressource;
 DELETE : Suppression d’une ressource;
 HEAD : Similaire à GET, mais permet uniquement de récupérer les en-têtes HTTP.
Comment sécuriser les échanges entre le client et serveur :
 Utilisation de HTTPS : la première étape de la sécurisation d’une API REST est
l’utilisation du protocole HTTPS. Cela permettra de chiffrer les données transmises et
reçues empêchant ainsi leur lecture.
 Authentification : Le mécanisme authentification des échanges entre le client et l’API
REST, une API REST est sans état (stateless) c’est-à-dire qu’il n’y a pas de session
côté serveur pour l’authentification de l’utilisateur. De ce fait, chaque requête doit
contenir les informations nécessaires à l’authentification.
JWT : JSON Web Token est un standard ouvert décrit dans la RFC 7519 qui permet
l’authentification d’un utilisateur à l’aide d’un jeton (token) signé. Le principe est le suivant :
 Lors du premier échange, le client envoie son couple login/mot de passe au serveur;
 Si le couple est valide, le serveur génère un token et l’envoie au client. Ce token
permettra d’authentifier l’utilisateur lors des prochains échanges;
 Le client stocke ensuite le token en local;
 Le token est renvoyé, par le client, pour chaque appel à l’API (via l’en-tête HTTP «
Authorization ») permettant ainsi d’authentifier l’utilisateur.
56
Figure 33: Utilisation du JWT
 Header : La première partie du JWT est le header. Il s’agit d’un objet JSON encodé
en base64 qui représente l’en-tête du token. Il est composé de deux parties :
 Le type du token;
 L’algorithme utilisé pour la signature.
 Payload : La seconde partie du JWT est le payload. Il s’agit tout comme le header,
d’un objet JSON encodé en base64 qui représente cette fois-ci le corps du token. C’est
dans cette partie que l’on mettra les informations de l’utilisateur (identifiant, rôle, etc.)
 Propriétés réservées : Il s’agit de noms réservés définis par la spécification.
 Propriétés publiques : Il s’agit de noms normalisés tels que “email”, “name”,
“locale”, etc. La liste complète est disponible à cette adresse;
 Propriétés privées : Il s’agit de propriétés que vous définissez vous même pour
répondre aux besoins de votre application.
57
 Signature : La dernière partie est la signature du token. Il s’agit d’un hash des deux
premières parties du token réalisé en utilisant l’algorithme qui est précisé dans le
header. Dans notre exemple de token ci-dessus, l’algorithme utilisé est HS256
(HMAC-SHA-256).
Conclusion
Ce chapitre était une étude technique et conceptuelle détaillée, qui a exposé la modélisation
du projet, l'analyse et spécifications fonctionnelles a permis d'avoir une idée à la fois globale
et détaillée sur le projet a mené pendant la période du stage.
Le chapitre suivant présentera nos réalisations.
58
Chapitre 4 : Réalisation
Introduction
Dans le chapitre qui suit, nous allons présenter l’environnement de travail, les interfaces
utilisateurs de l’application ainsi que les tests d’évaluation du produit final.
1. Outils de travail
Figure 34: Power Designer
Afin de modéliser notre travail en langage UML, nous avons utilisé un logiciel complet de
modélisation intitulé Power AMC dans sa version 15.1. C’est un outil tout-en-un de
modélisation d’entreprise et de gestion de métadonnées destiné à documenter l’architecture
d’entreprise
59
Figure 35: SQL SERVER 2017
Nous avons utilisé SQL SERVER dans sa version 14.0.X comme système de gestion de base
de données relationnel (SGBDR) SQL SERVER peut stocker plus de types de données que
les types traditionnels : entiers, caractères...
Figure 36: VISUAL STUDIO 2019
Microsoft Visual Studio est une suite de logiciels de développement pour Windows et mac
OS conçue par Microsoft. La dernière version s'appelle Visual Studio 2017.
Visual Studio est un ensemble complet d'outils de développement permettant de générer des
applications web ASP.NET, des services web XML, des applications bureautiques et des
applications mobiles. Visual Basic, Visual C++, Visual C# utilisent tous le même
environnement de développement intégré (IDE), qui leur permet de partager des outils et
facilite la création de solutions faisant appel à plusieurs langages. Par ailleurs, ces langages
permettent de mieux tirer parti des fonctionnalités du Framework .NET, qui fournit un accès à
60
des technologies clés simplifiant le développement d'applications web ASP et de services web
XML grâce à Visual Web Développer.
Figure 37: Visual Studio Code
Visual Studio Code est présenté lors de la conférence des développeurs Build d'avril
2015 comme un éditeur de code multiplateforme, open source et gratuit, supportant une
dizaine de langages3.
Il est basé sur Electron, une structure utilisée pour déployer des applications Node.js pour le
bureau exécuté sur le moteur Blink. Bien qu'il utilise le Framework Electron, le logiciel
n'utilise pas Atom mais utilise le même composant éditeur (nommé "Monaco") utilisé dans
Azure DevOps (anciennement appelé Visual Studio Online et Visual Studio Team Services).
Figure 38: GitLab
GitLab est un logiciel libre de forge basé sur git proposant les fonctionnalités de wiki,
un système de suivi des bugs, l’intégration continue et la livraison continue
GitLab SQLI ISC Maroc est un dépôt des codes source des projets SQLI ISC Maroc.
61
Figure 39: Azure App service
Azure App Service est un service d’hébergement web complètement managé permettant de
créer des applications web, des back-ends mobiles et des API RESTful. Des sites web de
petite taille aux applications web à l’échelle mondiale.
2. Technologies utilisées
Figure 40: Framework .Net Core
.NET Core (prononcé « dot net ») est un cadriciel (Framework) Libre et Open Source pour
les systèmes d'exploitation Windows, macOS et Linux8. Il comprend CoreCLR, un
environnement d'exécution complet de CLR, la machine virtuelle qui gère l'exécution des
programmes .NET.
62
ASP.NET Core est un Framework Web gratuit et open-source, développé par Microsoft et la
communauté. Il est plus performant qu'ASP.NET. C'est un Framework modulaire qui
fonctionne à la fois avec le Framework .NET, sous Windows et .NET
Core en multiplateforme.
Entity Framework (EF Core) est le mapping objet-relationnel utilisé par la technologie
Microsoft .NET. Il est écrit en langage C#.
Language Integrated Query (LINQ) (Requête intégrée au langage, aussi connu sous le nom
de LINQ) est un composant du Framework .NET de Microsoft qui ajoute des capacités
d'interrogation sur des données aux langages .NET en utilisant une syntaxe proche de celle de
SQL.
Le Transact-SQL (T-SQL) est une extension propriétaire de Sybase et Microsoft au langage
SQL. Transact-SQL a été développé à l'origine par la société Sybase, dès les premières
versions de son moteur de base de données du même nom. De manière similaire au PL/SQL
d'Oracle, Transact-SQL fournissait le moyen d'étendre les fonctionnalités de base du SGBD,
via des programmes appelés "procédures stockées".
Figure 41: La bibliothèque SignalR
SignalR est une bibliothèque de logiciels libres et open-source pour Microsoft ASP.NET qui
permet au code serveur d'envoyer des notifications asynchrones aux applications Web côté
client. La bibliothèque comprend des composants JavaScript côté serveur et côté client.
63
Figure 42: Email SendGrid Azure
SendGrid est un service de messagerie dans le cloud qui fournit des fonctionnalités fiables en
matière de remise de courrier électronique transactionnelle, d'extensibilité et d'analyse en
temps réel, ainsi que des API flexibles qui facilitent l'intégration personnalisée. Voici
quelques cas d’utilisation courants de SendGrid :
 Envoi automatique de reçus ou de confirmations d’achat aux clients
 Gestion de listes de distribution pour l’envoi mensuel de brochures et de promotions
aux clients
 Collecte de mesures en temps réel, notamment en ce qui concerne les e-mails bloqués
et l’engagement des clients
 Transfert des demandes de renseignements des clients.
 Traitement des messages électroniques entrants.
Figure 43: Angular 9
64
Angular est un Framework open source écrit en JavaScript qui permet la création
d’applications Web et plus particulièrement de ce qu’on appelle des « Single Page
Applications » : des applications web accessibles via une page web unique qui permet de
fluidifier l’expérience utilisateur et d’éviter les chargements de pages à chaque nouvelle
action.
Le Framework s'appuie sur TypeScript, une surcouche au JavaScript développé par
Microsoft, qui est un langage typé qui permet de créer des classes, des variables et des
signatures de fonction.
Figure 44: Material Design
Material Design est à la base un langage de design lancé par Google lors de sa
conférence Google I/O le 24 Juin 2014. Visant principalement l'interface utilisateur des
applications mobiles et web, ce langage apporte plusieurs nouveautés graphiques en termes
d'animations, d'effets d'ombres et lumières, de transitions et de mises en page.
L'implémentation du Material Design pour les interfaces utilisateur d'applications web est
appelée Polymer Paper éléments. Il existe à travers la librairie Polymer qui fournit une API de
composants web aux navigateurs qui n'implémentent pas nativement le standard ainsi que par
une collection d'éléments appelée Paper éléments collection.
65
3. Déploiement sur Microsoft Azure (Saas)
Azure App Service est un service pour l’hébergement d’applications web, d’API REST et de
backends mobiles. Vous pouvez développer dans votre langage préféré, par exemple .NET,
.NET Core, Java, Ruby, Node.js, PHP ou Python. Les applications s’exécutent et sont mises à
l’échelle facilement dans les environnements Windows et Linux.
App Service ajoute la puissance de Microsoft Azure à votre application, notamment la
sécurité, l’équilibrage de charge, la mise à l’échelle automatique et la gestion automatisée.
Vous pouvez également bénéficier de ses fonctionnalités DevOps, notamment le déploiement
continu à partir de Azure DevOps, GitHub, Docker Hub et d’autres sources, la gestion des
packages, les environnements intermédiaires et les certificats SSL.
Avec App Service, vous payez pour les ressources de calcul Azure que vous utilisez. Les
ressources de calcul que vous utilisez sont déterminées par le plan App Service sur lequel
vous exécutez vos applications.
En plus d’App Service, Azure offre d’autres services qui peuvent être utilisés pour
l’hébergement de sites et d’applications web. Pour la plupart des scénarios,
App Service est le meilleur choix. Pour l’architecture .net et même pour les applications
Angular, et la raison pour laquelle on a choisir de déployer notre application via le Platform
Azure. [6]
L’image ci-dessus montre un processus de dépoilement d’une application back end.
Figure 45: Le processus de déploiement d'une application BACKEND
66
4. Description de l’application
A. Authentification
La première interface qui apparait est celle de l’authentification :
Figure 46: Page d’authentification
Lors de sa première authentification, l’utilisateur saisie le nom d’utilisateur et le mot de passe
donné par défaut lors de la création de son compte par l’admin.
Puis il doit obligatoirement changer le mot de passer pour garder sa confidentialité
Figure 47: changement de mot de passe lors de la première authentification
67
Lorsque l’utilisateur change son mot de passe, il reçoit un message dans sa boite mail
indiquant les informations de login qu’il peut utiliser par la suite.
Figure 48: CONFIRMATION DE CHANGEMENT DE MOT DE PASSE PAR MAIL
Si l’utilisateur a oublié son mot de passe, il peut le réinitialiser en cliquant sur le lien (Mot de
passe oublié ?) qui apparait dans la page d’authentification et qui affiche une boite de
dialogue dans laquelle il doit réécrire son mail.
Figure 49: REINITIALISER LE MOT DE PASSE – 1ERE ETAPE
68
Lorsque l’utilisateur vérifie sa boite mail, il trouve le message suivant :
Ce lien le revoie vers la page suivante dans laquelle il peut saisir le nouveau mot de passe.
Figure 51: réinitialiser le mot de passe – 3ème étape
Après cette étape d’authentification, l’utilisateur peut accéder à son propre espace selon son
rôle.
B. Espace Admin :
Comme indiqué précédemment l’admin est l’acteur responsable de :
 La gestion des comptes des autres admins, Skill center managers et partenaires.
 La gestion des skill centers disponible au sein de SQLI.
Figure 50: réinitialiser le mot de passe – 2ème étape
69
 La gestion des technologies et de leurs types.
La première interface qui apparait après l’authentification de l’admin est le Dashboard. Elle
contient des statistiques concernant le nombre total de toutes les offres créées par tous les skill
center managers ainsi que le nombre total de tous les partenaires ayant un compte au sein de
l’application.
Figure 52: Dashboard - Espace Admin
 Gestion des utilisateurs :
L’interface ci-dessous permet de lister toutes les informations des utilisateurs (Admin, Skill
center manager) crées par cet admin ainsi que celles du responsable partenaire crée.
Figure 53: La liste des utilisateurs
Par le partenaire (le partenaire est aussi créé par l’Admin dans la section « partners ») et
l’admin partenaire qui se crée par défaut lors de la création du partenaire avec la possibilité de
rechercher selon un ou tous les critères.
70
Par exemple, si on choisit dans la liste déroulante des rôles : « Skill Center Manager », la liste
affichera seulement les utilisateurs ayant ce rôle.
Figure 54: La recherche des utilisateurs par rôle
De même, si on choisit dans la liste déroulante des partenaires : « partner2 » la liste affichera
les informations de son compte principal et ses responsables partenaires.
Figure 55: La recherche des utilisateurs par partenaire
Cette interface contient aussi une option permettant de activer/désactiver le compte d’un
utilisateur (admin et skill center manager et non pas le partenaire). Si le compte est désactivé,
l’utilisateur ne pourra plus accéder à l’application jusqu’à réactivation.
71
L’admin peut aussi ajouter un admin ou un skill center manager via le bouton ajouter qui se
trouve dans la même interface. Le clic sur ce bouton affiche le formulaire suivant :
Figure 56: Formulaire d'ajout d'un utilisateur par l'admin
Pour l’ajout d’un admin on choisit le rôle Admin et on saisit tous les champs obligatoirement:
Figure 57: Formulaire d'ajout d'un admin
Pour l’ajout d’un skill center manager, après le choix du rôle « skill center manager » une
nouvelle liste déroulante s’affiche contenant tous les skill centers (ajoutés par l’admin dans la
section skill centers).
72
Figure 58: Formulaire d'ajout d'un skill center manager
Le clic sur le bouton modifier qui se trouver dans la grille (n’existe pas pour les responsables
partenaires et les admins partenaires) ouvre la même fenêtre avec les champs déjà remplis par
les informations de l’utilisateur à modifier
Figure 59: Modifier un utilisateur
73
 Gestion des partenaires :
L’interface ci-dessous permet de lister toutes les informations des partenaires crées par cet
admin avec la possibilité de rechercher selon un ou tous les critères.
Figure 60: Liste des partenaires
Même interface contient l’option de désactivation/activation des partenaires. La désactivation
d’un partenaire désactive tous les comptes associés et l’activation active seulement le compte
principal comme illustré dans les figures suivantes.
Figure 61: Désactiver un partenaire
En revenant à l’interface des utilisateurs, on remarque que les comptes (respoPartner1 et
AdminRespoPartner1) associé au partner1 qu’on a désactivé sont aussi désactivés.
74
Figure 62: Désactiver tous les comptes associés au partenaire
Cette interface permet aussi d’ajouter un partenaire : créer son compte principal.
Figure 63: Formulaire de modification d'un partenaire
75
 Gestion des Skills Centers :
La gestion des skill centers est l’opération visant à lister, afficher, modifier et supprimer un
skill center.
L’interface suivante affiche les noms de tous les skill centers déjà crées par cet admin.
Figure 64: Liste des skill centers
 Gestion des types de technologies :
Lors de la création d’une offre par un Skill center Manager, il doit déterminer le type de profil
ou de technologies auxquels l’offre est destinée.
Donc on doit gérer ces types dans l’espace admin.
La figure ci-dessous montre la liste des types de technologies déjà crées par cet admin.
Figure 65: Liste des types de technologies
 Gestion des technologies :
Les des types de technologies vus précédemment ont permis de créer des technologies ayant
l’un de ces types.
76
Voici un exemple de la liste de ces technologies.
Figure 66: Liste des technologies
C. Espace Manager :
La première interface qui apparait après l’authentification de Manager est le Dashboard.
Elle contient des statistiques concernant le nombre total de toutes les offres créées par skill
center manager avec une liste contient les dernières offres
Figure 67: Dashboard - Espace Manager
 Gestion des offres :
L’interface ci-dessous permet de lister toutes les offres crées par ce Manager
77
Figure 68: La liste des offres
L’interface ajouter une Offre :
Figure 69: Formulaire d'ajout d'une offre
78
L’interface des compétences :
Figure 70: La liste des compétences
L’interface des propositions qui permet de lister tous les candidats d'une offre, ces
propositions ont été proposées par les partenaires
Figure 71: Liste des propositions d’une offre
79
Le manager peut également consulter les informations du candidat avec son CV ou le
télécharger
Figure 72: les informations d'un candidat
L’interface de suivi une offre:
Pour suivre le processus de recrutement, le manage à un tableau de bord Kanban
Il se compose de 5 étapes :
 Proposée
 Pré-entretien
 Entretien
 Recruté
 Rejeté
Pour passer d'une étape à l'autre, il suffit de glisser-déposer (Drag and Drop).
80
Figure 73de : Le tableau de board Kanban pour le recrutment
En phase « Recrute », le manager remplira la Fiche d'entretien :
Figure 74: Fiche d'entretien d'un candidat
A l'expiration de l'offre, le manager l'archive :
Figure 75: Archiver une offre
81
Lorsque le partenaire fait une proposition de candidature, le gestionnaire est informé en même
temps (synchrone)
Figure 76: Notification de nouvelle proposition
D. Espace Partenaire :
 Gestion des propositions :
La première interface qui apparait après l’authentification de Partenaire est le Dashboard
Elle contient des statistiques concernant le nombre total de toutes les offres qu'il a le droit de
consulter et le nombre total des candidats avec une liste contient les dernières offres et
nombre des propositions dans chaque offre.
Figure 77: Dashboard - Espace Partenaire
82
L'interface ci-dessous permet de lister toutes les offres qu'il a le droit de consulter et deux
actions; Proposer pour faire une proposition et Détails pour afficher les détails d'une offre
Figure 78: Liste des offres pour partenaire
Si vous cliquez sur "Proposer", une Pop-Up s'affiche, et vous pouvez proposer le candidat et
ajouter le prix de son travail
Sauvegarder pour enregistrer la proposition uniquement, et Envoyer pour envoyer la
proposition au Manager
Figure 79: Proposer un candidat.
83
L'interface ci-dessous vous permet de lister toutes les propositions liées à une offre, avec la
possibilité de modifier le prix, afficher le candidat, supprimer ou envoyer la proposition.
Figure 80: Détails d'une proposition d’offre
 Gestion des candidats :
L'interface ci-dessous permet de lister toutes les candidats crées par ce partenaire
Cette interface vous permet également de télécharger le CV
Figure 81: Liste des candidats
84
Conclusion
Dans ce chapitre, nous avons présenté certaines des interfaces d'application que nous avons
développées et nous avons montré le déploiement de notre d'application dans Microsoft
Azure, et nous avons également parlé des outils et technologies utilisés dans le
développement.
85
Conclusion générale
Notre projet de fin d’étude effectuée au sien de SQLI ISC RABAT, nous a permet de toucher
le métier d’ingénieurs informaticiens, toute en participant à la réalisation technique des projets
qualifiés .Net.
En effet notre sujet de projet de fin d’étude consiste à la conception et la réalisation d’une
plateforme Web de mise en relation des porteurs dédié aux évaluateurs techniques, Rh et
managers afin de garantir un déroulement automatisé du processus de recrutement des
collaborateurs freelances.
Dès le démarrage de ce projet on a opté pour le mode agile, dans nous avons eu l’opportunité
de voir ainsi bien assimiler les rubriques élémentaires de la méthode de conduite SCRUM, du
coup dans chaque sprint mise en œuvre on a définir les besoins et les spécifications
fonctionnelles de notre application, suivi d’une conception détaillée puis l’arrivé de la phase
du développement et du déploiement pour entamer le « Sprint Review » et c’est comme ça
qu’on a procéder pour achever notre solution.
Par ailleurs, ce projet nous était une occasion intéressante pour raffiner nos capacités
d'abstraction et de conception.
En outre, ce projet nous a permis d'approfondir nos connaissances techniques et d'acquérir un
esprit rigoureux d'analyse permettant d'apporter des solutions convenables aux problèmes
rencontrées, ainsi que d’acquérir de nouvelles connaissances et de renforcer nos compétences
concernant le développement .NET
Le stage s’est déroulé sans souci majeur, la seule difficulté était le stress du télétravail en
raison de l'épidémie de Covid-19 avec la livraison de l’application sans dépasser le délai.
Et autant que débutants dans le domaine professionnel, on s’est trouvé au début face à des
petits problèmes de gestion de temps et de nouvelles connaissances. Et grâce à notre
encadrant et collaborateurs SQLI, on a pu surmonter ces difficultés, livrer le projet à temps et
satisfaire le client.
Enfin, ce stage fut une expérience très enrichissante pour nous sur les deux plans personnels
et professionnels. En effet, il a été l’occasion de découvrir le dynamisme et l’enthousiasme
qui caractérisent l’équipe de Microsoft de SQLI Rabat.
86
Bibliographie
[1] : https://www.sqli.com/Accueil/Groupe
[2] : La méthode Agile - Optimisation de la relation "client / fournisseur" « Chronique de
Gael Cadoret INGIN »
[3] : https://docs.microsoft.com/fr-fr/dotnet/architecture/modern-web-apps-azure/common-
web-application-architectures
[4] : https://blog.octo.com/cqrs-larchitecture-aux-deux-visages-partie-1/
[5] : https://www.ngxs.io/
[6] : https://docs.microsoft.com/fr-fr/azure/app-service/overview
Autres sources (Définitions) : https://fr.wikipedia.org
87
Annexes
E-challenge : une compétition organisée chaque année par le groupe SQLI, afin de choisir les
étudiants qui vont faire un stage PFE.
 Les Maquettes :
Figure 82: Maquette pour l’Authentification
Figure 83: Maquette pour la liste des offres
88
Figure 84: Maquette pour ajouter une offre
Figure 85: Maquette pour suivre les offres
89
Figure 86: Maquette pour la liste des propositions
Figure 87: Maquette pour envoyer les propositions
90
Figure 88: Maquette pour l'ajout d'un candidat

Contenu connexe

Tendances

Rapport PFE Ilef Ben Slima
Rapport PFE Ilef Ben SlimaRapport PFE Ilef Ben Slima
Rapport PFE Ilef Ben Slima
Ilef Ben Slima
 
rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSAT
Siwar GUEMRI
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Yasmine Lachheb
 
Rapport pfe-ayoub mkharbach
Rapport pfe-ayoub mkharbachRapport pfe-ayoub mkharbach
Rapport pfe-ayoub mkharbach
Ayoub Mkharbach
 
Rapport de PFE
Rapport de PFERapport de PFE
Rapport de PFE
Ghizlane ALOZADE
 
Fourth year internship report
Fourth year internship reportFourth year internship report
Fourth year internship report
Slimane Akaliâ , سليمان أقليع
 
Rapport de stage Application web Gestion RH ASP.NET MVC5
Rapport de stage Application web Gestion RH ASP.NET MVC5Rapport de stage Application web Gestion RH ASP.NET MVC5
Rapport de stage Application web Gestion RH ASP.NET MVC5
YounessLaaouane
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Raoua Bennasr
 
Gestion des Chercheurs d’Emploi
Gestion des Chercheurs d’EmploiGestion des Chercheurs d’Emploi
Gestion des Chercheurs d’Emploi
Azzeddine Elouadi
 
Rapportpfe
RapportpfeRapportpfe
Rapportpfe
BILEL TLILI
 
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Projet de fin étude  ( LFIG : Conception et Développement d'une application W...Projet de fin étude  ( LFIG : Conception et Développement d'une application W...
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Ramzi Noumairi
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Sofien Benrhouma
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Ayed CHOKRI
 
Application web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment systemApplication web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment system
Sarra ERRREGUI
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Ghodbane Heni
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
Nazih Heni
 
Rapport PFE
Rapport PFERapport PFE
Rapport PFE
IbtissemSlimeni
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatique
Hicham Ben
 
Outpatient Department System (OPD)
Outpatient Department System (OPD) Outpatient Department System (OPD)
Outpatient Department System (OPD)
Ben Ahmed Zohra
 
Rapport stage
Rapport stageRapport stage
Rapport stage
abir hadjkacem
 

Tendances (20)

Rapport PFE Ilef Ben Slima
Rapport PFE Ilef Ben SlimaRapport PFE Ilef Ben Slima
Rapport PFE Ilef Ben Slima
 
rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSAT
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
 
Rapport pfe-ayoub mkharbach
Rapport pfe-ayoub mkharbachRapport pfe-ayoub mkharbach
Rapport pfe-ayoub mkharbach
 
Rapport de PFE
Rapport de PFERapport de PFE
Rapport de PFE
 
Fourth year internship report
Fourth year internship reportFourth year internship report
Fourth year internship report
 
Rapport de stage Application web Gestion RH ASP.NET MVC5
Rapport de stage Application web Gestion RH ASP.NET MVC5Rapport de stage Application web Gestion RH ASP.NET MVC5
Rapport de stage Application web Gestion RH ASP.NET MVC5
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Gestion des Chercheurs d’Emploi
Gestion des Chercheurs d’EmploiGestion des Chercheurs d’Emploi
Gestion des Chercheurs d’Emploi
 
Rapportpfe
RapportpfeRapportpfe
Rapportpfe
 
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Projet de fin étude  ( LFIG : Conception et Développement d'une application W...Projet de fin étude  ( LFIG : Conception et Développement d'une application W...
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats
 
Application web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment systemApplication web de gestion de recrutement- Recruitement managment system
Application web de gestion de recrutement- Recruitement managment system
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Rapport PFE
Rapport PFERapport PFE
Rapport PFE
 
Rapport Projet de fin d'etude sur le parc informatique
Rapport Projet  de fin d'etude sur le parc informatiqueRapport Projet  de fin d'etude sur le parc informatique
Rapport Projet de fin d'etude sur le parc informatique
 
Outpatient Department System (OPD)
Outpatient Department System (OPD) Outpatient Department System (OPD)
Outpatient Department System (OPD)
 
Rapport stage
Rapport stageRapport stage
Rapport stage
 

Similaire à Rapport PFE ISMAGI SQLI Microsoft

PFE::Conception et développement du Back Office d'une application mobile de g...
PFE::Conception et développement du Back Office d'une application mobile de g...PFE::Conception et développement du Back Office d'une application mobile de g...
PFE::Conception et développement du Back Office d'une application mobile de g...
Rami Raddaoui
 
OURIREM-SALAH.pdf
OURIREM-SALAH.pdfOURIREM-SALAH.pdf
OURIREM-SALAH.pdf
Ghezza
 
Migration gmao de openerp 6.1 vers odoo 8
Migration gmao de openerp 6.1 vers odoo 8Migration gmao de openerp 6.1 vers odoo 8
Migration gmao de openerp 6.1 vers odoo 8
HORIYASOFT
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Mohamed Cherkaoui
 
Rapport de pfe format doc 2013
Rapport de pfe format doc 2013Rapport de pfe format doc 2013
Rapport de pfe format doc 2013
Addi Ait-Mlouk
 
cours edi
cours  edicours  edi
cours edi
Ayoub Elotmani
 
Rapport PFE2021.pdf
Rapport PFE2021.pdfRapport PFE2021.pdf
Rapport PFE2021.pdf
CoulibalyYoussoufngo
 
Recommandations organismes de formation métiers internet
Recommandations organismes de formation métiers internet Recommandations organismes de formation métiers internet
458008733-Rapport-de-projet-de-fin-d-etudes.pdf
458008733-Rapport-de-projet-de-fin-d-etudes.pdf458008733-Rapport-de-projet-de-fin-d-etudes.pdf
458008733-Rapport-de-projet-de-fin-d-etudes.pdf
soyedmohamed
 
Rapport PFE: PIM (Product Information Management) - A graduation project repo...
Rapport PFE: PIM (Product Information Management) - A graduation project repo...Rapport PFE: PIM (Product Information Management) - A graduation project repo...
Rapport PFE: PIM (Product Information Management) - A graduation project repo...
younes elmorabit
 
Rapport de stage boite à idées innovantes avec dashboard
Rapport de stage boite à idées innovantes avec dashboardRapport de stage boite à idées innovantes avec dashboard
Rapport de stage boite à idées innovantes avec dashboard
Siwar GUEMRI
 
Rapport-PfA-ACHKAOU-SARA.pdf
Rapport-PfA-ACHKAOU-SARA.pdfRapport-PfA-ACHKAOU-SARA.pdf
Rapport-PfA-ACHKAOU-SARA.pdf
saraachkaou
 
salwfrarapp137.pdf
salwfrarapp137.pdfsalwfrarapp137.pdf
salwfrarapp137.pdf
SASarah3
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
ayoub daoudi
 
Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...
Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...
Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...
tayebbousfiha1
 
Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8
Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8
Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8
Fouad ELOUAD
 
Catalogue de stage
Catalogue de stageCatalogue de stage
Catalogue de stage
mzoughi Anis
 
Business Intelligence system
Business Intelligence system Business Intelligence system
Business Intelligence system
Basma Saad
 
Rapport mini-projet Gestion Commerciale D’un Supermarché
Rapport mini-projet  Gestion Commerciale D’un SupermarchéRapport mini-projet  Gestion Commerciale D’un Supermarché
Rapport mini-projet Gestion Commerciale D’un Supermarché
Mouad Lousimi
 

Similaire à Rapport PFE ISMAGI SQLI Microsoft (20)

rapport
rapportrapport
rapport
 
PFE::Conception et développement du Back Office d'une application mobile de g...
PFE::Conception et développement du Back Office d'une application mobile de g...PFE::Conception et développement du Back Office d'une application mobile de g...
PFE::Conception et développement du Back Office d'une application mobile de g...
 
OURIREM-SALAH.pdf
OURIREM-SALAH.pdfOURIREM-SALAH.pdf
OURIREM-SALAH.pdf
 
Migration gmao de openerp 6.1 vers odoo 8
Migration gmao de openerp 6.1 vers odoo 8Migration gmao de openerp 6.1 vers odoo 8
Migration gmao de openerp 6.1 vers odoo 8
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
 
Rapport de pfe format doc 2013
Rapport de pfe format doc 2013Rapport de pfe format doc 2013
Rapport de pfe format doc 2013
 
cours edi
cours  edicours  edi
cours edi
 
Rapport PFE2021.pdf
Rapport PFE2021.pdfRapport PFE2021.pdf
Rapport PFE2021.pdf
 
Recommandations organismes de formation métiers internet
Recommandations organismes de formation métiers internet Recommandations organismes de formation métiers internet
Recommandations organismes de formation métiers internet
 
458008733-Rapport-de-projet-de-fin-d-etudes.pdf
458008733-Rapport-de-projet-de-fin-d-etudes.pdf458008733-Rapport-de-projet-de-fin-d-etudes.pdf
458008733-Rapport-de-projet-de-fin-d-etudes.pdf
 
Rapport PFE: PIM (Product Information Management) - A graduation project repo...
Rapport PFE: PIM (Product Information Management) - A graduation project repo...Rapport PFE: PIM (Product Information Management) - A graduation project repo...
Rapport PFE: PIM (Product Information Management) - A graduation project repo...
 
Rapport de stage boite à idées innovantes avec dashboard
Rapport de stage boite à idées innovantes avec dashboardRapport de stage boite à idées innovantes avec dashboard
Rapport de stage boite à idées innovantes avec dashboard
 
Rapport-PfA-ACHKAOU-SARA.pdf
Rapport-PfA-ACHKAOU-SARA.pdfRapport-PfA-ACHKAOU-SARA.pdf
Rapport-PfA-ACHKAOU-SARA.pdf
 
salwfrarapp137.pdf
salwfrarapp137.pdfsalwfrarapp137.pdf
salwfrarapp137.pdf
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
 
Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...
Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...
Rapport de Stage PFE - Développement d'un Projet ALTEN MAROC Concernant le Sy...
 
Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8
Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8
Migration des données et portage du module GMAO de OpenERP 6.1 vers Odoo 8
 
Catalogue de stage
Catalogue de stageCatalogue de stage
Catalogue de stage
 
Business Intelligence system
Business Intelligence system Business Intelligence system
Business Intelligence system
 
Rapport mini-projet Gestion Commerciale D’un Supermarché
Rapport mini-projet  Gestion Commerciale D’un SupermarchéRapport mini-projet  Gestion Commerciale D’un Supermarché
Rapport mini-projet Gestion Commerciale D’un Supermarché
 

Dernier

cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
afigloria194
 
Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024
idelewebmestre
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
Institut de l'Elevage - Idele
 
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
iheberry
 
Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
Institut de l'Elevage - Idele
 
Theorie du trafic on telecommunication network
Theorie du trafic on telecommunication networkTheorie du trafic on telecommunication network
Theorie du trafic on telecommunication network
MahamaneAliSalatou
 
Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
Institut de l'Elevage - Idele
 

Dernier (7)

cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
 
Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
 
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
 
Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
 
Theorie du trafic on telecommunication network
Theorie du trafic on telecommunication networkTheorie du trafic on telecommunication network
Theorie du trafic on telecommunication network
 
Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
 

Rapport PFE ISMAGI SQLI Microsoft

  • 1. Institut Supérieur de Management, Administration et de Génie Informatique Mémoire de fin d’études Bac+5 en Ingénierie Informatique Conception et développement d’une Plateforme de mise en relation des porteurs Présenté par : Oussama BAHLOULI Encadré par : Pr. Hassane BAKHOUS (ISMAGI) M. Mustapha LARHROUCH (SQLI RABAT) Composition du Jury: -…………………………………………………………………………………...Président - …………………………………………………………………………………..Examinateur -………………………………………………………………………………….. Examinateur Année universitaire 2019-2020
  • 2. 2
  • 3. 3 Dédicaces A ma chère mère, A mon cher père, Qui n'ont jamais cessé, de formuler des prières à mon égard, de me soutenir Et de m'épauler pour que je puisse atteindre mes objectifs. Je dédie aussi ce travail à tous ceux qui m’ont aidé à dépasser les moments difficiles. Á tous ceux qui auraient voulu partager ma joie. . . Qu’ils trouvent en ce travail l’expression de ma gratitude pour l’attention qu’ils portent constamment à mes réussites.
  • 4. 4 Remerciement Au terme du stage de projet de fin d’étude au sein de la société « SQLI ISC RABAT», on adresse un remerciement spécial à M. Hassane Bakhous, Professeur à l'ISMAGI, pour son encadrement, son soutien illimité, ainsi que pour tous ses conseils instructifs durant toute la période de ce travail. On souhaite également remercier et exprimer notre profonde gratitude à notre encadrant externe, M. Mustapha LARHROUCH, pour son soutien, ses conseils et ses directives précieuses tout au long de ce projet. On tient à exprimer aussi nos remerciements à M. SIJILMASSI Mehdi, manager Microsoft, Pour sa disponibilité ses directives et ses conduites dont il nous avait épargné à chaque fois qu’il était sollicité, malgré les multiples occupations liées à ses fonctions Avec beaucoup d'égard, nous ne manquerions pas d'exprimer notre grande reconnaissance à tous les enseignants et administrateurs de L’Institut Supérieur de Management d’Administration et de Génie Informatique de RABAT, sans oublier les membres de jury qui ont accepté de juger notre travail. Et également le personnel de SQLI ISC, pour l’expérience enrichissante et pleine d’intérêt qu’ils nous ont fait vivre durant la période de stage. Et également le personnel de SQLI ISC, pour l’expérience enrichissante et pleine d’intérêt qu’ils nous ont fait vivre durant la période de stage. Une vive reconnaissance est exprimée à toutes les personnes qui ont contribuée de près ou de loin à l'élaboration et à la réalisation de ce travail.
  • 5. 5 Résumé Ce document est un rapport de stage qui s'est déroulé du 03 Février au 31 Juillet 2020 au sein de l’entreprise SQLI Rabat pour la préparation du diplôme d'ingénieur en développement informatique. L'objet de stage était de participer à la conception et réalisation d’une plateforme de mise en relation des porteurs pour SQLI ISC RABAT, cette plateforme regroupe la totalité des fonctionnalités nécessaires pour une bonne gestion opérationnelle des différents modules au sein des locaux de SQLI RABAT, de ce fait cet outil réside une solution digitale interne indispensable pour les recruteurs de SQLI puisqu’il regroupe numériquement toutes les évaluations des candidats. Mots clés: ASP .NET CORE, ANGULAR 9, CQRS pattern, Mediator Pattern, EVALUATION, CANDIDAT, RECRUTEMENT.
  • 6. 6 Abstract This document is an internship report which took place from February 3 to July 31, 2020 within the SQLI Rabat Company for the preparation of the engineer degree in computer development. The purpose of the internship was to participate in the design and implementation of a platform for connecting carriers for SQLI ISC RABAT, this platform brings together all the functionality necessary for good operational management of the various modules within the premises of SQLI RABAT, therefore this tool resides in an internal digital solution essential for SQLI recruiters since it digitally gathers all the candidates' evaluations. Keywords: ASP .NET CORE, ANGULAR 9, CQRS pattern, Mediator Pattern, EVALUATION, CANDIDATE, RECRUITMENT.
  • 7. 7 ‫ملخص‬ ‫تقرير‬ ‫عن‬ ‫عبارة‬ ‫الوثيقة‬ ‫هذه‬‫ل‬‫من‬ ‫الفترة‬ ‫في‬ ‫تم‬ ‫داخلي‬ ‫تدريب‬03‫إلى‬ ‫فبراير‬31‫يوليوز‬2020‫شركة‬ ‫في‬SQLI,‫الرباط‬ ‫المعلومات‬ ‫تكنولوجيا‬ ‫تطوير‬ ‫في‬ ‫الهندسة‬ ‫درجة‬ ‫على‬ ‫للحصول‬. ‫في‬ ‫المشاركة‬ ‫هو‬ ‫التدريب‬ ‫من‬ ‫الغرض‬ ‫كان‬‫ل‬ ‫منصة‬ ‫وتنفيذ‬ ‫تصميم‬‫مع‬ ‫لتواصل‬‫ال‬‫موظفي‬‫ن‬‫لدى‬ ‫المستقلين‬SQLI ISC RABAT‫ه‬ ‫تجمع‬ ،‫الالزمة‬ ‫الوظائف‬ ‫جميع‬ ‫المنصة‬ ‫ذه‬‫إلدارة‬RH‫داخل‬ ‫المختلفة‬ ‫للوحدات‬‫شركة‬SQLI RABAT، ‫األداة‬ ‫هذه‬ ‫فإن‬ ‫وبالتالي‬‫عن‬ ‫عبارة‬‫داخلي‬ ‫رقمي‬ ‫حل‬‫مهم‬‫في‬ ‫التوظيف‬ ‫لمسؤولي‬SQLI‫التقييم‬ ‫عملية‬ ‫يسهل‬ ‫ألنه‬‫و‬‫ال‬‫تتبع‬ ‫ل‬‫لمر‬‫ت‬‫شحين‬‫اجل‬ ‫من‬‫توظيف‬‫هم‬. ‫الرئيسية‬ ‫الكلمات‬ASP .NET CORE, ANGULAR 9, CQRS pattern, Mediator Pattern, : EVALUATION, CANDIDAT, RECRUITMENT.
  • 8. 8 Liste des abréviations  ISMAGI : Institut Supérieur de Management d'Administration et de génie informatique.  PFE : Projet de Fin d'Etude.  RH : Ressource Humaines.  API : Application Programming Interface.  SWOT : Strengths - Weaknesses - Opportunities – Threats.  UML : Unified Modeling Language.  HTTPS : HyperText Transfer Protocol Secure.  SSL : Secure Socket Layer.  JWT : JSON Web Token.  CQRS : Command Query Responsibility Segregation.  SQL : Structured Query Language  SGBDR : Système de Gestion de Bases de Données  DEVOPS : Development Operations  CLR : Common Language Runtime  SPA : Single Page Application
  • 9. 9 Liste des figures Figure 1 : FILIALES SQLI ...................................................................................................... 16 Figure 2 : Métiers de SQLI ...................................................................................................... 17 Figure 3 : Exemple d’une liste des partenaires ........................................................................ 19 Figure 4 : Exemple des offres .................................................................................................. 20 Figure 5 : Exemple de liste des besoins (freelance) ................................................................. 20 Figure 6: La méthodologie SCRUM ........................................................................................ 23 Figure 7:Logo GitLab............................................................................................................... 24 Figure 8: Issue board de Gitlab ................................................................................................ 24 Figure 9: GitLab repository...................................................................................................... 25 Figure 10: Logo Microsoft Teams ........................................................................................... 26 Figure 11: L'interface utilisateur Microsoft Teams.................................................................. 27 Figure 12: Profile de projet ...................................................................................................... 28 Figure 13: SWOT de projet...................................................................................................... 29 Figure 14: Diagramme de GANTT. ......................................................................................... 30 Figure 15: Cas d'utilisation «Administrateur et Manager» ...................................................... 34 Figure 16: Cas d'utilisation «Partenaire» ................................................................................. 35 Figure 17:Diagramme de séquence Authentification............................................................... 37 Figure 18: Diagramme de séquence ajouter utilisateur............................................................ 38 Figure 19: Scénario du diagramme de séquence «Ajouter Utilisateur»................................... 38 Figure 20: Diagramme d'activité pour «Manager» .................................................................. 39 Figure 21: Diagramme d'activité pour «Partenaire» ................................................................ 40 Figure 22: Diagramme d'activité pour «Administrateur» ........................................................ 41 Figure 23: Diagramme de classe .............................................................................................. 45 Figure 24: Modèle physique des données ................................................................................ 46 Figure 25: Couches applicative................................................................................................ 47 Figure 26:Architecture propre ; représentation des couches en oignon ................................... 48 Figure 27: Architecture du back-End....................................................................................... 49 Figure 28: Le pattern CQRS..................................................................................................... 50 Figure 29: Le pattern Médiator ................................................................................................ 51 Figure 30: Exemple de mapping .............................................................................................. 52 Figure 31: L'architecture de NGXS.......................................................................................... 53 Figure 32: Le pattern Façade.................................................................................................... 54 Figure 33: Utilisation du JWT.................................................................................................. 56 Figure 34: Power Designer....................................................................................................... 58 Figure 35: SQL SERVER 2017 ............................................................................................... 59 Figure 36: VISUAL STUDIO 2019......................................................................................... 59 Figure 37: Visual Studio Code................................................................................................. 60 Figure 38: GitLab..................................................................................................................... 60 Figure 39: Azure App service .................................................................................................. 61 Figure 40: Framework .Net Core ............................................................................................. 61 Figure 41: La bibliothèque SignalR ......................................................................................... 62 Figure 42: Email SendGrid Azure............................................................................................ 63 Figure 43: Angular 9 ................................................................................................................ 63 Figure 44: Material Design ...................................................................................................... 64 Figure 45: Le processus de déploiement d'une application BACKEND ................................. 65
  • 10. 10 Figure 46: Page d’authentification ........................................................................................... 66 Figure 47: changement de mot de passe lors de la première authentification.......................... 66 Figure 48: CONFIRMATION DE CHANGEMENT DE MOT DE PASSE PAR MAIL....... 67 Figure 49: REINITIALISER LE MOT DE PASSE – 1ERE ETAPE...................................... 67 Figure 50: réinitialiser le mot de passe – 2ème étape............................................................... 68 Figure 51: réinitialiser le mot de passe – 3ème étape............................................................... 68 Figure 52: Dashboard - Espace Admin .................................................................................... 69 Figure 53: La liste des utilisateurs............................................................................................ 69 Figure 54: La recherche des utilisateurs par rôle ..................................................................... 70 Figure 55: La recherche des utilisateurs par partenaire............................................................ 70 Figure 56: Formulaire d'ajout d'un utilisateur par l'admin ....................................................... 71 Figure 57: Formulaire d'ajout d'un admin ................................................................................ 71 Figure 58: Formulaire d'ajout d'un skill center manager.......................................................... 72 Figure 59: Modifier un utilisateur ............................................................................................ 72 Figure 60: Liste des partenaires ............................................................................................... 73 Figure 61: Désactiver un partenaire ......................................................................................... 73 Figure 62: Désactiver tous les comptes associés au partenaire................................................ 74 Figure 63: Formulaire de modification d'un partenaire............................................................ 74 Figure 64: Liste des skill centers.............................................................................................. 75 Figure 65: Liste des types de technologies............................................................................... 75 Figure 66: Liste des technologies............................................................................................. 76 Figure 67: Dashboard - Espace Manager ................................................................................. 76 Figure 68: La liste des offres.................................................................................................... 77 Figure 69: Formulaire d'ajout d'une offre................................................................................. 77 Figure 70: La liste des compétences ........................................................................................ 78 Figure 71: Liste des propositions d’une offre .......................................................................... 78 Figure 72: les informations d'un candidat ................................................................................ 79 Figure 73de : Le tableau de board Kanban pour le recrutment................................................ 80 Figure 74: Fiche d'entretien d'un candidat ............................................................................... 80 Figure 75: Archiver une offre................................................................................................... 80 Figure 76: Notification de nouvelle proposition ...................................................................... 81 Figure 77: Dashboard - Espace Partenaire ............................................................................... 81 Figure 78: Liste des offres pour partenaire .............................................................................. 82 Figure 79: Proposer un candidat............................................................................................... 82 Figure 80: Détails d'une proposition d’offre ............................................................................ 83 Figure 81: Liste des candidats.................................................................................................. 83 Figure 82: Maquette pour l’Authentification ........................................................................... 87 Figure 83: Maquette pour la liste des offres............................................................................. 87 Figure 84: Maquette pour ajouter une offre ............................................................................. 88 Figure 85: Maquette pour suivre les offres .............................................................................. 88 Figure 86: Maquette pour la liste des propositions .................................................................. 89 Figure 87: Maquette pour envoyer les propositions................................................................. 89 Figure 88: Maquette pour l'ajout d'un candidat........................................................................ 90
  • 11. 11 Liste des tableaux Table 1: Les formations SQLI.................................................................................................. 18 Table 2: Description de diagramme de cas d'utilisation «Administrateur et Manager» .......... 35 Table 3: Description de diagramme de cas d'utilisation «Partenaire» ..................................... 36 Table 4: Scénario du diagramme de séquence «Authentification»......................................... 37 Table 5: Dictionnaire de données............................................................................................. 44
  • 12. 12 Table de matières Dédicaces ................................................................................................................................... 3 Remerciement............................................................................................................................. 4 Résumé....................................................................................................................................... 5 Abstract ...................................................................................................................................... 6 ‫ملخص‬........................................................................................................................................... 7 Liste des abréviations................................................................................................................. 8 Liste des figures ......................................................................................................................... 9 Liste des tableaux..................................................................................................................... 11 Table de matières ..................................................................................................................... 12 Introduction générale................................................................................................................ 14 Chapitre 1 : Présentation de lieu de stage........................................................................... 16 Introduction ....................................................................................................................................... 16 1. PRÉSENTATION ..................................................................................................................... 16 2. Métiers du groupe...................................................................................................................... 17 3. Formation .................................................................................................................................. 18 Conclusion......................................................................................................................................... 18 Chapitre 2 : Etude préliminaire .......................................................................................... 19 Introduction ....................................................................................................................................... 19 1. Etude Préalable.......................................................................................................................... 19 A. Etude de l’existant................................................................................................................. 19 B. Critique de l’existant ............................................................................................................. 20 C. Solutions proposées............................................................................................................... 21 2. Management du projet............................................................................................................... 21 A. Introduction ........................................................................................................................... 21 B. La méthode agile SCRUM .................................................................................................... 22 C. Les outils de pilotage de projet.............................................................................................. 24 D. Profile de projet..................................................................................................................... 28 E. SWOT.................................................................................................................................... 29 F. Diagramme de Gantt ............................................................................................................. 30 Conclusion......................................................................................................................................... 31 Chapitre 3 : Analyse & conception .................................................................................... 32 Introduction ....................................................................................................................................... 32 1. Spécification des besoins........................................................................................................... 32 A. Les acteurs............................................................................................................................. 32
  • 13. 13 B. Besoins fonctionnels.............................................................................................................. 32 C. Besoins non fonctionnels....................................................................................................... 33 D. Les diagrammes de cas d’utilisation...................................................................................... 34 E. Diagrammes de séquence ...................................................................................................... 36 F. Diagramme d'activité............................................................................................................. 39 G. Dictionnaire des données....................................................................................................... 42 H. Diagramme de classe............................................................................................................. 44 2. Architecture applicative............................................................................................................. 47 A. Description d’architecture ..................................................................................................... 47 B. Architecture Back-End.......................................................................................................... 48 C. Architecture Front-End.......................................................................................................... 53 D. Sécuriser l’API REST ........................................................................................................... 55 Conclusion......................................................................................................................................... 57 Chapitre 4 : Réalisation ...................................................................................................... 58 Introduction ....................................................................................................................................... 58 1. Outils de travail ......................................................................................................................... 58 2. Technologies utilisées ............................................................................................................... 61 3. Déploiement sur Microsoft Azure (Saas).................................................................................. 65 4. Description de l’application ...................................................................................................... 66 A. Authentification..................................................................................................................... 66 B. Espace Admin : ..................................................................................................................... 68 C. Espace Manager : .................................................................................................................. 76 D. Espace Partenaire : ................................................................................................................ 81 Conclusion......................................................................................................................................... 84 Conclusion générale ................................................................................................................. 85 Bibliographie............................................................................................................................ 86 Annexes.................................................................................................................................... 87
  • 14. 14 Introduction générale Loin d'être un éphémère phénomène de mode, ou une tendance passagère, l'intégration des systèmes d'informations est fortement ressentie par l'ensemble des organisations. En effet, Il ne fait désormais plus aucun doute que la mise en place d'un système informatique améliore les performances, augmente le rendement et facilite la gestion de travail au sein de l’entreprise. SQLI ISC se distingue par la manière innovante dont vous choisissez les stagiaires, car il organise chaque année une compétition E-Challenge au niveau national, après notre participation cette année à la 14e édition du concours organisé par SQLI Rabat, nous avons passé les trois étapes du concours et nous avons décroché un stage PFE pour une période de 6 mois. Étant un leader dans le domaine de développement des solutions IT qui a comme objectif la digitalisation des systèmes informatiques, l'entreprise SQLI ISC RABAT nous a confié le développement et la mise en place d’une application web interne basé sur l'architecture .NET dédié aux managers de SQLI RABAT, notamment les partenaires de l'entreprise ,afin d’effectuer le processus de recrutement avec succès et d’une manière automatisée. Notre application est conçue pour assister les managers de SQLI ISC, afin qu'elle envoie une notification d'offre d'emploi aux partenaires, afin de proposer un ensemble de profils des freelances, l'application aide également à gérer tous les processus de recrutement depuis la proposition jusqu'a le recrutement. Au bout de ce travail, on est censé réaliser une plateforme d’évaluation riche de fonctionnalités qui se base sur les technologies de Microsoft. Ce projet nous a donné l’opportunité de renforcer nos compétences de développement, d’adaptation et d’apprentissage des nouvelles technologies, notamment la découverte du la Platform Azure, et le déploiement back-end et front-end d’une application .NET. Le but de ce rapport est de présenter un aperçu exhaustif et détaillé du travail effectué et de ressortir les solutions apportées aux difficultés rencontrées les managers (SKILL CENTER) au cours du processus de recrutement des freelances.
  • 15. 15 De ce fait, on a essayé de fournir un rapport qui contient cinq parties, dans sa première partie, on parlera du contexte général du projet : on présente l’organisme d’accueil, la présentation du client et une description fonctionnelle détaillée de la démarche suivie pour le développement du projet. La deuxième partie est consacrée aux différentes fonctionnalités qu’offre notre plateforme. Puis on présentera la modélisation du projet, la définition de l’environnement technique, et l’architecture du projet. Le rapport s’achève par une présentation des interfaces développées et une conclusion pour lister les différents atouts du projet, les difficultés rencontrées et les perspectives d’amélioration possibles.
  • 16. 16 Chapitre 1 : Présentation de lieu de stage Introduction Ce chapitre présente le contexte général ainsi qu’une présentation de l'organisme d'accueil sera en premier lieu, et ensuite la formation préalable au stage 1. PRÉSENTATION Créé en 1990, le Groupe SQLI est le leader français des sociétés de services spécialisées dans les Nouvelles Technologies de l'Information et de la Communication. L’entreprise se positionne en tant que "Grand Spécialiste" unique en France en proposant une offre globale alliant la capacité de production industrielle d'un groupe international à l'expertise et la souplesse d'un spécialiste, en mesure de donner de la valeur aux innovations des entreprises qu'elle accompagne. Le groupe est spécialisé sur trois segments de compétence : • Les technologies & usages Internet (Microsoft, Java/J2EE, Open Source…) • Les nouvelles offres SAP (NetWeaver, CRM…) • La Business Intelligence (BO, Cognos, Open Source…) Figure 1 : FILIALES SQLI
  • 17. 17 Le Groupe SQLI est l’une des rares agences internationales dédiée à l’expérience digitale et au Commerce Unifié à disposer d’un réseau d’agences aussi étendu avec notamment 26 agences réparties dans 11 pays lui permettant de couvrir efficacement l’Europe. Ce réseau d’agences locales apporte conseil et approche commerciale de proximité aux clients et prospects. A ce réseau d’agences locales, SQLI a choisi d’associer 6 centres de services digitaux répartis dans 4 pays, qui lui permettent de répondre avec flexibilité et agilité à tous ses clients et notamment les grands comptes nationaux / internationaux, pour leurs projets de déploiement de plateformes à l’échelle mondiale. [1] 2. Métiers du groupe Pour aider les entreprises à tirer parti des technologies Internet, SQLI propose un accompagnement global sur tout le cycle du projet : des prestations de conseil pour aider les clients à faire les bons choix, la mise en œuvre concrète de ces choix par la réalisation et l’intégration et un accompagnement dans le déploiement des projets et le transfert de compétences. Figure 2 : Métiers de SQLI
  • 18. 18 3. Formation L'objectif principal de SQLI est l'intégration des stagiaires, donc pour faciliter cette intégration, l'entreprise vous propose un mois de formation sur toutes les technologies et outils nécessaires du travail. En tant que stagiaire Microsoft au sein de SQLI RABAT, vous suivez une formation complète par des experts techniques. FORMATION FORMATEUR TOTAL HEURES (h) HTML/CSS CHAOUAY Youness 16 JAVASCRIPT CHAOUAY Youness 24 C# AZZI Younesse 16 ANGULAR 5 OTMANI Chihab 32 ASP MVC/ Web API/ EF MAJID Mostafa 16 Formation Skills El HAJAMI Siham 8 REACT ADAD Hamza 40 Table 1: Les formations SQLI Conclusion Ce chapitre est une présentation de lieu de stage. Le chapitre qui suit port sur l’étude préliminaire.
  • 19. 19 Chapitre 2 : Etude préliminaire Introduction Dans ce chapitre, nous commençons par présenter l’étude de l’existant suivit d’une critique de ce dernier. Ensuite, nous décrivons notre solution proposée et les objectifs à atteindre ainsi que la méthodologie adoptée. 1. Etude Préalable A. Etude de l’existant L’étude de l’existant est une phase importante pour bien comprendre l’état et les moyens du fonctionnement actuel. L’existant actuel consiste en des fichiers Excel qui permet de recrute les collaborateurs et suivre les propositions des partenaires et un process manuel de communication entre les porteurs (les entreprises qui gèrent ces profils) et SQLI pour annoncer les offres ou les besoins. Le fichier se compose de plusieurs onglets :  Partenaires : Figure 3 : Exemple d’une liste des partenaires
  • 20. 20  Les offres : Figure 4 : Exemple des offres  Liste des besoins : Figure 5 : Exemple de liste des besoins (freelance) B. Critique de l’existant L'étude de l’existant nous a permis de dégager un certain nombre d'insuffisances et de lacunes par exemple :  Le processus de recrutement prend beaucoup de temps lors de l'utilisation de fichiers Excel.  Un ensemble de tâches répétitives sans automatisation.  La communication entre les acteurs (Manager SQLI et Les partenaires) prend beaucoup de temps.  L'absence d'une base de données de recrutement avec un historique fiable.
  • 21. 21 C. Solutions proposées Notre projet de fin d’étude est venu comme réponse à des besoins exprimés par la direction des ressources humaines et des Skill center managers, dont l’objectif général est la réalisation d’une plateforme de mise en relation des porteurs. Cette plateforme regroupe la totalité des fonctionnalités nécessaires pour une bonne gestion opérationnelle des différents modules au sein des locaux de SQLI RABAT. Dans ce projet, nous proposons de créer une plateforme de recrutement, qui aide les managers RH de SQLI à communiquer avec leurs partenaires et à envoyer des offres de recrutement, ensuite les partenaires proposent des candidats, Enfin, les responsables RH choisissent les candidats qui peuvent obtenir le poste. La solution cible se compose de 6 modules : • Gestion des utilisateurs. • Gestion des offres. • Gestion des porteurs. • Gestion des propositions. • Gestion des candidats. • Gestion des fiches d’évaluation. • Gestion des statistiques et de suivi séquentiel des entretiens. 2. Management du projet A. Introduction Dans le chapitre qui suit, nous allons donner les trois fonctions principales de la gestion de projet La planification, L’Exécution, le Contrôle.
  • 22. 22 B. La méthode agile SCRUM Le choix d'une méthode de développement constitue une étape très importante permettant D’avoir une meilleure organisation des différentes phases du projet. Pour la conduite de notre projet nous avons décidées d'adopter la méthode "Scrum". La méthode SCRUM met l’accent sur l’esprit d’équipe et sur le fait que tous les acteurs doivent avancer dans la même direction pour atteindre un même objectif. SCRUM repose sur une intense collaboration de l’équipe qui se focalise sur une partie limitée et maîtrisable des fonctionnalités à réaliser. L’équipe SCRUM est répartie en 3 rôles :  Le Product Owner : C’est le responsable du produit, il représente les clients et les utilisateurs en transcrivant leurs besoins, définit et priorise les demandes produit  Le Scrum Master : Il n’est pas le chef de projet mais il a pour charge de faciliter l’application de Scrum. Sa mission est de tout mettre en œuvre pour que l’équipe travaille dans de bonnes conditions et se concentre sur l’objectif du projet. Il porte également une attention particulière au respect des différentes phases de Scrum.  L’équipe Scrum : L’équipe se gère en toute autonomie et est en charge du développement du produit. Il n’y a pas de notion de hiérarchie. Toutes les décisions sont prises ensemble. Elle regroupe les rôles habituellement nécessaires à un projet (architecte, concepteur, développeur, etc…).  Pilotage du projet avec Scrum : La première étape consiste à effectuer une première planification de l'itération ou Sprint
  • 23. 23 Planning dans le jargon des développeurs. Cette réunion fera ressortir les éléments prioritaires de la liste des exigences fonctionnelles du produit. Chaque exigence représente une User Story ou "histoire utilisateur". En accord avec le client, aussi appelé Product Owner, les premières livraisons devraient être effectuées à la fin de cette itération (qui dure de 2 à 4 semaines suivant le nombre des user Stories présentes dans le Backlog). Le backlog est l'ensemble des US à développer durant l'itération en cours. Une autre réunion appelée Revue de Sprint ou Sprint Review est organisée à la fin de chaque Sprint durant laquelle les développeurs présentent au client les fonctionnalités développées. Ce dernier pourra ainsi tout de suite donner son feedback, ce qui présente l'avantage de gagner beaucoup de temps et d'ajuster les fonctionnalités ou les méthodes de travail le cas échéant. Vient ensuite une rétrospective de Sprint ou Sprint Rétrospective qui permet à tous les acteurs d'améliorer des choses et de s'améliorer également. Une autre particularité de la méthode Scrum est la réalisation de mêlées quotidiennes ou Daily Scrum qui permet à l'équipe de développeurs de synchroniser leur travail. Cette réunion qui ne dure pas plus de 15 minutes permet à chacun de déterminer ce qu'ils ont réalisé depuis la dernière mêlée, de fixer ce qu'ils auront à terminer avant la prochaine Daily Scrum et d'identifier les obstacles qui pourraient les bloquer. [2] Ci-après, une figure résumant le processus de Scrum. Figure 6: La méthodologie SCRUM
  • 24. 24 C. Les outils de pilotage de projet  GitLab : Figure 7:Logo GitLab GitLab est un logiciel libre de forge basé sur git proposant les fonctionnalités de wiki, un système de suivi des bugs, l’intégration continue et la livraison continue. Développé par GitLab Inc. et créé par Dmitriy Zaporozhets et par Valery Sizov, le logiciel est utilisé par plusieurs grandes entreprises informatiques. Figure 8: Issue board de Gitlab Le tableau de bord ou issue board de Gitlab vous permet de suivre de près les tâches en cours et les issues, Il est conçu de manière à ce que les informations et données pertinentes vous sautent aux yeux. Ce tableau de bord se base sur la notion de Workflow et chaque liste utilisée se rapporte à une étape précise du processus de développement.
  • 25. 25 Depuis ce tableau de bord, chaque membre de votre équipe qui prend en charge un même projet est en mesure d’apporter des modifications à tous les fichiers du projet. Les autres membres seront au courant en temps réel des modifications apportées. Figure 9: GitLab repository Le dépôt (repository) est un répertoire dont la structure décrit le graphe de commit, les branches, etc. Un repository est ce que vous utilisez pour stocker code de projet dans GitLab et le modifier avec le contrôle de version. Un repository fait partie d'un projet, qui possède de nombreuses autres fonctionnalités.
  • 26. 26  Microsoft teams Figure 10: Logo Microsoft Teams Microsoft Teams est une application de communication collaborative propriétaire (Saas) officiellement lancée par Microsoft en novembre 2016. Microsoft Teams reprend les fonctionnalités Microsoft suivantes : Skype Entreprise, Exchange, SharePoint ou encore StaffHub : SharePoint est une application permettant le partage d'informations entre plusieurs individus. Microsoft Exchange est un logiciel de groupe de travail (appelé également groupware) proposant une messagerie électronique. StaffHub est une application permettant de gérer des plannings d'équipes à distance. Lync ou Skype for business est une plateforme de "communication unifiée" intégrant un ensemble de moyens de communication comme les appels vidéo ou audio, messagerie instantanée, etc.
  • 27. 27 Figure 11: L'interface utilisateur Microsoft Teams. En raison de l'épidémie de COVID-19, nous sommes passés au travail à distance, en utilisant Microsoft Teams, qui aide à organiser des réunions, à partager des fichiers et à travailler en équipe.
  • 28. 28 D. Profile de projet F A I B L E Taille I M P O R T A N T Enjeu Output matériels Complexité Innovation Autonomie de l’équipe Intégration dans l’organisation Figure 12: Profile de projet - Le projet est un projet de taille, Enjeu et output matériels moyennes - Sa complexité et innovation sont très moyennes. - L'équipe n'est pas indépendante. - Le projet s’insère dans une organisation.
  • 29. 29 E. SWOT L’analyse ou matrice SWOT est un outil de stratégie d'entreprise permettant de déterminer les options offertes dans un domaine d'activité stratégique. Il vise à préciser les objectifs de l'entreprise ou du projet et à identifier les facteurs internes et externes favorables et défavorables à la réalisation de ces objectifs. SWOT a été décrit comme l'outil éprouvé de l'analyse stratégique. • Force : caractéristiques de l'entreprise ou du projet qui lui donnent un avantage sur les autres. • Faiblesses : caractéristiques de l'entreprise qui désavantagent l'entreprise ou le projet par rapport aux autres. • Opportunités: éléments de l'environnement que l'entreprise ou le projet pourrait exploiter à son avantage. • Menaces : éléments de l'environnement qui pourraient causer des problèmes à l'entreprise ou au projet. Figure 13: SWOT de projet Forces : - Cohérence et homogénéité des informations, intégrité, unicité des données - Optimisation et harmonisation des processus de gestion - Minimisation des interfaces et globalisation de la formation Faiblesses : -Une nouvelle architecture doit être apprise en peu de temps pour pouvoir l'utiliser Opportunités : - Souplesse et pérennité sur le long terme - Evolution maîtrisée du systéme d'information et centralisation de la maintenance - adaptabilité des decisions et actions en se basant sur les tables de bords Menaces : -Ralentissement du développement après l'épidémie de Covid 19. Projet
  • 30. 30 F. Diagramme de Gantt La planification de projet vise à établir des prévisions raisonnables et à prévoir l'ordonnancement des phases sur le plan des délais pour la mise en œuvre des travaux d'ingénierie et la gestion du projet. Ces prévisions sont indispensables pour mener une gestion de projet efficace. Parmi les outils de planification de projet, nous avons optée pour le diagramme de GANTT, un outil qui permet de planifier un projet et rendre plus simple le suivi de son avancement. Il est à noter que pour prioriser les besoins dans un contexte itératif, nous avons eu recours à la méthode MoSCoW qui est plus compréhensible que d'autres techniques de priorisation comme élevé/moyen/faible. La figure suivante illustre l'enchainement et la durée prévisionnelle des différentes activités et tâches du projet. Figure 14: Diagramme de GANTT.
  • 31. 31 Conclusion Ce chapitre avait pour objectif la présentation de la deuxième partie de projet de fin d’études, son contexte général, les méthodes de gestion adoptées pour le mener ainsi que le déroulement du projet tout au long des phases constituant le cycle de développement. Le chapitre qui suit port sur l’analyse et la conception informatique.
  • 32. 32 Chapitre 3 : Analyse & conception Introduction Dans le chapitre qui suit, nous allons donner une description des différents éléments dégagés dans la phase d’analyse et conception. Tout d’abord, on va décrire la méthodologie de travail, les acteurs. Ensuite établir les principaux diagrammes UML élaborés dans la phase de conception. 1. Spécification des besoins A. Les acteurs  Administrateur : C’est la personne principale du système et il gère tous les autres utilisateurs; comme l'ajout, la modification, la suppression et la consultation.  Manager : ou Manager de Skill Center c'est la supérieure hiérarchique d'un Skill center (Microsoft, Java, Front End…), son rôle dans notre application est de lancer des offres aux partenaires et d'évaluer les candidats,  Partenaire : C'est une autre entreprise, elle travaille en sous-traitance (Outsourcing), son rôle dans la application est de proposer des candidats au Manager. B. Besoins fonctionnels  L’Administrateur (responsable de recrutement) peut :  Gérer les utilisateurs (Ajouter, modifier, supprimer, afficher la liste, rechercher)  Skill Center Manager peut :  Créer une offre.  Suivi une offre.  Archiver une offre.  Suivi des propositions.  Remplir une fiche d'évaluation de l'entretien.  Notifier les partenaires.
  • 33. 33  Partenaire peut :  Gérer les candidats (les freelances).  Uploader le CV d’un candidat  Consulter les offres.  proposer des candidats pour une offre.  Gérer les responsable partenaires (si admin partenaire).  Notifier les managers. C. Besoins non fonctionnels Ce sont des exigences qui ne concernent pas spécifiquement le comportement du système mais plutôt identifient des contraintes internes et externes du système. Les principaux besoins non fonctionnels de notre application se résument dans les points suivants : Ergonomie : L’interface de l’application doit être simple et utilisable afin que l’utilisateur puisse l’exploiter sans se référer à des connaissances particulières, en d’autres termes, notre application doit être lisible et facile à manipuler par n’importe quel utilisateur. Scalabilité : l’application doit être capable de répondre à la demande quel que soit la charge au quelle elle est soumise. Modularité : Dès le départ, il faut penser à réaliser une application qui soit modulaire ce qui permettra d’ajouter des modules développés à part et de retrancher d’autre module ce qui donnera une flexibilité lors du développement. Maintenabilité : Il nous permettra de résoudre la non-conformité de l’application et à adapter cette dernière afin qu’elle continue de fonctionner sur des versions plus récentes des logiciels de base. En plus de la testabilité et le fonctionnement avec un optimum de temps, l'application doit garantir les besoins suivants : Sécurité : La sécurité de l'application s'appuie sur deux notions principales, l’authentification des utilisateurs et la non répudiation, à savoir que:  L'authentification repose sur la vérification du couple login/mot de passe de l'utilisateur.  La non-répudiation assure qu'un utilisateur ne peut pas nier avoir effectué une tâche au niveau de l'application.
  • 34. 34 Navigabilité : L'application doit disposer tout d'abord d'un menu simple qui peut servir à l'utilisateur pour mieux interagir avec l'application et visible dans toutes les interfaces de l'application. D. Les diagrammes de cas d’utilisation Les diagrammes de cas d'utilisation sont des diagrammes UML utilisés pour donner une vision globale du comportement fonctionnel d'un système logiciel. Ils sont utiles pour des présentations auprès de la direction ou des acteurs d'un projet, mais pour le développement, les cas d'utilisation sont plus appropriés. Un cas d'utilisation représente une unité discrète d'interaction entre un utilisateur (humain ou machine) et un système. Il est une unité significative de travail. Dans un diagramme de cas d'utilisation, les utilisateurs sont appelés acteurs (actors), ils interagissent avec les cas d'utilisation (use cases).  Cas d’utilisation «Administrateur et Manager» : Le diagramme présenté dans la figure suivante est le diagramme associé aux services qu’offre notre plateforme au de l’utilisateur interne SQLI (Admin et Manager), Il s’agit d’une représentation de la collecte des besoins fonctionnels du même cas d’utilisation: Figure 15: Cas d'utilisation «Administrateur et Manager»
  • 35. 35  Description de diagramme : Titre Cas d'utilisation «Administrateur et Manager» But Gestion de :  Utilisateurs  Offres  Propositions  Notifications Résumé L’acteur, après l’authentification, accède à l’interface administrateur ou manager et choisit l’interface de gestion selon le besoin Acteur Administrateur - Manager Table 2: Description de diagramme de cas d'utilisation «Administrateur et Manager»  Cas d’utilisation «Partenaire» : Le diagramme présenté dans la figure suivante est le diagramme associé aux services qu’offre notre plateforme au partenaire, Il s’agit d’une représentation de la collecte des besoins fonctionnels du même cas d’utilisation: Figure 16: Cas d'utilisation «Partenaire»
  • 36. 36  Description de diagramme : Titre Cas d'utilisation «Partenaire» But Gestion de :  freelances  responsables partenaires Consulter les offres. Proposer des freelances. Résumé L’acteur, après l’authentification, accède à l’interface de partenaire et choisit l’interface selon le besoin Acteur Partenaire Table 3: Description de diagramme de cas d'utilisation «Partenaire» E. Diagrammes de séquence Le diagramme de séquence permet de montrer les interactions d'objets dans le cadre d'un scénario d'un Diagramme des cas d'utilisation. Dans un souci de simplification, on représente l'acteur principal à gauche du diagramme, et les acteurs secondaires éventuels à droite du système. Le but étant de décrire comment se déroulent les actions entre les acteurs ou objets.
  • 37. 37  Diagramme de séquence «Authentification» : Figure 17:Diagramme de séquence Authentification  Scénario du diagramme de séquence «Authentification» : Scénario nominal Action de l’acteur Réactions du système 1. L’utilisateur demande une connexion au système. 3. L’administrateur saisit son login et son mot de passe. 5. Le système se connecte et ouvre la session. 2. Le Système affiche l’interface de connexion. 4. Le système vérifie si l’utilisateur existe dans sa base. Dans le cas où l'utilisateur saisit son login ou mot de passe erroné, le système demande de les retaper de nouveau. Table 4: Scénario du diagramme de séquence «Authentification»
  • 38. 38  Diagramme de séquence «Ajouter utilisateur» : Figure 18: Diagramme de séquence ajouter utilisateur  Scénario du diagramme de séquence «Ajouter Utilisateur» : Scénario nominal Action de l’acteur Réactions du système 1. L’administrateur demande l’ajout d’un nouvel utilisateur 3. L’administrateur remplit le formulaire du nouvel utilisateur et valide l’ajout 2. Le système affiche le formulaire du nouveau nom de l’utilisateur. 4. Le système vérifie et sauvegarde le nouveau nom de l’utilisateur. Dans le cas où l’administrateur entre un nom utilisateur existant, ou les champs vide : Le système demande de vérifier le nom du nouvel utilisateur. Figure 19: Scénario du diagramme de séquence «Ajouter Utilisateur»
  • 39. 39 F. Diagramme d'activité Les diagrammes d'activités permettent de déterminer des traitements a priori séquentiels. Ils offrent un pouvoir d'expression très proche des langages de programmation objet: spécification des actions de base (déclaration de variables, affectation etc.), structures de contrôle (conditionnelles, boucles), ainsi que les instructions particulières à la programmation orientée objet (appels d'opérations, exceptions etc.). Ils sont donc bien adaptés à la spécification détaillée des traitements en phase de réalisation. On peut également utiliser de façon plus informelle pour décrire des enchaînements d'actions de haut niveau, en particulier pour la description détaillée en cas d'utilisation.  Diagramme d'activité pour «Manager» : Figure 20: Diagramme d'activité pour «Manager»
  • 40. 40  Diagramme d'activité pour «Partenaire» : Figure 21: Diagramme d'activité pour «Partenaire»
  • 41. 41  Diagramme d'activité pour «Administrateur» : Figure 22: Diagramme d'activité pour «Administrateur»
  • 42. 42 G. Dictionnaire des données Un dictionnaire des données est une collection de métadonnées ou de données de référence nécessaire à la conception d'une base de données relationnelle. Il revêt une importance stratégique particulière, car il est le vocabulaire commun de l'organisation Nom Type de données Visibilité Classificateur Id Int Private Candidat ProfileCode String Private Candidat FirstName String Private Candidat LastName String Private Candidat Poste String Private Candidat Level String Private Candidat School String Private Candidat Disponibility String Private Candidat UnitDisponibility String Private Candidat Experience String Private Candidat ActualJob String Private Candidat ContractType String Private Candidat Notes String Private Candidat Id Int Private Competency Name String Private Competency Id Int Private Interview Rating Double Private Interview Notes String Private Interview CreatedOn DateTime Private Interview LastModification DateTime Private Interview Id Int Private Notification Text String Private Notification CreationDate DateTime Private Notification
  • 43. 43 IdEntity String Private Notification IsActive Bool Private Notification Id Int Private NotificationType Name String Private NotificationType Id Int Private Offer Title String Private Offer Place String Private Offer Description String Private Offer Status String Private Offer Duration Int Private Offer BackExperience Int Private Offer FrontExperience Int Private Offer CreationDate DateTime Private Offer IsArchived Bool Private Offer Id Int Private Partner Email String Private Partner Name String Private Partner PhoneNumber String Private Partner AdressePhysique String Private Partner ResponsableName String Private Partner Logo Byte Private Partner IsActive Bool Private Partner Id Int Private Proposition Price Double Private Proposition Date DateTime Private Proposition Remark String Private Proposition IsValide Bool Private Proposition Id Int Private Role Name String Private Role Id Int Private SkillCenter
  • 44. 44 Name String Private SkillCenter Id Int Private Status Name String Private Status Id Int Private Tag Name String Private Tag Id Int Private TagType Name String Private TagType Id Int Private User FirstName String Private User LastName String Private User Login String Private User Password String Private User Email String Private User PasswordChanged bool? Private User LastConnection DateTime? Private User IsActive Bool Private User Table 5: Dictionnaire de données H. Diagramme de classe Le diagramme de classes est un schéma utilisé en génie logiciel pour présenter les classes et les interfaces des systèmes ainsi que les différentes relations entre celles-ci. Ce diagramme fait partie de la partie statique d'UML car il fait abstraction des aspects temporels et dynamiques. Une classe décrit les responsabilités, le comportement et le type d'un ensemble d'objets. Les éléments de cet ensemble sont les instances de la classe. Une classe est un ensemble de fonctions et de données (attributs) qui sont liées ensemble par un champ sémantique. Les classes sont utilisées dans la programmation orientée objet. Elles permettent de modéliser un programme et ainsi de découper une tâche complexe en plusieurs petits travaux simples.
  • 45. 45 Les classes peuvent être liées entre elles grâce au mécanisme d'héritage qui permet de mettre en évidence des relations de parenté. D'autres relations sont possibles entre des classes, chacune de ces relations est représentée par un arc spécifique dans le diagramme de classes. Figure 23: Diagramme de classe Le diagramme de classes identifie les classes de notre système et les associations entre elles. Nous avons modélisé comme classes les éléments suivant :  Partenaire  Candidat  Notification  Type de notification  Rôle  Proposition  Compétence  Statut  Offre  Utilisateur  Skill Center  Interview  Tag
  • 46. 46  Type de tag NB : Les classes composées de (ID, NAME) héritent de la classe Reference (ID, NAME) I. Modèle physique des données (MPD) Le modèle physique des données (MPD) consiste à implanter une base de données dans un SGBDR Le langage utilisé pour ce type d'opération est le SQL. On peut également faire usage d'un AGL qui permet de générer automatiquement la base de données. Figure 24: Modèle physique des données
  • 47. 47 2. Architecture applicative A. Description d’architecture Après l'achèvement de l'étude fonctionnelle du projet, vient la phase de l'étude technique. Cette partie décrit les contraintes techniques, définit les Framework et les technologies de Développement utilises et présente l'architecture logicielle de l'application. La structuration d'une application permet de présenter cette dernière en des couches logiques: La couche de présentation, la couche métier et la couche de manipulation de données. Ainsi, une application structurée en couches est facilement maintenable dans la mesure où un nouvel intervenant est capable, à partir de la description de l'architecture, de comprendre le rôle de chaque composant développé et de s'insérer rapidement dans cette logique. L’architecture du projet se base sur un développement web standard Asp.net MVC (HTML/CSS), cette technologie offre plusieurs avantages • Sécurité : Sécurité renforcée dû à l’exécution coté serveur • Respect des standards Web (Usability standards) : Angular 9 coté présentation. • Tendance et compétences dans le marché. Les différentes couches communiquent entres elles selon le modèle suivant : Couche Présentation (Angular 9) Web API Service (JWT Token) Injection de dépendance Couche métiers Couche d’accès aux données Couchecommon Interfaces,Entites Base de données Figure 25: Couches applicative
  • 48. 48 B. Architecture Back-End Figure 26:Architecture propre ; représentation des couches en oignon Dans ce diagramme, le flux des dépendances va du cercle extérieur vers le cercle le plus intérieur. La couche Noyau de l’application tire son nom de sa position au cœur de ce diagramme. Par ailleurs, comme vous pouvez constater sur le diagramme, la couche Noyau de l’application n’a aucune dépendance vis-à-vis des autres couches de l’application. Les entités et les interfaces de l’application se trouvent au centre même du diagramme. Juste après vers l’extérieur, mais toujours dans la couche Noyau de l’application, viennent les services de domaine, qui implémentent généralement les interfaces définies dans le cercle central. À l’extérieur de la couche Noyau de l’application, les couches Interface utilisateur et Infrastructure dépendent toutes deux de la couche Noyau de l’application, mais elles ne dépendent pas (nécessairement) l’une de l’autre. [3]
  • 49. 49 Figure 27: Architecture du back-End  Projet Web : Correspond aux couches qui contiennent le Web, UI and Présenter concernes. Dans le contexte de notre API, cela signifie qu'il accepte les entrées sous forme de requêtes http sur le réseau (par exemple, GET / POST / etc.) Et renvoie sa sortie sous forme de contenu au format JSON / HTML / XML, etc. Presenters contiennent des références et des types spécifiques au Framework .NET, ils vivent donc également ici conformément à la règle de dépendance, nous ne voulons pas en transmettre.  Projet Core : Correspond aux couches qui contiennent le cas d'utilisation et préoccupations de l'entité et c'est aussi là que nos interfaces externes sont définies. Ces couches internes contiennent nos objets de domaine et nos règles métier. Le code de cette couche est principalement du C# pur - aucune connexion réseau, base de données, etc. n'est autorisée. Les interfaces représentent ces dépendances et leurs implémentations sont injectées dans nos cas d'utilisation.  Projet Infrastructure : Correspond aux couches qui contiennent la base de données and Gateway concerns. Ici, nous définissons les entités de données, l'accès aux bases de données (généralement sous la forme de Repositories), les intégrations avec d'autres services réseau, les caches, etc. Ce projet / couche contient l'implémentation physique des interfaces définies dans notre couche domaine.
  • 50. 50 a) Le pattern CQRS Le pattern CQRS (Command Query Responsibility Segregation) repose sur un principe simple : la séparation, au sein d’une application, des composants de traitement métier de l’information (“command” / écriture) et de restitution de l’information (“query” / lecture). Ce seul principe fournit un cadre d’architecture extrêmement intéressant pour le développement d’applications, en levant un certain nombre de contraintes et en faisant apparaître de nouvelles opportunités. [4] Figure 28: Le pattern CQRS
  • 51. 51 b) Le pattern Médiator Le patron de conception Médiateur définit un objet (Médiator) qui encapsule la manière dont un ensemble d'objets interagit. Il permet une communication plusieurs à plusieurs. Le patron de conception Médiateur fournit une interface unifiée pour un ensemble d'interfaces d'un sous-système. Il est utilisé pour réduire les dépendances entre plusieurs classes. Lorsqu'un logiciel est composé de plusieurs classes, les traitements et les données sont répartis entre toutes ces classes. Plus il y a de classes, plus le problème de communication entre celles-ci peut devenir complexe. En effet, plus les classes dépendent des méthodes des autres classes plus l'architecture devient complexe. Cela ayant des impacts sur la lisibilité du code et sa maintenabilité dans le temps. Le modèle de conception Médiateur résout ce problème. Pour ce faire, le Médiateur est la seule classe ayant connaissance des interfaces des autres classes. Lorsqu'une classe désire interagir avec une autre, elle doit passer par le médiateur qui se chargera de transmettre l'information à la ou les classes concernées Figure 29: Le pattern Médiator
  • 52. 52  Le package MediatR : Dans l'environnement .Net, vous pouvez utiliser le médiateur avec l'installation du package MediatR avec packages NuGet, c'est une implémentation simple et légère du patron de conception médiateur qui permet de réduire au maximum le couplage et donc les dépendances entre vos différentes classes et modules (ce qui aide à éviter le code spaghetti). c) Mapping (DTO, Model) AutoMapper est un mappeur objet-objet, qui vous permet de résoudre les problèmes de mapping de mêmes propriétés dans un objet d'un type à un autre objet d'un autre type. Vous pouvez faire le mapping entre les classe POCO et DTO avec l'installation du package AutoMapper dans packages NuGet Par exemple, le mappage d'un objet entité Employe lourde au EmployeDTO pourrait être fait avec AutoMapper automatiquement. Figure 30: Exemple de mapping
  • 53. 53 C. Architecture Front-End a) Le pattern NGXS NGXS est un State Management Pattern et Library pour Angular. Il agit comme une source unique de vérité pour l'état de votre application, fournissant des règles simples pour des mutations d'état prévisibles. NGXS est modélisé d'après le modèle CQRS couramment implémenté dans des bibliothèques comme Redux et NgRx, mais réduit le passe-partout en utilisant des fonctionnalités TypeScript modernes telles que les classes et les décorateurs. NGXS est un state management Framework qui implémente le modèle de conception CQRS, tout comme Redux [5]. Figure 31: L'architecture de NGXS
  • 54. 54 b) Le pattern Façade Le patron de conception (ou design pattern) façade a pour but de cacher une conception et une interface complexe difficile à comprendre. Une façade peut être utilisée pour :  rendre une bibliothèque plus facile à utiliser, comprendre et tester;  rendre une bibliothèque plus lisible;  réduire les dépendances entre les clients de la bibliothèque et le fonctionnement interne de celle-ci, ainsi on gagne en flexibilité pour les évolutions futures du système;  assainir une API que l'on ne peut pas modifier si celle-ci est mal conçue, ou mieux découper ses fonctionnalités si celle-ci n'est pas assez claire Figure 32: Le pattern Façade
  • 55. 55 D. Sécuriser l’API REST REST (pour REpresentational State Transfer) est un style d’architecture basé sur le protocole HTTP et qui permet de manipuler des ressources via un URI. Pour manipuler ces ressources, une API REST utilise les méthodes HTTP suivantes :  GET : Récupération d’une ressource;  POST : Ajout d’une ressource;  PUT : Mise à jour partielle d’une ressource;  DELETE : Suppression d’une ressource;  HEAD : Similaire à GET, mais permet uniquement de récupérer les en-têtes HTTP. Comment sécuriser les échanges entre le client et serveur :  Utilisation de HTTPS : la première étape de la sécurisation d’une API REST est l’utilisation du protocole HTTPS. Cela permettra de chiffrer les données transmises et reçues empêchant ainsi leur lecture.  Authentification : Le mécanisme authentification des échanges entre le client et l’API REST, une API REST est sans état (stateless) c’est-à-dire qu’il n’y a pas de session côté serveur pour l’authentification de l’utilisateur. De ce fait, chaque requête doit contenir les informations nécessaires à l’authentification. JWT : JSON Web Token est un standard ouvert décrit dans la RFC 7519 qui permet l’authentification d’un utilisateur à l’aide d’un jeton (token) signé. Le principe est le suivant :  Lors du premier échange, le client envoie son couple login/mot de passe au serveur;  Si le couple est valide, le serveur génère un token et l’envoie au client. Ce token permettra d’authentifier l’utilisateur lors des prochains échanges;  Le client stocke ensuite le token en local;  Le token est renvoyé, par le client, pour chaque appel à l’API (via l’en-tête HTTP « Authorization ») permettant ainsi d’authentifier l’utilisateur.
  • 56. 56 Figure 33: Utilisation du JWT  Header : La première partie du JWT est le header. Il s’agit d’un objet JSON encodé en base64 qui représente l’en-tête du token. Il est composé de deux parties :  Le type du token;  L’algorithme utilisé pour la signature.  Payload : La seconde partie du JWT est le payload. Il s’agit tout comme le header, d’un objet JSON encodé en base64 qui représente cette fois-ci le corps du token. C’est dans cette partie que l’on mettra les informations de l’utilisateur (identifiant, rôle, etc.)  Propriétés réservées : Il s’agit de noms réservés définis par la spécification.  Propriétés publiques : Il s’agit de noms normalisés tels que “email”, “name”, “locale”, etc. La liste complète est disponible à cette adresse;  Propriétés privées : Il s’agit de propriétés que vous définissez vous même pour répondre aux besoins de votre application.
  • 57. 57  Signature : La dernière partie est la signature du token. Il s’agit d’un hash des deux premières parties du token réalisé en utilisant l’algorithme qui est précisé dans le header. Dans notre exemple de token ci-dessus, l’algorithme utilisé est HS256 (HMAC-SHA-256). Conclusion Ce chapitre était une étude technique et conceptuelle détaillée, qui a exposé la modélisation du projet, l'analyse et spécifications fonctionnelles a permis d'avoir une idée à la fois globale et détaillée sur le projet a mené pendant la période du stage. Le chapitre suivant présentera nos réalisations.
  • 58. 58 Chapitre 4 : Réalisation Introduction Dans le chapitre qui suit, nous allons présenter l’environnement de travail, les interfaces utilisateurs de l’application ainsi que les tests d’évaluation du produit final. 1. Outils de travail Figure 34: Power Designer Afin de modéliser notre travail en langage UML, nous avons utilisé un logiciel complet de modélisation intitulé Power AMC dans sa version 15.1. C’est un outil tout-en-un de modélisation d’entreprise et de gestion de métadonnées destiné à documenter l’architecture d’entreprise
  • 59. 59 Figure 35: SQL SERVER 2017 Nous avons utilisé SQL SERVER dans sa version 14.0.X comme système de gestion de base de données relationnel (SGBDR) SQL SERVER peut stocker plus de types de données que les types traditionnels : entiers, caractères... Figure 36: VISUAL STUDIO 2019 Microsoft Visual Studio est une suite de logiciels de développement pour Windows et mac OS conçue par Microsoft. La dernière version s'appelle Visual Studio 2017. Visual Studio est un ensemble complet d'outils de développement permettant de générer des applications web ASP.NET, des services web XML, des applications bureautiques et des applications mobiles. Visual Basic, Visual C++, Visual C# utilisent tous le même environnement de développement intégré (IDE), qui leur permet de partager des outils et facilite la création de solutions faisant appel à plusieurs langages. Par ailleurs, ces langages permettent de mieux tirer parti des fonctionnalités du Framework .NET, qui fournit un accès à
  • 60. 60 des technologies clés simplifiant le développement d'applications web ASP et de services web XML grâce à Visual Web Développer. Figure 37: Visual Studio Code Visual Studio Code est présenté lors de la conférence des développeurs Build d'avril 2015 comme un éditeur de code multiplateforme, open source et gratuit, supportant une dizaine de langages3. Il est basé sur Electron, une structure utilisée pour déployer des applications Node.js pour le bureau exécuté sur le moteur Blink. Bien qu'il utilise le Framework Electron, le logiciel n'utilise pas Atom mais utilise le même composant éditeur (nommé "Monaco") utilisé dans Azure DevOps (anciennement appelé Visual Studio Online et Visual Studio Team Services). Figure 38: GitLab GitLab est un logiciel libre de forge basé sur git proposant les fonctionnalités de wiki, un système de suivi des bugs, l’intégration continue et la livraison continue GitLab SQLI ISC Maroc est un dépôt des codes source des projets SQLI ISC Maroc.
  • 61. 61 Figure 39: Azure App service Azure App Service est un service d’hébergement web complètement managé permettant de créer des applications web, des back-ends mobiles et des API RESTful. Des sites web de petite taille aux applications web à l’échelle mondiale. 2. Technologies utilisées Figure 40: Framework .Net Core .NET Core (prononcé « dot net ») est un cadriciel (Framework) Libre et Open Source pour les systèmes d'exploitation Windows, macOS et Linux8. Il comprend CoreCLR, un environnement d'exécution complet de CLR, la machine virtuelle qui gère l'exécution des programmes .NET.
  • 62. 62 ASP.NET Core est un Framework Web gratuit et open-source, développé par Microsoft et la communauté. Il est plus performant qu'ASP.NET. C'est un Framework modulaire qui fonctionne à la fois avec le Framework .NET, sous Windows et .NET Core en multiplateforme. Entity Framework (EF Core) est le mapping objet-relationnel utilisé par la technologie Microsoft .NET. Il est écrit en langage C#. Language Integrated Query (LINQ) (Requête intégrée au langage, aussi connu sous le nom de LINQ) est un composant du Framework .NET de Microsoft qui ajoute des capacités d'interrogation sur des données aux langages .NET en utilisant une syntaxe proche de celle de SQL. Le Transact-SQL (T-SQL) est une extension propriétaire de Sybase et Microsoft au langage SQL. Transact-SQL a été développé à l'origine par la société Sybase, dès les premières versions de son moteur de base de données du même nom. De manière similaire au PL/SQL d'Oracle, Transact-SQL fournissait le moyen d'étendre les fonctionnalités de base du SGBD, via des programmes appelés "procédures stockées". Figure 41: La bibliothèque SignalR SignalR est une bibliothèque de logiciels libres et open-source pour Microsoft ASP.NET qui permet au code serveur d'envoyer des notifications asynchrones aux applications Web côté client. La bibliothèque comprend des composants JavaScript côté serveur et côté client.
  • 63. 63 Figure 42: Email SendGrid Azure SendGrid est un service de messagerie dans le cloud qui fournit des fonctionnalités fiables en matière de remise de courrier électronique transactionnelle, d'extensibilité et d'analyse en temps réel, ainsi que des API flexibles qui facilitent l'intégration personnalisée. Voici quelques cas d’utilisation courants de SendGrid :  Envoi automatique de reçus ou de confirmations d’achat aux clients  Gestion de listes de distribution pour l’envoi mensuel de brochures et de promotions aux clients  Collecte de mesures en temps réel, notamment en ce qui concerne les e-mails bloqués et l’engagement des clients  Transfert des demandes de renseignements des clients.  Traitement des messages électroniques entrants. Figure 43: Angular 9
  • 64. 64 Angular est un Framework open source écrit en JavaScript qui permet la création d’applications Web et plus particulièrement de ce qu’on appelle des « Single Page Applications » : des applications web accessibles via une page web unique qui permet de fluidifier l’expérience utilisateur et d’éviter les chargements de pages à chaque nouvelle action. Le Framework s'appuie sur TypeScript, une surcouche au JavaScript développé par Microsoft, qui est un langage typé qui permet de créer des classes, des variables et des signatures de fonction. Figure 44: Material Design Material Design est à la base un langage de design lancé par Google lors de sa conférence Google I/O le 24 Juin 2014. Visant principalement l'interface utilisateur des applications mobiles et web, ce langage apporte plusieurs nouveautés graphiques en termes d'animations, d'effets d'ombres et lumières, de transitions et de mises en page. L'implémentation du Material Design pour les interfaces utilisateur d'applications web est appelée Polymer Paper éléments. Il existe à travers la librairie Polymer qui fournit une API de composants web aux navigateurs qui n'implémentent pas nativement le standard ainsi que par une collection d'éléments appelée Paper éléments collection.
  • 65. 65 3. Déploiement sur Microsoft Azure (Saas) Azure App Service est un service pour l’hébergement d’applications web, d’API REST et de backends mobiles. Vous pouvez développer dans votre langage préféré, par exemple .NET, .NET Core, Java, Ruby, Node.js, PHP ou Python. Les applications s’exécutent et sont mises à l’échelle facilement dans les environnements Windows et Linux. App Service ajoute la puissance de Microsoft Azure à votre application, notamment la sécurité, l’équilibrage de charge, la mise à l’échelle automatique et la gestion automatisée. Vous pouvez également bénéficier de ses fonctionnalités DevOps, notamment le déploiement continu à partir de Azure DevOps, GitHub, Docker Hub et d’autres sources, la gestion des packages, les environnements intermédiaires et les certificats SSL. Avec App Service, vous payez pour les ressources de calcul Azure que vous utilisez. Les ressources de calcul que vous utilisez sont déterminées par le plan App Service sur lequel vous exécutez vos applications. En plus d’App Service, Azure offre d’autres services qui peuvent être utilisés pour l’hébergement de sites et d’applications web. Pour la plupart des scénarios, App Service est le meilleur choix. Pour l’architecture .net et même pour les applications Angular, et la raison pour laquelle on a choisir de déployer notre application via le Platform Azure. [6] L’image ci-dessus montre un processus de dépoilement d’une application back end. Figure 45: Le processus de déploiement d'une application BACKEND
  • 66. 66 4. Description de l’application A. Authentification La première interface qui apparait est celle de l’authentification : Figure 46: Page d’authentification Lors de sa première authentification, l’utilisateur saisie le nom d’utilisateur et le mot de passe donné par défaut lors de la création de son compte par l’admin. Puis il doit obligatoirement changer le mot de passer pour garder sa confidentialité Figure 47: changement de mot de passe lors de la première authentification
  • 67. 67 Lorsque l’utilisateur change son mot de passe, il reçoit un message dans sa boite mail indiquant les informations de login qu’il peut utiliser par la suite. Figure 48: CONFIRMATION DE CHANGEMENT DE MOT DE PASSE PAR MAIL Si l’utilisateur a oublié son mot de passe, il peut le réinitialiser en cliquant sur le lien (Mot de passe oublié ?) qui apparait dans la page d’authentification et qui affiche une boite de dialogue dans laquelle il doit réécrire son mail. Figure 49: REINITIALISER LE MOT DE PASSE – 1ERE ETAPE
  • 68. 68 Lorsque l’utilisateur vérifie sa boite mail, il trouve le message suivant : Ce lien le revoie vers la page suivante dans laquelle il peut saisir le nouveau mot de passe. Figure 51: réinitialiser le mot de passe – 3ème étape Après cette étape d’authentification, l’utilisateur peut accéder à son propre espace selon son rôle. B. Espace Admin : Comme indiqué précédemment l’admin est l’acteur responsable de :  La gestion des comptes des autres admins, Skill center managers et partenaires.  La gestion des skill centers disponible au sein de SQLI. Figure 50: réinitialiser le mot de passe – 2ème étape
  • 69. 69  La gestion des technologies et de leurs types. La première interface qui apparait après l’authentification de l’admin est le Dashboard. Elle contient des statistiques concernant le nombre total de toutes les offres créées par tous les skill center managers ainsi que le nombre total de tous les partenaires ayant un compte au sein de l’application. Figure 52: Dashboard - Espace Admin  Gestion des utilisateurs : L’interface ci-dessous permet de lister toutes les informations des utilisateurs (Admin, Skill center manager) crées par cet admin ainsi que celles du responsable partenaire crée. Figure 53: La liste des utilisateurs Par le partenaire (le partenaire est aussi créé par l’Admin dans la section « partners ») et l’admin partenaire qui se crée par défaut lors de la création du partenaire avec la possibilité de rechercher selon un ou tous les critères.
  • 70. 70 Par exemple, si on choisit dans la liste déroulante des rôles : « Skill Center Manager », la liste affichera seulement les utilisateurs ayant ce rôle. Figure 54: La recherche des utilisateurs par rôle De même, si on choisit dans la liste déroulante des partenaires : « partner2 » la liste affichera les informations de son compte principal et ses responsables partenaires. Figure 55: La recherche des utilisateurs par partenaire Cette interface contient aussi une option permettant de activer/désactiver le compte d’un utilisateur (admin et skill center manager et non pas le partenaire). Si le compte est désactivé, l’utilisateur ne pourra plus accéder à l’application jusqu’à réactivation.
  • 71. 71 L’admin peut aussi ajouter un admin ou un skill center manager via le bouton ajouter qui se trouve dans la même interface. Le clic sur ce bouton affiche le formulaire suivant : Figure 56: Formulaire d'ajout d'un utilisateur par l'admin Pour l’ajout d’un admin on choisit le rôle Admin et on saisit tous les champs obligatoirement: Figure 57: Formulaire d'ajout d'un admin Pour l’ajout d’un skill center manager, après le choix du rôle « skill center manager » une nouvelle liste déroulante s’affiche contenant tous les skill centers (ajoutés par l’admin dans la section skill centers).
  • 72. 72 Figure 58: Formulaire d'ajout d'un skill center manager Le clic sur le bouton modifier qui se trouver dans la grille (n’existe pas pour les responsables partenaires et les admins partenaires) ouvre la même fenêtre avec les champs déjà remplis par les informations de l’utilisateur à modifier Figure 59: Modifier un utilisateur
  • 73. 73  Gestion des partenaires : L’interface ci-dessous permet de lister toutes les informations des partenaires crées par cet admin avec la possibilité de rechercher selon un ou tous les critères. Figure 60: Liste des partenaires Même interface contient l’option de désactivation/activation des partenaires. La désactivation d’un partenaire désactive tous les comptes associés et l’activation active seulement le compte principal comme illustré dans les figures suivantes. Figure 61: Désactiver un partenaire En revenant à l’interface des utilisateurs, on remarque que les comptes (respoPartner1 et AdminRespoPartner1) associé au partner1 qu’on a désactivé sont aussi désactivés.
  • 74. 74 Figure 62: Désactiver tous les comptes associés au partenaire Cette interface permet aussi d’ajouter un partenaire : créer son compte principal. Figure 63: Formulaire de modification d'un partenaire
  • 75. 75  Gestion des Skills Centers : La gestion des skill centers est l’opération visant à lister, afficher, modifier et supprimer un skill center. L’interface suivante affiche les noms de tous les skill centers déjà crées par cet admin. Figure 64: Liste des skill centers  Gestion des types de technologies : Lors de la création d’une offre par un Skill center Manager, il doit déterminer le type de profil ou de technologies auxquels l’offre est destinée. Donc on doit gérer ces types dans l’espace admin. La figure ci-dessous montre la liste des types de technologies déjà crées par cet admin. Figure 65: Liste des types de technologies  Gestion des technologies : Les des types de technologies vus précédemment ont permis de créer des technologies ayant l’un de ces types.
  • 76. 76 Voici un exemple de la liste de ces technologies. Figure 66: Liste des technologies C. Espace Manager : La première interface qui apparait après l’authentification de Manager est le Dashboard. Elle contient des statistiques concernant le nombre total de toutes les offres créées par skill center manager avec une liste contient les dernières offres Figure 67: Dashboard - Espace Manager  Gestion des offres : L’interface ci-dessous permet de lister toutes les offres crées par ce Manager
  • 77. 77 Figure 68: La liste des offres L’interface ajouter une Offre : Figure 69: Formulaire d'ajout d'une offre
  • 78. 78 L’interface des compétences : Figure 70: La liste des compétences L’interface des propositions qui permet de lister tous les candidats d'une offre, ces propositions ont été proposées par les partenaires Figure 71: Liste des propositions d’une offre
  • 79. 79 Le manager peut également consulter les informations du candidat avec son CV ou le télécharger Figure 72: les informations d'un candidat L’interface de suivi une offre: Pour suivre le processus de recrutement, le manage à un tableau de bord Kanban Il se compose de 5 étapes :  Proposée  Pré-entretien  Entretien  Recruté  Rejeté Pour passer d'une étape à l'autre, il suffit de glisser-déposer (Drag and Drop).
  • 80. 80 Figure 73de : Le tableau de board Kanban pour le recrutment En phase « Recrute », le manager remplira la Fiche d'entretien : Figure 74: Fiche d'entretien d'un candidat A l'expiration de l'offre, le manager l'archive : Figure 75: Archiver une offre
  • 81. 81 Lorsque le partenaire fait une proposition de candidature, le gestionnaire est informé en même temps (synchrone) Figure 76: Notification de nouvelle proposition D. Espace Partenaire :  Gestion des propositions : La première interface qui apparait après l’authentification de Partenaire est le Dashboard Elle contient des statistiques concernant le nombre total de toutes les offres qu'il a le droit de consulter et le nombre total des candidats avec une liste contient les dernières offres et nombre des propositions dans chaque offre. Figure 77: Dashboard - Espace Partenaire
  • 82. 82 L'interface ci-dessous permet de lister toutes les offres qu'il a le droit de consulter et deux actions; Proposer pour faire une proposition et Détails pour afficher les détails d'une offre Figure 78: Liste des offres pour partenaire Si vous cliquez sur "Proposer", une Pop-Up s'affiche, et vous pouvez proposer le candidat et ajouter le prix de son travail Sauvegarder pour enregistrer la proposition uniquement, et Envoyer pour envoyer la proposition au Manager Figure 79: Proposer un candidat.
  • 83. 83 L'interface ci-dessous vous permet de lister toutes les propositions liées à une offre, avec la possibilité de modifier le prix, afficher le candidat, supprimer ou envoyer la proposition. Figure 80: Détails d'une proposition d’offre  Gestion des candidats : L'interface ci-dessous permet de lister toutes les candidats crées par ce partenaire Cette interface vous permet également de télécharger le CV Figure 81: Liste des candidats
  • 84. 84 Conclusion Dans ce chapitre, nous avons présenté certaines des interfaces d'application que nous avons développées et nous avons montré le déploiement de notre d'application dans Microsoft Azure, et nous avons également parlé des outils et technologies utilisés dans le développement.
  • 85. 85 Conclusion générale Notre projet de fin d’étude effectuée au sien de SQLI ISC RABAT, nous a permet de toucher le métier d’ingénieurs informaticiens, toute en participant à la réalisation technique des projets qualifiés .Net. En effet notre sujet de projet de fin d’étude consiste à la conception et la réalisation d’une plateforme Web de mise en relation des porteurs dédié aux évaluateurs techniques, Rh et managers afin de garantir un déroulement automatisé du processus de recrutement des collaborateurs freelances. Dès le démarrage de ce projet on a opté pour le mode agile, dans nous avons eu l’opportunité de voir ainsi bien assimiler les rubriques élémentaires de la méthode de conduite SCRUM, du coup dans chaque sprint mise en œuvre on a définir les besoins et les spécifications fonctionnelles de notre application, suivi d’une conception détaillée puis l’arrivé de la phase du développement et du déploiement pour entamer le « Sprint Review » et c’est comme ça qu’on a procéder pour achever notre solution. Par ailleurs, ce projet nous était une occasion intéressante pour raffiner nos capacités d'abstraction et de conception. En outre, ce projet nous a permis d'approfondir nos connaissances techniques et d'acquérir un esprit rigoureux d'analyse permettant d'apporter des solutions convenables aux problèmes rencontrées, ainsi que d’acquérir de nouvelles connaissances et de renforcer nos compétences concernant le développement .NET Le stage s’est déroulé sans souci majeur, la seule difficulté était le stress du télétravail en raison de l'épidémie de Covid-19 avec la livraison de l’application sans dépasser le délai. Et autant que débutants dans le domaine professionnel, on s’est trouvé au début face à des petits problèmes de gestion de temps et de nouvelles connaissances. Et grâce à notre encadrant et collaborateurs SQLI, on a pu surmonter ces difficultés, livrer le projet à temps et satisfaire le client. Enfin, ce stage fut une expérience très enrichissante pour nous sur les deux plans personnels et professionnels. En effet, il a été l’occasion de découvrir le dynamisme et l’enthousiasme qui caractérisent l’équipe de Microsoft de SQLI Rabat.
  • 86. 86 Bibliographie [1] : https://www.sqli.com/Accueil/Groupe [2] : La méthode Agile - Optimisation de la relation "client / fournisseur" « Chronique de Gael Cadoret INGIN » [3] : https://docs.microsoft.com/fr-fr/dotnet/architecture/modern-web-apps-azure/common- web-application-architectures [4] : https://blog.octo.com/cqrs-larchitecture-aux-deux-visages-partie-1/ [5] : https://www.ngxs.io/ [6] : https://docs.microsoft.com/fr-fr/azure/app-service/overview Autres sources (Définitions) : https://fr.wikipedia.org
  • 87. 87 Annexes E-challenge : une compétition organisée chaque année par le groupe SQLI, afin de choisir les étudiants qui vont faire un stage PFE.  Les Maquettes : Figure 82: Maquette pour l’Authentification Figure 83: Maquette pour la liste des offres
  • 88. 88 Figure 84: Maquette pour ajouter une offre Figure 85: Maquette pour suivre les offres
  • 89. 89 Figure 86: Maquette pour la liste des propositions Figure 87: Maquette pour envoyer les propositions
  • 90. 90 Figure 88: Maquette pour l'ajout d'un candidat