Vous êtes sur la page 1sur 82

Cycle de formation des ingénieurs en Télécommunications

Option :

MIT

Rapport de Projet de fin d’études

Thème :

« Développement d'une application web et


mobile pour classer les documents scannés »

Réalisé par :
Hazem BOUAZIZ

Encadrant (s) :
M. Hatem MASMOUDI

Mme. Malek BEN YOUSSEF

Travail proposé et réalisé en collaboration avec

Année universitaire: 2022/2023


Signature et cachet
Dédicace

Ce travail est dédié,

À mes merveilleux parents, qui m’ont apporté un soutien indéfectible tout au long de ce parcours,
qui ont toujours cru en moi et m’ont encouragé à poursuivre mes aspirations.

À mon merveilleux frère, pour son amour et ses encouragements indéfectibles, ainsi que pour
sa gentillesse sans fin et son soutien indéfectible.

À mes bons copains et collègues à Telnet qui ont toujours été là pour moi et n’ont jamais
cessé de me guider.
Remerciements

Je suis très heureux d’exprimer mon appréciation et ma gratitude à tous ceux qui m’ont aidé,
assisté et guidé tout au long de ce projet.

En particulier, je voudrais exprimer ma sincère gratitude à mon superviseur à TELNET Holding,


M. Hatem MASMOUDI, pour m’avoir accepté comme membre de son équipe, pour m’avoir
fourni tout le soutien nécessaire et pour avoir été disponible à chaque fois que j’ai eu besoin de
lui. Sans son aide, ce projet n’aurait pas pu aboutir.

Je tiens à exprimer ma sincère gratitude à Mme Malek BEN YOUSSEF, mon encadrante ,
pour sa disponibilité, son accompagnement, son suivi régulier, son excellent encadrement et ses
précieuses suggestions.

Je tiens également à exprimer ma gratitude à tous les membres du jury qui ont accepté d’évaluer
mon travail.
TABLE DES MATIÈRES Hazem B OUAZIZ

Table des matières

Dédicace ii

Remerciements iii

Table des matières vii

Table des figures ix

Liste des acronymes x

Introduction Générale 1

1 Étude Préalable 3
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Description de l’organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Groupe Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Contexte historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Secteurs d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Cadre général de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Contexte général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Choix méthodologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Méthodologie Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Framework SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Page iv
TABLE DES MATIÈRES Hazem B OUAZIZ

2 Etat de l’art 11
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Procédure d’embauche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Etude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Microservice de classification . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Outils de gestion des CVs «Application Mobile» . . . . . . . . . . . . 13
2.3.3 Outils de gestion des documents «Application Web» . . . . . . . . . . 14
2.4 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Les Concepts de bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6.1 Traitement Automatique du Langage Naturel (TAL) . . . . . . . . . . 17
2.6.2 La Reconnaissance Optique de Caractères (ROC) . . . . . . . . . . . . 17
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Analyse et spécification des besoins 19


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Analyse des besoins globaux . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.1 Acteurs de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.2 Besoins fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.3 Besoins non fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 Diagramme des cas d’utilisation général . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Diagramme des cas d’utilisation du micorservice de classification . . . 21
3.3.2 Diagramme des cas d’utilisation général de l’application mobile . . . . 22
3.3.3 Diagramme des ca d’utilisation général de l’application web . . . . . . 23
3.4 Architecture de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.1 Architecture physique . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.2 Architecture logique . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5 Planification des sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.6.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.6.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7 Technologies utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7.1 Languages de programmation . . . . . . . . . . . . . . . . . . . . . . 28
3.7.2 Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.7.3 Système de gestion de base de données . . . . . . . . . . . . . . . . . 30
3.7.4 Système de gestion de base de projet . . . . . . . . . . . . . . . . . . . 30

Page v
TABLE DES MATIÈRES Hazem B OUAZIZ

3.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4 Sprint 1 : Réalisation des améliorations sur l’application "Resume Scanner" 31


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Etude bibliographique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4 Spécification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4.1 Diagrammes de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . 34
4.4.2 Diagramme de séquence système pour le scénario « S’authentifier » . . 34
4.5 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5 Sprint 2 : Développement de microservice du modèle de classification 42


5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3 Spécification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.1 Description de moteur de classification . . . . . . . . . . . . . . . . . 43
5.3.2 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . 44
5.3.3 Diagramme de séquence système du cas «Classification des CVs» . . . 45
5.3.4 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6 Sprint 3 : Développement de l’application Web "Telnet Resume Scanner" TRS 50


6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.2 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.3 Spécifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.3.1 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . 52
6.3.2 Diagramme de séquence pour le sénario« S’authentifier » . . . . . . . . 52
6.4 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.4.1 Diagramme de séquence objet pour le scénario « ajout d’un nouveau
utilisateur » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.5 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

7 Sprint 4 : Déploiement de l’application "TRS" sur le serveur de Telnet 63


7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.2 Importance de déploiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Page vi
TABLE DES MATIÈRES Hazem B OUAZIZ

7.3 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64


7.4 Comparaison entre le mode DEV et PROD . . . . . . . . . . . . . . . . . . . . 64
7.5 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Conclusion Général et perspectives 69

Netographie 70

Page vii
TABLE DES FIGURES Hazem B OUAZIZ

Table des figures

1 Telnet Holding logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


2 Secteurs d’activités de Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Méthodologie Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 Processus SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5 Pipeline du moteur de classification . . . . . . . . . . . . . . . . . . . . . . . 13


6 Architecture de l’application mobile . . . . . . . . . . . . . . . . . . . . . . . 16

9 DeepFace Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
11 DeepFace Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12 Architecture physique de la solution . . . . . . . . . . . . . . . . . . . . . . . 24
13 Architecture logique de la solution . . . . . . . . . . . . . . . . . . . . . . . . 25

14 Diagramme du cas d’utilisation « Gérer les rôles » . . . . . . . . . . . . . . . . 34


15 Diagramme de séquence du scénario « S’authentifier » . . . . . . . . . . . . . 35
16 Interface d’authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
17 Interface d’alerte sur l’authentification . . . . . . . . . . . . . . . . . . . . . . 38
18 Interface de scan un CV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
19 Interface de consultation des images stockées en local . . . . . . . . . . . . . . 40
20 Interface de classification d’un CV . . . . . . . . . . . . . . . . . . . . . . . . 41

21 Classification des CVs à travers le mode standalone . . . . . . . . . . . . . . . 44


22 Diagramme de cas d’utilisation pour le microservice de classification . . . . . . 44
23 Diagramme de séquence système du cas «Classification des CVs» . . . . . . . 45
24 Web service de la classification d’un CV . . . . . . . . . . . . . . . . . . . . . 46
25 Email contenant les détails de classification . . . . . . . . . . . . . . . . . . . 47

Page viii
TABLE DES FIGURES Hazem B OUAZIZ

26 Web service de la suppression d’un CV . . . . . . . . . . . . . . . . . . . . . 47


27 Nombre de CV par profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
28 Nombre de CV par date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
29 L’état de système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

30 Diagramme du cas d’utilisation « Gérer les utilisateurs» . . . . . . . . . . . . . 52


31 Diagramme du cas d’utilisation « Gérer les CVs» . . . . . . . . . . . . . . . . 52
32 Diagramme de séquence système du cas « S’authentifier » . . . . . . . . . . . 53
33 Diagramme de séquence d’ajout d’un nouveau utilisateur . . . . . . . . . . . . 55
34 Interface d’authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
35 Interface de création de compte . . . . . . . . . . . . . . . . . . . . . . . . . . 57
36 Email pour restaurer le mot de passe . . . . . . . . . . . . . . . . . . . . . . . 57
37 Interface pour restaurer le mot de passe . . . . . . . . . . . . . . . . . . . . . 58
38 Interface de profil de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . 58
39 Interface pour restaurer le mot de passe . . . . . . . . . . . . . . . . . . . . . 59
40 Interface pour créer un nouvel utilisateur . . . . . . . . . . . . . . . . . . . . . 60
41 Interface pour changer le mot de passe . . . . . . . . . . . . . . . . . . . . . . 60
42 Interface de tableau de bord de l’administrateur . . . . . . . . . . . . . . . . . 61
43 Interface de l’ajout d’un CV . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
44 Interface de la liste des CVs . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

45 Générer le dossier "dist" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66


46 Architecture du dossier ressources . . . . . . . . . . . . . . . . . . . . . . . . 67
47 Génération de fichier JAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
48 Exécution de fichier JAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Page ix
LISTE DES ACRONYMES Hazem B OUAZIZ

Liste des acronymes

CV Curriculum Vitae

UML Unified Modeling Language

SGBD Système de Gestion de Base de Données

API Application Programming Interface

REST Representational State Transfer

BD Base de données

HTTP Hypertext Transfer Protocol

JPA Java Persistence API

JPA Java Persistence API

SYNC Synchronisation

Page x
INTRODUCTION GÉNÉRALE Hazem B OUAZIZ

Introduction Générale

Au fil des années, le secteur de l’informatique a connu une croissance exponentielle en


matière de recrutement.

Les entreprises qui publient des offres d’emploi ou de stages reçoivent un grand nombre de
candidatures, ce qui rend le traitement des CVs laborieux pour les employés du département
des ressources humaines chargés de les traiter.

Pour faciliter ce processus, les entreprises ont commencé à utiliser des logiciels
d’intelligence artificielle, basés sur l’apprentissage automatique, pour trier et sélectionner les
candidatures en fonction des profils recherchés.

Cependant, chez Telnet, l’entreprise où nous avons effectué notre stage de fin d’études,
les employés du département des ressources humaines peuvent manquer des compétences
scientifiques nécessaires pour bien classifier les CVs et les affecter aux postes adéquats. Pour y
remédier, Telnet a décidé de mettre en place un outil d’intelligence artificielle pour automatiser
ce processus de classification des CVs. Nous avons conçu un moteur de classification de
CVs qui permet de faire correspondre chaque CV à un profil spécifique, tel qu’un ingénieur
électronique, informatique ,...etc.

Page 1
INTRODUCTION GÉNÉRALE Hazem B OUAZIZ

Grâce à cet outil, nous allons créer une solution intégrée à une application web et une
application mobile qui peuvent gérer numériquement les CVs.

