Pfe Med Yassine Hadda 2023
Pfe Med Yassine Hadda 2023
Pfe Med Yassine Hadda 2023
Je tiens à dédier ce travail à mes chers parents, Mohamed Riadh et Bassma, qui ont
toujours été mes piliers dans la vie et dans mes études. Leurs sacrifices, leur amour incondi-
tionnel, leur soutien indéfectible et leur confiance en moi ont été ma source d’inspiration et
de motivation tout au long de ce parcours académique. Je ne pourrai jamais assez exprimer
ma gratitude pour tout ce qu’ils ont fait pour moi, mais je leur dédie ce travail en signe de
reconnaissance et d’affection. Que Dieu leur accorde santé, bonheur et longue vie.
Je dédie également ce travail à mon frère Zied et ma sœur Abir, qui ont été des compa-
gnons fidèles tout au long de ma vie. Leurs encouragements, leur soutien et leur amour ont
été essentiels pour mon parcours et je leur en suis éternellement reconnaissant.
Enfin, je tiens à remercier toutes les personnes qui ont cru en moi, qui m’ont soutenu et
encouragé tout au long de mes études. Ma grande famille, mes amis, mes enseignants, mes
collègues et mes proches, vous avez tous joué un rôle important dans ma vie et dans ma
réussite. Cette dédicace est pour vous, pour vous témoigner ma gratitude pour tout ce que
vous avez fait pour moi. Que ce travail soit le fruit de votre soutien et de votre confiance en
moi, et qu’il vous rende fiers comme vous m’avez rendu fier.
i
Remerciements
Je tiens tout d’abord à exprimer ma gratitude à Dieu qui m’a guidé tout au long de ce
travail.
Mes remerciements les plus sincères vont également à mon encadrante, Mme Amira
Dhokar, pour sa contribution inestimable à ce projet. Ses conseils avisés et sa disponibilité
constante ont grandement enrichi mes réflexions et ont contribué à l’aboutissement de ce
travail.
Je tiens à exprimer ma reconnaissance envers M. Ali Bayoudh, mon superviseur chez
Diginov, pour son soutien tout au long de ce travail. Je suis fier de l’avoir élaboré avec lui
et je suis infiniment reconnaissant pour le temps qu’il m’a consacré. Ses conseils avisés ont
grandement contribué à l’aboutissement de ce travail, et je tiens à exprimer ma gratitude
pour sa contribution.
Je tiens à exprimer ma profonde gratitude envers tous les enseignants qui m’ont guidé et
enseigné au cours de mes années d’études. Leurs connaissances, leur expertise et leur passion
pour l’enseignement ont été essentiels pour ma formation académique et personnelle. Chaque
enseignant a contribué à ma croissance et à ma compréhension du monde, et je suis très
reconnaissant pour tout ce qu’ils ont fait pour moi. Je leur suis redevable pour leur patience,
leur soutien et leur encouragement constant. Mes années d’études ont été une expérience
inoubliable grâce à leur dévouement et leur passion pour l’enseignement, et je leur en suis
éternellement reconnaissant.
Je tiens également à remercier les membres du jury d’avoir accepté d’évaluer ce projet,
ainsi que tous ceux qui ont contribué de près ou de loin à sa réalisation. Leur soutien et
leur expertise ont été précieux pour la réussite de ce travail. Je suis reconnaissant pour leur
temps et leur engagement envers ce projet.
ii
Table des matières
Introduction Générale 1
iii
Table des matières
3 Back-End 30
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1 Objectif du sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Spécification fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.1 Diagramme général de cas d’utilisation . . . . . . . . . . . . . . . . . 31
3.3.2 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.3 Diagramme de séquence . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4 Revue du sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 Rétrospective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4 Front-End "Administrateur" 42
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1 Objectif du Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Diagrammes de cas d’utilisation raffinés . . . . . . . . . . . . . . . . . . . . . 45
4.5 Diagramme de séquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5.1 Diagramme de séquence « Authentification » . . . . . . . . . . . . . . 51
4.5.2 Diagramme de séquence « Ajouter utilisateur » . . . . . . . . . . . . 52
4.5.3 Diagramme de séquence « Ajouter catégorie » . . . . . . . . . . . . . 53
4.5.4 Diagramme de séquence « Ajouter publication » . . . . . . . . . . . . 54
iv
Table des matières
5 Front-End "Utilisateur" 59
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1 Objectif du Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Sprint Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4 Diagrammes de cas d’utilisation raffinés . . . . . . . . . . . . . . . . . . . . . 61
5.5 Diagramme de séquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.5.1 Diagramme de séquence « Ajouter publication » . . . . . . . . . . . . 65
5.5.2 Diagramme de séquence « Supprimer publication » . . . . . . . . . . 66
5.5.3 Diagramme de séquence « Modifier publication » . . . . . . . . . . . 67
5.5.4 Diagramme de séquence « Voter » . . . . . . . . . . . . . . . . . . . . 68
5.6 Revue du sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.7 Rétrospective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
v
Table des matières
Conclusion Générale 83
Bibliographie 85
Annexe 87
vi
Table des figures
vii
Table des figures
viii
Table des figures
ix
Liste des tableaux
x
Liste des tableaux
xi
Liste des acronymes
BI Business Intelligence
PB Product Backlog
OS Operating System
CI Continuous Integration
CD Continuous Delivery
PO Product Owner
SM Scrum Master
xii
Liste des tableaux
xiii
Introduction Générale
De nos jours, les entreprises sont confrontées à des défis constants en matière de ges-
tion des connaissances et de collaboration entre leurs employés. La rapidité avec laquelle
l’information évolue et se propage rend crucial le développement de solutions efficaces pour
partager les connaissances et favoriser la communication au sein de l’organisation. Dans ce
contexte, la gestion des connaissances devient un enjeu stratégique majeur. Les organisations
comprennent de plus en plus l’importance de capitaliser sur les connaissances et l’expertise de
leurs employés pour stimuler l’innovation, favoriser la prise de décision éclairée et améliorer
la productivité globale.
Cependant, malgré cette prise de conscience, de nombreuses entreprises se heurtent à des
obstacles lorsqu’il s’agit de mettre en place des processus efficaces de partage des connais-
sances. Les informations sont souvent dispersées dans divers systèmes, les employés ont du
mal à trouver rapidement les informations pertinentes, et la collaboration entre les équipes
peut être entravée par des barrières communicationnelles.
Dans ce contexte, notre projet de fin d’études, élaboré au sein de l’entreprise DIGINOV,
vise à proposer une application web d’un système permettant à tous les membres de l’équipe
de partager et d’enrichir leurs connaissances techniques via un système de communication
interne et de rester ainsi à la pointe de la technologie.
Ce rapport respectera le processus Agile Scrum, qui favorise une approche itérative et
collaborative dans le développement des applications. La structure du rapport suivra les
principales phases de ce processus et sera structuré en 5 chapitre :
Dans le premier chapitre, nous mettrons en avant l’organisme d’accueil dans lequel le
projet a été réalisé. Nous présenterons également le cadre du projet, en décrivant le contexte
et les objectifs à atteindre. De plus, nous détaillerons la méthodologie de travail adoptée, en
mettant en évidence l’utilisation de la méthode Agile Scrum et les avantages qu’elle offre en
termes de flexibilité, de collaboration et d’adaptabilité aux changements.
Le deuxième chapitre sera consacré à la phase d’analyse du projet. Nous aborderons
l’architecture du produit, en décrivant les différentes composantes et leur interaction. Nous
1
Introduction Générale
présenterons également les outils et les technologies qui ont été adoptés pour le dévelop-
pement de l’application. Ensuite, nous nous concentrerons sur l’identification des besoins
fonctionnels et non fonctionnels, en prenant en compte les exigences spécifiques de l’entre-
prise. Cette analyse approfondie nous permettra d’établir le Product Backlog, qui répertorie
les fonctionnalités prioritaires de l’application. Enfin, nous planifierons les sprints nécessaires
pour la mise en œuvre de l’application, en définissant les objectifs et les tâches à accomplir
pour chaque itération.
Le troisième chapitre fera l’objet d’un premier sprint du projet, axé sur l’implémentation
de l’acteur Utilisateur dans notre application de partage de connaissances. Ce sprint initial
vise à fournir aux utilisateurs une interface conviviale et des fonctionnalités de base pour
interagir avec le système et a pour objectif de...
Dans le quatrième chapitre, nous aborderons le deuxième sprint de notre projet, qui se
concentrera sur l’acteur Administrateur de l’application. Ce sprint vise à mettre en place les
fonctionnalités et les outils nécessaires pour permettre à l’administrateur de gérer efficace-
ment l’application et d’assurer sa bonne utilisation.
Dans le cinquième chapitre, nous aborderons le troisième sprint de notre projet, qui
se concentrera sur le développement d’un système de recommandation. Ce sprint vise à
mettre en place un mécanisme intelligent qui permettra aux utilisateurs de recevoir des
recommandations personnalisées et pertinentes en fonction de leurs préférences et de leur
historique d’utilisation.
La dernière partie du rapport portera sur la conclusion générale du projet qui mettra en
évidence les différents atouts de ce travail ainsi que les perspectives visant à améliorer notre
produit.
2
Cadre général du projet
1
Introduction
Dans ce chapitre, nous aborderons deux points essentiels. Tout d’abord, nous présente-
rons l’entreprise d’accueil, DIGINOV, en mettant en évidence ses caractéristiques et son
contexte. Ensuite, nous nous concentrerons sur le contexte du projet en décrivant la tech-
nologie que nous allons utiliser. Par la suite, nous présenterons le projet en exposant la
problématique qui se pose, et nous envisagerons une solution appropriée. Enfin, nous justi-
fierons le choix de la méthodologie adoptée pour la réalisation du projet, en expliquant les
raisons qui nous ont conduits à opter pour cette approche spécifique.
3
Chapitre 1. Cadre général du projet
1.1.1 DIGINOV
DIGINOV propose une gamme variée de services pour répondre aux besoins de ses clients.
Ses compétences et son savoir-faire lui permettent de fournir des solutions adaptées et effi-
caces dans les domaines suivants :
• Mobile : L’équipe de développement mobile possède une grande expertise dans la
conception et la création d’applications pour les plateformes iOS et Android. Elle
assure également l’optimisation de sites web pour les appareils mobiles.
• Web : Les experts en développement web travaillent en étroite collaboration avec leurs
4
Chapitre 1. Cadre général du projet
clients pour répondre à leurs besoins en matière de sites web dynamiques, d’applica-
tions web, d’e-commerce et d’optimisation pour les moteurs de recherche.
• BI : Des solutions de Business Intelligence sur mesure sont offertes pour aider les
clients à prendre des décisions éclairées grâce à des analyses approfondies des données.
• DevOps : L’équipe DevOps se concentre sur l’automatisation des processus de déve-
loppement et de déploiement de logiciels, pour permettre à ses clients de gagner du
temps et d’améliorer leur efficacité.
• Robotics : Une grande expérience dans le domaine de la robotique, avec une exper-
tise dans la conception, la programmation et l’intégration de robots pour diverses
applications industrielles et commerciales.
• ERP : Des solutions ERP personnalisées sont proposées pour aider les clients à amé-
liorer leur efficacité opérationnelle et leur rentabilité, en automatisant leurs processus
métiers clés.
5
Chapitre 1. Cadre général du projet
1.3.1 Problématique
Le partage des connaissances entre les employés est un aspect important de la culture de
l’entreprise moderne, en particulier dans les domaines de la technologie et du développement
informatique. Cependant, les méthodes traditionnelles telles que les formations en salle de
classe et les manuels imprimés peuvent être coûteuses et peu efficaces. D’autre part, le
manque de communication interne efficace, la difficulté d’accès à l’information pertinente,
le faible engagement et la collaboration entre les employés peuvent affecter d’une manière
considérable le rendement de l’équipe au sein d’une entreprise.
Le projet consiste à mettre en oeuvre en un système de blog interne pour permettre
aux employés de partager leurs connaissances et d’acquérir de nouvelles compétences, tout
en favorisant la collaboration et la création d’une communauté de partage. La plateforme
permettra aux employés de poser des questions sur le codage, de partager des connaissances
et de participer à des défis et des formations.
Cependant, les questions qui se posent dans ce contexte sont les suivantes : Comment
s’assurer que les employés s’engagent dans cette plateforme ? Et comment garantir que les
connaissances partagées sont pertinentes et de qualité ?
Nous présenterons dans ce qui suit quelques solutions existantes ainsi que notre solution
proposée.
L’étude du marché est une phase essentielle de tout projet. Elle consiste à comprendre et
analyser les solutions existantes et à mener une analyse critique pour déterminer les faiblesses
et les forces de chaque solution existante. Cela permet d’identifier les besoins du projet et de
les prendre en compte lors des phases de conception et de réalisation de notre application.
Dans cette section, nous présenterons quelques-unes des applications existantes qui sont
6
Chapitre 1. Cadre général du projet
Services offerts
• Microsoft Teams permet de mener des conversations privées en groupe et de par-
tager différents sortes de contenus. Cette application offre également la possibilité
d’organiser des réunions et des projets avec des équipes différentes.[5].
Critiques
• Il est contrôlé par Microsoft, et non par l’organisation,
• Il consomme beaucoup de ressources système,
• Il possède une interface utilisateur parfois confuse.
1.3.3.2 Skype
Services offerts
• La technologie de Skype est un programme intensif en réseau. C’est l’une des inven-
tions en ligne les plus populaires aidant à la communication des entreprises, de la
famille et des amis. Il est totalement gratuit.[6].
Critiques
• Il est généralement utilisé pour reconnecter les clients et les entreprises pour tenir des
réunions et des conférences.
• Il supporte au maximum 25 personnes dans un groupe de discussion.
7
Chapitre 1. Cadre général du projet
Le tableau 1.1 présente le résultat d’une étude comparative entre les différentes solutions
en se basant sur les critères définis précédemment.
Agile est un processus par lequel une équipe peut gérer un projet en le divisant en
plusieurs étapes et en impliquant une collaboration constante avec les parties prenantes
8
Chapitre 1. Cadre général du projet
ainsi qu’une amélioration et une itération continues à chaque étape. La méthodologie Agile
commence par la description par les clients de la façon dont le produit final sera utilisé et
quel problème il résoudra.[7]
Cette méthode est basée sur 4 valeurs principales :
• Les individus et les interactions plutôt que les processus et les outils,
• Un logiciel fonctionnel plutôt qu’une documentation exhaustive,
• La collaboration avec le client plutôt que la négociation de contrat,
• Répondre au changement plutôt que suivre un plan.
Scrum est une méthodologie agile de gestion de projet utilisée pour les projets de déve-
loppement de logiciels dans le but de fournir une nouvelle capacité logicielle toutes les 2-4
semaines. La figure 1.2 présente un diagramme qui décrit le processus de la méthodologie
SCRUM :[8]
9
Chapitre 1. Cadre général du projet
1.4.2 Organisations
La méthodologie Scrum est définie par des rôles d’équipe, des événements, des artefacts
et des règles. Ci-dessous, nous détaillerons le rôle de chacun :
L’équipe Scrum :
• Le Product Owner : généralement un client interne ou externe, ou un porte-parole
pour le client, il y a seulement un Product Owner. Il est ultimement responsable de la
gestion du backlog du produit et de l’acceptation des incréments de travail terminés.
• Le Scrum Master : est le leader servant du Product Owner, de l’équipe de développe-
ment et de l’organisation. Il s’assure que l’équipe adhère à la théorie, aux pratiques et
aux règles de Scrum et protège l’équipe en faisant tout ce qui est possible pour aider
l’équipe à performer au plus haut niveau.
• L’équipe de développement : l’équipe de développement est un groupe auto-organisé et
interfonctionnel armé de toutes les compétences nécessaires pour livrer des incréments
livrables à la fin de chaque sprint.
Événements Scrum :
• Le Sprint : Un sprint est une période limitée dans le temps au cours de laquelle un
travail spécifique est achevé et prêt pour examen. Les sprints durent généralement de
2 à 4 semaines, mais peuvent être aussi courts qu’une semaine.
• La planification du sprint : Les réunions de planification d’équipe sont des événements
limités dans le temps qui déterminent les éléments du backlog du produit qui seront
livrés et la manière dont le travail sera réalisé.
• La réunion quotidienne : La réunion quotidienne est une courte réunion de commu-
nication (pas plus de 15 minutes) au cours de laquelle chaque membre de l’équipe
couvre rapidement et de manière transparente les progrès depuis la dernière réunion,
le travail planifié avant la prochaine réunion et tout obstacle qui pourrait bloquer sa
progression.
• La revue de sprint : La revue de sprint est l’événement de "monstration" ou de
présentation pour l’équipe afin de présenter le travail accompli pendant le sprint. Le
Product Owner vérifie le travail par rapport aux critères d’acceptation prédéfinis et
accepte ou rejette le travail. Les parties prenantes ou clients donnent des commentaires
pour garantir que l’incrément livré répond aux besoins commerciaux.
10
Chapitre 1. Cadre général du projet
11
Chapitre 1. Cadre général du projet
Conclusion
Ce chapitre a dressé un portrait général de l’entreprise et de ses services, ainsi que du
contexte dans lequel notre projet s’inscrit. Nous avons mis en évidence le problème que
nous cherchons à résoudre, en citant des exemples concrets de difficultés rencontrées par
les utilisateurs actuels. Nous avons également analysé les faiblesses des applications exis-
tantes et montré pourquoi il est important de développer une nouvelle solution. Enfin, nous
avons présenté la méthodologie que nous avons choisie pour mener à bien notre projet, ainsi
que les objectifs que nous nous sommes fixés. Dans le prochain chapitre, nous aborderons
l’étude préliminaire et la conception architecturale de notre solution, en détaillant les choix
techniques et les spécifications fonctionnelles.
12
Spécification des besoins
2
Introduction
Ce sprint vise à spécifier et à capturer, en premier lieu les besoins nécessaires pour
construire notre système. L’objectif principal est de comprendre les attentes des utilisateurs
et de définir clairement les fonctionnalités essentielles de l’application. Ce sprint décrira les
étapes et les méthodologies utilisées pour capturer et analyser les exigences, établissant ainsi
une base solide pour le développement futur du projet.
La partie suivante sera axée sur la méthodologie choisie pour notre application. Enfin,
nous présenterons la mise en pratique des principes Scrum.
13
Chapitre 2. Spécification des besoins
14
Chapitre 2. Spécification des besoins
15
Chapitre 2. Spécification des besoins
Ce sont les besoins qui permettent d’assurer la qualité des services de l’application :
L’ergonomie : Il faut avoir des interfaces simples, non encombrées, responsives, com-
préhensibles et représentables de point de vue design.
Une contrainte technique : Il faut assurer la cohérence entre les interfaces et le
code doit être extensible et maintenable afin de faciliter toute opération d’amélioration ou
d’optimisation.
La sécurité : L’application doit garantir l’intégrité et la confidentialité des données pour
16
Chapitre 2. Spécification des besoins
l’utilisateur connecté. La sécurité du système est assurée par l’authentification des membres
via un login et un mot de passe. D’autre part, une déconnexion automatique est assurée
après une période d’inactivité (durée, actions).
La performance : Le temps de réponse doit être le plus court possible et l’application
doit être toujours fonctionnelle
Après avoir identifié les besoins de notre application, nous détaillons dans cette partie
toutes les tâches à effectuer sur le projet, classées par priorité, ce qui conduit à un certain
ordre de réalisation.
17
Chapitre 2. Spécification des besoins
La priorisation du Product backlog est une tâche primordiale, et pour l’effectuer cor-
rectement, il est essentiel d’établir les critères et la méthode de priorisation des produits. Il
existe de nombreuses techniques de priorisation, pour notre cas, nous avons choisi la méthode
MoSCoW :
• Mo (Must have) - Doit avoir : doit être achevé.
• S (Should have) - Devrait avoir : devrait être achevé si possible.
• Co (Could have) -Pourrait avoir : pourrait être achevé s’il n’y a aucun impact sur les
autres tâches en cours.
• W (Would have) - Devrait avoir : ne sera pas achevé immédiatement mais serait
préférable pour une version ultérieure.
18
Chapitre 2. Spécification des besoins
19
Chapitre 2. Spécification des besoins
20
Chapitre 2. Spécification des besoins
Sprint 2 : Front-End
"Administrateur"
1. Implémentation des maquettes 06/03/2023 31/03/2023
• Login page
• Home page
• Team page
• Challenges page
• Workshops page
• Tutorial page
• Category page
2. Intégration/Utilisation des APIs
Sprint 3 : Front-End
"Utilisateur"
01/05/2023 26/05/2023
• Etude théorique des systèmes de re-
commandation
• Choix, intégration, utilisation et test
d’un système de recommandation
21
Chapitre 2. Spécification des besoins
22
Chapitre 2. Spécification des besoins
Dans notre étude, nous ne nous intéressons qu’aux plateformes NodeJS, qui utilisent le
framework Express.js. Express.js est un excellent framework pour créer une API REST, mais
il ne nous donne aucune indication sur la façon d’organiser notre projet. Une organisation
correcte de la structure du projet évitera la duplication du code et améliorera la stabilité. Afin
de faire le bon choix, nous avons choisi l’architecture de composants [10] comme architecture
pour notre projet.
23
Chapitre 2. Spécification des besoins
Dans la même optique que pour l’architecture logique côté Back-end, il est important
d’avoir une organisation claire et structurée pour le Front-end. Dans le cas de notre projet,
nous avons opté pour l’architecture de composants également pour le côté Front-end, qui
présente les mêmes avantages que pour le Back-end en termes de modularité, portabilité,
réutilisabilité et maintenabilité.
En résumé, l’architecture de composants est une approche adaptée pour les deux côtés de
notre application web, permettant une meilleure organisation, réutilisation et maintenabilité
du code.
Durant la réalisation de ce travail, nous avons utilisé un ordinateur MSI avec un système
d’exploitation Windows 11 et les caractéristiques suivantes :
• CPU : Intel Core i5
• RAM : 16 Gb
• OS : 64 Bits
• Disque Dur : 500 Gb SSD + 500 Gb HDD
Les choix techniques concernant les langages de développement sont primordiaux. Dans
cette optique, cette section se concentrera sur l’étude des différents langages et frameworks
afin de faire un choix judicieux pour la réalisation de notre projet.
Langage de développement :
Le choix du langage de développement sera divisé en deux parties :
24
Chapitre 2. Spécification des besoins
• Côté Back-End : Il est invisible pour les visiteurs, mais représente une grande partie
du développement d’un projet web. Le Back-End peut être divisé en deux parties
essentielles :
- Serveur
- Base de données
• Côté Front-End : Lorsque nous parlons de Front-End, il s’agit des éléments du site
web que nous voyons à l’écran et avec lesquels nous pouvons interagir.
Pour le Back-End : Afin de faire le bon choix, nous avons étudié la plateforme NodeJS,
et pour la base de données, nous avons choisi MongoDB pour le stockage des données et
MongoDB Compass pour la gestion de la base de données.
• React : est une bibliothèque JavaScript open-source utilisée pour la création d’in-
terfaces utilisateur (UI) interactives et réactives. Il est largement utilisé pour le déve-
loppement d’applications Web.
25
Chapitre 2. Spécification des besoins
• NodeJS : est un environnement d’exécution JavaScript côté serveur basé sur le mo-
teur JavaScript V8 de Chrome. Il permet d’exécuter du code JavaScript en dehors
d’un navigateur, ce qui facilite le développement d’applications serveur hautement
évolutives.
• MongoDB : est une base de données NoSQL orientée documents. Elle stocke les
données sous forme de documents JSON flexibles plutôt que dans des tables relation-
nelles. MongoDB est réputée pour sa scalabilité et sa facilité d’utilisation.
26
Chapitre 2. Spécification des besoins
• MongoDB Compass : est un outil visuel et intuitif pour explorer et gérer les bases
de données MongoDB. Il permet d’effectuer des requêtes, de visualiser les schémas,
d’analyser les performances et de manipuler les données.
• Gitlab : est une plateforme de gestion du cycle de vie des applications qui offre
des fonctionnalités de gestion de code source, de suivi des problèmes, de CI/CD (in-
tégration continue et déploiement continu), et bien plus encore. Il facilite le travail
collaboratif et le développement de logiciels.
27
Chapitre 2. Spécification des besoins
• Visual Studio Code : est un éditeur de code source gratuit et open-source déve-
loppé par Microsoft. Il est très populaire pour le développement d’applications Web
et offre de nombreuses fonctionnalités, extensions et intégrations pour améliorer la
productivité des développeurs.
• Skype : est une application de communication en ligne qui permet les appels audio
et vidéo, les messages instantanés et le partage de fichiers. Elle est largement utilisée
pour les appels personnels et professionnels.
28
Chapitre 2. Spécification des besoins
• Trello : est un outil de gestion de projet en ligne qui permet de créer des tableaux,
des listes et des cartes pour organiser les tâches, les projets et les flux de travail. Il
offre une vue d’ensemble visuelle des projets et facilite la collaboration au sein des
équipes.
Conclusion
Dans ce chapitre, nous avons présenté les spécifications des besoins. Cela nous a permis
d’avoir une vision plus claire afin de mettre en évidence les différentes parties de notre
projet. Nous avons aussi présenté les architectures physique et logique de notre application.
Le prochain chapitre sera consacré à la présentation de notre premier sprint consacré au
Back-end.
29
Back-End
3
Introduction
Ce sprint se concentre sur le back-end de notre application DIGISTACK, essentiel à
la communication interne fluide au sein de notre société. Nous visons à renforcer les per-
formances, à optimiser la gestion des données et à développer des fonctionnalités pour une
meilleure expérience utilisateur. Notre objectif est de créer une plateforme de communication
sécurisée et efficace, favorisant la collaboration entre les membres de notre organisation.
30
Chapitre 3. Back-End
31
Chapitre 3. Back-End
La figure 4.1 représente le diagramme de cas d’utilisation global relatif à notre application.
32
Chapitre 3. Back-End
33
Chapitre 3. Back-End
34
Chapitre 3. Back-End
Les diagrammes de séquence sont des représentations graphiques des interactions entre
les acteurs et le système, organisées dans l’ordre chronologique selon la norme UML. Dans
cette section, nous présentons les diagrammes de séquence système des cas d’utilisation les
plus importants classifiés.
Diagramme de séquence "Authentification" :
35
Chapitre 3. Back-End
36
Chapitre 3. Back-End
37
Chapitre 3. Back-End
38
Chapitre 3. Back-End
La figure 3.6 ci-dessous montre les premiers commits effectués, qui font partie de l’histo-
rique du développement de l’application.
39
Chapitre 3. Back-End
40
Chapitre 3. Back-End
3.5 Rétrospective
Dans cette section, nous allons citer les rétrospectives dégagées par le PO, le bilan de ce
qui a marché, ce qui n’a pas marché et ce qui peut être amélioré.
Ce qui a été validé :
• Authentification et autorisation
• Gestion utilisateurs
• Gestion catégories
• Gestion publications
• Gestion defis
• Gestion formations
• Gestion workshops
• Gestion commentaires
• Gestion notifications
• Gestion chat
Ce qui n’a pas été validé :
• Rien
Ce qui doit être amélioré :
• Rien
Conclusion
À l’issue de ce chapitre, nous avons réussi à développer un incrément de grande valeur
qui peut être directement déployé en environnement de production. Par la suite, nous allons
introduire le deuxième sprint du front-end "côté administrateur".
41
Front-End "Administrateur"
4
Introduction
Ce sprint se concentre sur le développement du front-end côté administrateur de notre
application DIGISTACK. En mettant l’accent sur cette partie du système, nous visons à four-
nir aux administrateurs des fonctionnalités avancées et conviviales pour gérer efficacement
les utilisateurs, les autorisations et les paramètres de l’application. L’objectif est d’amélio-
rer l’expérience et la productivité des administrateurs en leur offrant un ensemble d’outils
puissants et intuitifs pour superviser et gérer le système de chat interne de manière efficace.
42
Chapitre 4. Front-End "Administrateur"
43
Chapitre 4. Front-End "Administrateur"
44
Chapitre 4. Front-End "Administrateur"
45
Chapitre 4. Front-End "Administrateur"
46
Chapitre 4. Front-End "Administrateur"
La figure 4.4 représente la description textuelle du cas d’utilisation "Gérer les publica-
tions".
Le tableau 4.3 présente la description textuelle du cas d’utilisation "Gérer les publica-
tions".
47
Chapitre 4. Front-End "Administrateur"
48
Chapitre 4. Front-End "Administrateur"
49
Chapitre 4. Front-End "Administrateur"
Le tableau 4.4 présente la description textuelle du cas d’utilisation "Gérer les categories".
50
Chapitre 4. Front-End "Administrateur"
51
Chapitre 4. Front-End "Administrateur"
La figure 4.7 ci-dessous montre l’interaction entre l’administrateur et les différentes in-
terfaces pour ajouter un nouvel utilisateur.
52
Chapitre 4. Front-End "Administrateur"
La figure 4.8 ci-dessous montre l’interaction entre l’administrateur et les différentes in-
terfaces pour ajouter un nouvelle categorie.
53
Chapitre 4. Front-End "Administrateur"
La figure 4.9 ci-dessous montre l’interaction entre l’administrateur et les différentes in-
terfaces pour ajouter une publication.
54
Chapitre 4. Front-End "Administrateur"
55
Chapitre 4. Front-End "Administrateur"
56
Chapitre 4. Front-End "Administrateur"
57
Chapitre 4. Front-End "Administrateur"
4.7 Rétrospective
Dans cette section, nous allons citer les rétrospectives dégagées par le PO, le bilan de ce
qui a marché, ce qui n’a pas marché et ce qui peut être amélioré.
Ce qui a été validé :
• Implémentation des maquettes (Pages : Login, Home, team, Challenge, Workshops,
Tutorial, Category)
• Les Operations CRUD : (Login, Post, Team, Challenge, Workshops, Tutorial, Cate-
gory)
Ce qui n’a pas été validé :
• Implémentation des maquettes (Notification/Discussions/Profil)
• CRUD (Notification/Discussions/Profil)
Ce qui doit être amélioré :
• Rien
Conclusion
Ce chapitre a été consacré à la réalisation de la deuxième partie de notre application
visant à développer la partie front-end "côté administrateur". Dans la suite, nous présentons
la troisième partie pour développer la partie front-end "côté client".
58
Front-End "Utilisateur"
5
Introduction
Ce chapitre présente le troisième sprint du projet, qui se concentre sur l’implémentation
des maquettes (côté utilisateur) pour la gestion des publications, des workshops, des défis,
du profil, des formations, des commentaires et des notifications. Le sprint comprend une
phase d’analyse, de conception et de réalisation.
59
Chapitre 5. Front-End "Utilisateur"
60
Chapitre 5. Front-End "Utilisateur"
61
Chapitre 5. Front-End "Utilisateur"
62
Chapitre 5. Front-End "Utilisateur"
La description textuelle du cas d’utilisation "Gérer les notification" est présentée dans le
tableau suivant :
Le diagramme de cas d’utilisation du cas "Consulter les défis" est modélisé à travers la
figure 5.3, et sa description textuelle est présentée dans le tableau 5.3.
63
Chapitre 5. Front-End "Utilisateur"
64
Chapitre 5. Front-End "Utilisateur"
La figure 5.4 ci-dessous montre l’interaction entre l’utilisateur et les différentes interfaces
pour ajouter une publication.
65
Chapitre 5. Front-End "Utilisateur"
La figure 5.5 ci-dessous montre l’interaction entre l’utilisateur et les différentes interfaces
pour supprimer une publication.
66
Chapitre 5. Front-End "Utilisateur"
La figure 5.6 ci-dessous montre l’interaction entre l’utilisateur et les différentes interfaces
pour modifier une publication.
67
Chapitre 5. Front-End "Utilisateur"
La figure 5.7 ci-dessous montre l’interaction entre l’utilisateur et les différentes interfaces
pour Voter une publication.
68
Chapitre 5. Front-End "Utilisateur"
69
Chapitre 5. Front-End "Utilisateur"
70
Chapitre 5. Front-End "Utilisateur"
Les figures 5.13 et 5.14 représentent les interfaces de la page des avatars.
Figure 5.13 – Page des avatars Figure 5.14 – Page des avatars (femmes)
(hommes) «Utilisateur» «Utilisateur»
71
Chapitre 5. Front-End "Utilisateur"
5.7 Rétrospective
Dans cette section, nous allons citer les rétrospectives dégagées par le PO, le bilan de ce
qui a marché, ce qui n’a pas marché et ce qui peut être amélioré.
Ce qui a été validé :
• Implémentation des maquettes (Home, Challenge, Publication, Team, Profile)
• Les Operations CRUD : (Post,Comment,Profil)
Ce qui n’a pas été validé :
• Implémentation des maquettes (Notification, Discussions)
• CRUD (Notification, Discussions)
Ce qui doit être amélioré :
• Rien
Conclusion
Au cours de ce cinquième chapitre, nous avons présenté le troisième sprint. À cette étape,
nous avons donc réussi à développer la partie frontend de notre application côté utilisateur.
72
Intégration d’un Système de Recommandation
6
basé sur l’API OpenAI
Introduction
L’intégration d’un système de recommandation efficace est essentielle pour améliorer
l’expérience des utilisateurs dans les applications web interactives. Notre objectif principal
dans ce sprint est d’intégrer un système de recommandation basé sur l’API OpenAI. Ce
système permettra de fournir aux utilisateurs des réponses pertinentes et personnalisées à
leurs questions et contribuera ainsi à améliorer la qualité de l’interaction sur la plateforme.
73
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
74
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
L’introduction des modèles d’OpenAI a marqué une avancée majeure dans le domaine de
l’intelligence artificielle et du traitement du langage naturel. Ces modèles, tels que GPT-3
(Generative Pre-trained Transformer 3), ont démontré une remarquable capacité à com-
prendre, générer et interagir avec le langage humain. Ils sont entraînés sur d’énormes quan-
tités de données textuelles provenant de diverses sources, leur permettant d’acquérir une
connaissance approfondie et une maîtrise du langage.[3]
Le tableau 6.2 présente une liste non exhaustive des modèles de l’openIA courament
utilisés, avec leurs domaines d’application, leurs opérations par minute (TPM), et leurs
75
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
Nom du modèle Domaine d’ap- Opérations par mi- Requêtes par mi-
plication du nute (TPM) nute (RPM)
modèle
gpt-3.5-turbo CHAT 60 40 000
gpt-3.5-turbo-16k CHAT 60 150 000
babbage TEXT 60 150 000
davinci TEXT 60 150 000
text-babbage-001 TEXT 60 150 000
text-curie-001 TEXT 60 150 000
text-davinci-003 TEXT 60 150 000
text-davinci-edit-001 TEXT 20 150 000
whisper-1 AUDIO 50 150 000
La comparaison entre les modèles d’OpenAI constitue une étape essentielle de notre
étude, afin de choisir un modèle performant pour DIGISTACK. Nous nous appuierons sur
une évaluation rigoureuse des performances, de la génération de texte et de la pertinence des
recommandations offertes par ces modèles, afin de déterminer celui qui convient le mieux à
notre système de recommandation basé sur OpenAI. Pour cela, nous allons considérer les 3
critères suivants afin de choisir le modèle adéquat à utiliser dans notre application :
• Le temps de réponse : qui mesure le temps nécessaire pour générer des recommanda-
tions à partir de l’API,
• La qualité de réponse : qui fait référence à la mesure dans laquelle les recommandations
fournies par le système sont pertinentes, précises et utiles pour les utilisateurs.
• La scalabilité : qui évalue la capacité du système à gérer une charge de demande
croissante sans dégradation significative des performances.
Le tableau 6.3 résume l’étude comparative entre les modèles choisis en fonction des critères
cités.
76
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
Table 6.3 – Etudes comparative entre les différentes modèles testés [3]
77
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
La figure 6.1 ci-dessous montre l’interaction entre l’administrateur et les différentes in-
terfaces pour publier une publication.
78
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
de l’ajout d’une publication. Ce diagramme met en évidence le processus étape par étape,
depuis la saisie des informations de la publication par l’administrateur jusqu’à la génération
d’une recommandation par le modèle OpenAI.
Le code illustré dans la figure 6.2 met l’accent sur l’implémentation de la fonction "ge-
nerateChatgptResponse", qui envoie une question à l’API OpenAI et renvoie la réponse
générée.
Cette fonction envoie la question à l’API OpenAI, qui génère une réponse basée sur le mo-
dèle spécifié. La réponse est ensuite renvoyée à l’utilisateur. Cela améliore significativement
la qualité de l’interaction sur notre plateforme."
79
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
L’évaluation de l’API utilisée par les utilisateurs de notre application dans la société a
été réalisée avec rigueur en tenant compte des critères essentiels tels que le temps de réponse,
la pertinence des réponses et la scalabilité. Chaque utilisateur a été invité à attribuer une
note allant de 1 à 5 pour notre système de recommandation qui utilise l’OpenAI. Ces notes
ont ensuite été analysées et une moyenne a été calculée pour chaque critère.
Les résultats de l’évaluation sont extrêmement satisfaisants, dépassant largement la moyenne
pour les trois critères évalués. En ce qui concerne le temps de réponse, les utilisateurs ont
constaté une grande réactivité de notre système, permettant d’obtenir des réponses presque
instantanées à leurs requêtes. En termes de pertinence des réponses, le système de recomman-
dation a su proposer des suggestions précises et adaptées aux besoins spécifiques de chaque
utilisateur. Enfin, en ce qui concerne la scalabilité, le système a pu gérer efficacement une
augmentation du nombre d’utilisateurs et de demandes sans compromettre ses performances.
Ces résultats témoignent de l’efficacité et de la fiabilité de notre système de recommanda-
tion basé sur l’OpenAI. L’évaluation réalisée par les utilisateurs démontre la valeur ajoutée
que notre application apporte en termes de qualité des recommandations et de réactivité.
80
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
81
Chapitre 6. Intégration d’un Système de Recommandation basé sur l’API OpenAI
6.7 Rétrospective
Dans cette section, nous allons citer les rétrospectives dégagées par le PO, le bilan de ce
qui a marché, ce qui n’a pas marché et ce qui peut être amélioré.
Ce qui a été validé :
• Integration du système de recommandation
• Test du système avec Postman
Ce qui n’a pas été validé :
• Integration du système dans la partie frontend
Ce qui doit être amélioré :
• Rien
Conclusion
Dans ce sprint, nous avons intégré avec succès un système de recommandation basé sur
l’API OpenAI dans notre application web. Ce système offre des recommandations pertinentes
et personnalisées aux utilisateurs, améliorant ainsi leur expérience et leur engagement sur la
plateforme. Nous avons également sélectionné l’API OpenAI la plus adaptée à nos besoins,
en utilisant une approche de recommandation qui répond efficacement aux besoins de notre
application.
82
Conclusion Générale
Ce document a été rédigé en termes de notre projet de fin d’études au sein de la société
DIGINOV en vue de l’obtention du diplôme d’ingénieur en Génie Informatique de l’École
Polytechnique Sousse.
Le travail réalisé lors de ce projet s’est concentré sur la conception et la mise en œuvre
d’une application web afin de permettre à tous les membres de l’équipe DIGINOV de parta-
ger et d’enrichir leurs connaissances techniques et de faire de la veille technologique. La mise
en œuvre de notre projet s’est déroulée en plusieurs étapes. Une première étape a consisté à
comprendre le contexte général du projet. Une deuxième étape a visé à analyser et mettre
en évidence les besoins réels de l’utilisateur. Cette étape est l’une des étapes clés dans le
succès de tout projet. C’est pour cette raison que nous avons consacré une période impor-
tante à l’analyse et à la spécification des besoins. Nous avons opté pour la méthode Scrum
comme processus de développement et pour UML comme langage de modélisation. Pour la
réalisation, nous avons utilisé un ensemble varié d’outils.
Bien que nous ayons rencontré quelques difficultés au début du projet, cela a été une
bonne occasion de sortir du cadre théorique et d’appliquer les connaissances acquises lors
des études universitaires dans le monde du travail. De plus, ce projet nous a permis de mettre
en pratique les connaissances acquises concernant le cycle de vie d’un projet informatique.
Cette réalisation a également été l’occasion d’intégrer le monde professionnel et d’apprendre
plusieurs compétences et habitudes liées aux problématiques sociales telles que le travail en
groupe et la collecte d’informations, dans le but d’extraire les besoins des acteurs du système
à mettre en œuvre. Ce projet est un noyau sur lequel plusieurs perspectives peuvent être
développées et enrichies. En effet, le travail que nous avons réalisé est modulaire et évolutif.
En termes de perspectives, nous pouvons distinguer plusieurs améliorations pour notre
projet. Nous proposons d’ :
• Intégrer un système de récompenses basé sur le score de l’utilisateur.
• Intégrer un système de réunion.
À la fin, nous souhaitons que ce modeste travail apporte progrès, évolution et satisfaction
83
Conclusion Générale
aux responsables de DIGINOV, aux membres de Jury et aux personnes intéressé par la mise
en place d’une telle solution.
84
Bibliographie
85
Bibliographie
why-your-application-should-be-built-with-a-component-based-architecture-in-mendi
[Consulter le 12 mars].
[12] Elsa Negre. Vers une typologie de contexte pour les systèmes de recommandation. In
INFORSID, pages 197–212, 2018.
86
Annexe
Chapitre 2
Diagramme de contexte
Le diagramme de contexte est un type de diagramme UML qui représente les interactions
entre un système et son environnement externe, sous la forme d’une "Black-Box", ainsi que
les acteurs qui interagissent avec le système à travers les liens et les cardinalités, comme le
montre la figure suivante :
87
Annexe
88
Annexe
89
Annexe
Chapitre 4
90
Annexe
91
Annexe
92
Annexe
93
Annexe
Description textuelle
Description textuelle du cas d’utilisation «S’authentifier» :
94
Annexe
95
Annexe
Post condition Les modifications apportées aux défis sont enregistrées et re-
flétées dans la base de données du système.
96
Annexe
97
Annexe
Scénario Al- 3a. Si les champs requis ne sont pas remplis lors de l’ajout d’une
ternatif nouvelle formation, le système affiche un message d’erreur indiquant
les champs manquants et demande à l’administrateur de les com-
pléter.
3b. Si une formation avec le même titre existe déjà, le système af-
fiche un message d’erreur indiquant que le titre est déjà utilisé et
demande à l’administrateur de choisir un titre différent.
Post condition Les modifications apportées aux formations sont enregistrées et re-
flétées dans la base de données du système.
98
Annexe
99
Annexe
Scénario Al- 3a. Si aucun résultat ne correspond à la recherche par nom d’utilisa-
ternatif teur, le système affiche un message indiquant qu’aucun utilisateur n’a
été trouvé.
Post condition Les modifications apportées aux discussions sont enregistrées et reflé-
tées dans la base de données du système.
100
Annexe
101
Annexe
102
Annexe
Chapitre 5
Diagramme de cas d’utilisation affiné :
103
Annexe
104
Annexe
105
Annexe
Description textuelle
Description textuelle du cas d’utilisation «S’authentifier» :
106
Annexe
107
Annexe
Scénario Alternatif 4a. Si l’adresse email est déjà utilisée par un autre compte, le
système affiche un message d’erreur indiquant que l’email est
déjà enregistré et demande à l’utilisateur de choisir une autre
adresse email.
Post condition Les modifications apportées aux profil sont enregistrées et re-
flétées dans la base de données du système.
108
Annexe
109
Annexe
110