Rapport Achref
Rapport Achref
Département Technologies de
l’informatiqueRapport de Projet
de Fin d’Etudes :
Encadré par :
Mr. ……………..
Je dédie ce travail en témoignage de nos profonds respects, nos grands amours et toute
nosgratitudes à :
familles,
Et tous ceux qui de près ou de loin, j’ai contribué d’une manière ou d’une autre à la réalisation
de ce rapport.
Remerciement
On remercie dieu le tout puissant de nous avoir donné la santé et la volonté d’entamer et de
terminer ce projet de fin d’année.
Tout d’abord, Veuillez bien recevoir notre remerciement pour le grand honneur que vous
nous avez fait d'accepter de nous encadrer, ce travail ne serait pas aussi riche et n’aurait pas
pu avoir lejour sans l’aide et l’encadrement de
Mr Kamel Garrouch
Vous avez bien voulu nous guider à chaque étape de ce travail riche d’intérêt durant toute sa
réalisation. Vous nous avez toujours réservé le meilleur accueil, malgré vos obligations
professionnelles. Nous saisissons cette occasion pour vous exprimer notre profonde gratitude
touten vous témoignant notre respect.
Mr Maher Amara
Votre compétence, votre encadrement ont toujours suscité notre profond respect. Nous vous
remercions pour votre accueille et vos conseils, malgré vos obligations professionnelles.
Veuilleztrouver ici, l’expression de nos gratitudes et de notre grande estime.
Je tiens à remercier chaleureusement, tous nos proches et tous ceux qui, de près
ou de
3.1. Services..................................................................................................................................4
4. Étude de l’existant ................................................................................................................................ 4
5. Critiques de l’existant ........................................................................................................................... 5
6. Solution proposée .................................................................................................................................... 5
7. Choix méthodologique .......................................................................................................................... 6
PERSPECTIVE ........................................................................................................... 61
ANNEXE ........................................................................................................................ 62
NETOGRAPHIE ......................................................................................................... 75
BIBLIOGRAPHIE ...................................................................................................... 75
Liste des figures
Figure 1:logo ............................................................................................................................................3
Figure 2: la méthodologie agile Scrum.....................................................................................................6
Figure 3: diagramme de cas d'utilisation général ...................................................................................11
Figure 4: méthodologie scrum ................................................................................................................13
Figure 5: planification des sprint ...........................................................................................................18
Figure 6: diagramme de gantt .................................................................................................................18
Figure 7: logo DevOps ...........................................................................................................................22
Figure 8: Scalabilité................................................................................................................................23
Figure 9: La conteneurisation .................................................................................................................24
Figure 10: Une pipeline CI/CD ..............................................................................................................25
Figure 11: diagramme de déploiement ...................................................................................................26
Figure 12: Le Diagramme De Deployment Du Docker Swarm .............................................................28
Figure 13: Diagramme de séquence de pipeline .....................................................................................29
Figure 14:Le Diagramme De Case d'utilisation du système d'authentification ......................................36
Figure 15: Diagramme de classe sprint1 ................................................................................................37
Figure 16: Le Code Base de l'Intégration de NextJS ..............................................................................43
Figure 17:Dashboard de Login ...............................................................................................................44
Figure 18: Dashboard Principale (PWA)................................................................................................44
Figure 19: Dashboard Principale (WEB)................................................................................................45
Figure 20:Contrôle De Saisie de Create Account interface ....................................................................46
Figure 21:Contrôle De Saisie de Mot De Passe Oublié Interface ..........................................................46
Figure 22: Le Création Des Conteneurs Docker ....................................................................................52
Figure 23: La Dockerization de l’application .........................................................................................52
Figure 24: Le Code de fichier Jenkinsfile du pipeline............................................................................57
Figure 25: Les Analyse du Code avec Sonarqube ..................................................................................58
Figure 26: Le Résultat de l'exécution du Jenkins Pipeline .....................................................................58
Figure 27: Le Dashboard de B2C ..........................................................................................................62
Figure 28:Le Dashboard des Prospects ..................................................................................................63
Figure 29: Le Dashboard des listes noirs................................................................................................63
Figure 30 :Le Dashboard des extracteurs des téléphones .......................................................................64
Figure 31:Le Dashboard des Business (B2B).........................................................................................64
Figure 32: Le Dashboard des lqualif ......................................................................................................65
Figure 33: Le Dashboard des Clients .....................................................................................................65
Figure 34: Le Dashboard des Campaigns ..............................................................................................66
Figure 35: Aspect de Sécurité utilisant les tokens ..................................................................................67
Figure 36: Le Contrôle de Saisie pour l’interface de Login ...................................................................68
Figure 37: Suite de l‘interface principale de Sonarqube ........................................................................69
Figure 38: . Des détections d’anomalies du code du Dashboard Sonarqube ..........................................70
Figure 39: Des recommandations de correction du Dashboard Sonarqube ............................................70
Figure 40: Des statistiques du Dashboard SonarQube pour le Projet .....................................................71
Figure 41: Des statistiques du Dashboard SonarQube pour le code base...............................................72
Figure 42: Les différents stage du pipeline Jenkins ...............................................................................72
Figure 43: Les Configurations pour le pipeline Jenkins .........................................................................73
Figure 44: Les logs de stage Unit Tests ..................................................................................................73
Figure 45: Les logs des stages Sonarqube et test de Qualité ..................................................................74
Figure 46: Les logs de stage Build ........................................................................................................74
Figure 47: Les logs des stages Cleaning, Deploy et envoi d’Email .......................................................75
Liste des tableaux
Tableau 1: membres de l'équipe scrum ..................................................................................................14
Tableau 2 backlog du produit .................................................................................................................17
Tableau 3: : environnement matérie ......................................................................................................25
Tableau 4: Authentification ....................................................................................................................33
Tableau 5:Réinitialisation du Mot de Passe ...........................................................................................34
Tableau 6:Backlog Du Sprint 1 ..............................................................................................................35
Tableau 7: Backlog sprint 2 ....................................................................................................................41
Liste des Abréviation
CD = Continuous Deployment
CI = Continuous Integration
DEV = Developer
HA = High Availability
IP = Internet Protocol
JS = JavaScript
UX = User Experience
Par le biais de ce rapport, j’ai détaillé les différentes étapes par lesquelles nous avons
passées pour réaliser ce projet. Le présent rapport s’articule autour de quatre parties :
Je clôture ce rapport par une conclusion qui établit le bilan du travail et nous
donnonsquelques perspectives envisageables au présent projet.
ACHREF BARHOUMI 2
1. Introduction
Ce chapitre introductif sera réservé pour présenter le contexte général de notre projet.
Il comporte en premier lieu une étude de l’existant afin d’identifier les lacunes de la
procédure actuelle. Nous proposons par la suite une solution tout en présentant la
méthodologie de travail adoptée lors de la réalisation du projet tout en argumentant
notre choix.
2. Contexte académique
ACHREF BARHOUMI 3
3.1. Services
MaherDEV a sept grands domaines d’activité :
● Développement logiciel : Experts en applications de bureau, mobiles,
web, ERP, etsécurité logicielle.
● Développement web : Création de sites web, optimisation pour les
moteurs derecherche, hébergement, e-commerce, et sécurité web.
● Développement mobile : Conception d'applications mobiles, UI/UX
attrayante, etsécurité mobile.
● Analyse de données : Intelligence d'affaires pour des décisions éclairées.
● Cloud : Hébergement web sécurisé.
● Sécurité : Protégez vos logiciels, sites web, applications mobiles et
données dans lecloud.
● Marketing numérique : Stratégies digitales, SEO, médias sociaux, contenu
et marketingvidéo.
4. Étude de l’existant
L'étude de l'existant constitue la première étape cruciale de notre projet visant à développer
la solution ERP pour centre d'appels, CallCenter ERP. Cette phase a permis de dresser un
état des lieux complet des processus, des systèmes en place, des défis rencontrés et des
opportunités d'amélioration au sein de notre centre d'appels existant.
Actuellement, notre centre d'appels fonctionne avec divers systèmes et outils dispersés,
entraînant des inefficacités opérationnelles et une complexité accrue dans la gestion des
données clients et des prospects.
Les agents utilisent plusieurs plates-formes pour gérer les appels, les informations clients,
et les commandes, ce qui entraîne des retards et des erreurs potentielles.
De plus, l'authentification et la sécurité des données sont devenues des préoccupations
majeures à mesure que notre centre d'appels a évolué.
L'étude de l'existant a révélé des lacunes en matière de gestion des rôles et des autorisations,
ainsi qu'un besoin pressant de renforcer la sécurité des données pour protéger la
ACHREF BARHOUMI 4
confidentialité des informations clients.
En outre, l'analyse de l'existant a mis en évidence des opportunités significatives pour
améliorer la gestion des prospects, notamment la validation des données, la gestion des
"numéros à ne pas appeler",
et la géolocalisation des prospects pour une prospection plus ciblée.
Dans cette phase, nous avons également examiné les processus de gestion des commandes
et identifié des domaines où une optimisation est nécessaire pour accélérer le traitement
des commandes client et améliorer l'expérience globale du client.
En somme, l'étude de l'existant a permis de mettre en lumière les défis et les lacunes actuels
de notre centre d'appels, ce qui nous a conduit à entreprendre ce projet de développement
de la solution CallCenter ERP. Notre objectif est de répondre à ces défis, d'améliorer
l'efficacité opérationnelle, et de fournir une plateforme unifiée pour gérer l'ensemble de
nos processus métier essentiels.
5. Critiques de l’existant
6. Solution proposée
Nous nous plongerons dans l'exploration détaillée des besoins, tant fonctionnels que non
fonctionnels, de notre projet. Nous entreprendrons une analyse approfondie des
fonctionnalités essentielles que notre solution doit offrir, tout en examinant attentivement
les aspects de performance, de sécurité et d'évolutivité. Parallèlement à cette étude, nous
concentrerons nos efforts sur l'établissement de diagrammes de conception
préliminaires, illustrant la structure et les interrelations des composants clés de notre
ACHREF BARHOUMI 5
solution.
Ces diagrammes serviront de boussole pour la suite de notre travail, guidant notre équipe
dans
la création d'une solution qui répondra de manière optimale aux besoins de notre projet,
tout
en assurant la cohérence et la clarté de notre vision.
7. Choix méthodologique
La méthode agile est une méthodologie de gestion de projet qui repose sur un cycle
ACHREF BARHOUMI 6
de développement itératif, incrémental et adaptif qui a pour but d’améliorer le process
et de réduire letaux d’échec en mettant en place le client au cœur du projet. Étant
donné que la méthode Scrum estconsidérée comme méthode agile, elle suppose donc
que le développement d’un logiciel n'est pas prévisible et ne peut donc pas suivre le
processus défini traditionnelle, afin d’améliorer la productivité des équipes tout en
permettant une optimisation du projet grâce à des feedbacks réguliers avec le client
ou les utilisateurs finaux.
8. Conclusion
Dans ce premier chapitre, j’ai présenté le cadre général du projet à savoir l’organisme
d’accueil MaherDEV au sein de laquelle j’ai passé mon stage. J’ai aussi étudié
l’existant afin de relever ses défaillances et proposer des solutions d’optimisation.
Finalement nous avons dévoilé la méthodologie de travail utilisé durant mon projet.
Dans le chapitre qui suit j’ai mis l’accent sur la phase de planification et
spécificationdes besoins.
ACHREF BARHOUMI 7
1. Introduction
Clients : Les clients qui interagissent avec le centre d'appels pour poser des
questions,
passer des commandes ou demander des informations font partie des acteurs
du système.
ACHREF BARHOUMI 8
Prospects : Les prospects, qui sont les personnes ou les entreprises
potentielles à contacter pour des opportunités commerciales, sont également
des acteurs importants du système.
ACHREF BARHOUMI 9
Ce besoin fonctionnel vise à améliorer la gestion des prospects, à optimiser les données
disponibles,
et à faciliter le ciblage efficace pour les campagnes de marketing du centre d'appels.
Contrairement aux besoins fonctionnels qui se concentrent sur ce que le système doit faire
pour les utilisateurs, les besoins non fonctionnels décrivent plutôt les conditions essentielles
pour garantir la qualité et le bon fonctionnement du système, et ils sont souvent considérés
comme des contraintes incontournables plutôt que des fonctionnalités directes pour les
utilisateurs :
Temps de Réponse : Le système doit répondre aux requêtes des utilisateurs dans un
délai maximal de 2 secondes, même lorsqu'il y a une charge élevée.
Optimisation des Requêtes : Les requêtes SQL doivent être optimisées pour
minimiser la charge sur la base de données et réduire les temps de réponse.
Disponibilité : Le système doit être disponible 24 heures sur 24, 7 jours sur 7, avec
un temps d'arrêt planifié minimal pour la maintenance.
Sécurité des Données : Les données doivent être protégées en transit et au repos
pour assurer la confidentialité et l'intégrité des informations.
ACHREF BARHOUMI 10
Ce besoin non fonctionnel garantit que le système CallCenter ERP sera performant, évolutif,
sécurisé et disponible pour répondre aux besoins des utilisateurs, même en cas de charges
de travail importantes.
Il existe des événements Scrum qui sont décrits comme des boîtes de temps
ACHREF BARHOUMI 11
(timeboxes). Ilsservent à organiser le travail de l’équipe et cadrer le temps
passé en réunion :
ACHREF BARHOUMI 12
Figure 4: méthodologie scrum
6.2. Équipe de travail
Les équipes Scrum sont autoorganisées et pluridisciplinaires. Elles choisissent la
meilleure façon d’accomplir leur travail, au lieu d’être dirigées par des personnes
externes à l’équipe, ce qui favorisela flexibilité, la créativité et la productivité. Ces
derniers sont principalement composés de :
Rôle Membre
ACHREF BARHOUMI 13
Product Owner Mr. Maher Amara
dese connecter.
ACHREF BARHOUMI 14
ajouter une demande de service,
demandes de
service consulter,modifier et supprimer ses
attributs.
ACHREF BARHOUMI 15
valider.
utilisateursactifs et inactifs.
ACHREF BARHOUMI 16
encours, terminées, validées et expirées.
planification et d’une structuration du projet, qui sont des piliers des méthodes
agiles.La figure ci-dessus présente la planification des sprints de notre projet :
ACHREF BARHOUMI 17
Figure 5: planification des sprint
Diagramme de Gantt
7. Conclusion
Durant ce chapitre, nous avons spécifié en premier lieu les besoins fonctionnels et non
fonctionnelset présenté le diagramme de cas d’utilisations générale du projet. Ensuite,
nous avons détaillé la première étape de la méthodologie adoptée à savoir le pilotage
du projet avec Scrum tout en élaborant le backlog du produit ainsi que la planification
des sprints.
ACHREF BARHOUMI 18
Dans le chapitre suivant, nous allons mettre en évidence l’environnement et l’architecture
du projet.
ACHREF BARHOUMI 19
1. Introduction
Après avoir spécifié les besoin fonctionnels et non fonctionnels ainsi que la
méthodologie de pilotage choisie pour la réalisation du projet. Il nous reste que
d’entamer ce chapitre afin de décrire l’architecture de l’application, le choix des
technologies, l’environnement de travail et les outils utilisés qui nous mèneront vers
une application complète qui satisfait les besoins de l’utilisateur.
2. Choix technologique
Le choix des technologies est l’une des étapes les plus importantes du développement
d’un produitréussi. La création d’un produit ne se limite pas à la conception d’une
interface utilisateur agréableet d’une interface utilisateur pratique, il s’agit également
de concevoir un produit stable, sécurisé etfacile à entretenir.
UML : Nous avons choisi UML comme langage de modélisation pour nos diagrammes.
GitHub : Nous avons choisi GitHub comme plateforme de gestion de code source.
ACHREF BARHOUMI 20
GitHub : Nous avons utilisé GitHub pour la gestion du code source, facilitant ainsi la
collaboration au sein de l'équipe, permettant un développement continu et une gestion efficace
des versions.
JavaScript : Nous avons utilisé JavaScript pour la logique de programmation, assurantainsi le
bon fonctionnement des fonctionnalités Front-End.
Google Chrome : Nous avons utilisé Google Chrome pour tester l'interface utilisateur,
garantissant sa compatibilité et sa convivialité sur différentes plates-formes.
Front-End : Le Front-End, également appelé "interface utilisateur" ou "partie visible", désigne
la partie d'une application ou d'un site web avec laquelle les utilisateurs interagissent
directement. Il englobe la conception graphique, l'ergonomie, et la fonctionnalité visuelle de
l'application,assurant ainsi une expérience utilisateur optimale.
API : Une API, ou Interface de Programmation Applicative, est un ensemble des règles et de
protocoles qui permettent à différents logiciels et systèmes informatiques de communiquer
entre eux. Elle définit les méthodes et les données auxquelles les développeurs peuvent
accéderpour interagir avec un service ou une application particulière. Les API jouent un rôle
essentiel dans l'intégration de systèmes, la création d'applications interconnectées et la
facilitation de l'échange d'informations entre différentes plates-formes logicielles. En
simplifiant la manière dont les logiciels interagissent, les API favorisent l'efficacité du
développement logiciel et l'interopérabilité des systèmes.
DevOps : DevOps (Fig.8) est une approche de développement logiciel qui favorise la
collaboration étroite entre les équipes de développement (Dev) et d'exploitation (Ops).
L'objectif principal de DevOps est d'automatiser et d'optimiser le processus de déploiement
logiciel, de manière à accélérer le cycle de développement, améliorer la qualité du code, et
garantir une livraison continue et fiable des logiciels. Cette approche repose sur
l'automatisation, l'intégrationcontinue, le déploiement continu, la surveillance et la rétroaction
continue, tout en encourageant la collaboration entre les équipes pour une gestion plus efficace
ACHREF BARHOUMI 21
de l'infrastructureet des applications.
ACHREF BARHOUMI 22
Figure 8: Scalabilité
Containerisation : La conteneurisation (Fig.10) est une technique de virtualisation légère qui
permet d'emballer une application, ainsi que ses dépendances et ses bibliothèques, dans un
conteneur isolé et auto-suffisant. Ces conteneurs sont conçus pour fonctionner de manière
cohérente et fiable, quel que soit l'environnement de déploiement, que ce soit sur un ordinateur
local, un serveur distant ou dans le cloud. Les conteneurs offrent plusieurs avantages,
notamment la portabilité, l'efficacité desressources, la rapidité de déploiement et la facilité de
gestion. Ils sont devenus essentiels dans le domaine de la gestion de l'infrastructure et du
déploiement d'applications, en permettant aux développeurs de créer des environnements de
développement cohérents et en simplifiant le déploiement et la mise à l'échelle des applications.
Les solutions de containerisation les plus populaires incluent Docker et Kubernetes.
ACHREF BARHOUMI 23
Figure 9: La conteneurisation
Pipeline CI/CD : Une pipeline CI/CD (Fig.11) est un ensemble automatisé de processus et
d'étapes conçues pour la Continuité de l'Intégration (CI) et le Déploiement Continu (CD) des
applications logicielles. Elle vise à automatiser la construction, les tests, l'intégration, la
livraison, et le déploiement d'une application, garantissant ainsi une livraison rapide, cohérente
et de haute qualité des logiciels.
ACHREF BARHOUMI 24
Figure 10: Une pipeline CI/CD
3. Environnement Matériel
Notre projet a été réalisé sur un ordinateur portable dont la configuration est la suivante :
Mémoire vive 24 Go
ACHREF BARHOUMI 25
4. Diagramme de déploiement
Description :
ACHREF BARHOUMI 26
Swarm, conçue pour le déploiement d'applications conteneurisées. L'ensemble du
système estorganisé en plusieurs nœuds, notamment un nœud de gestion (Manager
Node) et trois nœuds de travail (Worker Nodes). Chaque nœud de travail héberge
plusieurs conteneurs, notammentdes applications (App), des instances Redis (Redis),
des bases de données MySQL (MySQL),et des serveurs Nginx (Nginx). Le nœud de
gestion assure la coordination et la gestion des conteneurs sur les nœuds de travail.
Cette architecture offre une mise en cluster efficace et uneextensibilité pour garantir la
disponibilité et la scalabilité des applications déployées à l'aide deDocker Swarm.
ACHREF BARHOUMI 27
Figure 12: Le Diagramme De Deployment Du Docker Swarm
Description :
ACHREF BARHOUMI 28
plusieurs conteneurs, notammentdes applications (App), des instances Redis (Redis), des
bases de données MySQL (MySQL),et des serveurs Nginx (Nginx). Le nœud de gestion
assure la coordination et la gestion des conteneurs sur les nœuds de travail. Cette
architecture offre une mise en cluster efficace et une extensibilité pour garantir la
disponibilité et la scalabilité des applications déployées à l'aide deDocker Swarm.
Description :
ACHREF BARHOUMI 29
qualité échoue, une notification par e-mail est envoyée pour informer les développeurs.
En cas de succès, le code est utilisé pour construire une image Docker, qui est ensuite
poussée vers DockerHub. Enfin, l'application est déployée sur un cluster Swarm, et une
autre notification par e-mail est envoyée pour signaler la réussite du déploiement. Ce
pipeline assure un processus de développement fluide et garantit la qualité du code tout
au long du processus.
7. Conclusion
Dans ce chapitre nous avons énoncé en premier lieu, l’architecture de notre projet
ainsi que les technologies choisies. Ensuite, nous avons présenté l’environnement de
travail à savoir les environnements matériels et logiciels. Dans le chapitre qui suit,
nous traiterons le premier sprint.
ACHREF BARHOUMI 30
1. Introduction
2. Backlog sprint 1
Dans la méthodologie Scrum, tous les sprints ont une durée constante et ne se
chevauchent jamais, c’est-à-dire qu’un sprint ne peut pas démarrer tant que le
précédent n’est pas encore terminé.
Avant de se lancer dans un sprint, l’équipe Scrum doit obligatoirement définir le but
de ce dernier.Ce but doit être défini en termes métiers et non pas en termes techniques
pour qu’il soit compréhensible par les membres en dehors de l’équipe. Il s’agit de
répondre à une question fondamentale « pourquoi faisons-nous ce sprint ? ». Une fois
que le but de notre sprint soit défini, on choisit les histoires qui seront incluses dans
le backlog du sprint.
Authentification :
ACHREF BARHOUMI 31
Id User story Id User Tâche
story
2 2.1
En tant qu'utilisateur, je souhaite
voir un message d'erreur si mes
informations d'identification sont Création du formulaire de connexion
incorrectes, afin de savoir que la
connexion a échoué.
2.2 Validation des données côté client
ACHREF BARHOUMI 32
3.3 Validation du lien de réinitialisation
Tableau 4: Authentification
ACHREF BARHOUMI 33
1.6 Page de réinitialisation du mot de
passe et Validation du jeton de
réinitialisation
2 2.1 Génération du jeton de réinitialisation
En tant qu'utilisateur, je souhaite
recevoir un lien de réinitialisation
de mot de passe par e-mail, afin
de créer un nouveau mot de passe.
Système d'Autorisation :
ACHREF BARHOUMI 34
1.5 Interface de gestion des utilisateurs
3. Planification de Sprint
Au cœur de ce premier sprint, nous nous plongerons dans l'exploration détaillée des
besoins, tant fonctionnels que non fonctionnels, de notre projet. Nous entreprendrons une
analyse approfondie des fonctionnalités essentielles que notre solution doit offrir, tout en
examinant attentivement les aspects de performance, de sécurité et d'évolutivité.
Parallèlement à cette étude, nous concentrerons nos efforts sur l'établissement de
diagrammes de conception préliminaires, illustrant la structure et les interrelations des
composants clés de notre solution.Ces diagrammes serviront de boussole pour la suite de
notre travail, guidant notre équipe dans
la création d'une solution qui répondra de manière optimale aux besoins de notre projet,
touten assurant la cohérence et la clarté de notre vision.
4. Objectif de Sprint
L'objectif de ce sprint initial est d'explorer en profondeur les besoins fonctionnels et non
fonctionnels du projet, tout en établissant des diagrammes de conception préliminaires pour guider
ACHREF BARHOUMI 35
le développement ultérieur de la socrm
Description :
Ce diagramme de cas d'utilisation illustre les interactions entre l'acteur "Utilisateur" et le
système d'authentification. L'acteur "User" initie deux actions principales : "Authenticate"et
"Forgot Password." Lorsque l'utilisateur sélectionne "Authenticate," le système passe d'abord
par "Validate Form" pour vérifier les identifiants saisis. Si les données sont valides,
l'utilisateur accède au tableau de bord ("Access Dashboard") ; sinon, il reçoit un message
d'erreur ("Return Credentials Error"). En revanche, en choisissant "Forgot Password,"
l'utilisateur est dirigé vers l'étape "Enter Email," où il fournit son adresse e-mail. Ensuite, le
système passe à "Send Reset Email," déclenchant ainsi le processus d'envoi d'un e-mail de
réinitialisation du mot de passe. Ce diagramme de cas d'utilisation offre une représentation
visuelle claire des principales interactions dans les processus d'authentification de l'utilisateur
et de réinitialisation du mot de passe.
ACHREF BARHOUMI 36
Figure 15: Diagramme de classe sprint1
7. Conclusion
Ce premier sprint a marqué un point de départ crucial dans notre initiative de développement. En
explorant en profondeur les besoins fonctionnels et non fonctionnels de notre projet, nous avons
jeté les bases d'une solution solide. La conception préliminaire de notresolution, illustrée à travers
des diagrammes, nous guide dans notre parcours vers le succès. Cette phase initiale nous a permis
de comprendre l'essence de notre projet et de définir une vision claire pour la suite de notre travail.
ACHREF BARHOUMI 37
1. Introduction
2. Backlog sprint 2
Id User story Id User Tâche
story
ACHREF BARHOUMI 38
2 En tant qu'utilisateur, je souhaite 2.1 Conception de l'interface de recherche
pouvoir rechercher et filtrer les et de filtrage
prospects en fonction de
différents critères, tels que le
statut, la source, etc., afin de les
organiser efficacement.
3 3.1 Identification des critères de filtrage
3.2 Sécurité
ACHREF BARHOUMI 39
1 En tant qu'utilisateur, je souhaite 1.1 Conception de l'interface utilisateur
avoir la possibilité de marquer
les prospects comme "Ne pas
appeler" pour respecter les
réglementations.
1.6
Création de la commande , Mise à jour
des stocks , Historique des
commandes, Gestion des taxes et des
frais de livraison, Tests unitaires et de
régression, Documentation utilisateur
ACHREF BARHOUMI 40
2 En tant qu'utilisateur, je souhaite 2.1
générer des factures pour les
Modèle de facture , Sélection de la
commandes clients.
commande, Remplissage automatique
des détails, Possibilité de
personnalisation, Stockage des
factures, Envoi des factures,
Documentation utilisateur
3. Planification de sprint
4. Objectif de Sprint
5. Réalisation
ACHREF BARHOUMI 41
La réalisation de ce deuxième sprint, a constitué une étape cruciale dans l'évolution de notre
projet. L'objectif principal était d'améliorer considérablement le Front-End de l'application en
utilisant le Framework moderne Next.js. Cette transition vers Next.js était motivée par la volonté
d'offrir aux utilisateurs une expérience optimale en termes de performances et de réactivité.
L'équipe a travaillé de manière méthodique et collaborative pourmettre en œuvre ce changement
technologique.
L'implémentation de Next.js s'est avérée être un succès majeur, car elle a considérablement
amélioré les performances de l'application. Les utilisateurs ont désormais accès à une interface
fluide et réactive qui répond rapidement à leurs actions, ce qui contribue grandement à leur
satisfaction et à leur engagement. La transition vers Next.js a également ouvert la porte à une
évolution plus fluide de l'application, permettant une intégration plus efficace de nouvelles
fonctionnalités à l'avenir.
De plus, au cours de ce sprint, l'équipe a développé plusieurs fonctionnalités Front-End
essentielles. Cela comprenait la mise en place des fonctionnalités d'inscription, de connexion, de
déconnexion, de réinitialisation de mot de passe, ainsi que la validation des formulaires de la page
de connexion. Chacune de ces fonctionnalités a été soigneusement conçue pour répondre aux
besoins des utilisateurs et améliorer leur expérience globale.
ACHREF BARHOUMI 42
Ce sprint a également été marqué par une collaboration étroite entre les membres de l'équipe,
favorisant un partage continu d'idées et de solutions pour garantir le succès de cette phase du projet.
La communication transparente et l'engagement collectif ont été les piliers denotre réussite.
ACHREF BARHOUMI 43
Figure 17:Dashboard de Login
ACHREF BARHOUMI 44
Figure 19: Dashboard Principale (WEB)
ACHREF BARHOUMI 45
Figure 20:Contrôle De Saisie de Create Account interface
6. Conclusion
Le déroulement de ce sprint a été un succès, avec des progrès significatifs réalisés dans
l'amélioration du Front-End et le développement de nouvelles fonctionnalités essentielles. Nous
nous tournons désormais vers le prochain sprint, où nous allons empaqueter cette application pour
la préparer au déploiement en production. Les améliorations apportées au Front-End renforceront
l'expérience utilisateur globale, offrant ainsi une interface plus fluide et réactive, tout en continuant
à garantir la qualité et la convivialité de l'application.
ACHREF BARHOUMI 46
1. Introduction
Après avoir terminé les différentes fonctionnalités et mises à jour côté interface utilisateur,
notre application est désormais prête à être emballée et livrée. C'est pourquoi, au cours de ce
sprint, notre objectif principal a été d'isoler notre application dans son propre environnement, la
rendant ainsi plus légère et compatible avec n'importe quel appareil et système d'exploitation.
2. Planification de sprint
Au cours de ce sprint, notre objectif principal consiste à dockeriser les différentes entités et
services de notre application. Cela implique la création de Dockerfiles pour l'application, Redis,
Nginx et MySQL, ainsi que la configuration d'un fichier docker-compose.yml pour simplifier le
déploiement. Des scripts shell seront développés pour gérer l'initialisation et les migrations,tandis
que des tests seront effectués pour garantir le bon fonctionnement de l'application dans
l'environnement Dockerisé. L'optimisation des conteneurs et la documentation complète du
processus de Dockerisation seront également incluses dans cette phase.
3. Objectif de sprint
L'objectif de ce sprint est de dockeriser l'ensemble des entités et services de l'application pour
faciliter le déploiement et améliorer la compatibilité multiplateforme.
ACHREF BARHOUMI 47
4. Choix technologiques
5. Réalisation
Au cours de cette phase cruciale, nous avons concrétisé notre objectif en dockerisant avec
succès toutes les composantes essentielles de notre application. Cela a aboutià la création de quatre
conteneurs distincts, à savoir MySQL, Redis, l'application elle-même et Nginx-proxy, chacun
d'entre eux étant soigneusement configuré pour fonctionner de manière harmonieuse. Pour
atteindre cet objectif, nous avons mis en place trois Dockerfiles distincts, un pour chaque
composant (Nginx, MySQL et l'application principale), garantissant ainsi uneisolation efficace et
une gestion optimale des dépendances.
Après avoir consolidé ces conteneurs individuels, nous les avons intégrés de manière
transparente en utilisant Docker-compose. Cette configuration a permis une gestion aisée de
l'ensemble de l'application, garantissant que chaque service fonctionne en tandem sans heurts. Nos
ACHREF BARHOUMI 48
tests rigoureux ont confirmé que l'ensemble de l'application fonctionnait sans aucun problème
majeur, ce qui témoigne de l'efficacité de notre approche de dockerisation.
ACHREF BARHOUMI 49
De plus, nous avons pris conscience de
l'importance cruciale de la documentation. Par
conséquent, nous avons méthodiquement
documenté les aspects essentiels de la configuration
Docker, y compris les étapes de déploiement, les
commandes de lancement et les configurations
spécifiques à chaque conteneur. Cette
documentation constitue une précieuse ressource
pour notre équipe actuelle ainsi que pour les équipes
de développement futures, garantissant une
maintenance fluide et une compréhension
approfondie de notre environnementDockerisé.
ACHREF BARHOUMI 50
ACHREF BARHOUMI 51
Figure 23: La Dockerization de l’application
ACHREF BARHOUMI 52
6. Conclusion
Le Sprint 3, axé sur le packaging de l’application, a été mené à bien avec succès. Nous avons atteint
notre objectif de dockeriser toutes les composantes essentielles de notre application, ce qui a abouti
à la création de quatre conteneurs bien configurés. De plus, une documentation approfondie a été
créée pour assurer une maintenance fluide et faciliter le développement futur. En regardant vers
l'avenir, notre prochain sprint se concentrera sur l'établissement d'un pipeline de
développement pour l'automatisation des flux de travail, améliorant ainsi davantage notre
processus de développement du projet CallCenter ERP.
ACHREF BARHOUMI 53
1. Introduction
Cette étape marque la conclusion de notre projet et revêt une importance capitale. Au coursde
ce dernier sprint, nous mettrons l'accent sur l'automatisation du processus de développement de
l'application, intégrant des pratiques de test et d'assurance qualité. Cette phase est essentiellepour
garantir une gestion efficace de notre projet, avec une attention particulière portée à
l'automatisation et l'optimisation de nos flux de travail.
2. Planification de Sprint
3. Objectif de sprint
4. Réalisation
ACHREF BARHOUMI 54
Notre pipeline Jenkins débute avec la première étape, où nous récupérons le code source le
plus récent depuis le dépôt (SCM - Gestion de Code Source), nous assurant ainsi de travailler avec
la version la plus à jour de notre code.
Dans la deuxième étape, nous réalisons une analyse complète du code à l'aide de SonarQube,
couvrant des aspects tels que la qualité du code, la sécurité et la maintenabilité, intégrée de manière
transparente dans notre flux de travail.
Passant à la troisième étape, nous évaluons les résultats de l'analyse du code par rapport à des
critères de qualité prédéfinis, garantissant que notre code respecte les critères de qualité spécifiés
avant de poursuivre.
Par la suite, dans la cinquième étape, nous envoyons de manière sécurisée l'image Dockervers
DockerHub, mettant en œuvre une gestion sécurisée des informations d'identification.
Dans la sixième étape, nous déployons notre application avec Docker Swarm, orchestrant et
adaptant efficacement notre application.
Enfin, dans la dernière étape, nous envoyons des notifications par courrier électronique aux
destinataires désignés, fournissant des informations essentielles sur l'état de la construction,
permettant une revue rapide et des actions lorsque nécessaire. Ces étapes forment collectivement
notre flux de travail automatisé, améliorant les processus de développement, de test et de
déploiement, tout en maintenant un haut niveau de qualité et de fiabilité du code.
ACHREF BARHOUMI 55
ACHREF BARHOUMI 56
Figure 24: Le Code de fichier Jenkinsfile du pipeline
ACHREF BARHOUMI 57
Figure 25: Les Analyse du Code avec Sonarqube
5. Conclusion
Cette étape marque la conclusion de notre projet et revêt une importance capitale. Au coursde ce dernier
sprint, nous avons réussi à automatiser le processus de développement de l'application, intégrant des
pratiques de test et d'assurance qualité. Cette phase est essentielle pour garantir une gestion efficace de
notre projet, avec une attention particulière portée à l'automatisation et l'optimisation de nos flux de
travail. Grâce à notre pipeline Jenkins bien orchestré et à l'utilisation judicieuse de technologies telles que
SonarQube, Docker Swarm et Python pour les tests unitaires, nous avons achevé cette phase avec succès.
Nous avons ainsi clôturé notre projet en atteignant nos objectifs d'automatisation tout en maintenant un
haut niveau de qualité et de fiabilité du code.
ACHREF BARHOUMI 58
Le Projet de Fin d'Études (PFE) auquel j'ai participé s'est concentré sur l'innovation et
l'amélioration des tableaux de bord ainsi que de l'expérience utilisateur. D'une durée totale de 4
mois, ce projet a été divisé en 4 sprints, chacun couvrant un mois de travail intensif.
Au cours du premier sprint, nous avons mené une étude approfondie de l'existant, analysé
les besoins et les problématiques, et élaboré une solution adaptée. Cette phase initiale a posé les
bases conceptuelles du projet.
Au troisième sprint, nous avons concentré nos efforts sur la mise en place d'un
environnement conteneurisé pour notre application CallCenter. Cela a permis une meilleure
isolation et une gestion plus efficace de l'infrastructure, garantissant une disponibilité élevée grâce
à Docker Swarm.
Le dernier sprint a été consacré à l'automatisation des workflows. Nous avons mis en place
un pipeline CI/CD pour assurer une mise à jour automatique et continue de notre application. Cela
a considérablement réduit le temps de déploiement et de mise sur le marché.
Ces améliorations ont apporté des avantages significatifs à notre projet. Grâce au pipeline,
ACHREF BARHOUMI 59
nous avons minimisé le temps de déploiement et de mise sur le marché, permettant ainsi une
réactivité accrue aux demandes du marché. Docker a assuré une isolation efficace, garantissant la
sécurité de l'environnement conteneurisé. L'utilisation de Docker Swarm a amélioré la
disponibilité de l'application. Enfin, l'implémentation de Next.js a considérablement amélioré les
performances de l'application, offrant aux utilisateurs une expérience fluide et ergonomique.
ACHREF BARHOUMI 60
Bien que le projet ait été couronné de succès, il existe des opportunités d'amélioration dans
divers aspects pour en renforcer l'efficacité et la valeur.
Ces améliorations potentielles incluent :
● Ajouter davantage d'appels à l'action et améliorer les éléments et le CSS dans la partie
Front-End.
● Optimiser l'exécution et les étapes du pipeline.
● Mettre en œuvre Kubernetes au lieu de Docker Swarm pour une infrastructure plus
robuste et moderne.
● Mettre en œuvre davantage de bonnes pratiques en matière de sécurité et de
surveillance.
● Affiner les tests unitaires et les tests de couverture pour une meilleure qualité du code.
● Étendre l'intégration avec des outils de gestion de projet pour une collaboration plus
transparente.
● Améliorer la documentation technique pour faciliter la maintenance continue.
● Étendre les fonctionnalités de l'application pour répondre aux besoins changeants des
utilisateurs.
● Introduire des mécanismes de rétroaction des utilisateurs pour une amélioration
continue.
● Évaluer régulièrement les performances de l'application et effectuer des ajustements en
conséquence.
ACHREF BARHOUMI 61
● Mettre en place des plans de secours et de reprise après sinistre pour garantir la
continuité opérationnelle en cas d'incidents.
Ces améliorations potentielles visent à renforcer davantage la qualité, la sécurité, la réactivité et
l'adaptabilité du projet, offrant ainsi une expérience utilisateur encore meilleure et une gestion plus
efficace de l'infrastructure
Galerie de L’application :
ACHREF BARHOUMI 62
Figure 28:Le Dashboard des Prospects
ACHREF BARHOUMI 63
Figure 30 :Le Dashboard des extracteurs des téléphones
ACHREF BARHOUMI 64
Figure 32: Le Dashboard des lqualif
ACHREF BARHOUMI 65
Figure 34: Le Dashboard des Campaigns
ACHREF BARHOUMI 66
Figure 35: Aspect de Sécurité utilisant les tokens
ACHREF BARHOUMI 67
Figure 36: Le Contrôle de Saisie pour l’interface de Login
ACHREF BARHOUMI 68
Galerie de SonarQube
ACHREF BARHOUMI 69
Figure 38: . Des détections d’anomalies du code du Dashboard Sonarqube
ACHREF BARHOUMI 70
Figure 40: Des statistiques du Dashboard SonarQube pour le Projet
ACHREF BARHOUMI 71
Figure 41: Des statistiques du Dashboard SonarQube pour le code base
Galerie de Jenkins
ACHREF BARHOUMI 72
Figure 43: Les Configurations pour le pipeline Jenkins
ACHREF BARHOUMI 73
Figure 45: Les logs des stages Sonarqube et test de Qualité
ACHREF BARHOUMI 74
Figure 47: Les logs des stages Cleaning, Deploy et envoi d’Email
ACHREF BARHOUMI 75
ACHREF BARHOUMI 76
[1] MaherDEV Company, [Online]. Available: https://www.maherdev.com/page/about.
[Accessed 10 02 2023].
[2] The CI/CD Approach, [Online]. Available: https://www.proofhub.com/articles/traditional- vs-
agile-project-
management#:~:text=Agile%20follows%20an%20iterative%20process,in%20changes%
20and%20specifications%20developments.. [Accessed 15 06 2023].
[3] Scrum VS Kanban methods, [Online]. Available: chrome-
extension://efaidnbmnnnibpcajpcglclefindmkaj/https://iopscience.iop.org/article/10.1088/ 1757-
899X/1218/1/012037/pdf. [Accessed 16 06 2023].
[4] Cycle of the Scrum Methodology, [Online]. Available: https://slidebazaar.com/items/scrum-
process-powerpoint-template/. [Accessed 07 06
2023].
[5] The CI/CD Approach, [Online]. Available: https://www.clouddefense.ai/blog/how-to-
implement-effective-ci-cd-pipeline. [Accessed 13 06 2023].
[6] Virtualization vs containerization , [Online]. Available: https://wpengine.com/blog/a-high-level-
guide-to-containerization/. [Accessed 12 06 2023].
[7] Sonarqube, [Online]. Available: https://www.sonarsource.com/products/sonarqube.
[Accessed 19 04 2023].
ACHREF BARHOUMI 77