Notre projet de fin d’études à l’École supérieur des communications de Tunis est structuré
en quatre parties principales, dans le contexte de la mise en place d’un outil d’intelligence
artificielle pour la gestion des CVs. La première partie se concentre sur la création d’un outil
utilisant l’architecture microservices, qui permettra d’utiliser le moteur de classification des
CVs. La deuxième partie consiste à développer une application web pour gérer les rôles et les
utilisateurs. La troisième partie se concentre sur la réalisation d’un module de gestion des CVs
au sein de l’application web. Enfin, la dernière partie vise à développer une partie permettant
d’utiliser une application mobile existante en mode hors ligne.

Notre rapport est organisé en plusieurs chapitres. Le premier chapitre présentera l’entreprise
d’accueil, le contexte général de notre projet, ainsi que notre choix méthodologique. Le
deuxième chapitre sera dédié à la présentation du procédure d’embauche, en commençant par
une étude de l’existant et en présentant ensuite notre solution proposée pour répondre aux
besoins de Telnet et l’architecture de la solution.

Le troisième chapitre sera consacré à la spécification et l’analyse des besoins. Nous


commencerons par une analyse des besoins de notre projet. Ensuite, nous détaillerons la
planification des sprints et nous terminerons ce chapitre en présentant l’environnement de travail
dans lequel nous avons travaillé et les technologies utlisées.

Les quatrième, cinquième, sixième et septième chapitres seront consacrées au


développement des différents sprints de notre projet.

Finalement, Ce rapport sera achevé par une conclusion générale et perspectives.

Page 2
ÉTUDE PRÉALABLE Hazem B OUAZIZ

Chapitre
Chapter

1
Étude Préalable

1.1 Introduction

Nous commençons ce chapitre par une présentation générale de l’organisme d’accueil puis
une présentation du contexte général de projet, la description et la critique de l’existant ainsi
que la solution à élaborer. Enfin nous clôturons ce chapitre en montrant la méthodologie utilisée
au cours du développement.

1.2 Description de l’organisme d’accueil

1.2.1 Groupe Telnet

TELNET [1] est une société tunisienne d’ingénierie et de conseil dédiée à l’innovation et
à la haute Technologies a été créé en 1994. Dans un contexte mondial, il y a eu les technologies
de l’information et la mondialisation économique, qui interfèrent avec Télécommunications
(Multimédia), Transport (Automobile), Défense (Avionique), Sécurité (Cartes à puce),
Électronique, Industrie et Systèmes mode de paiement. La figure 1 représente le logo de Telnet.

Page 3
ÉTUDE PRÉALABLE Hazem B OUAZIZ

F IGURE 1. Telnet Holding Logo [1]

1.2.2 Contexte historique

Fondée en 1994 en tant que start-up avec seulement sept ingénieurs pour répondre à
la demande croissante de développement de logiciels, TELNET a élargi son champ de
développement en 1995 et a établi une zone de développement international avec un groupe
international en 1995. Depuis 1997, elle s’est spécialisée dans le développement offshore au
profit de grands groupes internationaux. En 2001, elle reçoit le Prix de l’Innovation de la
Chambre de Commerce et d’Industrie franco-tunisienne. En 2004, TELNET comptait plus
d’une centaine d’ingénieurs. Depuis 2011, la société est cotée à la Bourse de Tunis. TELNET
compte aujourd’hui quatre sites en Tunisie et un en France et en Allemagne, employant plus de
600 personnes [1].

1.2.3 Secteurs d’activité

Les principaux domaines d’expertise [1] de TELNET sont l’ingénierie logicielle et


matérielle, l’intégration des réseaux et des télécommunications, et l’ingénierie mécanique. Au
cours de ses plus de 20 ans d’existence, TELNET a accumulé des connaissances en ingénierie
dans divers domaines. La figure 2 représente la variété des activités proposées par Telnet.

Page 4
ÉTUDE PRÉALABLE Hazem B OUAZIZ

F IGURE 2. Secteurs d’activités de Telnet

• Études logicielles : Conception et développement de produits logiciels dans


divers domaines d’activités télécommunications, multimédia, transport, produits de
consommation, sécurité et défense.
• Systèmes électroniques : Conception et design en électronique et en microélectronique,
test et validation de systèmes électronique.
• Réseaux et télécommunications : Réalisation de prestations d’ingénierie dans les
domaines des réseaux de télécommunications.

Page 5
ÉTUDE PRÉALABLE Hazem B OUAZIZ

• Ingénierie de produits mécaniques : Conception assistée par ordinateur et simulation


mécanique, fabrication assistée par ordinateur et processus d’industrialisation
• Industrie et énergie : Les initiatives clés de cette catégorie concernent les compteurs
industriels et les répéteurs de son, qui sont développés sur plusieurs plateformes.

1.3 Cadre général de projet

1.3.1 Contexte général

Actuellement, le processus de recrutement de Telnet est manuel. Ce dernier va suivez les


étapes suivantes :

• Analyse des besoins en ressources humaines (expression des besoins).


• Recherche des candidats à l’embauche.
• Étude des candidatures.
• Validation du recrutement.
• Clôture du recrutement.

Nous allons dans cette section nous limiter à la présentation de la phase d’exploitation
des candidatures. Les dossiers de candidature, qui comportent généralement, une demande
d’emploi, le CV, les diplômes, parviennent à la société via Internet par e-mail. Les candidatures,
sont étudiées par le service ressources humaines. Un premier tri manuel est effectué sur la
base de la fiche de fonction et des critères de sélection prédéfinis. Les candidats retenus sont
convoqués pour un premier entretien par le service ressources humaines. Le service ressources
humaines recherche une adéquation entre le profil défini et le bilan de l’entretien. Sur cette
base, le service ressources humaines identifie une liste, qu’il présente, pour un second entretien
au responsable du service de la direction. Une décision collégiale est prise après concertation
entre le service ressources humaines et la direction pourvoyeuse du poste. Pour cela, Telnet a
besoin d’une solution pour automatiser ce processus.

Page 6
ÉTUDE PRÉALABLE Hazem B OUAZIZ

1.3.2 Problématique

Dans cette section, on va présenter les problèmes liés au processus actuel. L’opération du
premier tri est effectuée par le service ressources humaines n’ont pas forcément les compétences
nécessaires pour bien affecter les CVs reçus notamment les candidatures spontanées au poste
adéquat. Ceci peut induire des erreurs et des incompatibilités dans le traitement des dossiers.

De plus, tout le processus d’exploitation et de tri des dossiers de candidature est manuel
nécessitant non seulement la mobilisation des équipes relevant des services recrutement et
intégration des compétences, mais aussi du temps considérable pour le traitement et l’analyse
des dossiers des candidatures.

1.3.3 Objectifs

Le but de ce projet est d’intégrer le modéle de classification à une application web pour
réaliser la gestion numérique des CVs. Nous avons choisi de mettre en place une solution qui
est composée de deux parties :

• Un microservice qui utilise un moteur de classification des CVs réalisé dans notre stage
d’été et qui offre d’autres opérations de gestion des CVs comme la reclassification, la
suppression d’un CV, etc.
• Une solution web et mobile qui s’interface avec le microservice pour permettre aux
utilisateurs de notre application d’effectuer la gestion des CVs et qui assure d’autres
fonctionnalités comme la gestion des rôles et la gestion des utilisateurs.

1.4 Choix méthodologique

Pour mener à bien un projet, nous devons choisir une méthode de travail qui répond le
mieux à nos exigences en matière de réalisation des tâches.
C’est pour cette raison que nous avons consacré cette section à la description des termes
"SCRUM" et "méthodologies agiles", ainsi qu’à la justification de leur adoption.

Page 7
ÉTUDE PRÉALABLE Hazem B OUAZIZ

1.4.1 Méthodologie Agile

La méthodologie Agile [2] est un processus qui permet à l’équipe de gérer un projet en le
décomposant en plusieurs étapes. Elle implique une collaboration constante entre les parties
prenantes, une amélioration et une itération continues à chaque étape. Au départ, les clients
décrivent comment le produit final sera utilisé et quel problème il résoudra. Cela permet de
clarifier les attentes du client auprès de l’équipe de projet. Une fois le travail commencé,
les équipes suivent un processus de planification, d’exécution et d’évaluation, qui permet de
modifier facilement le livrable final pour mieux répondre aux besoins du client. La collaboration
continue est essentielle, tant entre les membres de l’équipe qu’avec les parties prenantes du
projet, afin de prendre des décisions éclairées. La figure 3 illustre la méthodologie utilisée durant
ce projet.

F IGURE 3. Méthodologie Agile [2]

1.4.2 Framework SCRUM

Comme ce que présente la figure 4 la méthodologie scrum [3] est l’une des approches agiles
qui se basent essentiellement sur la division des rôles, la planification des réunions quotidiennes,
les artefacts, le découpage des tâches à l’aide des cycles courts présente les sprints et l’utilisation
d’un rythme itératif et incrémental. La figure 4 montre comment fonctionne la méthode scrum.

Page 8
ÉTUDE PRÉALABLE Hazem B OUAZIZ

F IGURE 4. Processus SCRUM [3]

- Le Product Owner : Le Product Owner est responsable de définir et de prioriser les


fonctionnalités du produit, de s’assurer que le produit est aligné sur les besoins et les attentes
des clients et des parties prenantes, et de travailler en étroite collaboration avec l’équipe de
développement pour s’assurer que les fonctionnalités sont livrées à temps et avec la qualité
requise. Le Product Owner est souvent considéré comme le représentant des clients et est donc
chargé de défendre leurs intérêts et de leur fournir une valeur ajoutée.

- Le Scrum master : Le Scrum Master est responsable de s’assurer que l’équipe de


développement suit les principes de Scrum, les pratiques et les valeurs Agile. Il aide également
l’équipe de développement à identifier et à résoudre les obstacles ou les problèmes qui peuvent
les empêcher d’atteindre leurs objectifs.

- Sprint : C’est une itération, elle peut durer d’une à quatre semaines et débouche sur un
produit utilisable.

- Product Backlog : Liste de toutes les fonctionnalités et exigences d’un projet ou d’un
produit, triées par ordre de priorité en fonction de la valeur qu’elles apportent. Le Product
Owner gère le backlog et l’utilise pour planifier les itérations de développement (sprints) et
pour suivre l’évolution du projet.

Page 9
ÉTUDE PRÉALABLE Hazem B OUAZIZ

- Sprint Backlog : Le sprint backlog est la liste des éléments de travail que l’équipe
de développement s’engage à réaliser pendant le sprint. Il est créé lors de la réunion de
planification de sprint et contient les éléments sélectionnés à partir du product backlog, ainsi
que les tâches nécessaires à leur réalisation. Le sprint backlog est un plan vivant qui peut être
ajusté tout au long du sprint en fonction de l’avancement et des nouvelles informations qui
apparaissent.

