Professional Documents
Culture Documents
Tuni Shop
Tuni Shop
Avec l’expression de ma reconnaissance, je didié ce modeste travail à ce ceux qui, quels que
soient les termes embrassés, je n’arriverais jamais à leur exprimer mon amour sincère
À l’homme, mon précieux offre du dieu, qui doit ma vie, ma réussite et tout mon respect.Tu as
toujours été à mes côtes pour me soutenir et m’encourager. Que ce travail traduit ma gratitude et
mon affection
À mon trés cher père, Abdelwaheb.
À la femme qui a souffert sans me laisser souffrir, qui n’a jamais dit non ames exigence et n’a
épargné aucun efort pour me rendre heureux
À mon adorable mère, Samia.
À mes deux merveilleuses sœurs Mariem & Zaineb. Je tiens à vous dédier ces mots empreints
d’amour et d’admiration. Vous êtes les personnes les plus spéciales dans ma vie et je suis
profondément reconnaissant de vous avoir comme sœurs.
À ma chère grand mère Hayet, Chaque moment partagé avec toi est un trésor précieux, rempli
de souvenirs joyeux et de précieuses leçons de vie. Ta générosité sans faille et ton sourire radieux
ont le pouvoir de rendre chaque instant mémorable.
Ezzddinne Mhamdi
FS-SFAX Page i
DEDICATION
Je voudrais dédier ce modest travail avec le plus grand amour et la plus grande gratitude
À la femme la plus importante de ma vie qui m’a donné tout ce que j’ai aujourd’hui, qui n’avez
jamais douté de mes capacité. Que Dieu vous protège et vous accorde une bonne santé et une
longue vie.
À mon adorable mère, Najiba.
À mon très cher frère Amin et sa belle femme Sameh, ont été mes guides et ma source
d’inspiration, toujours présents pour m’écouter, m’encourager et me fournir un soutien
indéfectible.
À mes merveilleuses sœurs Emna & Salwa & Sana. je dédie ces mots remplis d’affection et
d’admiration. Je suis profondément touchée d’avoir des sœurs aussi merveilleuses que vous, et je
suis ravie de vous avoir à mes côtés.
À mes professeurs, Je tiens à exprimer ma profonde gratitude et ma reconnaissance. Leur
dévouement, leur expertise et leur passion pour l’enseignement ont joué un rôle essentiel dans ma
formation académique et personnelle.
À tous mes amis qui ont été mes compagnons de tous les instants, leurs présence a apporté de
la joie dans ma vie et ont rendu le parcours plus supportable.
Fakhreddine Youssef
FS-SFAX Page ii
REMERCIEMENT
Nous avons un grand plaisir de garder cette page en signe de gratitude et de profonde reconnaissance
à tous ceux qui nous ont aidé de près ou de loin à la réalisation de ce projet.
Nous sommes trés reconnaissant à notre encadrant à la faculté des sciences de sfax, Monsieur
Mohamed Tahar Bhiri, d’avoir accepté de diriger ce travail sans oublier ses conseils et sa participation
régulière au cheminement de ce rapport avec rigeur et bienveillance.
Nous tenons à remercier Monsieur Hedi Manai, notre encadrant professionnel, pour sa disponibilité
tout au long ce stage, ses judicieux conseils et ses encouragements, qu’il trouve ici notre respectueuse
reconnaissance.
Nous tenons à remercier les membres de jury de nous avoir offert l’occasion de présenter notre
projet devant leur honorable assistance et d’avoir accepté d’évaluer ce projet.
INTRODUCTION GÉNÉRALE xi
1 Etude du projet 2
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Entreprise d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Conseil en cloud computing . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Intégration IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Inforgérence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.4 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Context du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Solutions proposées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Identification des besoins fonctionnels . . . . . . . . . . . . . . . . . . . . 8
1.4.3 Identification des besoins non fonctionnels . . . . . . . . . . . . . . . . . 10
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
FS-SFAX Page iv
TABLE DES MATIÈRES
2.3.2 Manifeste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.4 Méthode retenue SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Outils logiciels utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Langage de programmation : Golang . . . . . . . . . . . . . . . . . . . . 16
2.4.1.1 Possibilités vis-à-avis de la programmation synchrone . . . . . . 17
2.4.1.2 Possibilités vis-à-avis de la programmation asynchrone . . . . . 18
2.4.1.3 Possibilités vis-à-avis de la programmation orientée objet . . . . 18
2.4.2 GORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.3 Framework GIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.3.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.3.2 Composantes Framework . . . . . . . . . . . . . . . . . . . . . 21
2.4.4 Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Architecture logicielle du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
FS-SFAX Page v
TABLE DES MATIÈRES
4 Documentation 56
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Extraction d’un diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . 57
4.3 Documentation Swagger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4 Interfaces Homme-Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
CONCLUSION GÉNÉRALE 71
BIBLIOGRAPHIE 71
FS-SFAX Page vi
LISTE DES FIGURES
FS-SFAX Page ix
LISTE DES ABRÉVIATIONS
DB DataBase
FS-SFAX Page x
INTRODUCTION GÉNÉRALE
De nos jours le commerce électronique est un secteur en pleine expansion qui a révolutionné le
mode de fonctionnement des entreprises dans le monde moderne. Cette technologie de pointe a
permis aux consommateurs de parcourir et d’acheter des produits et des services depuis le confort
de leur domicile, et a ouvert de nouvelles possibilités aux entreprises pour étendre leur portée et
accéder aux marchés mondiaux. À l’ère du numérique, le commerce électronique est devenu une
composante essentielle de l’économie, et son impact sur le monde des affaires ne fera que croître
dans les années à venir.
Malgré son évolution au fil des ans, des améliorations sont encore possibles pour répondre à la
demande sans cesse croissante d’expériences d’achat en ligne. Avec l’essor de la numérisation,
les consommateurs s’attendent à des transactions transparentes et pratiques, et le commerce
électronique doit s’adapter pour répondre à ces besoins. Dans ce cadre et en vue de l’obtention
de notre projet de fin d’études, au sein de l’entreprise Tunisian Cloud, nous avons réalisé une
plateforme e-commerce intitulée TuniShop. Ce projet a pour but de créer une boutique numérique
pour le commerce électronique afin de faciliter les processus de vente des produits. Les clients
peuvent accéder à la boutique depuis différentes plateformes telles que Messenger, Instagram,
Facebook, etc. Lorsqu’un client passe une commande à partir de Facebook, Messenger ou
Instagram, le système enregistre automatiquement le profil du client ainsi que les produits ajoutés
au panier. Par ailleurs, le propriétaire de la boutique peut suivre en temps réel les activités des
paniers de chaque utilisateur grâce à la session client.
FS-SFAX Page xi
INTRODUCTION GÉNÉRALE
Le premier chapitre porte sur l’étude de projet. Il débute par une présentation de l’entreprise
d’accueil, puis se concentre sur la problématique rencontrée et la solution proposée. Enfin, il
aborde la capture des besoins, où les différents acteurs sont identifiés, les besoins fonctionnels et
non fonctionnels du projet sont définis.
Le deuxième chapitre de notre projet mettra en lumière la méthodologie et les outils utilisés dans
sa réalisation. Nous commencerons par une analyse critique de la méthode de développement
classique, suivie d’une description détaillée de la méthode SCRUM que nous avons adoptée tout
au long du processus de développement. De plus, nous fournirons une présentation des outils
utilisés ainsi que de l’environnement de travail mis en place. De tels outils sont organisés autour
de langage de programmation Golang et le framwork Gin.
Le troisième chapitre constitue le pilier central de notre rapport, où nous décrivons en détail
les étapes de développement en appliquant soigneusement la méthode agile SCRUM. Nous
commencerons par présenter le backlog product, qui regroupe les fonctionnalités basiques dits
user stories. Ensuite, nous aborderons la planification des releases, décrivant comment nous avons
structuré le travail de notre projet. Enfin, nous approfondirons la définition de nos fonctionnalités,
en fournissant plus des détails .
La conclusion termine ce rapport en résumant les points essentiels de notre stage et en indiquant
quelques prolengements utiles de ce travail.
FS-SFAX Page 1
Chapitre
1
Etude du projet
Sommaire
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Entreprise d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Conseil en cloud computing . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Intégration IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Inforgérence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.4 Sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Context du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Solutions proposées . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Identification des besoins fonctionnels . . . . . . . . . . . . . . . . . . . 8
1.4.3 Identification des besoins non fonctionnels . . . . . . . . . . . . . . . . 10
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
FS-SFAX Page 2
CHAPITRE 1. ETUDE DU PROJET
1.1 Introduction
Dans un premier temps, nous nous présentons les aspects généraux liés à l’entreprise d’accueil :
Tunisian cloud. dans un deuxième temps, nous identifions le contexte de notre projet en insistant
sur les faiblesses des applications actuelles relatives au commerce électronique. En outre, nous
dégageons des solutions possibles aux faiblesses identifiées. Enfin, nous détaillons le cahier
des charges de notre stage compertant les acteurs impliqués et les besoins fonctonnels et non
fonctionnels.
Tunisian Cloud est une entreprise tunisienne spécialisée dans les domaines du Cloud Computing,
la sécurité informatique et l’intégration. Elle est un acteur majeur de la cybersécurité en Afrique,
avec une expertise précieuse dans l’audit de sécurité des systèmes d’information. Elle intervient
dans les aspects préventifs, proactifs et de réponse en offrant une liste complète de services pour de
multiples entreprises. Son expertise et son expérience sont assurées par ses experts de renommée
internationale. La figure 1.1 fournit le logo de l’entreprise Tunisian Cloud [1].
Tunisian Cloud est une société informatique bien établie qui se spécialise dans la fourniture de
solutions informatiques de premier ordre à ses clients. Les services offerts par Tunisian Cloud sont
complets et répondent aux divers besoins d’un large éventail d’entreprises.
FS-SFAX Page 3
CHAPITRE 1. ETUDE DU PROJET
Tunisian Cloud est reconnu pour son expertise en matière de cloud computing, ayant une
maîtrise complète de cette technologie. Elle possède une connaissance approfondie des différents
modèles et services de cloud computing disponibles pour les entreprises aujourd’hui. Grâce à ses
connaissances approfondies et à son expérience, Tunisian Cloud se positionne en tant que Cloud
Advisor, Cloud Builder, Cloud Application Provider et Cloud Auditor.
1.2.2 Intégration IT
Étant entouré par des fournisseurs de solutions les plus connus du marché et en disposant des
accréditations nécessaires, Tunisian Cloud assure une meilleure intégration de l’environnement
informatique. Elle offre un service complet allant du conseil à la maintenance stratégique.
1.2.3 Inforgérence
Tunisian Cloud reconnaît qu’il n’y a pas de solution unique. En fonction des besoins de
l’organisation, de la taille de l’entreprise et des compétences disponibles au sein de la structure,
Tunisian Cloud propose des options flexibles d’externalisation. Qu’il s’agisse de réaliser une
infogérance informatique sur les sites ou d’externaliser tout ou partie du SI dans un centre
d’hébergement à haute disponibilité, Tunisian Cloud s’engage à fournir la meilleure solution pour
les besoins de ses clients.
1.2.4 Sécurité
Toutes les organisations, quelque soit leurs tailles et leurs secteurs d’activité, sont des cibles
potentielles d’attaques contre leurs systèmes d’information. Toutes les menaces découlant d’une
faille de sécurité créée lors de la configuration, du développement ou de la maintenance ayant été
effectuées, les grandes entreprises ne sont pas les seules à supporter le poids de ces attaques et
menaces. Ces services de sécurité visent à identifier ces failles avant qu’ils ne se transforment en
menaces exploitables.
FS-SFAX Page 4
CHAPITRE 1. ETUDE DU PROJET
Dans cette section, nous allons présenter la problématique liée au développement des boutiques
numériques moderns et les solutions possibles.
1.3.1 Problématique
Malgré que le commerce électronique a incontestablement révolutionné notre façon de faire des
achats, certains inconvénients ont été mis en évidence. L’un des principaux problèmes soulevés
est la simplicité perçue des services fournis par les plateformes de commerce électronique.
Les utilisateurs ont critiqué le manque d’expériences personnalisées et les options limitées de
personnalisation. En outre, L’inaccessibilité des achats sur les plateformes de médias sociaux
populaires comme Facebook, Messenger et Instagram a créé un problème important dans le
maintien d’une session utilisateur cohérente sur ces plateformes et les plateformes de commerce
électronique. Cette difficulté a empêché les clients d’éviter les traces liés à la création de
nouveaux comptes et a eu un impact sur l’expérience utilisateur transparente que les plateformes
de commerce électronique s’efforcent d’offrir. Les consommateurs doivent pouvoir être sûrs que
leurs informations seront conservées en toute sécurité . Malheureusement, malgré la progression la
plupart des plateformes de commerce électronique ne disposent pas encore des mesures de sécurité
nécessaires pour protéger les données des clients. Cette situation est d’autant plus préoccupante que
les cyberattaques et les violations de données sont de plus en plus fréquentes.
FS-SFAX Page 5
CHAPITRE 1. ETUDE DU PROJET
Les problèmes dégagés lors de l’analyse de la situation actuelle rendent nécessaire l’élaboration
d’une solution informatisée afin d’offrir une autre expérience de vente et d’achat en ligne.
Pour ce faire, nous développerons une boutique numérique conviviale et accessible qui offrira
une expérience d’achat en ligne simple et efficace pour les clients. En permettant aux utilisateurs
d’acheter depuis plusieurs plateformes populaires telles que Facebook, Messenger et Instagram,
nous visons à offrir une accessibilité et commodité accrue pour les clients. Lorsqu’un client
passe une commande sur l’une de ces plateformes, notre système enregistre automatiquement son
profil ainsi que les produits ajoutés à son panier. Cette fonctionnalité est très utile pour les
propriétaires de la boutique, qui peuvent suivre en temps réel les activités de chaque client
grâce à la session client. Cela offre une meilleure compréhension des actions des clients et aide
les propriétaires de boutique à prendre des décisions informées pour améliorer l’expérience
d’achat. En outre, nous inclurons également des fonctionnalités de suivi de performance pour la
boutique. Les propriétaires de la boutique auront accès à des données détaillées sur les ventes, les
taux de conversion et les taux de rebond, ainsi que sur les produits les plus populaires et les pages
les plus visitées. En utilisant ces informations, les propriétaires de boutique pourront prendre des
décisions informées pour optimiser la performance de leur boutique et augmenter les ventes. Notre
projet accorde une attention primordiale à l’implémentation et à l’évolution de la composante de
sécurité, étant donné sa nature commerciale et la nécessité de protéger les données confidentielles.
Dans cette perspective, nous avons intégré des mesures de sécurité supplémentaires en utilisant
une documentation professionnelle OWASP, afin d’assurer la satisfaction et la confiance totale des
utilisateurs. Chaque plateforme nécessite une intégration complète et des tests approfondis afin de
garantir le bon déroulement du processus de paiement. Notre plateforme offre cette fonctionnalité
essentielle.
FS-SFAX Page 6
CHAPITRE 1. ETUDE DU PROJET
Lors de la conception d’un système informatique, il est essentiel de comprendre les différents
acteurs impliqués dans le processus, leurs besoins fonctionnels et non fonctionnels. Cette section
est consacré à ses éléments.
Chaque système informatique met des fonctionalités et des informations pertinentes à la disposition
de ses acteurs qui leur permettent d’interagir avec. Ces acteurs peuvent être classés comme
l’indique la table 1.1 :
Acteur secondaire
Acteurs principaux
FS-SFAX Page 7
CHAPITRE 1. ETUDE DU PROJET
La phase de spécification des besoins fonctionnels est indispensible pour que les résultats de
la réalisation de notre plateforme soient conformes aux attentes du « Product owner » selon
l’approche agile SCRUM utilisée dans notre stage (voir 2.3.4).
Ainsi, les différentes fonctionnalités que nous envisageons de mettre en place dans le cadre de ce
projet, peuvent être regroupées dans les points suivants selon la table 1.2 :
FS-SFAX Page 8
CHAPITRE 1. ETUDE DU PROJET
Acteur Fonctionnalités
FS-SFAX Page 9
CHAPITRE 1. ETUDE DU PROJET
Les besoins non fonctionnels permettent l’amélioration de la qualité logicielle de notre plateforme.
Ils agissent comme des contraintes à prendre en considération pour mettre en place une solution
adéquate à ce qui est attendu et garantir la livraison d’une solution logicielle de haute qualité.
Notre stage doit nécessairement répondre aux besoins suivants :
Convivialité :
La plateforme doit être facile à utiliser. Il devra offrir des interfaces conviviales, simples et
ergonomiques afin de fournir une expérience transparente qui permette à nos utilisateurs de
naviguer sans effort tout en atteignant leurs objectifs.
Performance :
Etant donné les données volumineuses a stocker, la plateforme doit réagir rapidement pour
maintenir l’intérêt et l’engagement de l’acteur client.
Sécurité :
Nous devons sécuriser notre plateforme. D’où le besoin de procéder à l’authentification des
différents utilisateurs. Il faut aussi assurer la confidentialité des données, et ce en appliquant des
cryptages au niveau de la base de données.
L’extensibilité :
C’est de pouvoir ajouter des nouvelles fonctionnalités ou de mettre à jour celles existantes.
1.5 Conclusion
Nous avons abordé successivement les points suivants : entreprise d’accueil, contexte et cahier des
charges de notre stage. Dans le chapitre suivant, nous allons étudier les méthodes de développemnt
et outils logiciels utilisés dans ce travail.
FS-SFAX Page 10
Chapitre
2
Méthode et outils utilisés
Sommaire
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Méthode classique de développement . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Méthode agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.2 Manifeste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.4 Méthode retenue SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Outils logiciels utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Langage de programmation : Golang . . . . . . . . . . . . . . . . . . . 16
2.4.2 GORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.3 Framework GIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.4 Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Architecture logicielle du projet . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
FS-SFAX Page 11
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.1 Introduction
Dans ce chapitre, nous allons présenter la méthode agile SCRUM retenue pour ce stage. De plus,
nous allons décrire et illustrer les outils logiciels utilisés dans ce travail à savoir le langage de
programmation Golang, la bibliothéque GORM et le framework Gin.
2.2.1 Présentation
FS-SFAX Page 12
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.2.2 Evaluation
2.3.1 Présentation
La méthode agile est une approche du développement logiciel dont l’objectif est de fournir en
continu des logiciels opérationnels crées sur la base d’itérations rapides. Ainsi, le code est le coeur
de la méthode agile [3].
L’ultime itération de l’approche agile fournit le logiciel demandé en accord avec le client. Une
itération agile est schématisée par la figure 2.2 .
FS-SFAX Page 13
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.3.2 Manifeste
En 2001, un group d’experts mondiaux en génie logiciel a conçu et rédigé le manifeste agile
qui insiste sur la nécessité de mettre de la qualité dans les produits réalisés afin de limiter aux
maximum les risques de bugs et pour assurer une continuité des futurs développements. La
simplicité c’est-à-dire l’art de minimiser la quantité de travail inutile est essentielle. Le manifeste
agile s’appuie sur les principes fondateurs suivants [4] :
• Les individus et leurs interactions plus que les processus et les outils
• Des logiciels opérationnels plus qu’une documentation exhaustive
• La collaboration avec les clients plus que la négociation contractuelle
• L’adaptation au changement plus que le suivi d’un plan
FS-SFAX Page 14
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.3.3 Evaluation
Les méthodes de développement de logiciels agile sont axées sur la distribution rapide de petites
parties de logiciels opérationnels pour améliorer la satisfaction client. Elles se basent sur une
approche qui encourage l’adaptation et le travail d’équipe pour favoriser l’amélioration continue.
En général, le développement logiciel agile implique la réunion régulière et en personne de petites
équipes autonomes de développeurs logiciels et de représentants métier tout au long du cycle de
vie. La méthode agile privilégie une approche simplifiée plutôt que la documentation logicielle et
favorise les changements à toutes les étapes du cycle de vie, au lieu d’y faire obstacle.
Le framework Scrum est peut-être le plus utilisé aujourd’hui, mais tous les frameworks agiles ne
sont pas des structures Scrum, et inversement. Scrum permet de gérer des tâches conçues pour
de petites équipes pluridisciplinaires de 5 à 9 personnes qui découpent leur travail en actions
réalisables dans un délai cohérent appelé « sprint ». Les équipes Scrum sont composées de
membres, d’un Scrum Master et d’un Scrum Owner. En général, ce framework est mis en œuvre
lorsqu’un grand projet peut être réparti en sprints de 1 à 4 semaines. Un élément clé du framework
Scrum est la « rétrospective », c’est-à-dire une réunion qui permet à chacun de donner son point de
vue. Sa devise pourrait être « inspecter et adapter » [5]. La figure 2.3 décrit le processus SCRUM.
FS-SFAX Page 15
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
Les participants à notre stage effectué dans l’entreprise Tunisian Cloud sont décrits dans la table
2.1 .
Golang dit encore Go est développé par Google en 2009 [6]. Il s’agit d’un langage de
programmation impératif fortement inspiré a la fois de deux langages populaires C et Pascal. Ansi,
Go est un langage typé et compilé. Il offre des possibilités vis-a-vis de la programmation synchrone
(ou séquentielle), asynchrone (ou concurrente) et orientée objet. La figure 2.4 présente le logo du
Golang.
FS-SFAX Page 16
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
Go permet d’écrire des programmes séquentiels en réutilisant au mieux les constructeurs de types,
les variables simples et structurés, les structures de contrôle, la définition des sous-programmes
et l’appel synchrone des sous-programmes. Le listing 2.5 fournit un exemple d’un programme
séquentiel Go issue de notre stage permettant d’écrire la processus de réalisation d’un email au
sein de notre platforme. Il s’agit d’un appel synchrone de la fonction RunServer venant de notre
module server.
FS-SFAX Page 17
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
FS-SFAX Page 18
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
FS-SFAX Page 19
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.4.2 GORM
L’ORM est une technique de programmation permettant de faire la correspondance entre un code
et une base de données relationnelle. La bibliothéque GORM offre des fonctionnalités permettant
la manipilation des bases de données relationnelle a partir d’un code écrit en Go [7]. Le listing 2.9
fournit une utilisation de la bibliothéque GORM issue de notre stage. Sachant que le pilote de la
base de données est PostgresSQL.
2.4.3.1 Présentation
Le framework Gin est l’un des packages Web populaires de l’écosystème Go pour la création
d’applications Web. Gin fournit la plupart des fonctionnalités dont vous aurez besoin dans un
framework Web doté d’une API de type martini avec des performances élevées et une gestion facile
des erreurs [8]. L’architecture Gin suit généralement une approche MVC (Modèle-Vue-Contrôleur)
ou une approche similaire pour organiser le code de l’application. Les principales caractéristiques
de Gin sont :
• Rapide
• Prise en charge du middleware
• Sans crash
FS-SFAX Page 20
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
• Validation JSON
• Gestion des erreurs
• Extensible
• Router : Le router est une composante centrale de Gin qui gère le routage des requêtes
HTTP vers les fonctions de gestion associées. Il permet de définir des routes pour différentes
méthodes HTTP (GET, POST, PUT, DELETE, etc.) et de spécifier les fonctions de gestion
correspondantes.
• Handlers : Les handlers sont des fonctions qui sont exécutées lorsque le router fait
correspondre une requête à une route spécifique. Les handlers prennent en charge le
traitement des requêtes, l’accès aux données, la logique métier et la génération des réponses.
Dans Gin, les handlers sont généralement des fonctions qui prennent en charge un contexte
Gin spécifique en tant que paramètre.
• Middleware : Les middlewares sont des composants intermédiaires qui s’exécutent entre
la réception d’une requête et l’exécution des contrôleurs. Ils peuvent être utilisés pour
effectuer des opérations telles que l’authentification, l’autorisation, la gestion des erreurs,
la journalisation, la mise en cache, etc. Les middlewares dans Gin sont des fonctions qui
peuvent être ajoutées aux routes pour effectuer des opérations avant et après le traitement
des requêtes.
• Binding and Validation : Gin propose des fonctionnalités de liaison (binding) et de
validation des données de requête entrantes. Cela facilite la récupération des données de
requête dans des structures Go définies et la validation de ces données selon des règles
prédéfinies. Cela aide à garantir que les données reçues sont correctes et conformes aux
attentes.
• Groupes de routes (Route Groups) : Les groupes de routes permettent de regrouper des
routes liées ensembles, facilitant ainsi l’organisation et la gestion de routes similaires. Cela
permet d’appliquer des middlewares spécifiques à un groupe de routes, de partager des
paramètres communs, ou de définir des préfixes de chemin pour les routes.
FS-SFAX Page 21
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.4.4 Angular
Angular est un framework de développement d’applications web open source, basé sur TypeScript,
développé et maintenu par Google. Il est largement utilisé pour la création d’interfaces utilisateur
riches, dynamiques et réactives.
Angular suit le modèle de conception du développement d’applications basées sur des composants
(component-based development). Il permet de créer des applications modulaires, où chaque
composant représente une partie spécifique de l’interface utilisateur et de la logique métier. Les
composants peuvent être imbriqués et réutilisés pour construire des fonctionnalités complexes.
L’une des caractéristiques clés d’Angular est sa capacité à fournir une liaison de données
bidirectionnelle entre les composants et les modèles de données. Cela signifie que les modifications
apportées à l’interface utilisateur sont automatiquement reflétées dans les données et vice versa,
sans nécessiter de code supplémentaire [9].
Postman est une plateforme pour la création, l’utilisation et de tester les API. Postman simplifie
chaque étape du cycle de vie des API et rationalise la collaboration afin que vous puissiez créer de
meilleures API plus rapidement [11].
FS-SFAX Page 22
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
Ngrok est un outil de tunneling qui permet de créer des tunnels sécurisés entre un serveur local et
Internet. Il facilite l’exposition de serveurs et d’applications Web locaux derrière des pare-feu, des
réseaux privés ou des adresses IP dynamiques [12].
GitLab est une plateforme de développement logiciel open source de bout en bout avec contrôle
de version intégré, suivi des problèmes, révision du code, CI/CD, etc. Auto-hébergez GitLab sur
vos propres serveurs, dans un conteneur ou sur un fournisseur de cloud [13].
diagrams.net (draw.io) est un logiciel de dessin graphique multiplateforme gratuit et open source
développé en HTML5 et JavaScript. Son interface peut être utilisée pour créer des diagrammes tels
que des organigrammes, des structures filaires, des diagrammes UML, des organigrammes et des
diagrammes de réseau [14].
Trello est l’outil visuel de gestion du travail qui permet aux équipes d’imaginer, de planifier, de
gérer et de célébrer leur travail ensemble de manière collaborative, productive et organisée [15].
FS-SFAX Page 23
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
Twilio est la principale plateforme de communication cloud au monde qui vous permet d’impliquer
des clients sur tous les canaux : SMS, voix, vidéo, e-mail, WhatsApp, etc. Les API à prépaiement
permettent aux entreprises d’adapter leurs communications de manière fiable [16] .
Paymee est un nouveau concept de portefeuilles électronique qui a pour ambition de révolutionner
les habitudes des consommateurs tunisiens. Le but serait ainsi de pouvoir payer un marchand,
recevoir les paiements de vos clients, envoyer de l’argent à vos proches, ou encore payer vos
achats sur Internet [17].
L’une des étapes importantes dans le processus de la mise en oeuvre d’une application est le choix
adéquat d’un motif de conception puisqu’il facilite la communication, fait gagner en terme de
rapidité et diminiue d’une manière éminente les coûts.
Dans ce projet, nous avons opté pour le patron de conception MVC. Son principal intérêt est
la séparation des responsabilités en divisant l’interface graphique d’un programme en trois entités
distinctes ayant chacune un rôle précis lors du traitement de l’information, ce qui rend l’application
plus maintenable et plus évolutive.
Les rôles des trois entités sont les suivants :
• Le modèle : Contient les données manipulées par le programme. Il assure la gestion de ces
données et garantit leur intégrité ;
• La vue : Fait l’interface avec l’utilisateur. Son premier rôle est d’afficher les données
qu’elle a récupéré auprès du modèle et son second rôle est de recevoir toutes les actions
de l’utilisateur. Ses différents évènements sont envoyés au contrôleur ;
• Le contrôleur : Chargé de la synchronisation du modèle et de la vue. Il reçoit tous les
évènements de l’utilisateur et déclenche les actions à éffectuer.
FS-SFAX Page 24
CHAPITRE 2. MÉTHODE ET OUTILS UTILISÉS
2.7 Conclusion
Dans ce chapitre nous avons présenté la méthode agile SCRUM utilisée dans ce travail. Egalement,
nous avons décrit et illustré les outils employés pour implémenter notre platforme TuniShop. De
tels outils englobent essentiellement le langage de programmation Go, la bibliothéque GORM et
le framework Gin. Dans le chapitre suivant, nous allons appliquer la méthode agile SCRUM sur
notre cahier des charges décrit dans 1.4 .
FS-SFAX Page 25
Chapitre
3
Développement d’une boutique numérique
Sommaire
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Fonctionnalités : Backlog product . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 Planification des releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Release 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.1 Sprint : Gestion d’authentification . . . . . . . . . . . . . . . . . . . . . 30
3.4.2 Sprint : Gestion des employés . . . . . . . . . . . . . . . . . . . . . . . 35
3.5 Release 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1 Sprint : Gestion des boutiques . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2 Sprint : Gestion des cartes . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.6 Release 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6.1 Sprint : Gestion des messages . . . . . . . . . . . . . . . . . . . . . . . 45
3.6.2 Sprint : Intégration paiement . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
FS-SFAX Page 26
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.1 Introduction
Dans ce chapitre, nous allons appliquer la méthode agile SCRUM sur le cahier des charges de
notre stage (voir le chapitre 1, la section 4 ). Dans un premier temps, nous allons établir les user
stories formant le Backlog Product. Dans un deuxiéme temps, nous allons découper le Backlog
Product en plusieurs releases. Sachant que chaque release comporte plusieurs sprints, et chaque
sprint comporte un ensemble de user stories. Enfin, nous allons décrire en détails quelques sprints
Le backlog product est l’artefact le plus important de méthode agile SCRUM, il consiste à présenter
la liste des fonctionalités ou encore les « User-Stories » constituant le produit souhaité. Chaque
fonctionnalité est caractérisée par :
• Le champ ID détermine un identifiant unique pour chaque user-story.
• Le champ User-story décrit la fonctionnalité désirée par l’utilisateur.
• Le champ Priorité renseigne sur l’importance attribuée au user-story. On distingue :
• élevé : user-story de priorité élevée.
• moyenne : user-story de priorité moyenne
• faible : user-story de priorité faible.
La table 3.1 regroupe 22 user-stories formant notre futur logiciel TuniShop. Conformémant
aux recommendations de la méthode agile SCRUM, ces user-stories sont indépendantes et
élémentaires. Ces user-stories sont numérotées de 1 à 22.
FS-SFAX Page 27
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
ID User-story Priorité
FS-SFAX Page 28
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Pour des raisons d’économie d’espace, nous nous limitons à la présentation de deux sprints à
chaque release.
FS-SFAX Page 29
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.4 Release 1
Dans la suite, nous allons décrire les deux sprints formant ce Release 1.
Le but de ce premier sprint consiste à mettre en oeuvre le processus d’authentification qui à son
tour déclenche l’accomplissement de la fonctionnalité gestion des entreprises. Ce premier sprint
comporte 4 user stories venant du Backlog-Product (voir Table 3.1).
La table 3.2 décrit les user-stories formant le sprint "Gestion d’authentification". Elles sont au
nombre de quatre. Les tâches associés à une user storie sont Développement, Test et Ecriture d’un
diagramme de séquences.
FS-SFAX Page 30
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
FS-SFAX Page 31
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.4.1.2 Réalisation
Pour vérifier le format des données entrante nous avons utilisé le paquet regexp permettant de
fournir les possibilités nécessaires pour rechercher, valider et manipuler des données à l’aide des
expressions régulières.
Une fois que les données entrantes ont été vérifiées, le système procède à la génération d’un
hachage sécurisé du mot de passe en utilisant la bibliothèque bcrypt. L’algorithme bcrypt, réputé
pour ses caractéristiques de sécurité robustes, est spécifiquement conçu pour le hachage des mots
de passe. Son mécanisme de hachage unique repose sur une fonction de salage complexe (pour
éviter les collisions) offrant une protection efficace contre les tentatives d’attaque par force brute
et par dictionnaire.
Lors de l’enregistrement, le système génère un code unique valable 10 minutes et l’envoie à l’aide
du logiciel de confiance gomail. Ce paquet est dynamique pour créer et envoyer des courriels via
divers serveurs SMTP.
Le système attribue des rôles tels que administrateur, client et employé à l’utilisateur en
utilisant la bibliothèque de contrôle d’accès appelée Casbin. Cette bibliothèque facilite l’ajout
d’une politique de regroupement en assurant que seules les personnes autorisées ont accès aux
informations sensibles.
Une fois que l’utilisateur a terminé avec succès le processus d’authentification, le système génère
un jeton Web JSON (JWT) en utilisant le paquet golang-jwt qui sert de preuve de l’identité
vérifiée de l’utilisateur. Ces jetons JWT jouent un rôle crucial dans la sécurité des applications
web, car ils sont utilisés à la fois à des fins d’authentification et d’autorisation, garantissant que
seuls les utilisateurs authentifiés ont accès aux ressources appropriées.
FS-SFAX Page 32
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.4.1.3 Test
Pour tester le sprint Gestion d’authentification, nous avons établi deux cas de test : Test
d’inscription et Test d’authentification (voir colonne "Cas de test" Table 3.3). la colonne
"Démarche" indique la séquence d’actions permettant d’introduire les données de test. La colonne
"Comportoment attendu " indique les résultats attendus décrits d’une façon informelle.
FS-SFAX Page 33
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
La figure 3.3 donne le diagramme de séquence concernant le user story "Rénitialiser mot de passe"
FS-SFAX Page 34
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Le but de Ce sprint vise à mettre en place la fonctionnalité de la gestion des employéss avec leurs
différents privilèges. Ce deuxième sprint comporte 3 user-stories venant du Backlog-Product (voir
Table 3.1).
FS-SFAX Page 35
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Ce sprint regroupe les user-stories liées au concept métier utilisateur (voir Table 3.4)
3.4.2.2 Réalisation
La réalisation du sprint : Gestion des employés réutilise avec profit des fonctionnalités venant des
bibliothéque interfacées par Go.
Afin de garantir l’autorisation d’accès aux ressources par l’émetteur d’une requête, nous avons mis
en place une fonction middleware basée sur Casbin dans un serveur Gin en utilisant Go (Golang).
Cette fonction middleware assure la gestion de l’autorisation en se basant sur les règles de contrôle
d’accès définies par Casbin. Afin d’assurer la conformité des données entrantes, nous avons mis
en œuvre des mécanismes de validation à l’aide de la bibliothèque de regex. Pour renforcer la
sécurité des mots de passe, nous avons adopté le package bcrypt pour leur chiffrement. De plus,
pour l’acheminement des coordonnées, nous avons utilisé le package gomail. En ce qui concerne
l’affectation des rôles, nous avons implémenté la bibliothèque Casbin.
FS-SFAX Page 36
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.4.2.3 Test
Pour tester le sprint : Gestion des employés, nous avons établi trois cas de test représentatifs (voir
Table 3.5)
La figure 3.4 fournit le diagramme de séquences concernant le sprint "Gestion des employés"
FS-SFAX Page 37
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
FS-SFAX Page 38
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.5 Release 2
Il est essentiel de mettre en place un processus de gestion de boutique, et notre sprint actuel se
focalise spécifiquement sur la mise en œuvre de ce processus. Cette mise en œuvre comprend
diverses tâches telles que la gestion des catégories, des sous-catégories et des attributs, ainsi que la
rationalisation de la gestion des produits, des coupons et des cartes.
Ce sprint regroupe les user-stories liées au concept métier boutique (voir Table 3.6)
FS-SFAX Page 39
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
En tant qu’employé, je
1.1 Développer le cas "Créer boutique"
pourrais créer une boutique
1.2 Tester le cas "Créer boutique"
1
1.3 Réaliser le diagramme de séquences de la
fonctionnalité "Gestion des boutiques"
En tant qu’employé, je
pourrais modifier une 2.1 Développer le cas "Modifier boutique"
boutique
2 2.2 Tester le cas "Modifier boutique"
2.3 Réaliser le diagramme de séquences de la
fonctionnalité "Gestion des boutiques"
En tant qu’employé, je
pourrais supprimer 3.1 Développer le cas "Supprimer boutique"
une boutique
3 3.2 Tester le cas "Supprimer boutique"
3.3 Réaliser le diagramme de séquences de la
fonctionnalité "Gestion des boutiques"
3.5.1.2 Réalisation
Pour la création ou modification de la boutique, il est nécessaire de saisir les données requises,
lesquelles seront ensuite validées à l’aide de l’utilisation de la bibliothèque de correspondance de
motifs réguliers regex.
Lors de la création de la boutique, les informations, telles que l’ID du créateur, sont extraites
à l’aide de la fonction ExtractTokenValues du middleware, qui permet de récupérer l’ID de
l’émetteur de la requête.
FS-SFAX Page 40
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.5.1.3 Test
Pour tester ce sprint : Gestion des boutiques, nous avons établi trois cas de test représentatifs (voir
Table 3.5)
La figure 3.5 fournit le diagramme de séquences concernant le sprint "Gestion des boutiques"
FS-SFAX Page 41
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
FS-SFAX Page 42
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Dans ce sprint, notre objectif est de mettre l’accent sur la détection des produits ajoutés par le
client dans son panier. Cette initiative vise à garantir la précision des commandes et à optimiser le
processus de paiement, contribuant ainsi à accroître la satisfaction de nos clients.
Ce sprint regroupe les user-stories liées au concept métier carts (voir Table 3.8)
En tant que client, je suis en 2.1 Développer le cas "Gestion des carts"
mesure d’ajuster la quantité
2 des produits ajoutés.
2.2 Tester le cas "Gestion des carts"
2.3 Réaliser le diagramme de séquences de la
fonctionnalité "Gestion des carts"
FS-SFAX Page 43
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.5.2.2 Réalisation
Nous avons utilisé les bibliothéques dvcrit précédement à savoir gestion des boutiques
3.5.2.3 Test
Pour tester ce sprint : Gestion des carts, nous avons établi deux cas de test représentatifs (voir Table
3.9)
La figure 3.6 fournit le diagramme de séquences concernant le sprint "Gestion des carts"
FS-SFAX Page 44
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.6 Release 3
Nous avons décrire les deux sprints : Gestion des messages et Intégration paiement
Durant ce sprint dédié à notre plateforme de commerce électronique, notre objectif est d’améliorer
l’expérience client en mettant en place une fonctionnalité de messagerie personnalisée basée sur
les étiquettes de statut des clients. Cette initiative vise à tenir nos clients informés et engagés,
renforçant ainsi leur propension à effectuer des achats récurrents et à développer leur fidélité envers
notre plateforme.
FS-SFAX Page 45
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Ce sprint regroupe les user-stories liées au concept métier messages (voir Table 3.10)
FS-SFAX Page 46
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.6.1.2 Réalisation
Afin d’assurer l’acheminement efficace des messages par courrier électronique, nous avons fait
appel à des bibliothèques spécialisées telles que gomail.
Pour faciliter l’envoi de messages SMS, la réalisation d’appels vocaux et la gestion des numéros
de téléphone, nous avons intégré la bibliothèque twillio-go dans notre système. Cette bibliothèque
nous permet d’interagir avec l’API de Twilio, offrant ainsi une solution professionnelle pour
l’envoi de messages par SMS.
3.6.1.3 Test
Pour tester ce sprint : Gestion des messages, nous avons établi deux cas de test représentatifs (voir
Table 3.11)
La figure 3.7 fournit le diagramme de séquences lié au sprint "Gestion des messages".
FS-SFAX Page 47
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Ce sprint représente l’élément central de notre plateforme, avec une focalisation particulière sur
l’intégration de Paymee dans notre code afin de réaliser la dernière étape attendue par le client, à
savoir le processus de paiement.
Ce sprint regroupe les user-stories liées au concept métier paiement (voir Table 3.12)
FS-SFAX Page 48
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.6.2.2 Réalisation
Dans le processus de paiement, nous avons mis en œuvre une méthode d’intégration avec
redirection de Paymee. Cela signifie que lorsqu’un client souhaite effectuer un paiement, il est
redirigé vers une page de paiement hébergée par un fournisseur de services de paiement ou une
passerelle de paiement tiers.
La première étape de ce processus consiste à initialiser le paiement en collectant les informations
essentielles du client, telles que son nom, son prénom, son adresse email et son numéro de
téléphone. De plus, les détails de la commande, tels que l’identifiant, le montant du paiement
et toute remarque spécifique au paiement, sont également requis pour cette étape.
Pour réaliser cette étape d’initialisation, nous avons utilisé un environnement Sandbox afin de
simuler des transactions et de tester l’intégration de la plateforme de paiement, sans effectuer de
transactions réelles. Pendant les tests d’initialisation, nous avons utilisé la méthode POST pour
envoyer les informations à l’URL Sandbox suivante :
https ://sandbox.paymee.tn/api/v2/payments/create, afin que les informations puissent être
vérifiées dans le système Paymee. La figure 3.8 ci-dessous illustre le processus d’initialisation
de Paymee.
FS-SFAX Page 49
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Une fois cette étape accomplie avec succès, le système redirigera le client vers une page de
paiement hébergée où il pourra saisir toutes les informations requises de sa carte de paiement.
Après l’initialisation du paiement, la réalisation interne du test est déclenchée, ce qui renvoie
un paiement sous forme d’URL représentant la page de paiement hébergée, ainsi qu’un jeton
permettant de vérifier l’utilisateur. La figure 3.9 présente la réponse correspondant à l’initialisation
de Paymee.
FS-SFAX Page 50
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
Afin de tester en toute sécurité l’ensemble de ce processus, nous avons utilisé Ngrok comme un
outil permettant d’établir un tunnel sécurisé vers un serveur local à des fins de développement et
de test. Cela nous a permis de garantir la confidentialité et la sécurité des échanges de données lors
de nos tests. La dernière étape consiste en la vérification du paiement, à ce stade, Paymee procède
à toutes les vérifications nécessaires pour s’assurer que tout est en ordre. Si toutes les vérifications
sont concluantes, le paiement est effectué avec succès. Dans le cas contraire, des mesures
appropriées sont prises. Le processus interne de cette étape s’articule de la manière suivante :
Paymee offre la possibilité d’envoyer le statut de paiement à l’URL du webhook (Ngrok).
Ensuite, l’URL de retour (return_url) vérifie le statut de paiement et traite la commande en
conséquence. Pour garantir l’intégrité de la réponse, une somme de contrôle (check_sum) est
générée en utilisant la formule suivante : md5(token + payment_status(1 ou 0) + API Token).
Ainsi, les données sont envoyées à l’URL du webhook à la fois en cas de réussite et en cas
d’échec du paiement. Les deux figures 3.10 et 3.11 ci-dessus illustrent la réponse générée par le
système de Paymee pour la vérification des paiements.
FS-SFAX Page 51
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.6.2.3 Test
Pour tester ce sprint : Intégration paiement, nous avons établi trois cas de test représentatifs (voir
Table 3.13)
FS-SFAX Page 52
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
FS-SFAX Page 53
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
FS-SFAX Page 54
CHAPITRE 3. DÉVELOPPEMENT D’UNE BOUTIQUE NUMÉRIQUE
3.7 Conclusion
Dans ce chapitre, nous avons appliqué soigneusement la méthode agile SCRUM sur notre cahier
des charges décrit dans le chapitre 1. Ainsi, nous avons identifié les 22 user-stories du document
Backlog Product de notre projet. Ensuite, nous avons découpé le Backlog Product en trois releases.
Release 1 comporte 3 sprints, Release 2 englobe 8 sprints et Release 3 contient 5 sprints. Chaque
sprint est un sous-ensemble de l’ensemble de référence Backlog Product. Nous avons vérifié que
l’union mathématique de 16 sprints sont egale à l’ensemble de référence Bcklog Product. De
même, nous avons vérifié que l’intersection mathématique de tous les sprints sont l’ensemble
vide. Enfin, nous avons détaillé uniquement deux sprints concernant chaque release . Dans le
chapitre suivant, nous allons extraire les aspects statiques de notre logiciel TuniShop écrit en Go
en appliquant un processus de rétro-ingéniérie. En outre, nous allons documenter les sprints en
utilisant la technologie Swagger. Enfin, nous allons décrire les interfaces conviviales fournies par
notre logiciel.
FS-SFAX Page 55
Chapitre
4
Documentation
Sommaire
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Extraction d’un diagramme de classes . . . . . . . . . . . . . . . . . . . . . . 57
4.3 Documentation Swagger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4 Interfaces Homme-Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
FS-SFAX Page 56
CHAPITRE 4. DOCUMENTATION
4.1 Introduction
Le logiciel TuniShop est produit selon la méthode agile Scrum. Les sprints sont réalisés, modifés,
testés et enrichis au fur et à mesure en fonction des besoins de l’utilisation. Pour des raisons liées
à la maintenance logicielle englobant notamment l’évolutivité, nous allons dans la suite proposer
des régles permettant l’extraction des aspects statiques sous forme d’un diagramme de classes de
notre logiciel TuniShop. Ce travail s’inscrit dans le cadre de la rétro-ingénierie[18] appliquée au
code souce Go.
L’extraction d’un diagramme de classe UML à partir d’un code source Go comporte deux étapes :
Etape 1 : Génération des classes UML
Regrouper les structures (type struct) et ses fonctions comme des classes UML. Les champs de
type simple venant d’une structure donnée sont assimilés à des attributs UML. Et les fonctions
ayant un paramàtre à base de la dite struct sont assimilàs à des méthodes UML (voir Figure 4.1)
FS-SFAX Page 57
CHAPITRE 4. DOCUMENTATION
F IGURE 4.1: Exemple d’extraction d’une classe métier à partir d’une structure
FS-SFAX Page 58
CHAPITRE 4. DOCUMENTATION
FS-SFAX Page 59
CHAPITRE 4. DOCUMENTATION
En appliquant manuellement les deux Etapes 1 et 2 décrites précédement sur le code source de
notre projet, nous avons obtenu le diagramme de classe fourni par la figure 4.4 .
FS-SFAX Page 60
CHAPITRE 4. DOCUMENTATION
Swagger est la technologie la plus appréciée pour la documentation API. Plus précisément, pour
documenter les API REST, très souvent utilisées. Swagger a été développé par Reverb, mais il
s’agit désormais d’une solution indépendante et open source, sous la gouvernance de la fondation
Linux, et plus précisément de l’OpenAPI Initiative. Avec ce changement d’acteurs, Swagger a
été rebaptisé « spécification OpenAPI », même s’il reste officieusement connu sous le nom plus
accrocheur de « Swagger ».[19] La figure 4.5 présente le logo du Swagger.
Nous avons utilisé avec profit la technologie Swagger afin d’extraire les interfaces des fonctions
Go (Voir figure 4.6 et 4.7)
FS-SFAX Page 61
CHAPITRE 4. DOCUMENTATION
FS-SFAX Page 62
CHAPITRE 4. DOCUMENTATION
Les interfaces Homme-Machine proposées par notre logiciel TuniShop sont produites en réutilisant
la technologie Angular(voir 2.4.4).
Les figures 4.7, 4.8, 4.9 et 4.10 représentent les interfaces de s’inscrire dans notre application
FS-SFAX Page 63
CHAPITRE 4. DOCUMENTATION
FS-SFAX Page 64
CHAPITRE 4. DOCUMENTATION
Les figures 4.11, 4.12 et 4.13 représentent les interface d’oubli de mot de passe
FS-SFAX Page 65
CHAPITRE 4. DOCUMENTATION
Les figures 4.14, 4.15, 4.16 et 4.17 représentent les interfaces de certaines fonctionnalités de notre
application
FS-SFAX Page 66
CHAPITRE 4. DOCUMENTATION
FS-SFAX Page 67
CHAPITRE 4. DOCUMENTATION
Les figures 4.18, 4.19 et 4.20 représentent les interfaces de notre boutique
FS-SFAX Page 68
CHAPITRE 4. DOCUMENTATION
FS-SFAX Page 69
CHAPITRE 4. DOCUMENTATION
4.5 Conclusion
Dans ce chapitre, nous avons fourni de la documentation liée a notre logiciel de gestion d’une
boutique numérique TuniShop. Cette documentation comporte un diagramme de classe extrait
manuellement à partir de code source du logiciel, des API liées aux sprints et des interfaces
Homme-Machine.
FS-SFAX Page 70
CONCLUSION GÉNÉRALE
FS-SFAX Page 71
BIBLIOGRAPHIE
[2] Méthode Classique. Introduction de la méthode classique [en ligne]. Disponible sur :
https ://www.appvizer.fr/magazine/operations/gestion-de-projet/methode-classique-gestion-de-projet
[3] Méthode Agile. Définition de la méthode agile [en ligne]. Disponible sur :
https ://www.redhat.com/fr/devops/what-is-agile-methodology : :text=La
FS-SFAX Page 72
BIBLIOGRAPHIE
FS-SFAX Page 73