Dramé Memoire 2025
Dramé Memoire 2025
Mention : Informatique
Soutenu le : 19 /04/2025
Maître de stage :
Membres du jury
Pr Youssou DIENG Professeur assimilé Président UASZ
M. Camir A. N. MALACK Doctorant Rapporteur UASZ
Dr Papa Alioune CISSE Maître de conférences titulaire Examinateur UASZ
Pr Ibrahima DIOP Professeur assimilé Encadrant UASZ
Mme Ana BAKHOUM Ingénieur à la DISI Invitée UASZ
DIANGAR
Dédicaces
dont l'amour et les enseignements continuent de guider mes pas. Vous avez été un modèle de
courage et de dévouement, et je vous suis éternellement reconnaissant pour tout ce que vous
m'avez transmis. Que ce mémoire soit un hommage à votre amour et à votre sacrifice.
pilier de ma vie, dont la force et la bienveillance m'ont toujours soutenu. Vous êtes une mère
exemplaire, et je vous dédie ce travail avec toute ma gratitude et mon amour filial. Que vous
soyez fière de moi, et que Dieu vous comble de bonheur, de santé et d'une longue vie.
À ma famille,
source de joie et de soutien, et plus particulièrement à mon grand frère, Mr. Khadim
DRAME, pour sa présence rassurante et ses conseils précieux. Que notre union et notre
solidarité perdurent, fidèles aux valeurs transmises par nos parents.
À mes amis,
pour leurs encouragements et leur amitié sincère, qui ont été une source de motivation
constante.
I
Remerciements
Remerciements
Tout d'abord, je rends grâce à Allah (SWT), le Tout-Puissant, pour m'avoir accordé la force et
la persévérance nécessaires pour réussir ce travail. Que la paix et la bénédiction soient sur Son
noble Prophète Seydina Mouhamed (PSL).
Je tiens à exprimer ma sincère reconnaissance envers mon encadrant, Pr Ibrahima DIOP, pour
sa guidance experte, sa patience et son soutien inébranlable. Son dévouement et son humanité
ont été une source d'inspiration constante pour moi.
Je tiens à exprimer ma reconnaissance à mon maître de stage, Mme Anna BAKHOUM, pour
son précieux encadrement, ses conseils avisés et son soutien constant. Je remercie également
l’ensemble des membres de la DISI (M. Makane MBAYE, M. Serigne NDOUR, M. Dame
BA et Mme Diariatou MANGA SANE) pour leur contribution et leurs conseils.
Mes vifs remerciements vont aussi aux membres du jury, Pr Youssou DIENG, Président du
jury, pour l'honneur que vous me faites en présidant cette soutenance et pour l’attention portée
à mon mémoire, M. Camir A. N. MALACK, rapporteur, pour votre lecture attentive, Dr Papa
Alioune CISSE, examinateur, sa lecture assidue.
Mes plus sincères remerciements vont à mes parents, mon défunt père Mame Kandji DRAME
et ma mère Rokhy CISSE, pour leur amour inconditionnel, leur soutien constant et les valeurs
qu'ils m'ont transmises, sans lesquels je n'aurais pu atteindre ce niveau.
À mes frères et sœurs, dont le soutien et l’affection ont été une source de force intarissable, je
tiens à exprimer toute ma gratitude.
Je remercie également mes camarades de promotion pour leur esprit de collaboration et leur
amitié tout au long de notre parcours universitaire.
II
Résumé
Résumé
Pour réaliser ce projet, nous avons opté pour une approche AGILE, en mettant
particulièrement l'accent sur la méthode SCRUM. Cette méthode nous a aidés à favoriser le
travail en commun avec les parties concernées et à procéder de manière itérative, en ajustant
rapidement nos actions selon les exigences et les retours d'information. La première phase a
consisté à déterminer les exigences, durant laquelle nous avons identifié les utilisateurs
principaux et fractionné le module en sous-modules, avant d'élaborer les scénarios d'usage
correspondants.
Lors de la phase de conception, nous avons adopté une stratégie « contract-first », utilisant
OpenAPI et Swagger pour établir les contrats d'API dès le début du processus. Nous avons
également utilisé des schémas UML (cas d'utilisation, séquences, classes) et l'application
StarUML pour représenter visuellement l'architecture du système.
Sur le plan technique, nous avons choisi React pour le développement du Front-end, dans une
architecture microservices, permettant de garantir une meilleure modularité et la scalabilité.
Pour le Back-end, nous avons utilisé Spring Boot, suivant une architecture en couches, et
PostgreSQL comme système de gestion de base de données afin d'assurer une gestion fiable et
performante des données. Les API REST ont été développées pour faciliter la communication
entre les différents services, documentées avec OpenAPI et rigoureusement testées avec
Postman. Pour le design de l'interface, nous avons exploité un template React fourni par la
DISI, créant ainsi une interface utilisateur moderne et cohérente. Enfin, afin de garantir une
collaboration fluide et une gestion efficace des versions, nous avons utilisé Git.
III
Abstract
Abstract
As part of the Integrated Management Project (PGI) of the IT and Information Systems
Department (DISI) of the Assane Seck University of Ziguinchor (UASZ), we developed a
recruitment management application to modernize a process previously managed manually
with paper files. This traditional system posed several problems, including difficulties in data
preservation, loss of information, and the inability to generate reliable statistics. Our goal was
to digitize this process to make it more efficient and reliable.
To carry out this project, we opted for an AGILE approach, placing particular emphasis on the
SCRUM method. This method helped us foster collaboration with stakeholders and proceed
iteratively, quickly adjusting our actions according to requirements and feedback. The first
phase involved determining the requirements, during which we identified the main users and
broke down the module into sub-modules, before developing the corresponding use scenarios.
During the design phase, we adopted a "contract-first" strategy, using OpenAPI and Swagger
to establish API contracts from the early stages of the process. We also employed UML
diagrams (use cases, sequences, classes) and the StarUML application to visually represent
the system architecture.
IV
Table des matières
Dédicaces ................................................................................................................ I
Remerciements ..................................................................................................... II
Abstract................................................................................................................ IV
Introduction ...................................................................................................... 15
1 Missions .................................................................................................. 15
2 Organisation ............................................................................................ 16
Conclusion ........................................................................................................ 20
Introduction ...................................................................................................... 21
V
Table des matières
Chapitre III : Spécification, analyse des besoins et conception des APIs .......... 44
VI
Table des matières
Conclusion ........................................................................................................ 82
1 StarUML ................................................................................................. 83
3 SwaggerHub............................................................................................ 83
4 Postman ................................................................................................... 84
5 Git ........................................................................................................... 84
VII
Table des matières
2 Java ......................................................................................................... 85
3 Spring ...................................................................................................... 86
6 PostgreSQL ............................................................................................. 87
1 React.js .................................................................................................... 87
2 Bootstrap ................................................................................................. 88
Conclusion ........................................................................................................ 92
Bibliographie ....................................................................................................... 94
VIII
Liste des Figures
IX
Liste des Figures
X
Liste des Tableaux
XI
Liste des Tableaux
XII
Liste des Acronymes
UI : Interface utilisateur
XIII
Introduction Générale
Introduction Générale
Imaginez un responsable des ressources humaines submergé par des dossiers papier, jonglant
entre différentes étapes de validation, avec un risque élevé d’erreurs et une perte de temps
considérable. De l’autre côté, des candidats impatients, parfois sans retour sur leur
candidature, faute de suivi clair et transparent. Ces difficultés soulignent le besoin urgent d’un
système de gestion des recrutements moderne, automatisé et efficace.
C’est dans cette optique que nous avons entrepris ce projet : concevoir et implémenter un
module de gestion des recrutements qui digitalise et fluidifie l’ensemble du processus, depuis
la soumission des candidatures jusqu’à la sélection finale. Pour garantir modularité,
évolutivité et performance, nous avons fait le choix d’une architecture basée sur les
microservices, une approche qui permet une gestion flexible et évolutive des différentes
fonctionnalités du système.
14
Chapitre I : Contexte du stage
Introduction
Le développement rapide des technologies numériques transforme profondément les
processus de gestion, notamment dans les institutions académiques. L’Université Assane Seck
de Ziguinchor (UASZ) ne fait pas exception, et la nécessité de moderniser ses systèmes de
gestion se fait de plus en plus pressante. Face à une augmentation des candidatures pour des
postes académiques et administratifs, il devient essentiel de disposer d'outils informatiques
capables de gérer efficacement ces processus de recrutement.
Dans ce chapitre, nous présenterons d’abord l’environnement dans lequel s’est déroulé notre
stage, en commençant par une présentation de la Direction de l’Informatique et des Systèmes
d’Information (DISI) de l’UASZ. Nous exposerons ensuite la problématique à laquelle nous
avons été confrontés et les objectifs spécifiques de notre travail.
Créée en 2021 pour remplacer l'ancien Centre des Ressources Informatiques (CRI), la DISI a
pour mission de piloter la transformation numérique de l’Université Assane Seck de
Ziguinchor. Elle assure l’implémentation et le suivi des projets liés aux systèmes
d’information, notamment dans les domaines de la gestion des ressources humaines, de
l’enseignement et de la recherche. La DISI est structurée en trois principaux services : le
Service des Ressources Pédagogiques (SRP), le Service de Support et Technique (SST), et le
Service de Calcul et Simulations (SCS).
1 Missions
Sous l’autorité du Recteur, la DISI est chargée de définir et de mettre en œuvre la politique
numérique de l’Université. Les missions principales de la DISI sont de :
✓ Élaborer et suivre les plans directeurs de l’informatique de l’Université ;
✓ Participer à la réalisation des tableaux de bord et au pilotage de l’institution et de ses
différentes composantes ;
✓ Stimuler, structurer, accompagner et soutenir les projets dans le domaine du calcul
scientifique et de la simulation ;
✓ Développer un système informatique intégré et cohérent ;
15
Chapitre I : Contexte du stage
2 Organisation
✓ La DISI est structurée en trois services : le Service des Ressources Pédagogiques
(SRP), le Service de Support et Technique (SST) et le Service de Calculs et
Simulations (SCS). Chaque service est constitué de divisions à sa tête un chef de
division. Les services sont tous sous l’autorité du directeur de la DISI. La figure 1 ci-
dessous représente l’organigramme de la DISI.
16
Chapitre I : Contexte du stage
Il est chargé de :
✓ Mettre à la disposition de la communauté des plateformes de test, de simulation, de
stockage et de calcul (grilles, cloud, …) ;
✓ Assister la communauté scientifique dans le déploiement d’outils ;
✓ Assurer la prise en charge des besoins en calcul numérique de la communauté
scientifique ;
✓ Assurer le renforcement de capacité des chercheurs sur les outils de recherche
scientifique ;
✓ Accompagner la mise en place de formations par les structures habilitées dans les
domaines du calcul scientifique et du calcul haute performance ;
17
Chapitre I : Contexte du stage
Le projet de gestion intégrée (PGI) est initié par la DISI en collaboration avec la DRH et les
UFRs. Ce projet d'automatisation des tâches administratives dans la gestion du personnel vise
à moderniser et à simplifier les processus administratifs au sein de l'université. Cette initiative
est motivée par le besoin d'optimiser l'efficacité opérationnelle, de réduire les erreurs
humaines et d'accélérer les délais dans le traitement des données liées au personnel. Ce projet
a été lancé à la fin de l'année 2022 et a débuté avec cinq (5) modules :
✓ Le module de gestion des évaluations des enseignements ;
✓ Le module de gestion des emplois du temps : ce module gère la gestion des emplois
du temps des UFRs ;
✓ Le module de gestion de la répartition des enseignements : ce module gère la
répartition des enseignements (cours) pour toutes les formations ;
✓ Le module de gestion de dossier médical : ce module est conçu pour stocker,
organiser et gérer les informations médicales des patients de la Direction de la
Médecine du Travail (DMT) de manière digitale ;
✓ Le module de gestion des ressources humaines : ce module gère certaines
fonctionnalités comme le suivi des dossiers des employés, notamment la gestion des
candidatures au recrutement du PER et du PATS, la gestion des contrats, la gestion
des affectations, la gestion de la promotion, etc.
Notre projet s’inscrit pleinement dans cette évolution en simplifiant et en optimisant les
processus de recrutement et de sélection. L’objectif est de rendre ces démarches plus
18
Chapitre I : Contexte du stage
accessibles, plus fluides et mieux intégrées aux autres modules du système. Grâce à cette
transformation, nous améliorons non seulement la performance, la maintenance et la sécurité
des services, mais nous offrons aussi une expérience utilisateur plus naturelle, intuitive et
harmonieuse.
III. Problématique
L’Université Assane Seck de Ziguinchor (UASZ) note une augmentation régulière du nombre
de candidatures pour ses postes académiques et administratifs. Cependant, la gestion de ces
candidatures s’appuie encore sur des méthodes traditionnelles, principalement manuelles, ce
qui soulève plusieurs difficultés majeures :
✓ Un processus de recrutement ralenti : Le traitement manuel des dossiers entraîne des
délais importants dans la sélection des candidats, ce qui retarde l’ensemble du
processus et affecte la réactivité de l’université.
✓ Les équipes des ressources humaines, déjà bien occupées, se retrouvent submergées par
le flot constant de candidatures. Cette surcharge de travail pèse lourdement sur leurs
épaules et réduit leur capacité à accorder à chaque candidat l'attention qu'il mérite.
✓ Des risques d’erreurs accrues : La gestion manuelle des dossiers augmente la
probabilité d’erreurs, que ce soit dans la saisie des informations, le classement des
candidatures ou l’évaluation des profils. Ces erreurs peuvent compromettre la qualité
du recrutement.
✓ La non transparence et le manque de clarté : Sans un système numérique structuré,
suivre l’évolution des candidatures devient compliqué. Les recruteurs ont du mal à
savoir où en est chaque dossier, tandis que les candidats restent dans l’attente, sans
réelle visibilité sur le processus. Ce manque de clarté peut créer de l’incertitude et de la
frustration, nuisant à l’équité, l’image de l’institution et à l’efficacité du processus de
recrutement.
✓ Un accès et un suivi compliqués : Sans outils numériques, consulter les informations et
suivre l’évolution des candidatures devient une tâche fastidieuse, ralentissant les prises
de décision et créant des frustrations pour les candidats.
IV. Objectifs
19
Chapitre I : Contexte du stage
Conclusion
La mise en place d'un logiciel de gestion des recrutements à l'Université Assane Seck de
Ziguinchor contribue à la modernisation des processus administratifs. Après avoir présenté la
structure d’accueil (DISI) et exposé la problématique et les objectifs de notre travail, nous
allons décrire les architectures et choix méthodologiques dans le prochain chapitre (Chapitre
II).
20
Chapitre II : Architectures logicielles et méthodologiques
Introduction
Cependant, le choix d’une architecture adaptée ne suffit pas à garantir le succès d’un projet. Il
est tout aussi crucial d’adopter des pratiques modernes pour optimiser le cycle de
développement et de déploiement des applications. Parmi ces pratiques, nous pouvons citer :
✓ DevOps : Une philosophie qui encourage la collaboration entre les équipes,
l’automatisation des processus et une mise en production plus fluide et rapide.
✓ CI/CD : une pratique de génie logiciel qui gère l’intégration et le déploiement
continus.
✓ Contrat-at-first avec OpenApi et swaggerHub, qui facililite la rédaction et le partage
du contrat.
1 Architectures monolithiques
Avec les architectures monolithiques, tous les processus sont étroitement couplés et
s'exécutent comme un système unique. Cela signifie que si l'un des processus de l'application
enregistre un pic de demande, toute l'architecture doit être mise à l'échelle. L'ajout ou
l'amélioration de fonctionnalités d'une application monolithique devient plus complexe à
21
Chapitre II : Architectures logicielles et méthodologiques
L'architecture monolithique se caractérise par une structure intégrée et cohérente, où toutes les
composantes d'une application fonctionnent ensemble comme une unité unique. Cette
organisation présente plusieurs aspects clés :
✓ Unité unique : une seule application regroupe toutes les fonctionnalités.
✓ Couche unique de base de données : une base de données commune pour tous les
modules.
22
Chapitre II : Architectures logicielles et méthodologiques
23
Chapitre II : Architectures logicielles et méthodologiques
Chaque service d'une SOA encapsule un certain élément de logique. Cette logique peut être
responsable d'une tâche très spécifique, d'un processus métier ou d'un sous-processus. Les
services peuvent varier en taille et un service peut être composé de plusieurs autres services
pour accomplir sa tâche[3], [4].
24
Chapitre II : Architectures logicielles et méthodologiques
La SOA est basée sur une architecture modulaire où les services sont les composants
principaux. Ces services sont autonomes, interopérables et communiquent via des protocoles
standardisés (comme HTTP, SOAP, REST, etc.). La structure typique d'une SOA comprend
[3], [4] :
25
Chapitre II : Architectures logicielles et méthodologiques
✓ Couplage faible : Les services sont indépendants les uns des autres, ce qui permet une
plus grande flexibilité et évolutivité ;
✓ Réutilisabilité : Les services sont conçus pour être réutilisés dans différents contextes
ou applications ;
✓ Complexité : La mise en œuvre d'une SOA peut être complexe, notamment en raison
de la gestion des services et de l'ESB.
26
Chapitre II : Architectures logicielles et méthodologiques
✓ Sécurité : La gestion des accès et des données sensibles entre services peut poser des
défis.
3 Architecture microservices
Avec une architecture microservices, une application est développée à l'aide de composants
indépendants, qui exécutent chaque processus de l'application sous forme de service. Ces
services communiquent par le biais d'une interface bien définie et à l'aide d'APIs légères. Les
services sont développés pour des capacités métier, et chaque service exécute une seule
fonction. Étant donné qu'ils sont exécutés de manière indépendante, chaque service peut être
mis à jour, déployé ou mis à l'échelle pour répondre aux demandes des fonctions spécifiques
d'une application.
27
Chapitre II : Architectures logicielles et méthodologiques
accélèrent le développement des applications, pour des innovations et des délais de mise sur
le marché optimisé [1].
28
Chapitre II : Architectures logicielles et méthodologiques
De part de ces nombreux avantages, les microservices présentent aussi des limites que nous
allons citer ci-dessous [2] :
✓ Développement tentaculaire : les microservices ajoutent de la complexité par rapport
à une architecture monolithique, étant donné que vous avez plus de services dans un
plus grand nombre d'emplacements créés par plusieurs équipes. Si cette multiplication
n'est pas bien gérée, elle freine le développement et dégrade les performances
opérationnelles ;
✓ Coûts d'infrastructure élevés : chaque nouveau microservice peut impliquer ses
propres coûts pour la suite de tests, les playbooks de déploiement, l'infrastructure
d'hébergement, les outils de surveillance, et bien plus encore ;
✓ Frais organisationnels supplémentaires : les équipes doivent ajouter un autre niveau
de communication et de collaboration pour coordonner les mises à jour et les
interfaces ;
29
Chapitre II : Architectures logicielles et méthodologiques
D'autre part, dans une architecture distribuée, chaque microservice fonctionne pour exécuter
une fonctionnalité ou une logique métier unique. Au lieu d'échanger des données au sein de la
même base de code, les microservices communiquent via une API [5].
Un résumé comparatif entre ces trois architectures est présenté dans le tableau ci-dessous :
30
Chapitre II : Architectures logicielles et méthodologiques
Isolation des Une seule défaillance Les défaillances sont Les défaillances sont
erreurs peut affecter contenues dans des contenues dans des
l'ensemble du système. services spécifiques. microservices
individuels.
Nous présenterons dans cette section les deux grandes catégories de méthodes de gestion de
projet et détaillerons les plus connues. Les méthodes classiques et agiles sont des méthodes
de gestion de projet bien connues des entreprises de développement de solutions logicielles.
La première repose sur une planification détaillée quand l’autre se base sur un système
itératif.
1 Méthodes classiques
Les méthodes classiques se caractérisent par leur approche séquentielle des phases de gestion
d'un projet. Quelques méthodes de cette catégorie sont présentées dans les sections suivantes :
31
Chapitre II : Architectures logicielles et méthodologiques
Le modèle de gestion waterfall (cascade) est telle une chute d’eau, où les besoins sont
entièrement définis au sommet de la cascade, et les différentes phases se succèdent de façon
séquentielle (voir Figure 5).
Il n’y a pas de chevauchement entre les phases, car le résultat d’une phase sert d’entrée à la
phase suivante. C’est-à-dire qu’une fois que les parties prenantes et les clients se sont mis
d'accord sur les exigences du projet et les ont documentées, le projet est exécuté étape par
étape jusqu'à ce qu'il soit terminé. Ensuite, le client examine le projet pour s'assurer qu'il
réponde bien aux exigences. Si ce n’est pas le cas, le client le signale, et parfois demande de
nouvelles fonctionnalités auxquelles il n’avait pas pensé. La prise en compte de ces nouvelles
fonctionnalités ou la modification de certaines de ces fonctionnalités coûtent cher. C’est en
cela qu’on dit que la méthode de gestion de projet Waterfall manque de flexibilité.
Si votre projet n’est pas complexe et vous arrivez à obtenir des exigences bien définies, bien
complètes, validées, partagées, claires, et qu’il nécessite une structure de travail stricte pour
assurer le succès du projet, alors vous pouvez opter pour la méthode waterfall [6].
32
Chapitre II : Architectures logicielles et méthodologiques
b. Le cycle en V
Le cycle en V est une méthode de gestion de projet réputé pour son organisation des activités
en deux flux parallèles :
✓ Un flux descendant : qui détaille le produit depuis le cadrage jusqu’à son
implémentation en passant par le recueil des expressions et les spécifications ;
✓ Et un flux ascendant : qui vérifie la qualité du produit à chacune des phases du projet
en partant de l’implémentation pour remonter jusqu’au cadrage.
Sa similarité avec le modèle Waterfall est dans son approche de gestion séquentielle linéaire.
L’avantage de cette méthode est son caractère anticipatif des problèmes qui peuvent avoir lieu
à chacune des phases linéaires de gestion de projet. Et ce, en mettant en œuvre un ensemble
de tests en face de chaque phase [6]. La figure 6 montre une méthode en Cycle V.
c. Méthode Prince2
33
Chapitre II : Architectures logicielles et méthodologiques
L’objectif de cette méthode est de donner aux équipes un meilleur contrôle des ressources et
de la capacité, d’atténuer efficacement les risques, tout en mettant l’accent sur une bonne
analyse de rentabilité et la gestion du changement.
Si vous avez des projets informatiques complexes et disposez des éléments nécessaires pour
une bonne analyse claire des exigences afin de vérifier la valeur ajoutée du projet pour client,
alors Prince2 est un bon choix pour vous [6].
2 Méthodes agiles
Les méthodes agiles offrent une meilleure façon de développer les logiciels. Elles s’appuient
sur plusieurs Frameworks disponibles tels que Scrum, Kanban, Srumban, Lean, XP, etc. pour
fournir une structure claire et mesurable (voir Figure 7).
34
Chapitre II : Architectures logicielles et méthodologiques
Cette structure favorise le développement itératif, la collaboration entre les équipes et la prise
en compte rapide de l’évolution des besoins tout au long du processus de développement. En
effet, les demandes et les solutions évoluent grâce à la collaboration d'équipes organisées et
interfonctionnelles, mais aussi grâce à l’implication des clients.
La satisfaction de ces derniers est assurée grâce à des livraisons précoces et continues des
parties logicielles. Il est ainsi plus facile de soutenir et de motiver vos équipes.
Les méthodes agiles permettent de détecter et de corriger rapidement les problèmes inattendus
et d’introduire des changements à n'importe quel stade du projet.
Dans la suite, nous détaillons les méthodes agiles les plus utilisées aujourd’hui.
35
Chapitre II : Architectures logicielles et méthodologiques
a. Scrum
Scrum est un Framework issu de la méthodologie de gestion de projet agile. Son utilisation
permet de développer, de livrer et de maintenir des produits complexes. Scrum se base sur la
collaboration, la responsabilité et le progrès itératif. La spécificité de Scrum se trouve dans la
façon dont elle fonctionne en utilisant :
✓ des rôles: Product Owner, Scrum master, Scrum team,
✓ des événements : les Sprints à durée bien définie, les Daly Scrum de 15 min par jour,
le Sprint Planning meeting, la Sprint review et la Sprint retrospective,
✓ des artefacts : Product backlog, sprint backlog, livrables.
Avec Scrum, le travail est organisé en cycle court de généralement 1 à 2 semaines, appelés «
sprints ». À chaque Sprint, l’équipe choisi l’item du backlog qui sera traité dans le sprint et à
la fin de chaque sprint, l'équipe de projet publie un produit amélioré, validé et potentiellement
livrable. Scrum permet ainsi une livraison plus rapide et une meilleure fréquence de sortie des
parties logiciels [6]. Cependant, il est important de garder un œil sur la dette technique qui
pourrait s'accumuler.
36
Chapitre II : Architectures logicielles et méthodologiques
b. Kanban
Kanban est une approche agile qui permet d’identifier très rapidement les goulets
d'étranglement et d’examiner l’étape concernée. L’utilisation d’un tableau kanban permet de :
✓ Visualiser un aperçu immédiat de l'état d'avancement de chaque projet à un moment
donné
✓ Limiter les travaux en cours
✓ Et d'optimiser ainsi la productivité et l’efficacité de vos équipes.
Si votre projet est tel que vous recevez de nombreuses demandes dont la priorité et la taille
varient, alors la méthodologie de gestion de projet Kanban est la plus adaptée [6].
37
Chapitre II : Architectures logicielles et méthodologiques
c. Scrumban
L’utilisation de cette méthode de gestion de projet vous permet de profiter des avantages du
Kanban dans une gestion de projet basée sur la méthodologie Scrum [6].
d. Le Lean agile
La méthode Lean, aujourd’hui considérée comme partie intégrante de l'approche agile, permet
d’améliorer l'efficacité, de maximiser la valeur et d’éliminer le gaspillage. Elle s'efforce,
comme toute méthode agile, à réduire toutes les tâches et activités qui n'apportent pas de
valeur réelle et d’augmenter l’efficacité des parties prenantes.
L’utilisation du Lean permet d’appliquer le principe des 3M (Muda, Mura et Muri) dans le
processus de gestion de projet, pour éviter toute sorte de gaspillage :
✓ Muda (gaspillage) : lorsque vous utilisez des ressources sans que ces dernières
n’apportent de valeur ajoutée au client ;
✓ Mura (irrégularité) : lorsque l’avancement plus prononcé d’une partie déséquilibre
toutes les autres parties. Cela conduit à une inefficacité des processus et de l’équipe
(gaspillage !) ;
✓ Muri (surcharge) : lorsqu'il y a trop de pression sur les ressources. Cela conduit à des
inefficacités - tant au niveau des machines que des personnes [6].
✓ La figure 10 présente la méthode Learn.
38
Chapitre II : Architectures logicielles et méthodologiques
1 Culture DevOps
La culture DevOps, c’est avant tout une nouvelle façon de travailler ensemble. Elle
transforme notre manière de collaborer en cassant les barrières entre le développement et les
opérations. Ici, plus de silos : chacun a son rôle, mais tout le monde avance dans la même
direction, avec plus d’autonomie, une communication fluide et des processus optimisés grâce
à l’automatisation.
Adopter DevOps, ce n’est pas juste ajouter des outils ou des nouvelles pratiques techniques.
C’est surtout un état d’esprit : comprendre les enjeux des autres, partager les responsabilités et
apprendre ensemble. Cette approche permet d’accélérer les livraisons, d’améliorer la qualité
des logiciels et de rendre les systèmes plus robustes [7].
39
Chapitre II : Architectures logicielles et méthodologiques
La gestion de la configuration fait référence à la gestion de l'état des ressources d'un système,
ce qui englobe les serveurs, machines virtuelles et bases de données. Moyennant des outils de
gestion de la configuration, les équipes peuvent déployer les modifications de façon
systématique et contrôlée, réduisant ainsi les risques de modification de la configuration
système. Les équipes utilisent des outils de gestion de la configuration pour suivre l’état du
système et éviter toute dérive de configuration, à savoir toute dérive de configuration d’une
ressource système par rapport à son état souhaité au fil du temps [7].
L’approche contract-first signifie fondamentalement que tout effort d'API, qu'il s'agisse d'une
ou de plusieurs dans un programme, commence par un processus de conception. Dans ce
modèle, les API sont définies de manière itérative que les humains et les ordinateurs peuvent
comprendre, avant même qu'aucun code ne soit écrit. L'objectif est que chaque équipe parle le
même langage et que chaque outil utilisé exploite la même conception d'API. La différence
cruciale ici par rapport à une approche API-first est que, bien que l'API soit extrêmement
importante, le processus de conception est ce qui garantit que toutes les parties prenantes sont
impliquées et que leurs besoins sont satisfaits lors de la création.
Design-First commence avec des individus techniques et non techniques de chacune des
fonctions impliquées participant au processus de rédaction d'un contrat qui définit l'objectif et
la fonction de l'API (ou de l'ensemble d'API). De toute évidence, cette approche nécessite un
certain temps initial consacré à la planification. Cette phase vise à s'assurer que lorsque vient
le temps de commencer à coder, les développeurs écrivent du code qui n'aura pas besoin d'être
supprimé et réécrit plus tard. Cela permet de créer des API itératives et utiles qui, à leur tour,
conduisent à un meilleur programme d'API plus évolutif dans son ensemble [8].
40
Chapitre II : Architectures logicielles et méthodologiques
SwaggerHub est une solution en ligne qui facilite la conception et la gestion des API REST,
qu'elles soient publiques, privées ou dédiées aux microservices. Son approche "Design First,
Code Later" permet de structurer l'API avant d'implémenter la logique métier.
41
Chapitre II : Architectures logicielles et méthodologiques
Les spécifications de l'API peuvent être écrites en YAML ou JSON. Le format est facile à
apprendre et lisible à la fois pour les humains et les machines. La spécification OpenAPI
complète est disponible sur GitHub : Spécification OpenAPI 3.0.
Pour ce projet, nous avons choisi Scrum, une méthode agile qui nous a offert la flexibilité et
la réactivité. Grâce à des sprints courts, nous avons pu livrer régulièrement des versions
testables de l’application et les améliorer en intégrant rapidement les retours des utilisateurs.
Cette approche a également renforcé la collaboration et la transparence, en facilitant la
communication entre toutes les parties prenantes. En détectant rapidement les problèmes,
nous avons pu réduire les risques et garantir une solution adaptée aux besoins réels.
Pour structurer notre travail, nous avons défini les rôles clés :
✓ Product Owner : Mme Anna BAKHOUM, responsable de la vision et des priorités du
projet ;
✓ Scrum Master : Pr Ibrahima DIOP, garant du bon déroulement de la méthode agile ;
✓ Scrum Team : M. Moustapha DRAMÉ, chargé du développement technique.
Ce choix repose sur la nécessité d’une approche flexible et réactive pour s’adapter aux
évolutions du projet. Scrum s’est imposé comme le meilleur choix grâce à :
✓ Son adaptabilité, permettant d’intégrer rapidement les retours des utilisateurs ;
✓ Ses cycles courts (sprints), assurant des livraisons fréquentes et une amélioration
continue ;
42
Chapitre II : Architectures logicielles et méthodologiques
Conclusion
Dans ce chapitre, nous avons exploré les architectures logicielles et les méthodologies de
conception et de développement logiciels. À l’issue de cette analyse, nous avons sélectionné
l’architecture et l’approche méthodologique les mieux adaptées aux besoins de notre projet.
Ces choix seront déterminants pour développer une solution efficace et adaptée aux besoins
de l’UASZ. L’adoption des microservices permet de concevoir un système flexible et évolutif,
capable de s’adapter aux changements et de gérer efficacement les recrutements. Sur le plan
méthodologique, l’approche agile et DevOps favorise une collaboration fluide et une
amélioration continue du système. L’intégration des pratiques CI/CD et de l’approche
contract-first avec OpenAPI et SwaggerHub renforce la qualité et la fiabilité de notre solution.
Dans le prochain chapitre, nous allons présenter la spécification, l’analyse des besoins et la
conception des APIs.
43
Chapitre III : Spécification, analyse des besoins et conception des APIs
INTRODUCTION
La spécification et l’analyse des besoins fonctionnels sont des étapes clés dans tout projet de
développement logiciel. Elles permettent d’identifier les acteurs du système et de définir
précisément les fonctionnalités à mettre en œuvre pour répondre aux attentes des utilisateurs.
Ce chapitre présente la spécification fonctionnelle des APIs, qui servira de fondation pour la
conception technique et le développement du système de gestion des recrutements à l'UASZ.
L'API doit être robuste, sécurisée et facile à maintenir, tout en garantissant une interaction
fluide entre les utilisateurs et le système. Nous utilisons Swagger et OpenAPI pour spécifier
les services de l'API, ce qui facilite la collaboration entre les développeurs et les parties
prenantes, et garantit une documentation claire et accessible pour les futures itérations.
Dans les prochaines sections, nous allons identifier, pour chaque API, les acteurs impliqués
ainsi que ses fonctionnalités. Ensuite l’architecture générale ainsi que la conception détaillée
de notre application seront décrites.
44
Chapitre III : Spécification, analyse des besoins et conception des APIs
Un acteur représente un rôle d'un utilisateur qui interagit avec le système que vous modélisez.
L'utilisateur peut être un utilisateur humain, une organisation, une machine ou un autre
système externe. Dans un diagramme de cas d’utilisation, on distingue deux catégories
d'acteurs : les acteurs principaux qui bénéficient directement des fonctionnalités du système et
les acteurs secondaires qui fournissent des ressources ou informations complémentaires au
système.
45
Chapitre III : Spécification, analyse des besoins et conception des APIs
Dans le contexte de notre projet, les acteurs identifiés sont les suivants :
Ce microservice expose ses fonctionnalités via des endpoints API, documentés de manière
détaillée dans Swagger. La figure 13 illustre quelques-uns de ces endpoints, mettant en
évidence leur structure et leur utilisation.
46
Chapitre III : Spécification, analyse des besoins et conception des APIs
La description d’un cas d’utilisation détaille une interaction spécifique entre un utilisateur et
le système. Dans le cadre du cas d’utilisation « S’authentifier », il s’agit de la fonctionnalité
permettant à un utilisateur de se connecter au système en fournissant des informations
d’identification, telles que son adresse e-mail et son mot de passe. Cette description est
présentée sous forme de tableau pour en faciliter la compréhension et la visualisation. Le
tableau 2 ci-dessous illustre en détail le processus d’authentification.
47
Chapitre III : Spécification, analyse des besoins et conception des APIs
Elément Description
L’analyse des besoins fonctionnels est une étape clé du développement d’un système. Elle
permet d’identifier les interactions entre les utilisateurs et le système ainsi que les
comportements attendus en réponse à une action donnée. Dans cette section, nous nous
concentrons sur le cas d’utilisation « s’authentifier ». Cette fonctionnalité permet à un
utilisateur de s’authentifier.
• L’administrateur du système,
• Le responsable de formation,
48
Chapitre III : Spécification, analyse des besoins et conception des APIs
• Le candidat,
• Le membre de commission.
49
Chapitre III : Spécification, analyse des besoins et conception des APIs
50
Chapitre III : Spécification, analyse des besoins et conception des APIs
Cette spécification est au format YAML pour décrire une API RESTful. Elle commence par
spécifier la version d'OpenAPI utilisée (3.0.3), suivie d'informations générales sur l'API,
notamment son titre, sa description et sa version. Ensuite, elle spécifie un serveur sur lequel
l'API est déployée (http://localhost:8083/api/emails). Le bloc suivant définit les différentes
routes de l'API, chacune avec des opérations HTTP telles que GET, POST, PUT et DELETE.
Chaque opération est décrite avec un résumé, une description, un ID d'opération et une liste
de paramètres de requête. Par exemple, la première route /email définit une opération POST
pour créer un nouveau mail avec les détails fournis dans le corps de la requête. Elle spécifie
également une opération PUT pour mettre à jour les détails d'un budget existant et une
opération GET pour récupérer tous les mails dans un tableau JSON.
Les autres routes sont similaires, avec des opérations GET, POST, PUT et DELETE pour
gérer les mails, les téléphones, les adresses, les départements, etc. Chaque opération spécifie
les paramètres requis et les réponses possibles, y compris les codes HTTP et les descriptions.
Enfin, la spécification contient une section components qui définit les schémas de données
utilisés dans l'API, tels qu’Email, Téléphone, Département, etc. Ces schémas décrivent les
champs de données nécessaires pour créer ou mettre à jour des emails, des numéros de
téléphone, des départements, etc.
Afin de garantir une parfaite adéquation avec les exigences du cahier des charges et d’assurer
une compréhension approfondie des fonctionnalités de notre API, nous commençons par
identifier précisément les besoins des utilisateurs. Cette analyse se concrétise notamment par
la production de diagrammes de cas d'utilisation, qui permettent de visualiser les interactions
entre les acteurs et l’API.
Un acteur est l’archétype de l’utilisateur (personne, processus externe, ...) qui interagit avec le
système. Par défaut, c’est un acteur principal, c’est-à-dire qu’il agit directement sur le système
et en attend des résultats ou bien, il peut être un acteur secondaire qui est souvent sollicité
pour des informations supplémentaires.
Dans notre cas, le tableau ci-dessous détaille l’ensemble de nos acteurs intervenant dans l’API
UserDétails-service.
51
Chapitre III : Spécification, analyse des besoins et conception des APIs
Acteurs Actions
Administrateur Gérer les utilisateurs, les rôles, les comptes, les appels à
candidatures et les candidatures
Les fonctionnalités d'un système sont les services ou actions qu'il propose, qu'ils soient
visibles pour l'utilisateur ou qu'ils fonctionnent en arrière-plan automatiquement.
Lorsqu'on développe une API, il est crucial d'organiser clairement les données échangées.
L'outil Swagger facilite cette tâche en décrivant précisément les opérations disponibles. La
figure 19 montre l’ensemble des méthodes de l’API userDetails-service.
52
Chapitre III : Spécification, analyse des besoins et conception des APIs
53
Chapitre III : Spécification, analyse des besoins et conception des APIs
Cette figure présente quelques méthodes permettant d'interagir avec l'API utilisateur, rendues
clairement accessibles grâce à la documentation fournie par Swagger.
54
Chapitre III : Spécification, analyse des besoins et conception des APIs
Élément Description
Post conditions Les informations de l'utilisateur sont mises à jour dans la base
de données.
55
Chapitre III : Spécification, analyse des besoins et conception des APIs
Fréquence d'utilisation Fréquent, chaque fois que l'utilisateur souhaite mettre à jour
ses informations.
Dans cette section, nous nous concentrons sur le cas d’utilisation « modifier ses
informations ». Cette fonctionnalité permet à un utilisateur authentifié de mettre à jour ses
données personnelles, telles que son adresse, son numéro de téléphone ou sa date de
naissance.
Ce diagramme illustre les échanges entre l’utilisateur et le système, mettant en évidence les
étapes clés du processus de modification. Il permet de visualiser la manière dont le système
valide, enregistre et met à jour les informations en garantissant leur cohérence et leur sécurité.
La figure 21 ci-dessous décrit le diagramme de séquence du cas d’utilisation « modifier ses
informations ».
56
Chapitre III : Spécification, analyse des besoins et conception des APIs
créer, consulter, mettre à jour et supprimer des appels. Grâce à OpenAPI et Swagger, sa
documentation est claire, interactive et facile à tester. Les figures 22 et 23 détaillent ses
endpoints, paramètres et réponses, pour une compréhension rapide et intuitive.
57
Chapitre III : Spécification, analyse des besoins et conception des APIs
Dans ce microservice, nous avons identifiés quelques utilisateurs qui sont présentés dans le
tableau 5 ci-dessous.
Acteurs Actions
58
Chapitre III : Spécification, analyse des besoins et conception des APIs
Les différentes méthodes sont définies dans un contrat openApi dont la figure 24 ci-dessous
illustre quelques-unes.
59
Chapitre III : Spécification, analyse des besoins et conception des APIs
60
Chapitre III : Spécification, analyse des besoins et conception des APIs
Elément Description
Dans cette section, nous nous concentrons sur le cas d’utilisation « créer un appel ». Cette
fonctionnalité permet à un utilisateur authentifié de créer des appels à candidature.
61
Chapitre III : Spécification, analyse des besoins et conception des APIs
62
Chapitre III : Spécification, analyse des besoins et conception des APIs
Dans ce microservice, nous avons identifiés quelques utilisateurs qui sont présentés dans le
tableau 7 ci-dessous.
Acteurs Actions
63
Chapitre III : Spécification, analyse des besoins et conception des APIs
Les caractéristiques d'un système sont les opérations ou services qu'il offre, qu'ils soient
perceptibles par l'utilisateur ou qu'ils s'exécutent automatiquement en coulisses.Les
différentes méthodes sont définies dans un contrat openApi dont la figure 29 ci-dessous
illustre quelques-unes.
64
Chapitre III : Spécification, analyse des besoins et conception des APIs
Élément Description
Acteur Candidat
65
Chapitre III : Spécification, analyse des besoins et conception des APIs
Ce diagramme illustre les échanges entre le candidat et le système, mettant en évidence les
étapes clés du processus de soumission des candidatures.
66
Chapitre III : Spécification, analyse des besoins et conception des APIs
67
Chapitre III : Spécification, analyse des besoins et conception des APIs
L’API Selection-api est utilisée par plusieurs acteurs impliqués dans le processus de
recrutement. Le tableau 9 ci-dessous présente les différents acteurs intervenant dans le
processus.
➢ Fonctionnalités
68
Chapitre III : Spécification, analyse des besoins et conception des APIs
69
Chapitre III : Spécification, analyse des besoins et conception des APIs
Une description du cas d’utilisation « évaluer les candidatures » est faite dans le tableau 10.
Elément description
70
Chapitre III : Spécification, analyse des besoins et conception des APIs
La conception d’une API est une étape essentielle du développement logiciel. Pour structurer
et documenter efficacement une API, des outils comme OpenAPI et Swagger sont
recommandés. OpenAPI offre une description normalisée des fonctionnalités, des opérations
et des réponses de l’API, facilitant ainsi la collaboration entre les équipes.
Swagger, quant à lui, propose une interface interactive pour documenter, tester et générer du
code client. Il permet aux développeurs et aux parties prenantes de mieux comprendre l’API
et d’interagir avec elle de manière intuitive, optimisant ainsi le travail en équipe.
71
Chapitre III : Spécification, analyse des besoins et conception des APIs
a. Modules métiers
72
Chapitre III : Spécification, analyse des besoins et conception des APIs
en ligne, la mise à jour et le suivi des dossiers soumis ainsi que la récupération des
informations des candidatures pour leur analyse.
✓ SELECTION (Spring Boot) : ce service est en charge du processus de sélection des
candidats. Il offre la création de grilles d’évaluation et de critères de sélection,
l’évaluation automatique et manuelle des candidatures et la gestion des convocations
aux entretiens et des résultats.
b. Modules techniques
Pour assurer une communication fluide et efficace, les microservices utilisent HttpClient,
une bibliothèque Java permettant d’envoyer et de recevoir des requêtes HTTP. Ses principales
fonctionnalités sont :
• Envoi de requêtes GET, POST, PUT, DELETE aux différents services ;
• Gestion des réponses et des erreurs de communication ;
73
Chapitre III : Spécification, analyse des besoins et conception des APIs
Notre système repose sur une architecture microservices conçue pour assurer flexibilité et
évolutivité. Il est composé de huit microservices : authentification-service, appelcandidature-
api, usersdetails-service, candidature-service, selection, ainsi que trois services techniques
proxy, registry et config (voir Figure 37).
Dès leur démarrage, les microservices métiers récupèrent leur configuration via Config,
assurant une gestion centralisée des paramètres grâce à Git. Ensuite, ils s'enregistrent auprès
du Registry, qui garde une trace de leur localisation et de leur disponibilité. Le Proxy, quant
à lui, utilise ces informations pour rediriger les requêtes des utilisateurs vers le service
approprié, garantissant une navigation fluide et efficace.
En résumé, cette architecture optimise la communication entre les services et assure une
gestion dynamique des requêtes des utilisateurs. Grâce à Config, Registry et Proxy, les
microservices sont bien organisés, sécurisés et facilement accessibles, offrant ainsi une
expérience utilisateur optimale.
74
Chapitre III : Spécification, analyse des besoins et conception des APIs
Pour une bonne gestion de ce projet, nous avons utilisé une méthodologie de développement
logiciel approprié, Scrum.
a. Diagramme de classe
Le diagramme de classe est l’un des diagrammes les plus utilisés en UML, car il permet de
représenter visuellement les classes d’un système ainsi que leurs relations. Il facilite la
compréhension de la structure du projet et des interactions entre les différentes entités.
b. Schéma de données
75
Chapitre III : Spécification, analyse des besoins et conception des APIs
a. Diagramme de classe
76
Chapitre III : Spécification, analyse des besoins et conception des APIs
La classe Individu ne persiste pas dans la base de données de cette Api, elle provient du
microservice Authentification-service.
b. Schéma de données
77
Chapitre III : Spécification, analyse des besoins et conception des APIs
a. Diagramme de classe
78
Chapitre III : Spécification, analyse des besoins et conception des APIs
b. Schéma de données
79
Chapitre III : Spécification, analyse des besoins et conception des APIs
a. Diagramme de classe
80
Chapitre III : Spécification, analyse des besoins et conception des APIs
b. Schéma de données
a. Diagramme de classe
81
Chapitre III : Spécification, analyse des besoins et conception des APIs
b. Schéma de données
Conclusion
82
Chapitre IV : Implémentation et présentation de l’application
INTRODUCTION
Ce chapitre est consacré à la réalisation de notre application. Dans un premier temps, nous
allons présenter les outils de modélisation et de développement utilisés pour la mise en œuvre
de l’application. Les technologies utilisées pour l’implémentation du Back-End seront ensuite
exposées. Ensuite, nous aborderons les choix de technologies pour l'implémentation du Front-
End. Enfin, nous terminerons avec la présentation de quelques interfaces de l’application.
1 StarUML
StarUML est un logiciel de modélisation open-source qui prend en charge le cadre du langage
de modélisation unifié (UML). Il fournit plusieurs types de diagrammes et permet aux
utilisateurs de générer du code dans plusieurs langages de programmation. Avec son aide, les
développeurs peuvent créer des conceptions, des concepts et des solutions codées [10].
2 IntelliJ IDEA
IntelliJ IDEA est un environnement de développement intégré (IDE) pour Java et Kotlin
conçu pour optimiser la productivité des développeurs. Il effectue les tâches routinières et
répétitives à votre place en fournissant une saisie semi-automatique intelligente du code, une
analyse statique du code et des refactorisations. Il vous permet de vous concentrer sur le côté
positif du développement logiciel, ce qui le rend non seulement productif mais aussi agréable
[11].
3 SwaggerHub
SwaggerHub est une plateforme collaborative qui permet de définir des APIs à l'aide des
spécifications OpenAPI ou AsyncAPI et de gérer les APIs tout au long de leur cycle de
vie. SwaggerHub vous proposé par les mêmes personnes qui sont à l'origine des outils open
source Swagger. Il intègre les principaux outils Swagger (UI, Editor, Codegen, Validator)
83
Chapitre IV : Implémentation et présentation de l’application
dans une plateforme unique pour vous aider à coordonner l'ensemble du flux de travail du
cycle de vie d'une API.
4 Postman
Postman est une plateforme qui simplifie la création, le test et la gestion des APIs. Elle permet
de définir facilement les endpoints, paramètres et réponses attendues, tout en générant
automatiquement la documentation. L'outil permet de tester des requêtes HTTP (GET, POST,
PUT, DELETE) et d'analyser les réponses. Il offre aussi la possibilité d'automatiser des tests
via des scripts pré-exécutés avant ou après les requêtes. En somme, Postman accélère le
développement d'APIs tout en facilitant la collaboration et la gestion des workflows1.
5 Git
Git est un système de contrôle de version distribué qui est utilisé pour stocker le code source
dans le développement de logiciels afin de suivre ses modifications. Il permet aux
développeurs de travailler en collaboration avec des équipes sur des référentiels pour gérer les
versions de base de code, c'est-à-dire conserver l'historique des modifications du projet. En
utilisant git, les développeurs peuvent se déplacer de manière transparente dans les différents
1
Un workflow, c'est un enchaînement logique de requêtes API qui simule un scénario réel.
84
Chapitre IV : Implémentation et présentation de l’application
états du projet et fusionner les modifications de manière efficace, garantissant ainsi une
approche rationalisée et organisée du développement de logiciels [13].
1 Apache Tomcat
Apache Tomcat est un serveur d’applications web open source conçu pour la programmation
en Java et développé et maintenu par Jakarta, le groupe de projets open source Java de la
fondation Apache. L’objectif initial du logiciel Apache Tomcat est d’héberger et de déployer
les servlets Java. Les servlets sont des programmes Java exécutés côté serveur. Ils reçoivent
les requêtes des clients, les interprètent et génèrent les réponses demandées. L’envoi des
résultats peut se faire de façon directe ou via un protocole comme http.
Apache Tomcat fournit les fonctionnalités de base du traitement du serveur web pour les
servlets Java. Il couvre tout le cycle de vie des servlets, qui se compose de 3 méthodes :
✓ init(): qui se charge d’initier la servlet. Cette méthode est exécutée une seule fois, soit
lors du démarrage du serveur, soit lorsqu’elle est déclenchée par le client ;
✓ service(): qui se charge de traiter les requêtes clients et de générer les réponses
adéquates ;
✓ destroy() : cette méthode est invoquée par Tomcat à la fin de l’exécution de la servlet
pour nettoyer les traces des activités et libérer les ressources.
Tomcat est un des serveurs web préférés par les développeurs Java. Il permet donc aux
développeurs d’exécuter leurs applications web Java.
2 Java
Java est un langage de programmation orienté objet, conçu pour avoir le moins de
dépendances d'implémentation possible. Il est destiné à permettre aux développeurs
d'applications d'écrire une fois et d'exécuter n'importe où (WORA), ce qui signifie que le code
Java compilé peut s'exécuter sur toutes les plates-formes qui prennent en charge Java sans
85
Chapitre IV : Implémentation et présentation de l’application
avoir besoin de recompilation. Java a été développé par James Gosling chez Sun
Microsystems en mai 1995, puis acquis par Oracle en 2019. Il est largement utilisé pour
développer des applications pour les ordinateurs de bureau, le Web et les appareils mobiles.
Java est connu pour sa simplicité, sa robustesse et ses fonctionnalités de sécurité, ce qui en
fait un choix populaire pour les applications de niveau entreprise. Les applications Java sont
compilées en code octet qui peut s'exécuter sur n'importe quelle machine virtuelle Java. La
syntaxe de Java est similaire à celle de C/C++. Java facilite l'écriture, la compilation et le
débogage de programmes. Il permet de créer du code réutilisable et des programmes
modulaires [14].
3 Spring
Spring propose plusieurs modules : AOP pour la gestion des aspects transversaux, ORM pour
l’intégration avec Hibernate, Web Flow pour les parcours utilisateur et Web MVC pour
structurer les applications web. Son grand atout, l’injection de dépendances (DI), garantit un
code flexible et maintenable.
4 Spring Boot
Spring Boot, développé par Pivotal Software, est un Framework Java open source utilisé pour
le développement d'applications utilisant Java ou Kotlin. Ce Framework est conçu pour
simplifier le processus de création d'applications de qualité industrielle avec facilité de
développement en réduisant le code standard et en facilitant la configuration via Spring
Starters. Spring Boot est également livré avec un serveur HTTP intégré, pour permettre aux
applications d'être déployées en tant qu'applications autonomes [16].
86
Chapitre IV : Implémentation et présentation de l’application
5 API REST
REpresentational State Transfer (REST) est un style architectural qui définit un ensemble de
contraintes à utiliser pour la création de services Web. L'API REST est un moyen d'accéder
aux services Web de manière simple et flexible sans aucun traitement.
6 PostgreSQL
PostgreSQL est l'un des systèmes de gestion de bases de données relationnelles à usage
général les plus avancés. En tant que logiciel open source, son code source est disponible sous
licence PostgreSQL, une licence open source libérale. Toute personne possédant les
compétences nécessaires est libre d'utiliser, de modifier et de distribuer PostgreSQL sous
n'importe quelle forme. Comme il est très stable, très peu d'efforts sont nécessaires pour
maintenir ce SGBD [17].
1 React.js
React, souvent appelé React.js ou ReactJS, est une bibliothèque JavaScript reconnue pour sa
flexibilité et son efficacité dans la création d'interfaces utilisateur interactives (IU) pour les
applications web et natives. Grâce à son architecture basée sur des composants, les
développeurs peuvent créer des éléments d'IU tels que des boutons ou des barres de
recherche, réutilisables dans toute l'application. Cela simplifie non seulement le processus de
développement, mais améliore également la maintenabilité.
L'une des fonctionnalités distinctives de React est JSX (JavaScript XML). JSX ressemble à
HTML et permet aux développeurs d'écrire du balisage directement dans leur code JavaScript.
87
Chapitre IV : Implémentation et présentation de l’application
Cette fonctionnalité unique simplifie le codage en offrant une manière plus intuitive de
structurer les composants [18].
2 Bootstrap
Bootstrap a été développé en 2011 par l'équipe du réseau social Twitter. Bootstrap est un
Framework front end (HTML5, CSS et JavaScript) spécialement conçu pour le
développement d'application web "responsive", c'est-à-dire qui s'adaptent automatiquement à
différents dispositifs et tailles d'écran (tablettes, smartphones, desktop...etc.). Il fournit des
outils avec des styles déjà en place pour des typographies, des boutons, des interfaces de
navigation et bien d'autres encore. Il peut être utilisé pour créer par exemple, des pages de site
de présentation, pour une interface graphique d'une application web ou être intégré à un thème
d'un CMS, Bootstrap est de plus en plus utilisé, il est devenu « le plus populaire des
Framework FrontOffice pour développer des projets responsive et mobile-first sur le web
[19].
Après avoir détaillé l’implémentation des API et du Front-end, il est essentiel de se pencher
sur l’interface utilisateur de l’application, véritable point de contact entre l’utilisateur et le
système. Cette section vous propose une immersion au cœur de l’application, où chaque
élément a été conçu pour offrir une expérience fluide, intuitive et agréable.
L’objectif principal de cette présentation est de mettre en avant la manière dont l’utilisateur
interagit avec l’application, depuis son arrivée sur la page d’accueil jusqu’à la navigation
entre les différentes fonctionnalités. Nous mettrons en lumière la logique de conception de
l’interface, les choix ergonomiques adoptés ainsi que les éléments visuels qui favorisent une
utilisation optimisée et accessible à tous.
Nous commencerons par examiner le graphe de navigation de l’application, qui donne une
vision globale de l’architecture et des interactions entre les différentes pages. Ensuite, nous
explorerons en détail les interfaces clés, telles que la page de démarrage, la page de
connexion, ainsi que les espaces dédiés aux profils des utilisateurs.
88
Chapitre IV : Implémentation et présentation de l’application
89
Chapitre IV : Implémentation et présentation de l’application
90
Chapitre IV : Implémentation et présentation de l’application
Cette page constitue le cœur de la gestion des appels à candidatures et des candidatures. Elle
regroupe l’ensemble des fonctionnalités essentielles, notamment :
• la création et la gestion des appels à candidatures,
• le suivi et le traitement des candidatures,
• la gestion des utilisateurs, incluant les candidats et les membres externes,
• la sélection des candidatures finales,
• un tableau de bord interactif permettant de visualiser des statistiques clés sur les appels
et les candidatures.
Cette page reprend la plupart des fonctionnalités de l’espace administrateur, avec quelques
spécificités :
• l’absence de gestion des utilisateurs,
• labsence de gestion des types d’appels à candidatures.
91
Chapitre IV : Implémentation et présentation de l’application
Le responsable dispose ainsi d’un espace dédié à la gestion et au suivi des candidatures en
lien avec ses attributions.
Conclusion
Dans ce chapitre, nous avons présenté les technologies utilisées pour implémenter notre
application. Cette dernière est conçue pour répondre aux exigences spécifiques des utilisateurs
du système. Chaque utilisateur bénéficie d'une interface conviviale et intuitive lui facilitant sa
tâche. Que vous souhaitiez gérer vos candidatures, suivre leur progression ou explorer de
nouvelles opportunités, tout a été conçu pour garantir une expérience agréable et sans
complication, dans un cadre bien organisé et efficace.
92
Conclusion Générale
Conclusion Générale
Pour l'obtention de notre diplôme de Master en Génie logiciel, nous avons eu l'opportunité de
réaliser un stage au sein de la Direction de l'Informatique et des Systèmes d’Information
(DISI) de l'Université Assane Seck de Ziguinchor (UASZ) dans le cadre du Projet de Gestion
Intégrée (PGI). Au cours de notre stage, nous avons travaillé sur la conception et
l’implémentation du module de gestion des recrutements au sein de l'UASZ. Nous avons ainsi
développé une application web divisée en deux parties : le Back-end et le Front-end.
Cette application permet désormais aux gestionnaires tels que les responsables de la DRH de
publier des offres d'emploi de façon et offre aux candidats la possibilité de soumettre leurs
candidatures aisément et de faire le suivi. En mettant en place cette automatisation, notre
objectif est de fournir aux membres des équipes de recrutement un instrument performant
pour gérer les candidatures de façon plus aisée et conviviale, tout en économisant du temps.
L'application est intégrée avec divers outils de gestion des employés par la DHR et des
formations.
93
Bibliographie
Bibliographie
[1] « Que sont les microservices ? | AWS ». Consulté le: 4 février 2025. [En ligne].
Disponible sur: https://aws.amazon.com/fr/microservices/
[3] « Rapide, facile et évolutif : les principaux avantages de l’architecture orientée service ».
Consulté le: 17 mars 2025. [En ligne]. Disponible sur:
https://www.oracle.com/sn/service-oriented-architecture-soa/
[4] « What is Service-Oriented Architecture (SOA)? | IBM ». Consulté le: 17 mars 2025.
[En ligne]. Disponible sur: https://www.ibm.com/think/topics/soa
[6] « Les 7 Méthodes de gestion de projet les plus utilisées ». Consulté le: 5 février 2025.
[En ligne]. Disponible sur: https://blog-gestion-de-projet.com/gestion-de-projet/outils-
methodes-gestion-projet/
[7] « Qu’est-ce que DevOps ? DevOps expliqué | Microsoft Azure ». Consulté le: 6 février
2025. [En ligne]. Disponible sur: https://azure.microsoft.com/fr-fr/resources/cloud-
computing-dictionary/what-is-devops
[9] « Flow de développement API Contract-first ». Consulté le: 5 février 2025. [En ligne].
Disponible sur: https://blog.yousign.io/posts/contract-first-api-development-flow
[10] « StarUML », Softonic. Consulté le: 12 février 2025. [En ligne]. Disponible sur:
https://staruml.fr.softonic.com
[11] « Getting started | IntelliJ IDEA », IntelliJ IDEA Help. Consulté le: 12 février 2025. [En
ligne]. Disponible sur: https://www.jetbrains.com/help/idea/getting-started.html
[12] « À propos | Documentation SwaggerHub ». Consulté le: 15 février 2025. [En ligne].
Disponible sur: https://support.smartbear.com/swaggerhub/docs/en/about.html
[13] « What Is a GIT Repository? », GeeksforGeeks. Consulté le: 15 février 2025. [En ligne].
Disponible sur: https://www.geeksforgeeks.org/what-is-a-git-repository/
94
Bibliographie
[14] « Introduction to Java », GeeksforGeeks. Consulté le: 15 février 2025. [En ligne].
Disponible sur: https://www.geeksforgeeks.org/introduction-to-java/
[15] « Introduction to Spring Framework », GeeksforGeeks. Consulté le: 15 février 2025. [En
ligne]. Disponible sur: https://www.geeksforgeeks.org/introduction-to-spring-
framework/
[16] « Spring Boot Tutorial - Learn Spring Boot », GeeksforGeeks. Consulté le: 12 février
2025. [En ligne]. Disponible sur: https://www.geeksforgeeks.org/spring-boot/
[17] « PostgreSQL Tutorial », GeeksforGeeks. Consulté le: 17 mars 2025. [En ligne].
Disponible sur: https://www.geeksforgeeks.org/postgresql-tutorial/
95