- Daily Scrum : Le Daily Scrum est une réunion quotidienne de courte durée (généralement
entre 10 et 15 minutes) dans le cadre de la méthode agile Scrum. Elle réunit l’équipe de
développement pour discuter de l’avancement du projet, des objectifs atteints et des obstacles
rencontrés. L’objectif est de favoriser la collaboration et la communication au sein de l’équipe
et de s’assurer que chaque membre est aligné sur les priorités et les tâches à accomplir pour la
journée.

- Sprint Review : La Sprint Review est une réunion de fin d’itération dans la méthode agile
Scrum, où l’équipe de développement présente les résultats de son travail au Product Owner
et aux parties prenantes. Elle permet de recueillir des feedbacks et de planifier les prochaines
étapes du projet.

1.5 Conclusion

Dans ce premier chapitre, nous avons présenté l’organisme d’accueil, étudié l’existant dans
le but de le critiquer et définir les concepts clés pour l’améliorer. Finalement nous avons montré
la méthodologie des outils optés pour mener à bien ce projet. Dans le chapitre suivant nous
allons présenter la partie état de l’art.

Page 10
ETAT DE L’ART Hazem B OUAZIZ

Chapter

2
Etat de l’art

2.1 Introduction

Durant ce chapitre, nous allons présenter la procédure d’embauche. Par la suite, nous allons
effectuer une étude de l’existant de l’application mobile de recrutement de TELNET et quelques
applications web sur le marché. Finalement, nous allons présenter notre solution proposée pour
les deux applications.

2.2 Procédure d’embauche

Les candidats envoient leur dossier de candidature à Telnet, comprenant leurs CV, leurs
diplômes et leurs relevés de notes universitaires pour les jeunes diplômés, à l’adresse
email recrutement@groupe-telnet.net. Ces candidatures sont ensuite réceptionnées par le
département des ressources humaines qui les examine et les trie en fonction des postes
à pourvoir chez Telnet. Ensuite, les CV correspondants sont envoyés aux chefs de projet
concernés qui vérifient s’ils correspondent aux profils recherchés. Les CV sont renvoyés au
service des ressources humaines qui contacte alors les candidats pour planifier un entretien si
leur profil correspond aux postes proposés ou pour leur notifier un refus dans le cas contraire.
Tout ce processus se fait manuellement et dépend beaucoup de temps.

Page 11
ETAT DE L’ART Hazem B OUAZIZ

Pour résoudre ce problème, TELNET a mis en place une solution qui consiste à utiliser
un système de gestion des candidatures en ligne. Ce système permet aux candidats de postuler
directement en ligne pour un poste donné, et toutes les candidatures sont automatiquement triées
et classées en fonction des postes disponibles.

Les chefs de projet peuvent ainsi accéder directement aux candidatures qui correspondent à
leur domaine d’expertise et ne perdent pas de temps à trier les CV.

En outre, le système de gestion des candidatures en ligne permet également aux candidats
de suivre l’état de leur candidature en temps réel, de sorte qu’ils peuvent savoir où ils en sont
dans le processus de recrutement. Cette solution a permis à TELNET non seulement de gagner
du temps dans le processus de recrutement mais aussi d’améliorer l’efficacité de son service des
ressources humaines.

2.3 Etude de l’existant

Dans cette partie nous traitons l’étude de l’existant des deux applications mobile et web.

2.3.1 Microservice de classification

Le moteur de classification notre système utilise une architecture pipeline, où des modules
ou filtres sont connectés les uns aux autres pour effectuer des traitements spécifiques sur un
ensemble de données. Le résultat de chaque filtre est transmis comme entrée au filtre suivant.
Les modules du moteur comprennent :

• Construction du modèle : Ce module construit un modèle de prédiction à l’aide de


l’algorithme random forest et d’un ensemble de données manuellement construit. Cette
base de données contient des tuples de compétences associées à des profils de CV.

• Pré-traitement des données : Après la sélection d’un nouveau CV, ce module extrait
brutalement le texte et effectue une opération de nettoyage pour éliminer les caractères
spéciaux qui pourraient interférer avec la prédiction.

Page 12
ETAT DE L’ART Hazem B OUAZIZ

• Extraction des compétences : Ce module extrait les différentes compétences (langages


de programmation, outils, logiciels) à partir d’une liste de compétences préalablement
construite à partir de techniques de web scraping sur un site de recrutement en ligne.

• Classification Une fois que les compétences du CV sont extraites, le module de


classification utilise un modèle de prédiction pour déterminer le profil correspondant.
En comparant les compétences du CV avec celles de la base de données de profils à l’aide
de l’algorithme de random forest, le moteur prédit le profil le plus approprié pour le CV
en question. Le résultat de cette opération est alors retourné en sortie.

La figure 5 montre le pipeline du moteur de classification.

F IGURE 5. Pipeline du moteur de classification

2.3.2 Outils de gestion des CVs «Application Mobile»

Afin d’approfondir notre compréhension sur le sujet et avoir une idée plus claire sur le
projet existant et ses fonctions attendues, nous avons mené une étude d’une application mobile
de recrutement chez TELNET sous le titre de « Resume Scanner ».

L’objectif de cette application était de spécifier, concevoir et mettre en œuvre une application
mobile permettant de scanner les CVs des candidats, d’effectuer une extraction de texte par

Page 13
ETAT DE L’ART Hazem B OUAZIZ

OCR « Optical Character Recognition » et de classer ces CV à l’aide de l’IA selon les profils
de chaque candidats qui peut être (Electrique, mécanique, logiciel «backend,frontend»).

Resume Scanner permet à TELNET de gérer les offres d’emploi et aide les responsables à
choisir les meilleurs candidats potentiels à travers l’utilisation de l’intelligence artificielle.

2.3.3 Outils de gestion des documents «Application Web»

2.3.3.1 KIMIOS

Kimios [4] est un système de gestion de documents open-source qui permet aux utilisateurs
de stocker et de gérer des documents de différents formats, avec des fonctionnalités avancées
telles que le contrôle de version, le contrôle d’accès et des capacités de recherche de texte
intégral. Il offre également des flux de travail et une automatisation des processus métier, et
peut être intégré à d’autres applications d’entreprise via une API REST.

2.3.3.2 ALFRESCO

Alfresco [5] est un système de gestion de contenu d’entreprise open-source qui permet
aux entreprises de gérer leurs contenus et leurs processus métiers. Il a été créé en 2005 et est
développé par la société britannique Alfresco Software.

Alfresco offre des fonctionnalités avancées pour la gestion de contenu, notamment la gestion
des documents, la gestion des images, la gestion des vidéos, la gestion des fichiers audio, la
gestion des sites web, la gestion des processus métiers, la collaboration et le partage de fichiers.
Il propose également des fonctionnalités de sécurité avancées, telles que la gestion des droits
d’accès, la vérification des signatures électroniques et la gestion des clés de chiffrement.

Alfresco est facilement personnalisable grâce à son architecture modulaire basée sur les
standards ouverts tels que Java, Spring Framework et Lucene.

Page 14
ETAT DE L’ART Hazem B OUAZIZ

2.4 Critique de l’existant

Après une analyse rigoureuse de l’existant dans notre domaine d’étude, nous avons identifié
plusieurs critiques et opportunités pour des améliorations. Nous avons constaté que certaines
caractéristiques étaient insuffisantes ou incomplètes et nous avons les classés comme suit :

1. Difficulté de conserver des documents sous forme de papier.


2. Perte de temps (processus de recrutement trop lent).
3. Difficulté d’utilisation : Les outils de suivi de candidatures sont diffciles à utiliser pour
les recruteurs et les gestionnaires de recrutement.
4. Les applications existantes sont généralement payantes.
5. Le moteur de classification des solutions existantes n’est pas spécifique à TELNET.
6. Pour l’application mobile, en cas d’absence de connexion Internet ou d’interruption
du serveur, l’utilisateur risque de perdre les documents stockés localement s’il n’a pas
sauvegardé ses données sur un support externe.

2.5 Solution proposée

Nous avons pour objectif de créer une application web et un micro-service qui vont
permettre une gestion numérique des CVs en offrant plusieurs fonctionnalités telles que l’ajout,
la suppression, la modification, la consultation et la classification.

Nous avons aussi pour objectif d’améliorer l’application mobile en ajoutant l’utilisation
de l’application en mode hors ligne c-à-d, les documents peuvent être stockés localement sur
l’appareil de l’utilisateur et une fois que la connexion est rétablie, Ces derniers peuvent être
automatiquement classés en fonction des profils appropriés.

Cette fonctionnalité offre une expérience utilisateur optimale même lorsque la connexion
internet est intermittente ou inexistante.

La figure 6 montre les améliorations que doivent être faite au niveau de l’application mobile
existante.

Page 15
ETAT DE L’ART Hazem B OUAZIZ

F IGURE 6. Architecture de l’application mobile[6]

Le tableau 1 résume le fonctionnement général de l’application mobile.

1. Effectuer un appel API et enregistrer dans


En ligne (Présence de l’internet)
la BD en ligne.

1. Stocker dans une base de données local


Hors ligne (Abscence de l’internet)
avec un statut (0).
2. Synchroniser avec la base de données
en ligne lorsque le réseau est rétabli
(mettre à jour son statut (1) lorsqu’il est
synchronisé).

TABLE 1. Fonctionnement général de l’application mobile

Page 16
ETAT DE L’ART Hazem B OUAZIZ

2.6 Les Concepts de bases

2.6.1 Traitement Automatique du Langage Naturel (TAL)

Le Traitement Automatique du Langage[7] Naturel est un domaine de recherche très actif


dans les sciences des données, qui se situe à l’intersection de l’apprentissage automatique et
de la linguistique. Son objectif est d’extraire du sens et des informations à partir de contenus
textuels.

Le TAL, également connu sous le nom de Natural Language Processing (NLP) en


anglais, a de nombreuses applications dans la vie quotidienne. Par exemple, il peut être
utilisé pour traduire des textes (comme DeepL), pour vérifier l’orthographe, pour résumer
automatiquement un contenu, pour synthétiser la parole, pour classer des textes, pour analyser
les opinions/sentiments, pour prédire le prochain mot sur un smartphone, ou pour extraire des
entités nommées à partir d’un texte.

2.6.2 La Reconnaissance Optique de Caractères (ROC)

