Rapport Final
Rapport Final
Rapport Final
***********
FACULTE DE SCIENCE DE SFAX
MINISTERE DE L’ENSEIGNEMENT
SUPERIEUR ***********
ET LA RECHERCHE
SCIENCTIFIQUE DEPARTEMENT DE
L’INFORMATIQUE ET
DE COMMUNICATION
en vue de l’obtention du
DIPLOME DE LICENCE EN :
SCIENCE DE L’INFORMATIQUE
par
MOHAMED AMINE YOUSFI
À vous tous,
Je dédie ce travail.
Mohamed Amine
Je saisis également cette occasion pour exprimer ma profonde gratitude envers toute l’équipe
pédagogique et administrative de la Faculté des Sciences. Leur engagement et leur dévouement
pour offrir une formation de qualité sont inestimables. Leur soutien continu a été une source de
motivation et d’inspiration tout au long de mes études.
Enfin, j’adresse mes remerciements les plus sincères aux membres du jury qui ont accepté
d’évaluer ce travail. Leur expertise et leur contribution sont d’une valeur inestimable. J’espère
que ce travail répondra à leurs attentes en termes de clarté et de synthèse.
Président
Signature :
INTRODUCTION GÉNÉRALE 1
2 Analyse et conception 11
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Backlog de produit : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Planification des sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Réalisation 28
3.1 Architecture du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.1 Architecture physique du projet . . . . . . . . . . . . . . . . . . . . . 29
3.1.2 Architecture logique du projet . . . . . . . . . . . . . . . . . . . . . . 30
3.2 Cadre de réalisation et choix . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.2.1 Outils logiciels : . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.2.2 Langages de programmation . . . . . . . . . . . . . . . . . 33
3.2.2.3 Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2.4 DigitalOcean . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2.5 Amazon S3 . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2.6 MYSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.2.7 Github Actions . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.2.8 Yaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Réalisation de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.1 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Réalisation du site web et déploiement de la solution . . . . . . . . . . . . . . 45
3.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.2 Réalisation du site web de CSMA . . . . . . . . . . . . . . . . . . . . 45
3.5.3 Déploiement de notre solution . . . . . . . . . . . . . . . . . . . . . . 45
Conclusion et Perpectives 49
Nétographie i
ii
L’audit joue un rôle crucial pour les entreprises, leur permettant d’évaluer leur performance
et de garantir leur conformité aux normes en vigueur. Cependant, la réalisation de ces évaluations
peut souvent être fastidieuse et chronophage, notamment lorsqu’elles sont effectuées manuellement
à l’aide de fichiers Excel.
C’est pourquoi nous avons développé une plateforme d’automatisation complète de cette
tâche. Notre solution vise à simplifier et optimiser le processus, en éliminant les erreurs humaines
et en fournissant une analyse plus précise et détaillée des résultats.
Grâce à notre plateforme, les entreprises peuvent effectuer leurs évaluations de manière plus
efficace et efficiente. Les fonctionnalités automatisées réduisent les efforts nécessaires, tandis
que l’analyse approfondie des données fournit des informations pertinentes pour améliorer la
performance et assurer la conformité.
Nous espérons que ce projet permettra aux entreprises de réaliser leurs évaluations de manière
plus efficace et précise, tout en minimisant les coûts et les efforts nécessaires à cette tâche
importante.
Notre rapport se compose de trois chapitres qui décrivent le travail accompli tout au long
de notre stage : le premier chapitre intitulé Etude Préalable et Contexte Générale , présente
l’organisme d’accueil, le projet et l’étude de l’existant .Le deuxième chapitre intutilé Analyse et
Conception s’intéressera à la préparation de l’environnement de travail de développement .Le
troisieme chapitre intitulé Réalisation sera dédié à l’espace administratif . Nous clôturerons, ce
rapport par une conclusion générale.
1
Etude Préalable et Contexte Géneral
Sommaire
1.1 Contexte Générale . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Présentation de la société . . . . . . . . . . . . . . . . . . . . . 3
1.1.3 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Analyse de l’existant . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Etude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Spécification des besoins . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Besoins fonctionnels : . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Besoins non fonctionnels : . . . . . . . . . . . . . . . . . . . . . 7
1.4 Méthodologie du travail . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 Choix de la méthodologie : . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Présentation de la Methode SCRUM . . . . . . . . . . . . . . . 9
1.4.3 Langage de modélisation . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1 Introduction
Ce chapitre est dédié à l’établissement du contexte général de notre projet. Nous commençons
par présenter l’organisme d’accueil, Code Cooperation, ainsi que la méthodologie choisie pour
sa réalisation, après avoir décrit la problématique à résoudre. Ensuite, nous nous intéressons
à l’analyse et à l’évaluation des solutions existantes avant de proposer notre propre solution.
Ce projet s’inscrit dans le cadre de la préparation d’un projet de fin d’études visant à obtenir
un diplôme en génie logiciel de la faculté des Sciences de Sfax. Il a été réalisé au sein de
l’entreprise Code Cooperation sur une période de 4 mois.
CodeCooperation[1] est une société basée à Berlin et à Tunis, spécialisée dans les services
et le conseil en informatique. Contrairement aux autres sociétés de développement de logiciels,
CodeCooperation se distingue par son concept novateur qui consiste à offrir un support de Chief
Technical Officer (CTO) aux startups et aux entreprises, ainsi qu’un développement évolutif à
long terme. Ils sont responsables du développement de leurs propres logiciels, en s’appuyant sur
les compétences techniques et personnelles de jeunes talents tunisiens autonomes et créatifs. Les
principales activités de CodeCooperation comprennent le soutien en tant que cofondateur pour
les jeunes entreprises avec de nouvelles idées, la conception et le développement d’applications
web ou mobiles personnalisées et de haute qualité en utilisant les dernières technologies.
Notre projet consiste à recevoir et réaliser une application web dédiée aux entreprises ,
une solution d’audit automatisée conçue pour remplacer les fastidieux processus manuels basés
sur les fichiers Excel. Grâce à notre application, les entreprises peuvent dire adieu aux tâches
chronophages et propices aux erreurs humaines. Notre technologie avancée collecte les données
en temps réel, les analyse selon des règles d’audit préconfigurées et génère des rapports précis
et personnalisables. En automatisant l’audit, nous offrons une efficacité accrue, des audits plus
fiables et une optimisation des ressources.
1.1.4 Problématique
rigoureuse aux normes en vigueur et de stimuler une culture d’amélioration continue axée sur
l’excellence opérationnelle et la création de valeur durable ?
Au début de chaque de projet, il est nécessaire de faire une étude des solutions existantes
dans le marché pour mieux comprendre les besoins et maintenir l’aspect innovateur du projet.
Dans une première partie, nous décrivons les différentes solutions existantes. Puis, nous nous
intéressons à comparer ces produits et critiquer chacun .
L’étude de l’existant permet de déterminer les points faibles et les points forts d’un produit
actuel pour pouvoir déterminer les besoins du client, en vue d’en prendre en considération
lors de la conception et la réalisation de notre application. Dans cette section, nous présentons
une analyse de quelques exemples d’applications marchands. Ensuite, nous formulerons une
solution de la problématique.
- Audit par fichier excel : L’audit par fichier Excel désigne l’utilisation de fichiers Excel
pour effectuer des évaluations et des analyses de données dans le cadre d’un processus d’audit.
Il s’agit d’une méthode manuelle où les auditeurs saisissent, organisent et analysent les données
d’audit à l’aide de feuilles de calcul Excel. Il convient de noter que l’audit par fichier Excel peut
être une solution temporaire ou adaptée aux petites échelles d’audit, mais pour des audits plus
vastes ou plus complexes, l’utilisation d’applications spécialisées d’audit automatisé peut offrir
des avantages supplémentaires en termes d’efficacité, de précision et de génération de rapports.
Après avoir étudié les solutions précédentes, nous présentons dans la suite une analyse
comparative illustrée par le tableau :
A l’aide de la présente étude du solution existante, nous avons réussi à cerner les insuffisances
de l’existant.
- S’inscrire et se connecter
- Gérer Assessment
- S’inscrire et se connecter
- Gérer Assessment
Pour assurer le bon fonctionnement de notre système, il faut prendre en considération des
contraintes. Nous avons ensuite énoncé les exigences considérées comme étant les plus importantes
pour le projet :
— La sécurité : Assurer une meilleure sécurité d’accès à un compte en passant par une étape
d’authentification, mais aussi protéger les données confidentielles de nos clients
— L’ergonomie :Les interfaces de notre solution doivent être compréhensibles et conviviales
— Maintenabilité : L’architecture de l’application devrait soutenir son extensibilité et son
maintenance
— Performance : La solution devrait être rapide afin de réduire le temps de réaction.
Notre équipe a dû choisir entre des méthodes classiques et agiles. Une gestion classique est
une méthode prédictive caractérisée par le découpage séquentiel et itératif du cycle du projet.
Donc, tous les besoins doivent être définis au début de réalisation. En appliquant cette méthode,
l’équipe doit suivre le cahier des charges pour livrer le produit dans sa version finale. En effet,
ce manque de flexibilité et l’absence d’interaction avec le client peut affecter l’anticipation aux
changements et aux imprévus pendant l’exécution et impliquer des retards et coûts supplémentaires
dans le cas de déception du client. Dans le cas d’une méthode agile, le projet est divisé en
sous-projets avec des objectifs à court terme pour laisser la place aux changements et imprévus.
Contrairement à la méthode traditionnelle, l’agilité offre une grande flexibilité aux changements
du client. Elle privilégie donc sa satisfaction et l’interaction avec lui. En effet, cette méthodologie
propose :
— Des solutions opérationnelles
— Une collaboration avec les clients
— La réponse rapide aux changements. Pour bénéficier de la flexibilité et l’interaction du client,
Code Cooperation favorise les méthodes agiles que avons utilisé durant la réalisation de ce
projet.
La méthode agile Scrum vise à définir un cadre avec des rôles qui sont clairs et précis
découpés en petites itérations pour faciliter la mise en oeuvre de projets complexes. Un tel
cadre se fonde sur l’adaptabilité, l’inspection et la transparence .
Un projet Scrum est rythmé par un ensemble d’itérations définies avec précision et limitées
dans le temps nommés sprints . Un sprint peut durer de 1 à 4 semaines au cours desquelles nous
avons une version du produit utilisable selon la liste d’objectifs définis à son début. Comme
illustré dans la figure 1.3, la méthode scrum définit trois rôles principaux :
— Product Owner : C’est le représentant du client qui est responsable de traduire ses
besoins pour créer, planifier, valider les sprints
— Scrum Master : C’est un membre de l’équipe qui assure le contrôle du bon déroulement
du projet et facilite le travail de l’équipe de développement
1.5 Conclusion
Dans le chapitre précédent, nous avons consacré notre attention à une étape fondamentale :
décrire avec minutie le contexte de notre projet. À travers l’utilisation du cadre du projet, nous
avons présenté la problématique et effectué une analyse approfondie des différentes solutions
existantes. Nous avons également dévoilé la méthodologie de travail adoptée, ainsi que le
langage de modélisation utilisé pour notre étude. En entamant le prochain chapitre, nous nous
plongerons dans la phase de l’analyse et de la conception, où nous allons développer et peaufiner
nos idées avec précision.
Chapitre
2
Analyse et conception
Sommaire
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Backlog de produit : . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Planification des sprints . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Diagramme de cas d’utilisation global . . . . . . . . . . . . . . 14
2.6 Diagramme de classe . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7 Description détaillée de diagramme de classe . . . . . . . . . . 17
2.8 Description détaillée de quelques cas d’utilisation . . . . . . . 18
2.8.1 Cas d’utilisation «s’inscrire» . . . . . . . . . . . . . . . . . . . . 18
2.8.2 Diagramme de séquence «s’inscrire» . . . . . . . . . . . . . . . 20
2.8.3 Cas d’utilisation «s’authentifier» . . . . . . . . . . . . . . . . . 21
2.8.4 Diagramme de séquence «s’authentifier» . . . . . . . . . . . . . 23
2.8.5 Cas d’utilisation «Assessment» . . . . . . . . . . . . . . . . . . 24
2.8.6 Diagramme de séquence «Assessment» . . . . . . . . . . . . . . 24
2.8.7 Cas d’utilisation «Gérer des membres» . . . . . . . . . . . . . . 26
2.8.8 Diagramme de séquence «Gérer des membres» . . . . . . . . . 27
2.8.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Introduction
Dans le chapitre précédent, nous avons abordé la sélection de la méthode Scrum. À présent,
nous entamerons la phase la plus captivante de cette méthodologie, connue sous le nom de
"phase d’analyse et de conception". Au cours de ce chapitre, nous examinerons en détail la
conception, en commençant par l’identification des acteurs, la création du backlog du produit
et des cas d’utilisation, ainsi que la présentation des diagrammes de classes et de séquences .
Les entreprises : Ce sont les principaux utilisateurs de l’application web. Elles bénéficient
de l’automatisation de leurs processus d’audit, de rapports précis et personnalisables, d’une
efficacité accrue, de audits plus fiables et d’une optimisation des ressources.
Ces acteurs représentent une liste de base et pourraient être complétés en fonction des
besoins spécifiques de votre projet.
Le backlog du produit est l’artefact essentiel de la méthodologie Scrum qui est défini par
un ensemble de critères fonctionnels ou techniques. Ce dernier, renforce l’organisation et la
collaboration et maintient chacun en ligne avec les attentes et les objectifs.
Les user stories du projet se présentent comme suit :
Le backlog relatif à notre produit est illustré par la figure 2.1 suivante :
A ce stade, après avoir fixé les grandes fonctionnalités, nous pouvons passer à la phase de
planification. Cette étape permet de repartir le travail en question en sprints. Avec nos échanges
durant les réunion de planification, nous avons réussi à évaluer la complexité des tâches et de
proposer des différentes perspectives et visions.
Dans ce qui suit, nous présentons la planification prévue des sprints avec le tableau 2.1 suivant :
Dans le but de modéliser les différentes fonctionnalités de ce système, nous avons utilisé le
langage UML et plus précisément le diagramme des cas d’utilisation.
Ce type de diagramme sert à :
— Modéliser les grandes fonctionnalités en question
— Présenter les différentes interactions entre le système et ses acteurs.
Cette figure illustre un diagramme de cas d’utilisation général qui décrit les fonctionnalités
pour chaque acteur.
Dans la figure 2.3 nous présentons plus de détails sur les classes impliquées dans notre
solution.
Dans la partie présente, nous mettons l’accent sur l’aspect dynamique du système. Pour
décrire quelques scénarios importants du dashboard client, nous présentons dans ce qui suit un
diagrammes de séquence et un diagramme de cas d’utlisation .
L’objectif de ce cas d’utilisation est de permettre aux utilisateurs de créer un compte sur la
plateforme, en incluant une étape de confirmation par e-mail pour valider leur adresse e-mail
et activer leur compte. Cette méthode de confirmation par e-mail est couramment utilisée pour
garantir l’authenticité des informations fournies par les utilisateurs et prévenir les abus.
Ce cas d’utilisation offre une méthode fiable pour créer des comptes
utilisateur tout en garantissant que les adresses e-mail sont valides
Objectif
et vérifiées. Cela contribue à renforcer la sécurité et l’intégrité des
données de la plateforme.
Dans cette partie , nous avons défini le process de creation d’un nouveau compte en utilisant
le service de mailjet pour la confirmation par e-mail qui assure la vérification de l’identité ,
réduit les risques de création de faux comptes ou d’utilisation de comptes frauduleux, ce qui
contribue à maintenir l’intégrité de la plateforme.
TABLE 2.4
Comme illustré dans la figure 2.7, nous avons utilisé la service JWT en tant que service
d’authentification pour garantir le bon déroulement de cette étape. C’est un service personnalisable
qui nous permet de traiter les données de cette partie en toute indépendance de notre base de
données. En effet, son maintient des identités de nos utilisateurs qui sont stockées dans sa propre
base de données optimise la confidentialité de notre solution et fournit un accès sécurisé à notre
application .
comme illustré dans la figure Lors de la création d’un assessment, si tous les champs requis
sont remplis, le processus de mise à jour et de soumission se déroule sans problème. Cependant,
si tous les champs ne sont pas remplis, des difficultés peuvent survenir lors de la soumission de
l’assessment.
Lorsque certains champs nécessaires ne sont pas remplis, le système peut afficher un message
d’erreur indiquant les champs manquants ou demandant à l’utilisateur de les compléter avant de
pouvoir soumettre l’assessment. Cela permet de s’assurer que toutes les informations essentielles
sont fournies et que l’assessment est complet.
Les fonctionnalités de gestion des membres de l’équipe, illustrées dans la figure 2.9, offrent
à l’administrateur la possibilité d’ajouter de nouveaux membres en fournissant leurs informations,
de modifier l’état des membres existants et d’afficher la liste complète de tous les membres de
l’équipe. Ces fonctionnalités facilitent la maintenance et la mise à jour de la composition de
l’équipe en fonction des besoins et des exigences de l’organisation.
2.8.9 Conclusion
Dans ce chapitre, nous avons développé la conception de notre application. Pour ce faire,
nous avons introduit deux diagrammes dynamiques : le diagramme de cas d’utilisation et le
diagramme de séquence, ainsi qu’un diagramme statique, à savoir le diagramme de classe. Pour
concrétiser la conception entreprise précédemment, nous aborderons, dans le prochain chapitre,
l’implémentation de notre application, tout en présentant l’environnement de travail.
Chapitre
3
Réalisation
Sommaire
3.1 Architecture du projet . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.1 Architecture physique du projet . . . . . . . . . . . . . . . . . . 29
3.1.2 Architecture logique du projet . . . . . . . . . . . . . . . . . . . 30
3.2 Cadre de réalisation et choix . . . . . . . . . . . . . . . . . . . . 31
3.2.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . 31
3.2.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Réalisation de l’application . . . . . . . . . . . . . . . . . . . . 38
3.4.1 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Réalisation du site web et déploiement de la solution . . . . . 45
3.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.2 Réalisation du site web de CSMA . . . . . . . . . . . . . . . . . 45
3.5.3 Déploiement de notre solution . . . . . . . . . . . . . . . . . . . 45
3.5.4 Choix de la méthode de déploiement . . . . . . . . . . . . . . . 45
3.5.5 Architecture du pipeline de déploiement . . . . . . . . . . . . . 46
3.5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Après avoir définit les fonctionnalités de notre solution, nous nous focalisons dans cette
partie sur l’architecture générale de notre système. Tout dabord, nous présentons l’architecture
physique adoptée au cours de la réalisation de ce projet. Puis, nous exposons l’architecture
logique de la solution proposée.
— Accès aux données : Cette couche est associée au serveur de base des données permettant
de gérer et sauvegarder les données.
Nous avons choisi l’architecture multi-couches comme une architecture logique de notre
système. En effet, cette architecture est fondée sur le principe d’isolation et de superposition des
responsabilités de chacun des ensembles de composants logiques qui se comportent comme une
couche. Et pour décrire les différentes couches intervenants dans la structure logique de notre
projet, nous présentons la figure 3.2 qui illustre l’architecture à 5-couches de notre solution.
Comme indiqué dans cette figure, notre architecture est constituée de 5 couches distinctes :
— Présentation : ceci est le niveau avec lequel l’utilisateur interagit qui contient un ensemble
de contrôleurs pour traiter les requêtes HTTP et afficher différents résultats d’interface via des
vues
— Data : Il s’agit d’une couche responsable de la gestion des bases de données contenant
des reposotiries. Ainsi, elle assure la connexion avec MySQL en utilisant la bibliothèque TypeORM.
Nous commençons par détailler les outils logiciels adoptés pour la mise en oeuvre de notre
PFE.
v Swagger
Swagger spécifie un ensemble de métadonnées qui
décrivent une API REST. Si vous avez un fichier Swagger
définissant une API REST, vous pouvez l’ajouter à votre
projet en tant que source de synchronisation externe.
Cette source peut être synchronisée avec le projet.
Voir Ajouter une définition Swagger comme source
de synchronisation. Pour plus d’informations sur la
synchronisation, voir Vue Synchronisation.
v GitHub
GitHub[3] is an open-source hosting service that allows
programmers and developers to share their code projects
and collaborate on them. It can be considered as a
dedicated cloud for computer code.
v OverLeaf
Overleaf[4] est une plateforme en ligne gratuite
permettant d’éditer du texte en LATEX sans aucun
téléchargement d’application. En outre, elle offre la
possibilité de rédiger des documents de manière
collaborative, de proposer ses documents directement à
différents éditeurs (IEEE Journal, Springer, etc.
v Jira Software
Jira Software[5]est logiciel de gestion de projets
développé par Atlassian en 2002 . Vu que nous avons
opté pour la méthodologie agile scrum, l’utilisation de
Jira software nous a facilité la gestion des user stories, des
taches et des sprints pour simplifier la collaboration dans
notre équipe. Ce logiciel nous a permis aussi de suivre et
contrôler l’avancement de travail.
v Figma
Au cours du développement de notre projet, nous avons
utilisé l’outil de web design Figma[6] pour satisfaire
les exigences de notre cliente concernant les interfaces
graphiques .
v Wondershare Edrawmax
Edraw Max[7] est un logiciel de diagramme tout-en-un
qui simplifie la création d’organigrammes, diagrammes
organisationnels, diagrammes réseau, présentations
commerciales, plans de construction, cartes mentales,
illustrations scientifiques, conceptions de mode,
diagrammes UML, flux de travail, structures de
programmes, ...
v JavaScript
JavaScript[8] est le langage de script orienté objet le plus
populaire utilisé par les développeurs depuis les années
90. En effet, l’utilisation de ce langage pour les deux
cotés front-end et back-end nous permet un gain de temps
et de flexibilité en terme dapprentissage .
v TypeScript
TypeScript[9] est un langage de programmation
open-source, développé en 2012 par Microsoft dans
le but d’améliorer le code JavaScript . Ce langage
vient pour nous favoriser avec les nouveaux concepts de
programmation comme : Les interfaces, les énumérations
et les classes ce qui nous aide à manager la complexité
de notre code et à garantir une meilleure maintenance.
3.2.2.3 Frameworks
v NestJs
Nest.js[10] est l’un des frameworks Node.js à la
croissance la plus rapide pour construire des applications
backend efficaces, évolutives et de niveau entreprise
en utilisant Node.js. Il est connu pour produire
des applications hautement testables, maintenables et
évolutives à l’aide de JavaScript et TypeScript modernes.
v NextJs
Next.js[11] étant qualifié de framework React pour la
production, il est devenu évident que vous pouvez
rapidement créer et déployer des applications à grande
échelle et prêtes pour l’entreprise en production avec
Next.js.
v 3.2.2.4 DigitalOcean
v 3.2.2.5 Amazon S3
v 3.2.2.6 MYSQL
v 3.2.2.8 Yaml
3.3 Conclusion
Dans la première partie de ce chapitre, nous avons fixé les acteurs et nous avons décrit les
fonctionnalités de notre système à travers un diagramme de cas d’utilisation général. Ensuite,
nous avons présenté l’architecture globale de ce projet. Puis, nous avons expliqué notre choix
des environnements matériel et logiciel. Cette phase de préparation est fondamentale avant de
passer à la phase de la réalisation de la solution proposée dans les chapitres suivants.
L’objectif de la première étape de ce projet est de livrer une version de dashboard client de
CSMA qui satisfait les besoins fixés précédemment. Dans ce qui suit, nous nous intéressons à
détailler les étapes d’implémentation de cette partie en décrivant les résultats obtenus avec des
interfaces graphiques.
3.4.1 Développement
Tous les utilisateurs de plateforme peuvent accéder à ce dashboard pour créer un compte
pour leur entreprise après avoir rempli le formulaire d’inscription tel qu’indiqué dans la figure
3.3
Tu dois maintenant confirmer votre compte par compte email comme le montre la figure ci
dessous :
Dans le cas d’un enregistrement réussi, un utilsateur d’une entreprise peut s’authentifier
comme illustré dans la figure 3.5 et bénéficier des différentes fonctionnalités proposées par son
espace
Un utilisateur peut maintenant acceder au plateform afin de réaliser leur propre évaluation.
F IGURE 3.6: interface pour permettre d’accéder pour créer un nouveau assessment
En appuyant sur le boutton "New Assessment" , puis sur le boutton "Confirm" l’utilisateur
du plateforme a la possibilté maintenant de faire l’assessment . Cette étape consiste à remplir
les informations necessaires comme l’indique la figure ci dessus :
Une deuxieme partie illustrée par la figure 3.9 suivante est consacrée à télécharger les
fichiers nécessaires pour le traitement .
Aprés avoir remplit les informations nécessaires Comme le montre les figures 3.10 et 3.11
, notre dashboard offre aux utilisateurs l’opportunité de voir les détails relatifs aux differents
groupes des questions en cliquant sur le button "Maturity Rating".
En cliquant sur le bouton (+) situé à droite, des informations supplémentaires seront affichées
concernant chaque question de chaque groupe.
Dans la figure suivante, nous allons présenter la liste des membres qui ont déjà été ajoutés
par l’administrateur.
3.5.1 Introduction
Après l’implémentation de dashbord de notre solution, nous dédions cette partie à la description,
en premier temps, de la création du site CSMA. Ensuite, nous détaillons les différentes phases
de déploiement du projet avec les services DIGITAL OCEANS .
Après avoir élaboré la solution, il a fallu concevoir et choisir une méthode de déploiement.
Dans cette partie, nous commençons par la description de notre choix, puis nous détaillons la
mise en oeuvre de la procédure adoptée pour déployer notre projet.
Faire un bon choix de méthode de déploiement d’un projet, peut jouer un rôle fondamental
dans sa maintenance et son extensibilité. En effet, notre équipe a choisi les services DigitalOcean
après avoir beaucoup étudié les solutions possibles (AWS). Nous avons conçu un pipeline
d’intégration et de distribution continues (CI/CD) automatisées .
Dans la suite, nous exposons les différents termes intervenant dans cette méthode .
— Intégration continue (CI) : C’est une méthode de développement qui permet aux développeurs
d’intégrer leurs changements régulièrement. Elle permet, principalement, de réduire la durée et
l’effort provoqués par chaque intégration. De plus, elle facilite la détection et la correction des
incohérences au fur et à mesure ce qui réduit le risque de bug.
— Pipeline CI/CD : C’est un concept, apparu en 2009, qui englobe un ensemble de pratiques
permettant d’automatiser le processus de distribution des logiciels. En effet, cette approche
permet de gagner le temps et les efforts consacrés à la configuration manuelle de cette étape et
réduit les erreurs. Ainsi, elle aide à accélérer considérablement les publications de produits et à
apporter des changements quotidiennement tout en améliorant l’agilité.
— D’une livraison plus rapide des versions devenues plus robustes grâce à l’automatisation,
de sorte que l’équipe de développement peut se concentrer sur l’amélioration de la qualité du
code.
— D’une détection plus rapide des bugs. Ceci est du au suivi continu et des tests automatisés
pour identifier les problèmes présents et éviter les surprises de déploiement.
selon nos besoins. Dans cette solution, nous avons utilisé 5 types d’actions d’intégration dans le
Codepipeline, responsable chacun de la réalisation d’une étape en utilisant des services Digital
Oceans. Comme illustré dans la figure suivante 5.6, notre pipeline est composée de 5 phases
distinctes :
— Push : Chaque fois que nous "Push" un nouveau commit sur GitHub, le workflow GitHub
Actions sera déclenché et commencera à s’exécuter.
— Build Docker Image and Push : GitHub Actions va construire une image Docker sur son
exécuteur (runner) et (Push) cette image vers le registre des conteneurs (Container Registry).
— Deploy Docker Image : Ensuite, GitHub Actions se connectera aux Droplets et déploiera
l’image à partir du registre des conteneurs (Container Registry) vers ces Droplets.
Voyons comment configurer ce flux de travail : Ajouter Actions Secrets : Il existe quelques
variables secrètes que vous devez utiliser dans le fichier workflow.yml de GitHub Actions, il
serait donc préférable de les chiffrer en les stockant dans les Secrets de GitHub. Vous pouvez
accéder à Paramètres du dépôt → Secrets → Actions, puis cliquer sur Nouveau secret de dépôt.
Nous avons ici 2 tâches : exécuter "build and push", puis une fois qu’elle est terminée,
exécuter "deploy".
3.5.6 Conclusion
Notre projet de fin d’études consiste à développer une solution pour faciliter l’audit pour les
opérateurs des entreprises . Dans le présent rapport, nous avons décrit les étapes que nous avons
franchies pour atteindre nos objectifs. Au début, nous avons présenté le contexte général de
notre projet par l’exposition du l’organisme d’accueil, la présentation de la problématique et de
nos objectifs et dans un deuxieme lieu, par la description des solutions existantes pour proposer,
au final, notre solution. Cette étape, nous a permis de cerner les besoins de notre système afin
de passer à l’étape de la conception générale et la description de l’environnement du travail
adéquat pour la réalisation de notre projet. Enfin, pendant les trois derniers chapitres, nous
détaillons les étapes de l’implémentation des différentes parties de ce projet en se basant sur la
conception détaillée de chacune. D’après ce projet, nous avons réussi à enrichir et exploiter nos
connaissances acquises au cours de la formation au sein de la Fss. Par ailleurs, nous avons eu la
chance de maîtriser les nouvelles tendances technologiques : Nextjs, NestJs et Digital Oceans.
Même si nous avons réussi à répondre aux besoins fonctionnels requis, il existe des points
de vue pouvant servir notre projet en vue de l’améliorer. Parmi ces améliorations, nous citons :
- Intégration de fonctionnalités d’intelligence artificielle : L’ajout de fonctionnalités basées
sur l’intelligence artificielle pourrait renforcer notre solution d’audit. Par exemple, l’utilisation
de l’apprentissage automatique pour l’analyse des données financières pourrait permettre une
détection plus rapide des anomalies et des risques potentiels, améliorant ainsi l’efficacité et
l’exactitude de l’audit.
- Résumé : Nous avons développé une application web dans le cadre d’un projet de fin d’études
visant à faciliter la gestion des audits pour les entreprises. Cette application, basée sur les
frameworks Next.js et Nest.js, utilise une base de données MySQL pour la gestion des données.
Nous avons déployé l’application en utilisant les services de DigitalOcean et avons suivi la
méthodologie SCRUM pour assurer une bonne gestion du projet.
Mots Clés : application web, Framework Nextjs, Framework Nestjs, DigitalOcean, SCRUM ,
MySQL
- Abstract : We have developed a web application as part of a final year project aimed at
facilitating audit management for businesses. This application is based on the Next.js and
Nest.js frameworks and uses a MySQL database for data management. We deployed the
application using DigitalOcean services and followed the SCRUM methodology to ensure
effective project management.
Key words : web application, Framework Nextjs, Framework Nestjs, DigitalOcean, SCRUM ,
MySQL