La Reconnaissance Optique de Caractères (ROC) ou plus communément appelée OCR


(pour Optical Character Recognition en anglais) est une technologie qui permet de convertir des
images contenant du texte en un format éditable et recherchable. Cela implique de reconnaître
les caractères présents dans l’image et de les transcrire en texte. L’OCR est largement utilisée
pour numériser des documents papier et les rendre accessibles de manière électronique, ainsi
que pour automatiser la saisie de données à partir d’images, de formulaires et d’autres supports
visuels contenant du texte.

2.7 Conclusion

Ce chapitre était consacré dans un premier lieu à la présentation du moteur de classification


utilisé par notre solution. Puis nous avons fait une étude de l’existant. Et nous avons fini par la

Page 17
ETAT DE L’ART Hazem B OUAZIZ

présentation de notre solution proposée et quelques concepts de bases. Dans le chapitre suivant
nous allons présenter les spécifications et l’analyse des besoins.

Page 18
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

Chapitre
Chapter

3
Analyse et spécification des besoins

3.1 Introduction

Dans ce chapitre, nous allons décrire les schéma global des cas d’utilisation ainsi que
l’architecture des notre solution. Nous allons également présenter la planification des sprints.
Enfin, nous terminerons en détaillant l’environnement de travail que nous utilisons.

3.2 Analyse des besoins globaux

3.2.1 Acteurs de la solution

Notre solution a été conçue pour être utilisée par les employés de l’entreprise TELNET.
Pour offrir une grande flexibilité, les rôles dans l’application sont dynamique. Il est possible de
modifier un rôle avec la spécification de ses droits d’accès.
Les deux applications admettent deux acteurs :

Administrateur : cet acteur possède tous les droits d’accès de l’application pour bénéficier
de tous les services proposés dans la section suivante.

Utilisateur : cet acteur ne possède pas tous les droits d’accès de l’application. Dés la
création d’un nouveau compte le rôle va être attribué par défaut utilisateur.

Page 19
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

3.2.2 Besoins fonctionnels

Les besoins fonctionnels désignent les demandes relatives aux fonctionnalités que le
système doit remplir. Nous allons décrire les exigences fonctionnelles destinées aux utilisateurs
de notre solution.

3.2.2.1 Application Mobile

Les exigences fonctionnelles destinées aux utilisateurs de l’application mobile sont classées
comme suit :

• S’authentifier en utilisant le mode en ligne ou hors ligne.

• Créer un nouveau compte utilisateur.

• Modifier le mot de passe.

• Récupérer le mot de passe en cas d’oubli.

• Scanner et classer les documents.

• Consulter les statistiques de classifications.

• Envoyer un email à l’administrateur contenant les détails de chaque classification.

• Enregistrer et supprimer les images scannées en local.

• Envoyer les images scannées et enregistrées en local aprés la synchronisation du compte.

3.2.2.2 Application Web

Les exigences fonctionnelles destinées aux utilisateurs de l’application web sont classées
comme suit :

• S’authentifier.

• Créer un nouveau compte utilisateur.

• Modifier le mot de passe.

• Récupérer le mot de passe en cas d’oubli.

Page 20
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

• Ajouter et classer les documents.

• Consulter les statistiques de classifications comme le nombre des candidats par profil et
le nombre des candidats par date.

• Envoyer un email à l’administrateur contenant les détails de chaque classification.

• Gérer les utilisateurs à travers les actions suivantes : consultation de la liste des
utilisateurs, ajout, modification du rôle et suppression d’un utilisateur.

• Gérer les CVs à travers les actions suivantes : consultation de la liste des CVs et
supression.

3.2.3 Besoins non fonctionnels

Afin d’atteindre nos objectifs, notre solution doit respecter certaines propriétés et tenir
compte de certaines contraintes qui sont définies dans les éléments suivants :

• Sécurité : Il est important de garantir la sécurité des données personnelles en respectant


les permissions d’accès et en exigeant des mots de passe conformes à certaines exigences,
telles que la longueur et l’utilisation de caractères spéciaux.

• L’utilisabilité : La solution doit être facile à utiliser car la plupart des utilisateurs viennent
d’un milieu non technique, en l’occurrence les employés du département des ressources
humaines.

• Performance : La transition entre les pages web ou les interfaces mobile de notre solution
doit être fluide et rapide.

3.3 Diagramme des cas d’utilisation général

3.3.1 Diagramme des cas d’utilisation du micorservice de classification

La figure 7 représente le diagramme de cas d’utilisation général pour un administrateur.

Page 21
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

F IGURE 7. Diagramme de cas d’utilisation général pour un administrateur

3.3.2 Diagramme des cas d’utilisation général de l’application mobile

La figure 8 illustre le diagramme de cas d’utilisation général pour un administrateur.

F IGURE 8. Diagramme de cas d’utilisation général pour un administrateur


La figure 9 illustre le diagramme de cas d’utilisation général pour un utilisateur.

Page 22
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

F IGURE 9. Diagramme de cas d’utilisation général pour un utilisateur

3.3.3 Diagramme des ca d’utilisation général de l’application web

Les figures 10 et 11 représentent le diagramme de cas d’utilisation général réspectivement


pour un administrateur et un utilisateur.

F IGURE 10. Diagramme de cas d’utilisation général pour un administrateur

Page 23
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

F IGURE 11. Diagramme de cas d’utilisation général pour un utilisateur

3.4 Architecture de la solution

3.4.1 Architecture physique

Nous avons choisi d’utiliser une architecture à trois niveaux (3-tiers) pour notre solution,
ce qui représente la manière dont les composants logiciels du système sont déployés sur les
composants matériels. Cette décision est illustrée dans la figure 12 et concerne l’architecture
physique de notre solution.

F IGURE 12. Architecture physique de la solution

• Couche de présentation : est responsable pour l’interface utilisateur, offrant la possibilité


d’afficher les données et de permettre à l’utilisateur final d’interagir avec ces données.

Page 24
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

• Couche traitement : est la couche métier de l’application est chargée de définir la logique
métier de l’application, agissant comme un lien entre la couche de présentation et la
couche d’accès aux données.

• Couche accès aux base de données : est chargée de stocker les données, en utilisant un
système de gestion de base de données (SGBD) pour la gestion efficace des données.

3.4.2 Architecture logique

La structure logique englobe les divers composants logiciels requis pour la conception d’un
système informatique, ainsi que leurs interactions mutuelles. La figure 13 présente le schéma
de l’architecture logique de notre solution.

F IGURE 13. Architecture logique de la solution

La partie frontend est composée de :

• Composants : sont responsables de l’affichage des vues dans le navigateur en définissant


leurs comportements. Ils sont responsables de la couche présentation.

• Routeurs : sont responsables de faire correspondre les URLs à leurs composants.

• Services : sont responsables de la définition des services qui vont interagir avec l’API
REST.

Page 25
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

• Client HTTP : est utilisé pour envoyer et recevoir les requêtes HTTP.

La partie backend est composée de :

• Spring Rest Contrôleurs : sont responsables du traitement des requêtes HTTP venues
de frontend et microservice.

• Services : sont responsables de la liaison entre les contrôleurs et Spring Data JPA.
Ils contiennent la logique métier de l’application. Ils représentent avec les composants
services de frontend et les services fournis par le microservice la couche traitement de
notre outil.

• Modèles : représentent la modélisation des objets qui vont être persistants dans la base
de données.

• Spring Data JPA : c’est un module qui a pour but de faciliter l’implémention de la
couche d’accès aux données. Il est en interaction avec la base de données MySQL.

Le backend communique avec le microservice via le protocole HTTP.

L’architecture microservice est considérée comme une approche de développement logiciel


qui est une variante de l’architecture orientée service. Dans notre solution, le microservice mis
en œuvre fournira les services requis pour la classification des CVs.

3.5 Planification des sprints

La planification des sprints est une étape clé du cycle de vie d’un projet SCRUM, visant à
déterminer les objectifs de livraison et les moyens pour les atteindre.

Pour notre projet, nous avons opté pour une répartition en quatre sprints, avec les étapes
suivantes :

1. Sprint 1 : Réalisation des amélioration sur l’application "Resume Scanner"

• Développer l’authentification hors ligne avec des contraintes bien déterminées.

• Scanner un CV.

• Consommer des web services déjà existantes.

Page 26
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

• Consulter la liste des CVs scannés.

• Donner à l’utilisateur la possibilitée de supprimer un ou plusieurs CVs.

• Donner la possibilitée à l’utilisateur de d’envoyer tous les CVs scannées aprés la


synchronisation (passage de mode hors ligne vers le mode en ligne).
2. Sprint 2 : Développement de microservice du modèle de classification

• Encapsuler le moteur de classification.

• Préparer des web services nécessaires aux opérations de gestion d’un CV (consulter,
classer, supprimer...).

• Faire le monitoring d’un dossier qui contient les nouveaux CVs et les classifier selon
le profil adéquat.
3. Sprint 3 : Développement de l’application Web "Telnet Resume Scanner" TRS

• Créer un compte utilisateur par défauts.

• S’authentifier.

• Faire la gestion des rôles et leurs droits d’accès.

• Faire la gestion des utilisateurs.

• Modifier le mot de passe.

• Récupérer le mot de passe oublié.

• Faire la gestion des CVs.

• Modifier les coordonées du profil.


4. Sprint 4 : Déploiement de l’application " TRS " sur le serveur de Telnet

• Préparer le fichier JAR.

• Déployer manuellement l’application TRS sur le serveur Telnet.

3.6 Environnement de travail

3.6.1 Environnement matériel

Pour ce projet, le matériel informatique utilisé comprend un PC performant (Processeur :


Intel® Core™ i5-9300H CPU @ 2.1 GHz × 4) avec 8 Go de RAM.

Page 27
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

3.6.2 Environnement logiciel

Dans cette partie nous allons présenter la liste des outils utilisés pour réaliser
l’implémentation de notre solution.

• Ubuntu 22.04 : Système d’exploitation basé sur Linux.

• Intellij : Environnement de développement pour les applications spring.

• dbevear : Environnement de gestion de base de données.

• Visual studio code : Editeur de code open source gratuit qui supporte plusieurs langages
de programmation.

• Android Studio : Environnement de développement pour les applications mobiles.

• StarUML : Environnement de modélisation UML (conception).

• Postman : Environnement de test des Web Services.

• Overleaf : Outil en ligne de rédaction de rapport LaTex.

3.7 Technologies utilisées

Dans cette section, nous allons présenter les différents langages de programmation et
frameworks employés pour réaliser ce projet.

3.7.1 Languages de programmation

• Dart : [8] langage de programmation développé par Google, conçu pour la création
d’applications multiplateformes, notamment des applications mobiles, de bureau, de
serveur et web. Il est optimisé pour la performance et dispose d’une syntaxe de type
C++, avec une approche orientée objet.

• Java : [9] langage de programmation orienté objet connu pour sa portabilité, sa simplicité,
sa sécurité et sa robustesse. Contrairement à d’autres langages, le code Java est compilé
en un format indépendant de la plateforme cible, ce qui permet aux applications Java

Page 28
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

de s’exécuter sur différentes plates-formes sans nécessiter de modifications majeures du


code.

• Python : [10] langage de programmation interprété. Il supporte plusieurs paradigmes


de programmation comme la programmation structurelle, orienté objet et fonctionnelle.
Python se caractérise par la lisibilité et la maintenabilité du code et offre une vaste variété
d’outils, de librairies et de frameworks open source qui rendent la programmation avec
ce langage plus facile.

• TypeScript : [11] langage de programmation développé par Microsoft qui ajoute des
fonctionnalités de typage statique optionnelles au JavaScript standard pour détecter et
prévenir les erreurs de type.

3.7.2 Frameworks

• Flutter : [12] trousse d’outils open-source de développement d’interfaces utilisateur (UI)


développée par Google pour créer des applications compilées de manière native pour
les plateformes mobiles, web et de bureau à partir d’un seul code source. Elle permet
aux développeurs de créer des applications multiplateformes de haute qualité avec des
performances et une apparence proche du natif.

• Flask : [13] framework web open-source développé en Python qui permet de créer
facilement des applications web. Il est léger, flexible et bien adapté pour le développement
d’applications web de petite à moyenne envergure.

• SpringBoot : [14] framework open-source développé en Java qui facilite la création


d’applications Java de manière rapide et efficace. Il est conçu pour simplifier
le développement d’applications Java en offrant des fonctionnalités intégrées, des
configurations par défaut et des outils de développement avancés.

• Angular : [15] framework open source pour créer les applications web particulièrement
les applications web monopage en utilisant HTML et typeScript développé par Google.
Il était utilisé pour réaliser le frontend de notre application web.

Page 29
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ

3.7.3 Système de gestion de base de données

C’est un logiciel que nous avons choisi pour notre projet permet aux utilisateurs de définir,
créer, maintenir et contrôler l’accès à une base de données. En raison de la structure de nos
données, nous avons opté pour les systèmes de gestion de base de données relationels.

• Solution : Nous avons choisi pour les deux applications comme SGBD MySQL et pour
les deux microservices SQLite.

3.7.4 Système de gestion de base de projet

• GIT : [16] est un logiciel de gestion de versions le plus répandu est utilisé pour suivre
les changements apportés à des projets et fichiers par plusieurs collaborateurs, tout en
garantissant la rapidité, l’intégrité des données et la prise en charge de flux de travail non
linéaires et distribués.

• Git Lab : [17] est une plateforme DevOps qui fournit un gestionnaire de répertoires git.
Il permet la documentation à travers wiki, le suivi des problèmes, l’intégration continue
et la livraison continue. La plateforme permet de réaliser toutes les étapes d’un projet
comme la planification du projet, la gestion du code source, la surveillance et le contrôle
de la sécurité.

3.8 Conclusion

Dans ce chapitre, nous avons eu l’opportunité de présenter les besoins fonctionnels et


non fonctionnels de la solution, ainsi que son architecture. Nous avons également abordé la
planification des sprints ainsi que l’environnement de travail. Dans le chapitre suivant nous
allons présenter le premier sprint concernant la réalisation des améliorations sur l’application
mobile "Resume Scanner".

Page 30
SPRINT 1 Hazem B OUAZIZ

Chapitre
Chapter

4
Sprint 1 : Réalisation des
améliorations sur l’application "Resume
Scanner"

4.1 Introduction

Ce chapitre se concentre sur les améliorations apportées à l’application mobile


existante "Resume Scanner" afin d’obtenir de meilleurs résultats. Pour commencer, une
étude bibliographique sera présentée, suivie d’une présentation du module "Utilisation de
l’application en mode hors-ligne". Ce chapitre couvre les activités d’analyse, de conception
et de réalisation du premier sprint

4.2 Etude bibliographique

Pour les agents de ressources humaines chez TELNET utilisant les applications mobiles de
classification de CV, il est important d’avoir une application fiable et pratique, même en cas de
réseau mobile défaillant.

C’est pourquoi il est essentiel que notre application mobile soit équipée pour fonctionner
hors ligne, ce qui permet de continuer à travailler sur des CVs même sans accès à Internet.

TELNET doit investir dans le développement de back-end et de front-end pour offrir une
meilleure qualité d’application mobile, y compris un accès hors ligne pour les utilisateurs.

Page 31
SPRINT 1 Hazem B OUAZIZ

Les avantages de notre application incluent :

1. L’Authentification hors ligne.


2. La sauvegarde des CVs sur l’appareil de l’utilisateur.
3. La synchronisation transparente des données.
4. La gestion des conflits de synchronisation

En bref, notre application mobile hors ligne bien conçue peut améliorer l’expérience
utilisateur des agents de ressources humaines, en leur permettant de travailler de manière plus
productive, même en l’absence de réseau mobile fiable.

4.3 Sprint Backlog

Dans cette section, nous allons présenter le tableau du sprint backlog pour les tâches
réalisées au cours de ce sprint. Nous avons mis en œuvre plusieurs fonctionnalités, notamment
l’authentification hors ligne de l’utilisateur, la numérisation des CVs, la suppression et la
consultation des CVs, ainsi que la consultation du nombre de tentatives restantes pour
s’authentifier en l’absence de connexion Internet.

L’ajout de ces fonctionnalités permet d’offrir une plus grande flexibilité aux utilisateurs de
notre application, qui peuvent ainsi accéder à nos services même sans une connexion Internet
fiable. Le tableau 2 représente el backlog du premier sprint.

Page 32
SPRINT 1 Hazem B OUAZIZ

id Features id_us User Stories


1 Authentification 1.1 En tant qu’utilisateur, je dois
m’authentifier hors ligne avant
d’accéder à l’application.
1.2 En tant qu’utilisateur, je veux accéder
à l’application en mode hors ligne sans
avoir à me reconnecter à chaque fois.
2 Scanner les documents 2.1 En tant qu’utilisateur, je veux
numériser un CV d’une seul ou
plusieurs pages.
2.2 En tant qu’utilisateur, je veux stocker
les images scannées en local.
3 Gestion des documents 3.1 En tant qu’utilisateur, je veux
consulter la liste des CVs enregistrés
en local.
3.2 En tant qu’utilisateur, je peux
supprimer un CV enregistré en local.
3.3 En tant qu’utilisateur, je peux
supprimer un CV enregistré en local.
3.4 En tant qu’utilisateur, je peux
supprimer la liste des CVs enregistrée
en local.
4 Synchronisation 4.1 En tant qu’utilisateur, si la connexion
est rétablie, je peux basculer vers le
mode en ligne.
4.2 En tant qu’utilisateur, si la connexion
est interrompue, je peux basculer vers
le mode hors ligne.
5 Classification 5.1 En tant qu’utilisateur je peux envoyer
les fichiers stockés en local pour qu’ils
soient classifiés.

TABLE 2. Backlog du sprint 1

4.4 Spécification

À travers cette section, nous allons montrer la phase d’analyse spécifique à ce sprint.

Page 33
SPRINT 1 Hazem B OUAZIZ

4.4.1 Diagrammes de cas d’utilisation

La figure 14 est dédiée à l’illustration les différentes fonctionnalités que l’utilisateur possède
pour effectuer la gestion des documents.

F IGURE 14. Diagramme du cas d’utilisation « Gérer les documents »

4.4.2 Diagramme de séquence système pour le scénario « S’authentifier »

Afin de représenter l’interaction entre l’utilisateur et notre application lors de


l’authentification, nous avons utilisé le diagramme de séquence présenté dans la figure 15.

Page 34
SPRINT 1 Hazem B OUAZIZ

F IGURE 15. Diagramme de séquence du scénario « S’authentifier »

Page 35
SPRINT 1 Hazem B OUAZIZ

Lorsque l’utilisateur saisit son email et son mot de passe et appuie sur le bouton de
connexion, notre système effectue plusieurs vérifications. Tout d’abord, il vérifie si l’utilisateur
est connecté à Internet.

Si l’utilisateur est hors ligne, le système vérifie s’il a déjà tenté de se connecter hors ligne
auparavant. S’il y a eu plus de tentatives précédentes, le système vérifie si l’email et le mot
de passe saisis sont valides. Si ces informations sont incorrectes, un message d’erreur est
affiché indiquant que l’email ou le mot de passe est invalide. Si les informations sont correctes,
l’utilisateur est redirigé vers la page d’accueil en mode hors ligne, et le nombre de tentatives
restantes est décrémenté de 1.

Si le nombre de tentatives restantes est égal à zéro, un message d’erreur est affiché indiquant
que l’utilisateur doit se connecter en ligne. Dans ce cas, le nombre de tentatives est réinitialisé
à 3.

Si l’utilisateur est connecté à Internet, notre système vérifie à nouveau si l’email et le mot
de passe sont valides.

Si ces informations sont incorrectes, un message d’erreur est affiché. Si elles sont correctes,
l’utilisateur est redirigé vers la page d’accueil en mode en ligne. En plus de cela, le système
génère un jeton d’accès et un jeton de rafraîchissement, qu’il envoie à l’utilisateur.

Le jeton d’accès est ajouté aux en-têtes des requêtes HTTP ultérieures, ce qui permet
à l’utilisateur d’accéder aux ressources demandées. Ce jeton a une durée de validité de 15
minutes. Lorsque ce jeton expire, le jeton de rafraîchissement, qui a une durée de validité plus
longue, est utilisé pour générer un nouveau jeton d’accès.

Si le jeton de rafraîchissement lui-même expire, l’utilisateur sera redirigé vers la page de


connexion.

4.5 Réalisation

Lorsque l’utilisateur accède à la page d’authentification de l’application, il est uniquement


tenu de saisir son mot de passe. L’email sera automatiquement récupéré à partir du stockage

Page 36
SPRINT 1 Hazem B OUAZIZ

local de l’application. Une fois que l’utilisateur a saisi son mot de passe, il doit appuyer
sur le bouton de connexion pour accéder à l’application. La figure 16 représente l’interface
d’authentification de l’application mobile "Resume Scanner".

F IGURE 16. Interface d’authentification

Une fois l’authentification réussie, si l’utilisateur est hors ligne, il reçoit une alerte lui
indiquant le nombre de tentatives restantes pour effectuer une nouvelle authentification comme
illustré dans la figure 17.

Page 37
SPRINT 1 Hazem B OUAZIZ

F IGURE 17. Interface d’alerte sur l’authentification

Lorsque l’utilisateur clique sur "Scan single page", il a la possibilité de scanner un


CV. Ensuite, il peut cliquer sur le bouton "Send Resume" pour l’enregistrer localement,
conformément à ce qui est illustré dans la figure 18.

Page 38
SPRINT 1 Hazem B OUAZIZ

F IGURE 18. Interface de scan un CV

Aprés l’opération de classification, l’utilisateur a la possibilité d’accéder aux différentes


pages en fonction de ses droits d’accès. En cliquant sur le bouton SYNC, il peut consulter la
liste des documents scannés précédemment.

Sur cette page, l’utilisateur a la possibilité d’effectuer plusieurs opérations :

1. Consulter les CVs existants : L’utilisateur peut afficher la liste des CVs déjà scannés et
les consulter pour obtenir des informations spécifiques.
2. Supprimer un CV : L’utilisateur peut sélectionner un CV de la liste et le supprimer s’il
n’est plus nécessaire.
3. Supprimer tous les CVs : L’utilisateur peut sélectionner tous les CVs et les supprimer s’il
n’est plus nécessaire.
4. Classifier tous les CVs existants en stockage local : Si la connexion Internet est rétablie,
l’utilisateur peut utiliser cette fonctionnalité pour synchroniser tous les CVs existants et
les sauvegarder localement. Cela permet de garantir que les CVs sont accessibles même
en cas de perte de connexion ultérieure.

Page 39
SPRINT 1 Hazem B OUAZIZ

La figure 19 illustre les opérations que l’utilisateur peut effectuer. Dans le cas où l’utilisateur
clique sur le bouton "ALL" pour classer les CV existants, le système affiche un message
indiquant qu’il ne peut pas effectuer cette opération car il est hors ligne.

F IGURE 19. Interface de consultation des images stockées en local

Lorsque l’utilisateur active sa connexion Internet, son compte sera automatiquement


synchronisé en arrière-plan. Il pourra alors classer les CVs existants qui sont stockés localement,
comme le montre la figure 20.

Page 40
SPRINT 1 Hazem B OUAZIZ

F IGURE 20. Interface de classification d’un CV

4.6 Conclusion

Dans ce chapitre, nous avons introduit plusieurs améliorations pour l’application mobile,
en mettant l’accent sur l’authentification et la classification des CV en mode hors ligne. Nous
avons commencé par présenter les spécifications à l’aide d’un diagramme des cas d’utilisation,
puis nous avons présenté les interfaces utilisateur qui ont été développées. Dans le chapitre
suivant nous allons présenter le deuxième sprint concernant le développement de microservice
du modèle de classification.

Page 41
SPRINT 2 Hazem B OUAZIZ

Chapitre
Chapter

5
Sprint 2 : Développement de
microservice du modèle de classification

5.1 Introduction

Dans cette section, nous allons introduire le microservice du moteur de classification.

Notre objectif pour ce sprint est de créer un outil qui offre des services web pour ajouter et
supprimer des CV, ainsi que pour détecter l’arrivée de nouveaux CV afin de les classifier.

Nous commencerons par présenter le fonctionnement du moteur de classification, puis nous


aborderons les spécifications du projet. Enfin, nous terminerons par quelques captures d’écran
illustrant l’avancement de notre réalisation.

5.2 Sprint Backlog

Cette section est consacrée à la présentation du sprint backlog à travers le tableau 3.

Page 42
SPRINT 2 Hazem B OUAZIZ

id Features id_us User Stories


1 Classer les documents 1.1 En tant que développeur, je veux
prédire des profils à partir de texte de
CV.
1.2 En tant que développeur, je veux un
web service de classification.
2 Gestion des CVs 2.1 En tant que développeur, je veux un
web service qui retourne la liste des
CVs.
2.2 En tant que développeur, je veux un
web service qui retourne la liste des
CVs par profil.
2.3 En tant que développeur, je veux un
web service qui retourne le nombre de
CV par date.
2.4 En tant que développeur, je veux un
web service qui retourne le nombre de
CV chaque jour.
2.5 En tant que développeur, je veux un
web service qui supprime un CV.
2.6 En tant que développeur, je veux
consulter l’état de système.

TABLE 3. Backlog du Sprint 2

5.3 Spécification

À travers cette section, nous allons montrer la phase d’analyse spécifique à ce sprint.

5.3.1 Description de moteur de classification

Le microservice de notre solution est responsable à l’utilisation des résultats du moteur de


classification, ainsi que de la gestion des web services nécessaires pour la manipulation des
CVs, tels que l’ajout et la suppression.

Notre application propose deux méthodes pour la classification des CVs :

1. Lorsqu’un utilisateur souhaite ajouter un CV, il utilise l’application web ou mobile qui
fait appel au web service de classification fourni par le microservice.
2. Le responsable des Ressources Humaines peut également déposer les nouveaux CVs
reçus par e-mail dans un dossier partagé sur le réseau.

Page 43
SPRINT 2 Hazem B OUAZIZ

Le microservice, qui fonctionne en mode autonome (standalone), va surveiller ce


dossier, classifier les CVs en fonction de leurs profils et les classés dans les dossiers
correspondants.

La figure 21 illustre le fonctionnement de cette deuxième méthode.

F IGURE 21. Classification des CVs à travers le mode standalone

5.3.2 Diagramme de cas d’utilisation

La figure 22 est dédiée à l’illustration les différentes fonctionnalités que le développeur


possède pour effectuer toutes les fonctionnalitées de microservice de classification.

F IGURE 22. Diagramme de cas d’utilisation pour le microservice de classification

Page 44
SPRINT 2 Hazem B OUAZIZ

5.3.3 Diagramme de séquence système du cas «Classification des CVs»

Pour présenter l’interaction entre l’utilisateur et notre solution de classification nous avons
obtenu le diagramme de séquence système du cas « Classer les documents » comme indique la
figure 23.

F IGURE 23. Diagramme de séquence système du cas «Classification des CVs»

Selon le diagramme de séquence système, le processus d’interaction entre l’utilisateur et


notre solution de classification est le suivant :

1. L’utilisateur envoie un document, qui peut être de différents types tels que png, jpg, doc,
pdf, etc.
2. Un courriel contenant les résultats (Les détails de classification sous forme d’un
tableau de compétences) ainsi que le CV du candidat sous forme pdf seront envoyés à
l’administrateur.

5.3.4 Réalisation

Pour tester les web services développés dans ce sprint, nous avons utilisé l’outil Postman.

Concernant le web service de classification, après avoir sélectionné un CV, le résultat de la


classification est obtenu et ce CV est ensuite enregistré dans le dossier de profil correspondant
à la classification effectuée.

La figure 24 représente un exemple de résultat de classification d’un CV.

Page 45
SPRINT 2 Hazem B OUAZIZ

F IGURE 24. Web service de la classification d’un CV

Une fois les opérations requises effectuées, le microservice enregistre le CV dans la base de
données et envoie un courrier électronique contenant les résultats suivants :

1. Les résultats de la classification du CV, indiquant les profils prédits ou les catégories
correspondantes.
2. Les informations supplémentaires sur la classification, telles que la confiance associée
aux résultats ou d’autres métriques pertinentes.
3. Le CV avec l’extension .pdf.

Selon la figure 25, un e-mail est généré et envoyé à l’administrateur suite à la classification d’un
exemple de même, tel que réalisé lors de l’opération précédente.

Page 46
SPRINT 2 Hazem B OUAZIZ

F IGURE 25. Email contenant les détails de classification

Dans le cas du web service de suppression d’un CV, le système commence par vérifier
l’existence du CV. S’il est présent, le système le supprime.

La figure 26 illustre le résultat obtenu lors de l’utilisation du web service de suppression


d’un CV.

F IGURE 26. Web service de la suppression d’un CV

La figure 27 montre comment nous pouvons obtenir quelques statistiques comme le nombre
de CV par profil.

Page 47
SPRINT 2 Hazem B OUAZIZ

F IGURE 27. Nombre de CV par profil

La figure 28 illustre la méthode permettant d’obtenir des statistiques telles que le nombre de
CV par date.

F IGURE 28. Nombre de CV par date

La figure 29 présente le web service dont il est possible d’obtenir diverses statistiques, telles
que l’état du système.

F IGURE 29. L’état de système

Page 48
SPRINT 2 Hazem B OUAZIZ

5.4 Conclusion

Au cours de ce chapitre, nous avons abordé le microservice du moteur de classification.


Nous avons débuté par une introduction au moteur de classification, suivi d’une explication
détaillée du fonctionnement du microservice et d’un diagramme de séquence illustrant ses
différentes étapes. Enfin, nous avons exposé les services web qui ont été développés dans le
cadre de ce projet. Dans le chapitre suivant nous allons présenter le troisième sprint concernant
le développement de l’application web "Telnet Resume Scanner".

Page 49
SPRINT 3 Hazem B OUAZIZ

Chapitre
Chapter

6
Sprint 3 : Développement de
l’application Web "Telnet Resume
Scanner" TRS

6.1 Introduction

Dans ce chapitre, nous allons explorer les divers modules de l’application web "TRS"
de manière détaillée. Nous commencerons par présenter le module de gestion des CVs, qui
comprend les fonctionnalités de classification, de consultation et de suppression.

Ensuite, nous aborderons le module de gestion des utilisateurs, qui permet la mise à jour, la
consultation et la suppression des informations utilisateur. Nous débuterons par la spécification
de ces modules.

Enfin, pour illustrer notre travail de manière visuelle, nous conclurons ce chapitre en
présentant des captures d’écran de la réalisation de l’application.

6.2 Sprint Backlog

Cette section est consacrée à la présentation du sprint backlog à travers le tableau 4 :

Page 50
SPRINT 3 Hazem B OUAZIZ

id Features id_us User Stories


1 Authentification 1.1 En tant qu’utilisateur, je peux créer un
compte utilisateur.
1.2 En tant qu’utilisateur, je dois
m’authentifier avant d’accéder à
l’application.
2 Modification du mot de passe 2.1 En tant qu’utilisateur, je peux
changer mon mot de passe après
l’authentification.
3 Restauration du mot de passe 3.1 En tant qu’utilisateur, je peux restaurer
mon mot de passe en cas d’oubli.
4 Consultation des statistiques 4.1 En tant qu’administrateur, je
peux consulter des statistiques de
classifications et de l’état du système.
5 Classification des CVs 5.1 En tant qu’administrateur, je peux
utiliser un panier pour ajouter des CV
et les classifier.
5.2 En tant qu’utilisateur, je peux classifier
des CVs
6 Gestion des CVs 6.1 En tant qu’administrateur, je peux
consulter la liste des CVs.
6.2 En tant qu’administrateur, je peux
filtrer les CVs selon le profil souhaité.
6.3 En tant qu’administrateur, je peux
consulter un CV existant.
6.4 En tant qu’administrateur, je peux
supprimer un CV existant dans la liste
des CVs.
7 Gestion des utilisateurs 7.1 En tant qu’administrateur, je peux
créer un utilisateur.
7.2 En tant qu’administrateur, je peux
consulter la liste des utilisateurs
inscrits dans l’application.
7.3 En tant qu’administrateur, je peux
supprimer un utilisateur inscrit dans
l’application.
7.4 En tant qu’administrateur, je peux
changer le rôle d’un utilisateur inscrit
dans l’application.

TABLE 4. Backlog du Sprint 3

6.3 Spécifications

À travers cette section, nous allons montrer la phase d’analyse spécifique à ce sprint.

Page 51
SPRINT 3 Hazem B OUAZIZ

6.3.1 Diagramme de cas d’utilisation

Les figures 30 et 31 sont dédiées à l’illustration les différentes fonctionnalités que


l’administrateur possède.

F IGURE 30. Diagramme du cas d’utilisation « Gérer les utilisateurs»

F IGURE 31. Diagramme du cas d’utilisation « Gérer les CVs»

6.3.2 Diagramme de séquence pour le sénario« S’authentifier »

Nous avons utilisé le diagramme de séquence illustré dans la figure 32 pour faciliter
l’interaction entre l’utilisateur et notre application lors du processus d’authentification.

Page 52
SPRINT 3 Hazem B OUAZIZ

F IGURE 32. Diagramme de séquence système du cas « S’authentifier »

Lorsque l’utilisateur saisit son nom d’utilisateur et son mot de passe, puis appuie sur le
bouton de connexion, notre système vérifie la validité des informations. Si elles sont incorrectes,
un message d’erreur est affiché. Si elles sont correctes, l’utilisateur est redirigé vers la page
d’accueil, et notre système génère et envoie à l’utilisateur un jeton d’accès et un jeton de
rafraîchissement.

Le jeton d’accès est ajouté aux en-têtes des requêtes HTTP, ce qui permet à l’utilisateur
d’accéder aux ressources demandées. Ce jeton a une durée de validité de 15 minutes. Lorsque
le jeton d’accès expire, le jeton de rafraîchissement, qui a une durée de validité plus longue,
est utilisé pour générer un nouveau jeton d’accès. Si le jeton de rafraîchissement est également
expiré, l’utilisateur est automatiquement redirigé vers la page de connexion.

Page 53
SPRINT 3 Hazem B OUAZIZ

6.4 Conception

6.4.1 Diagramme de séquence objet pour le scénario « ajout d’un nouveau

utilisateur »

La figure 33 représente le processus de création d’un nouveau utilisateur.

Page 54
SPRINT 3 Hazem B OUAZIZ

F IGURE 33. Diagramme de séquence d’ajout d’un nouveau utilisateur


Page 55
SPRINT 3 Hazem B OUAZIZ

6.5 Réalisation

Cette section présente les fonctionnalités qui ont été développées lors de ce troisiéme sprint.

Pour accéder à l’application, les utilisateurs doivent d’abord s’authentifier. La figure 34


illustre l’interface de la page d’authentification de l’application.

F IGURE 34. Interface d’authentification

Lorsque l’utilisateur n’a pas de compte, il a la possibilité de cliquer sur le lien "You don’t
have an account" et sera ensuite redirigé vers une page dédiée, comme indiqué dans la figure
35. Sur cette page, il sera invité à remplir un formulaire de création de compte en respectant
certaines conditions spécifiques.

Pour créer un nouveau compte, l’utilisateur devra fournir un nom d’utilisateur unique. De
plus, le nom de domaine de l’adresse e-mail doit être "@groupe-telnet.net". Enfin, le mot de
passe doit être composé au moins de 8 caractères et contient au moins un caractère spécial.

Ces conditions spécifiques sont nécessaires pour assurer l’intégrité et la sécurité du


processus de création de compte.

Page 56
SPRINT 3 Hazem B OUAZIZ

F IGURE 35. Interface de création de compte

Au niveau de l’interface d’authentification, si un utilisateur oublie son mot de passe, il a la


possibilité de cliquer sur le lien "Forgot password". Cela le redirigera vers une page spécifique,
comme présentée dans la figure 35, où il sera invité à saisir son adresse e-mail.

Après avoir saisi son adresse e-mail, l’utilisateur recevra un e-mail contenant un lien, comme
illustré dans la figure 36.

En cliquant sur ce lien, l’utilisateur sera redirigé vers une page où il pourra choisir un
nouveau mot de passe et le mettre à jour afin d’accéder à son compte.

Après avoir saisi son adresse e-mail, l’utilisateur recevra un e-mail contenant un lien, comme
illustré dans la figure 35.

F IGURE 36. Email pour restaurer le mot de passe

Page 57
SPRINT 3 Hazem B OUAZIZ

Ce lien lui permettra de définir un nouveau mot de passe, comme montré dans la figure 37.
En cliquant sur ce lien, l’utilisateur sera redirigé vers une page où il pourra choisir un nouveau
mot de passe et le mettre à jour afin d’accéder à son compte.

F IGURE 37. Interface pour restaurer le mot de passe

Une fois authentifié, l’utilisateur a accès aux différentes pages en fonction de ses droits
d’accès, qu’il soit administrateur ou utilisateur. À travers le menu, l’utilisateur peut accéder à
son profil pour ajouter quelques détails comme indique la figure 38 :

F IGURE 38. Interface de profil de l’utilisateur

Grâce au menu dédié à l’administrateur, celui-ci peut accéder au module de gestion des
utilisateurs. À travers cette interface, l’administrateur a la possibilité de consulter la liste des
utilisateurs et d’effectuer différentes opérations sur chacun d’entre eux.

Page 58
SPRINT 3 Hazem B OUAZIZ

La figure 39 présente l’interface de gestion des utilisateurs, qui offre à l’administrateur une
vue claire et organisée de tous les utilisateurs enregistrés dans l’application. À partir de cette
page, l’administrateur peut effectuer plusieurs actions, telles que la modification du rôle d’un
utilisateur, la consultation des informations détaillées d’un utilisateur ou encore la suppression
d’un utilisateur si nécessaire.

Cette interface facilite la gestion des utilisateurs par l’administrateur, lui permettant de
maintenir le contrôle et d’apporter les ajustements nécessaires aux rôles et aux permissions
des utilisateurs dans le système.

F IGURE 39. Interface pour restaurer le mot de passe

L’administrateur a la possibilité de créer un nouvel utilisateur en utilisant le formulaire


illustré dans la figure 40.

Page 59
SPRINT 3 Hazem B OUAZIZ

F IGURE 40. Interface pour créer un nouvel utilisateur

L’administrateur a la possibilité de changer son mot de passe après l’authentification comme


indique la figure 41.

F IGURE 41. Interface pour changer le mot de passe

L’utilisateur peut accéder au tableau de bord qui présente des statistiques sur l’état du
système et les CVs. Il pourra visualiser plusieurs diagrammes, tels que le nombre de CVs par
profil, ainsi que des courbes indiquant l’évolution du nombre de CVs au fil du temps.

Le tableau de bord offre donc à l’administrateur une vue d’ensemble des données et des
statistiques importantes concernant les CVs, lui permettant ainsi de suivre et d’analyser les
informations pertinentes pour son travail. La figure 42 montre l’interface du tableau de bord.

Page 60
SPRINT 3 Hazem B OUAZIZ

F IGURE 42. Interface de tableau de bord de l’administrateur

L’utilisateur a deux options pour ajouter un nouveau CV et le classifier. La première option


consiste à glisser le fichier vers la zone de glisser-déposer de la page panier. La deuxième option
est de choisir un fichier enregistré sur l’ordinateur en cliquant sur un bouton situé dans la zone
appropriée. La figure 43 représente l’interface de la liste des événements.

F IGURE 43. Interface de l’ajout d’un CV

Page 61
SPRINT 3 Hazem B OUAZIZ

L’interface illustrée dans la figure 44 permet à l’utilisateur de consulter la liste des CVs. De
plus, il a la possibilité de filtrer les CVs en fonction des profils, tels que Backend, Frontend, etc.
Il peut également supprimer des CVs de la liste s’il le souhaite.

F IGURE 44. Interface de la liste des CVs

6.6 Conclusion

Dans ce chapitre, nous avons abordé les modules de gestion des utilisateurs et de gestion
des CVs. Nous avons commencé par présenter la spécification à l’aide d’un diagramme des cas
d’utilisation. Ensuite, nous avons détaillé la conception des modules en utilisant un diagramme
des classes. Enfin, nous avons présenté les interfaces réalisées pour ces modules. Dans le
chapitre suivant nous allons présenter le dernier sprint concernant le déploiment de l’application
web sur le serveur de telnet.

Page 62
SPRINT 4 Hazem B OUAZIZ

Chapitre
Chapter

7
Sprint 4 : Déploiement de
l’application "TRS" sur le serveur de
Telnet

7.1 Introduction

Ce chapitre se concentre sur le déploiement de l’application ’TRS’ réalisé lors du dernier


sprint.

Nous examinerons en détail l’importance de ce sprint, suivie d’une comparaison entre les
modes production et développement.

Pour une présentation visuelle de notre travail, nous conclurons ce chapitre en montrant des
captures d’écran du processus de déploiement.

7.2 Importance de déploiement

Lors de l’évaluation de l’application ’TRS’ réalisée lors du dernier sprint, nous avons
identifié un problème majeur qui nécessite une attention immédiate : l’application n’est pas
encore déployée sur le serveur de Telnet, ce qui limite considérablement l’accès des utilisateurs
internes de l’entreprise à ses fonctionnalités.

Page 63
SPRINT 4 Hazem B OUAZIZ

Cette lacune dans le déploiement a entravé la collaboration et limité l’utilisation efficace de


la plateforme, ce qui a eu un impact négatif sur la productivité et l’efficacité de l’équipe.

De plus, l’indisponibilité de l’application a créé une frustration et un retard dans les tâches
des utilisateurs internes, entraînant une baisse de la qualité du travail accompli.

Afin de résoudre le problème de déploiement de ’TRS’ sur notre serveur interne, nous avons
pris des mesures concrètes. Cela inclut l’établissement d’une stratégie de déploiement solide, la
résolution des problèmes techniques et la coordination avec les parties prenantes concernées.

7.3 Sprint Backlog

Cette section est consacrée à la présentation du sprint backlog à travers le tableau 5.

id Features id_us User Stories


1 Déploiement manuel 1.1 En tant que développeur, je dois faire
un déploiement manuel rigoureux de la
l’application en mode production.
1.2 En tant que développeur, je dois
faire la configuration, la gestion des
dépendances et les tests pour assurer la
stabilité et la fiabilité du système.

TABLE 5. Backlog du sprint 4

7.4 Comparaison entre le mode DEV et PROD

Cette section montre une analyse comparative entre les deux modes de développement et de
production comme il indiqué dans le tableau 6.

Page 64
SPRINT 4 Hazem B OUAZIZ

Mode DEV Mode PROD


Tester et développer l’application en toute Déployer l’application dans l’environnement
sécurité sur une machine locale ou un serveur de production sur un serveur dédié, en
dédié, sans impacter l’environnement de nécessitant une planification minutieuse pour
production. minimiser les interruptions de service.
Modification en temps réel des fichiers de Les fichiers de l’application sont copiés sur
l’application et facilitent la correction des le serveur de production et ne peuvent pas
erreurs grâce à des outils de débogage et des être modifiés en temps réel. Les erreurs
informations détaillées. doivent être corrigées avant le déploiement
ou nécessitent une nouvelle version de
l’application. Les environnements de
production sont configurés pour assurer une
haute disponibilité, une sécurité renforcée et
une surveillance continue afin de garantir la
stabilité de l’application en production.
Les configurations de développement sont Les configurations de production sont
souvent plus souples et permissives, ce qui conçues pour être plus rigoureuses et
permet aux développeurs de travailler de sécurisées, afin de protéger l’application
manière plus rapide et efficace. contre les menaces de sécurité et de réduire
les risques de dysfonctionnement.

TABLE 6. Comparaison entre les modes[18]

Chaque mode de déploiement présente ses avantages et ses complexités, adaptés à différents
types d’applications. Le tableau 7 désigne plusieurs type de déploiement.

Mode de déploiement Description


Le déploiement manuel Consiste à copier les fichiers de l’application
sur le serveur de production.
le déploiement par script utilise des scripts automatisés.
Le déploiement en conteneur Encapsule l’application dans un conteneur
pour une portabilité accrue.
Le déploiement en cluster Déploie l’application sur un cluster de
serveurs pour une haute disponibilité et une
scalabilité.
Le Déploiement en cloud Déploie sur une infrastructure cloud, qui
peut fournir une haute disponibilité, une
scalabilité et une résilience.

TABLE 7. Les différences entre les modes de déploiement

Page 65
SPRINT 4 Hazem B OUAZIZ

7.5 Réalisation

1. Génération des fichiers de production de l’application Angular : Nous avons utilisé


la commande "ng build –prod" pour générer les fichiers optimisés de l’application
Angular. Cette étape permet de créer un dossier "dist" contenant les fichiers nécessaires
pour exécuter l’application côté client. La figure 45 représente la commande qui génére
le dossier "dist".

F IGURE 45. Générer le dossier "dist"

2. Copie des fichiers de l’application Angular dans l’application Spring Boot : nous
avons copié les fichiers générés dans le dossier "dist" de l’application Angular vers
le dossier "src/main/resources/static" de l’application Spring Boot. Cela permet de
les intégrer à l’application backend. La figure 46 représente l’architecture du dossiers
ressources.

Page 66
SPRINT 4 Hazem B OUAZIZ

F IGURE 46. Architecture du dossier ressources

3. Génération d’un fichier JAR exécutable : À l’aide de la commande "mvn


clean package", nous avons construit un fichier JAR exécutable contenant à la fois
l’application Spring Boot et les fichiers Angular intégrés. Cette étape implique la
compilation du code source, l’exécution des tests et la création du fichier JAR final. La
figure 47 représente la commande qui génére le fichier JAR.

F IGURE 47. Génération de fichier JAR

4. Déploiement de l’application : Pour déployer l’application, nous avons exécuté la


commande "java -jar nomapp.jar" sur le serveur cible. Cela permet de démarrer le

Page 67
SPRINT 4 Hazem B OUAZIZ

serveur Spring Boot et d’exécuter l’application. La figure 48 représente la commande qui


exécute le fichier JAR.

F IGURE 48. Exécution de fichier JAR

5. Importation des fichiers de la base de données de l’application : Nous avons importeé


les fichiers de la base de données de l’application sur le serveur. Cela permet de restaurer
la base de données nécessaire au fonctionnement de l’application.

En suivant ces étapes, nous avons effectué un déploiement manuel de l’application en mode
production, en prenant soin de générer les fichiers de production de l’application Angular, de
les intégrer à l’application Spring Boot, de créer un fichier JAR exécutable et de déployer
l’ensemble sur le serveur, tout en important les fichiers de la base de données.

7.6 Conclusion

Dans ce chapitre, nous avons eu l’opportunité de présenter l’importance de déploiement que


la différence entre ces modes. Nous avons aussi présenter les étapes nécessaires pour faire le
déploiement manuel de l’application web TRS.

Page 68
CONCLUSION GÉNÉRALE ET PERSPECTIVES Hazem B OUAZIZ

Conclusion Générale et perspectives

Le recrutement dans les entreprises informatiques se développe rapidement. Le processus


d’attribution des candidatures aux profils est actuellement effectué manuellement par les
départements des ressources humaines, ce qui est coûteux et peut entraîner des erreurs. Pour
remédier à cela, nous avons développé un microservice qui classe les CVs et s’interface avec
une solution web et mobile pour trier les candidatures.

En résumé, notre rapport présente l’ensemble du processus de développement de notre


projet, depuis les phases initiales jusqu’au déploiement final de l’application web. Chaque
chapitre a permis de mettre en lumière les étapes clés, les décisions prises et les résultats
obtenus. Grâce à notre approche méthodique et à notre collaboration étroite, nous avons réussi
à atteindre nos objectifs et à fournir une solution complète et fonctionnelle.

En perspectives, nous prévoyons d’automatiser le déploiement de notre solution en utilisant


Jenkins. Cela simplifiera et accélérera le processus de mise en production de notre microservice
de classification des CVs et de notre application web, réduisant ainsi les efforts et les erreurs
potentielles. L’utilisation de Jenkins facilitera également la scalabilité de notre solution pour
répondre à la croissance future des besoins de recrutement. En résumé, l’intégration de Jenkins
pour le déploiement automatique représente une perspective prometteuse en termes d’efficacité,
de fiabilité et de flexibilité.

En conclusion, notre expérience chez Telnet a été enrichissante, nous permettant de


développer nos compétences techniques et personnelles.

Page 69
NETOGRAPHIE Hazem B OUAZIZ

Netographie

[1] https :www.groupe-telnet.com(consulté le 17/03/2023)


[2] https ://www.mailjet.com/fr/blog/bonnes-pratiques-emailing/methode-agile-scrum/(consulté
le 25/03/2023)
[3] https ://bubbleplan.net/blog/agile-scrum-gestion-projet (consulté le 25/03/2023)
[4] https ://www.kimios.com/ (consulté le 30/03/2023)
[5] https ://www.alfresco.com/fr/ (consulté le 30/03/2023)
[6] https ://walkingtree.tech/make-your-apps-available-offline-using-flutter-and-sqlite/(consulté
le 10/04/2023)
[7] https ://www.stat4decision.com/fr/traitement-langage-naturel-francais-tal-nlp/(consulté le
2/05/2023)
[8] https ://dart.dev/overview/(consulté le 10/05/2023)
[9] https ://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1203555-java-definition/(consulté
le 10/05/2023)
[10] https ://www.python.org/about/(consulté le 10/05/2023)
[11] https ://www.typescriptlang.org/(consulté le 10/05/2023)
[12] https ://flutter.dev/(consulté le 10/05/2023)
[13] https ://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in
python-3-fr (consulté le 10/05/2023)
[14] https ://easypartner.fr/blog/quest-ce-que-java-spring-boot/ : :text=SpringBoot/(consulté
le 10/05/2023)
[15] https ://ideematic.com/dictionnaire-digital/angular-js/(consulté le 10/05/2023)
[16] https ://git-scm.com/(consulté le 10/05/2023)
[17] https ://about.gitlab.com/(consulté le 10/05/2023)
[18] https ://cloud.google.com/looker/docs/dev-mode-prod-mode ?hl=fr/(consulté le
20/05/2023)

Page 70
Résumé
Pour faciliter la gestion des CVs lors du processus de recrutement, nous avons développé une
solution complète de gestion des CVs dans le cadre de notre projet de fin d’études. Cette
solution intègre plusieurs modules et propose un tableau de bord offrant une vue d’ensemble
des opérations liées à ces différents modules.
Mots clés : Développement Web, Mobile, IA, WebService, API, Microservice

Abstract
To facilitate the management of resumes during the recruitment process, we developed a
complete resume management solution as part of our final year project. This solution
integrates several modules and offers a dashboard providing an overview of operations linked
to these different modules.
Keywords : Web and Mobile Development, IA, WebService, API, Microservice

‫التلخيص‬
‫ لقد صممنا تلنات من أجل مساعدة مدير التنمية البشرية على استخراج الوثائق الالزمة‬.‫لتسهيل حسن تنظيم و إدارة الوثائق‬
‫ تجمع هذه المنصة بين الوحدات التنظيمية المختلفة و مرفوقة بلوحة قيادة التي تقدم نظرة‬.‫في فترات انتداب المهندسين‬
.‫شاملة على عمليات الوحدات المختلفة‬
Développement Web, Mobile, IA, WebService, API, Microservice ‫كلمات المفاتيح‬

Vous aimerez peut-être aussi