Académique Documents
Professionnel Documents
Culture Documents
Encadrant académique :
Ikbel Sayahi
Réalisé par :
Encadrant professionnel :
Faten Hmila
Houssem Abbes
Mohamed Hachem Bouajila
30 juillet 2021
Résumé
Le présent rapport a été élaboré dans le cadre de projet de fin d’études pour l’obtention du diplôme d’ingénieur
en informatique. Le travail est réalisé pendant la période de Février 2021 à Juin 2021.
Ce projet intitulé « Conception et développement d’une application mobile pour les échanges de biens et de
services » et a été réalisé au sein de la société Anypli.
Le projet se décompose en trois parties :
— Back-end : développé en utilisant le framework Laravel dans sa version la plus récente, et MySQL comme
système de gestion de la base de données.
— Dashboard web de gestion pour l’administrateur : développé en utilisant la bibliothèque ReactJs.
— Application mobile iOS : développé en utilisant le langage de programmation Swift dans la version 5.
Au cours de cette période, nous avons essayé d’être fidèle aux exigences mentionnées dans le document de spécifi-
cation.
Mots Clés : Application, Mobile, Dashboard, Php, Laravel, SQL, React, Ios, Swift.
Dédicaces
C’est avec profonde gratitude et sincère mots que je dédie ce modeste travail de fin d’études à mes chers
parents Hamila Khalil et Khamaja Moufida qui ont consacré leurs vies pour assurer ma réussite et m’ont
éclairé le chemin par leurs conseils judicieux. Puisse Dieu, le très haut, vous accorder santé, bonheur et longue
vie et faire en sorte que jamais je ne vous déçoive.
A ma sœur Fatma hamila en témoignage de l’attachement et de l’affection que nous nous portons l’une pour
l’autre, pour son incontournable amour envers moi, sa confiance et son entente.
A mon frère Mohamed son épouse et leurs enfants que Dieu, le tout puissant, vous protège et vous garde.
Je tiens à remercier mes chers amis Ben Ameur Ranim, Bayoudh Marwen pour leurs soutien incessants. A
tous mes collègues pour l’aide mutuelle échangé pendant cette année scolaire.
A tous ceux qui me sont chers...
HAMILA Faten
1
Remerciements
Au terme de mon projet de fin d’études, je tiens à adresser mes plus vifs remerciements à toutes les personnes
qui, de près ou de loin, ont contribué à la réalisation de ce travail dans les meilleures conditions.
Je tiens à exprimer mes remerciements les plus vifs en premier lieu à ceux qui me font l’honneur de participer
et de siéger dans ce jury et être les rapporteurs de ce travail.
J’adresse, tout d’abord, mes sincères remerciements à mon encadrante, à l’école supérieure privée d’ingénieurs
de Monastir (ESPRIMS’), madame Ikbel Sayahi que j’adresse tout mes profonds respects et ma reconnaissance
pour le temps consacré à la lecture et aux réunions qui ont rythmées les étapes de mon projet de fin d’étude. Je
la remercie aussi pour sa disponibilité à encadrer ce travail à travers ses propositions d’amélioration, patience,
ses conseils permanents, ses longues discussions et ses critiques.
Je tiens à remercier sincèrement mes deux encadrants dans la société Anypli Mr. Houssem Abbes et Mr.
Mohamed Hachem Bouajila, pour l’efficacité de leur encadrement, leur soutien immense et la pertinence de
leurs conseils, fruits d’une grande expérience dans le domaine.
Mes remerciements s’adresse aussi à tous les enseignants de l’école supérieure privée d’ingénieurs de Monastir
pour la qualité de formation qu’ils fournissent.
Je remercie enfin tous ceux qui, d’une manière ou d’une autre, ont contribué à la réussite de ce travail.
2
Table des matières
1 Présentation du projet 2
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1 Présentation de la société . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.2 Activités de la société . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Étude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.1 Netbedloo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.2 Swouitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.3 TrocWoah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.4 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Méthodologie de gestion du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7.1 Choix de la méthodologie : Méthodologie agile . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.2 La méthodologie SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7.2.1 Les rôles dans SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.2.2 Les réunions dans SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.2.3 Les artefacts de communication dans SCRUM . . . . . . . . . . . . . . . . . . . 12
1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 «Étude technique» 21
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Environnement de développement et choix techniques . . . . . . . . . . . . . . . . . . . . . . . . 22
3
3.2.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2.1 Outils de conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2.2 Outil de prototypage et design . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2.3 Outils de test des APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.2.4 Outil de gestion de base de données . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.2.5 Outil de rédaction de rapport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.2.6 Outils de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.3 Environnement de développement intégré (IDE) . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.3.1 PhpStorm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.3.2 WebStorm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.3.3 Xcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.4 Choix techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.4.1 Langage de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.4.2 Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.4.3 Bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Architecture de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.1 Architecture physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.2 Architecture logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 Diagramme de déploiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5 Patrons de conception : MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4
4.2.3.3 Interfaces de récupération du mot de passe . . . . . . . . . . . . . . . . . . . . . 50
4.2.3.4 Interface de modifiation du profil . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3 Sprint 2 : Gestion des ressources de l’application et des utilisateurs . . . . . . . . . . . . . . . . . 53
4.3.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1.1 Backlog du Sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1.2 Diagramme de cas d’utilisation détaillé du sprint 2 . . . . . . . . . . . . . . . . . 54
4.3.1.3 Diagramme de cas d’utilisation détaillé de la gestion des utilisateurs . . . . . . . 56
4.3.1.4 Diagramme de cas d’utilisation détaillé de l’ajout d’une catégorie . . . . . . . . 56
4.3.1.5 Diagramme de cas d’utilisation détaillé de la modification d’une catégorie . . . 57
4.3.1.6 Diagramme de cas d’utilisation détaillé de la suppression d’une catégorie . . . . 58
4.3.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3.2.1 Diagramme de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3.2.2 Diagramme de séquence pour le scénario ajouter catégorie . . . . . . . . . . . . 58
4.3.2.3 Diagramme d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.2.4 Diagramme d’activité ajouter catégorie . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.2.5 Diagramme d’activité modifier catégorie . . . . . . . . . . . . . . . . . . . . . . . 59
4.3.2.6 Diagramme d’activité supprimer catégorie . . . . . . . . . . . . . . . . . . . . . . 61
4.3.2.7 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.3.3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3.3.1 Interfaces de gestion des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3.3.2 Interfaces de gestion des catégories . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5 Realease 2 : Gestion des annonces , des avis, des messages et des notifications 65
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Sprint 1 : Gérer les annonces et les avis et système de matching . . . . . . . . . . . . . . . . . . . 66
5.2.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.1.1 Backlog du Sprint 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.1.2 Diagramme de cas d’utilisation détaillé du sprint 3 . . . . . . . . . . . . . . . . . 67
5.2.1.3 Diagramme de cas d’utilisation ajouter une annonce . . . . . . . . . . . . . . . 68
5.2.1.4 Diagramme de cas d’utilisation modifier une annonce . . . . . . . . . . . . . . . 68
5.2.1.5 Diagramme de cas d’utilisation ajouter un avis . . . . . . . . . . . . . . . . . . 69
5.2.1.6 Diagramme de cas d’utilisation éffectuer une recherche . . . . . . . . . . . . . . 70
5.2.1.7 Diagramme de cas d’utilisation vérifier une annonce . . . . . . . . . . . . . . . . 71
5.2.1.8 Diagramme de cas d’utilisation supprimer un avis . . . . . . . . . . . . . . . . . 72
5.2.1.9 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2.1.10 Diagramme de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2.1.11 Diagramme de séquence pour le scénario ajouter une annonce . . . . . . . . . . 72
5.2.1.12 Diagramme de séquence pour le scénario rechercher . . . . . . . . . . . . . . . . 73
5.2.1.13 Diagramme de séquence pour le scénario ajouter un avis . . . . . . . . . . . . . 74
5.2.1.14 Diagramme de séquence pour le scénario notifier l’administrateur . . . . . . . . 75
5.2.1.15 Diagramme d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.1.16 Diagramme d’activité ajouter une annonce . . . . . . . . . . . . . . . . . . . . . 76
5.2.1.17 Diagramme d’activité modifier une annonce . . . . . . . . . . . . . . . . . . . . 77
5.2.1.18 Diagramme d’activité ajouter un avis . . . . . . . . . . . . . . . . . . . . . . . . 78
5.2.1.19 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5
5.2.2 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.2.1 Interface d’ajout d’une annonce . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.2.2 Interface de modification d’une annonce . . . . . . . . . . . . . . . . . . . . . . . 80
5.2.2.3 Interface de recherche d’annonces . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.2.2.4 Interface de verification d’une annonce . . . . . . . . . . . . . . . . . . . . . . . 81
5.2.2.5 Interface de suppression d’un avis . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.3 Sprint 2 : Envoyer des messages, consulter les recommandations et gérer les statistiques . . . . . 82
5.3.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.3.1.1 Backlog du Sprint 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.3.1.2 Diagramme de cas d’utilisation détaillé du sprint 4 . . . . . . . . . . . . . . . . . 83
5.3.1.3 Diagramme de cas d’utilisation détaillé de l’envoie des messages . . . . . . . . . 84
5.3.1.4 Diagramme de cas d’utilisation détaillé de la consultation des recommandations 85
5.3.1.5 Diagramme de cas d’utilisation détaillé de la gestion des statistiques . . . . . . . 85
5.3.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.3.2.1 Diagramme de séquence pour le scénario gérer les statistiques . . . . . . . . . . . 86
5.3.2.2 Diagramme de séquence pour le scénario envoyer des messages . . . . . . . . . . 87
5.3.2.3 Diagramme d’activité envoyer un message . . . . . . . . . . . . . . . . . . . . . 88
5.3.2.4 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.3.1 Interface d’ajout d’envoie de messages . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.3.2 Interface de consultation des statistiques . . . . . . . . . . . . . . . . . . . . . . 90
5.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6
Table des figures
7
4.1 Diagramme de cas d’utilisation du sprint 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2 Diagramme de cas d’utilisation s’authentifier de l’administrateur . . . . . . . . . . . . . . . . . . 38
4.3 Diagramme de cas d’utilisation créer un compte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4 Diagramme de cas d’utilisation s’authentifier de l’utilisateur . . . . . . . . . . . . . . . . . . . . . 40
4.5 Diagramme de cas d’utilisation modifier le profile . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.6 Diagramme de séquence pour le scénario authentification . . . . . . . . . . . . . . . . . . . . . . 43
4.7 Diagramme de séquence pour le scénario récupérer le compte . . . . . . . . . . . . . . . . . . . . 44
4.8 Diagramme de séquence pour le scénario modifier le profile . . . . . . . . . . . . . . . . . . . . . 45
4.9 Diagramme d’activité s’authentifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.10 Diagramme d’activité créer un compte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.11 Diagramme d’activité modifier le profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.12 Diagramme de classe du sprint1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.13 Interface d’authentification de l’administrateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.14 Interface d’inscription de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.15 Interface de localisation de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.16 Interface de vérification de l’e-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.17 Interface de vérification de code de réinitialisation . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.18 Interface de réinitialisation du mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.19 Interface de profil de l’utilisateur : section annonces . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.20 Interface de profil de l’utilisateur : section avis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.21 Interface de modification de profil de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.22 Diagramme de cas d’utilisation du sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.23 Diagramme de cas d’utilisation gérer les utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.24 Diagramme de cas d’utilisation ajouter une catégorie . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.25 Diagramme de cas d’utilisation modifier une catégorie . . . . . . . . . . . . . . . . . . . . . . . . 57
4.26 Diagramme de cas d’utilisation gérer les catégories . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.27 Diagramme de séquence pour le scénario ajouter une catégorie . . . . . . . . . . . . . . . . . . . 59
4.28 Diagramme d’activité ajouter catégorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.29 Diagramme d’activité modifier catégorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.30 Diagramme d’activité supprimer catégorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.31 Diagramme de classe du sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.32 Interface des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.33 Interface des détails utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.34 Interface d’ ajout d’une catégorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.35 Interface de modification d’une catégorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.36 Interface de suppression d’une catégorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8
5.10 Diagramme de séquence pour le scénario ajouter un avis . . . . . . . . . . . . . . . . . . . . . . 75
5.11 Diagramme de séquence pour le scénario notifier l’administrateur . . . . . . . . . . . . . . . . . 76
5.12 Diagramme d’activité ajouter une annonce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.13 Diagramme d’activité modifier une annonce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.14 Diagramme d’activité ajouter un avis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.15 Diagramme de classe du sprint3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.16 Interface d’ajout d’une annonce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.17 interface de modification d’une annonce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.18 Interface de recherche d’annonces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.19 Interface de verification d’une annonce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.20 Interface de suppression d’un avis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.21 Diagramme de cas d’utilisation envoyer des messages, des notifications et des recommandations . 83
5.22 Diagramme de cas d’utilisation envoyer des messages . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.23 Diagramme de cas d’utilisation aconsulter les recommandations . . . . . . . . . . . . . . . . . . . 85
5.24 Diagramme de cas d’utilisation gérer les statistiques . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.25 Diagramme de séquence pour le scénario gérer les statistiques . . . . . . . . . . . . . . . . . . . 87
5.26 Diagramme de séquence pour le scénario envoyer des messages . . . . . . . . . . . . . . . . . . . 88
5.27 Diagramme d’activité envoyer un message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.28 Diagramme de classe du sprint 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.29 Interface d’envoie de messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.30 Interface de consultation des statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
9
Liste des tableaux
10
Introduction Générale
Le troc existe depuis que l’homme est apparu sur la Terre. Il a en effet commencé dès qu’un être suffisamment
intelligent a pu comprendre qu’il pouvait échanger un silex contre une peau de bison sans devoir aller le chasser
lui-même... L’origine du troc se confond avec celle de l’homme
L’échange d’objets entre particuliers est une action pratiquée depuis plusieurs siècles et qui s’impose de plus
en plus comme une tendance sociétale forte et durable dans l’univers de la consommation.
L’échange rend la consommation plus responsable, plus éthique. Et contrairement à l’achat-vente, le troc
est complètement gratuit ! Effectivement vous n’avez pas besoin de dégainer votre carte bleue à chaque fois
que vous souhaitez vous faire plaisir ce qui fait que les crises monétaires favorisent la notion de troc puisque
aucune intervention de monnaie n’y parvient. En plus d’obtenir des objets ou de réaliser des projets que certains
n’auraient pas pu acquérir sans cet échange de biens ou de savoir-faire, de créer des relations ou tout simplement
d’établir un contact humain solidaire, l’échange est un acte écologique et économique.
C’est dans ce contexte que s’inscrit notre application. Par le biais de cette dernière, les utilisateurs peuvent
consulter les biens et les services proposés par la communauté, faire des échanges, s’évaluer les uns les autres,
chatter en temps réel ... Etc.
Ce rapport s’articule autour de cinq chapitres comme suit : Le premier chapitre « Présentation du projet »
consiste à présenter l’organisme d’accueil, l’étude de l’existant et sa critique et la présentation de la méthodologie
de travail.
Le second chapitre « Analyse et spécification des besoins » illustre la conception générale de l’application
où on définit nos acteurs et leurs fonctionnalités et les différentes tables formant notre base des données ainsi
que la planification des sprints.
Le troisième chapitre, « Sprint 0 : Etude Technique » présente l’environnement de développement tel que le
choix des outils techniques et des technologies ainsi l’architecture physique et logique de l’application.
Le quatrième chapitre, « Release 1 : Realease 1 : Gestion de l’authentification et des ressources de l’application
» englobe la prenière partie de notre travail.
Le dernier chapitre « Release 2 : Gestion des annonces , des avis, des messages et des notifications » détaille
la deuxième partie de notre travail.
Ce manuscript est clôturé par une conclusion générale.
1
Chapitre 1
Présentation du projet
Contents
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1 Présentation de la société . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.2 Activités de la société . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Étude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.1 Netbedloo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.2 Swouitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.3 TrocWoah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.4 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Méthodologie de gestion du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7.1 Choix de la méthodologie : Méthodologie agile . . . . . . . . . . . . . . . . . . . . . . 9
1.7.2 La méthodologie SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2
1.1 Introduction
Afin de créer une application d’une manière adéquate et réussie, il est important de passer par la phase de
l’étude préliminaire. Ainsi, ce premier chapitre servira en premier lieu à la présentation du cadre général du
projet et de l’organisme d’accueil au sein du quel nous avons effectué notre stage. Nous présentons par la suite
les solutions existantes en dégageant la problématique correspondante, dont le but de dévoiler les objectifs de
notre travail. Nous allons expliquer à la fin la méthodologie adoptée et les démarches suivies afin de réaliser ce
projet.
3
— UI - UX : L’interface graphique (UI) et l’expérience utilisateur (UX) sont les aspects les plus importants
pour les clients. C’est pourquoi les ingénieurs chez Anypli apportent toute leurs expériences et leurs
savoir-faire dans ce domaine pour vous conseiller sur les dernières tendances.
1.4 Problématique
L’échange de produits et de services est un concept qui ne datent pas d’hier. En effet il était déjà utilisé
dans les sociétés primitives, alors que la monnaie n’existait pas encore. Depuis on a renoué avec ce modèle très
utile pendant les périodes de pénurie et de crise.
L’échange, comme son nom le reflète, exige une relation, un lien avec quelqu’un. Naturellement, le troc de
biens se propage donc aux services. Même le petit coup de main est désormais une sorte de monnaie d’échange,
avec la possibilité d’échanger un service contre un autre. Avec le troc, vos affaires deviennent à moi et mes
affaires sont à vous. Donc , afin qu’un troc soit effectué il fallait au moins satisfaire la condition majeure :
L’existence d’un individu avec qui on va pouvoir faire un échange. Pour cela, y’a quoi de mieux que profiter du
moyen le plus populaire et puissant a ce niveau, Internet, pour créer une sorte de réseaux, une communauté de
troqueurs. Internet donne aujourd’hui un nouvel essor à l’échange Il permet de multiplier les contacts entre les
personnes, de génèrer la confiance plus rapidement et surtout faciliter la prise de décision entre inconnus. Une
fois le contact est établi et la négociation est effectuée, l’échange peut avoir lieu dans la vraie vie. C’est le cas
de notre application qui vous permet de consommer autrement, et de consommer mieux.
1.5.1 Netbedloo
Développée en 2017 par Naru une startup tunisienne fondée dans la même année par deux jeunes ingénieurs,
Netbedloo est une application dédiée aux échanges gratuit et intelligent de livre et de jeux vidéo. Elle se présente
sous forme web et une application mobile. Dans le but de renforcer la culture du partage et dans un soucis de
donner accès à la culture gratuite à l’ensemble des citoyens, Netbedloo met à la disposition de ses utilisateurs
ses algorithmes d’intelligence artificielle et un ensemble d’outils et de fonctionnalités pour faciliter les opérations
de trocs. Grâces à ses algorithmes intelligent, Netbedloo cherche automatiquement la personne avec laquelle
vous pouvez effectuer un échange et offre tout un réseau social a tous ces membres pour partager leurs passions.
Chaque utilisateur choisit parmi un ensemble illimité de livres et de jeux vidéo, ceux qu’il possède et ceux qu’il
souhaite avoir. Au moment où deux utilisateurs ont des besoins mutuels, Netbedloo les informe par notification
push. Ils pourront par la suite refuser l’échange ou l’accepter puis discuter en privé pour se mettre d’accord sur
les détails du rendez-vous. Les utilisateurs peuvent également ajouter des amis, customiser leurs profils, noter
des livres ou jeux vidéo et donner leurs avis. L’application est gratuite et actuellement disponible seulement en
version Android. La figure 1.2 présente le logo de l’application Netbedloo.
4
Figure 1.2 – Logo de Netbedloo
1.5.2 Swouitch
Swouitch a été mise sur le marché en mars 2015 en France par David Chavanis, son fondateur, et une équipe
de 6 personnes qui mettent chacune à profit leurs expériences et expertises au service de la jeune pousse. En se
basant sur le fonctionnement de Tinder, Swouitch se lance, par analogie, dans la rencontre d’objets. Le principe
est simple , lorsqu’un utilisateur indique son intérêt pour un objet, le propriétaire n’en est pas informé. C’est
seulement quand il y a réciprocité d’intérêts que les deux propriétaires découvrent en même temps la possibilité
d’un échange. Après avoir effectué l’inscription qui est d’ailleurs possible seulement via Facebook, l’utilisateur
prend en photo l’objet qu’il souhaite échanger, choisi la communauté à laquelle il est destiné (enfant, jeune,
homme, femme), détermine sa catégorie, le nomme, le qualifie par une brève description et estime son prix, un
objet en échange est automatiquement proposé. Si l’utilisateur indique son désintérêt a l’objet proposé il sera
remplacé par un autre. L’utilisateur peut modifier les critères de recherche selon la catégorie et la distance des
objets. De plus,l’application offre la possibilité de communiquer et suivre les utilisateurs dont on apprécie les
objets, les univers et de voir en priorité leurs nouvelles mises en ligne. L’application est gratuite et disponible
en version iOS. Le logo et le slogan de l’application sont présentés par la figure 1.3
5
1.5.3 TrocWoah
Cette application a été crée en novembre 2019 par trois développeurs. TrocWoah propose la solution idéale
pour ne pas dépenser son argent inutilement sur Internet : le troc. En téléchargeant l’application, l’utilisateur
peut découvrir en quelques minutes l’ensemble des produits que les les autres souhaitent échanger contre d’autres
produits ou des services. L’utilisateur peut simplement explorer la carte ou consulter les nombreux biens et
services a proximité en fonction de sa position géographique. La procédure est très simple. Dès qu’il trouve
un bien qui l’intéresse, il suffit de se positionner dessus et de proposer en échange un de ses biens ou de ses
services. Après avoir ouvert un compte le troqueur cré un événement pour que celui-ci apparaisse sur la carte.
Maintenant, il suffit d’attendre pour être contacté très rapidement pour un échange de services en fonction de
sa position géographique. Un système de notation et d’avis est mis en disposition pour développer la confiance
entre les utilisateurs et évaluer en un instant la fiabilité d’un profil. Les utilisateurs ont la possibilité de discuter,
échanger des idées et créer des groupes d’évènements, de faire des propositions, d’ajouter des amis et de créer
également des alertes pour être tenu informé en temps réel. L’application est disponible dans les deux version
iOS et Android comme le montre la figure 1.4
6
Table 1.1 – Tableau comparatif de l’existant
7
Figure 1.5 – Sotution proposée
8
Table 1.2 – Étude comparative entre les méthodes agiles et les méthodes classiques
9
Figure 1.6 – Schéma descriptif du processus de la méthodologie Agile
10
Figure 1.7 – Cycle de vie de SCRUM
Dans la méthodologie SCRUM, les trois rôles principaux qui interviennent sont :
• Scrum Master (Monsieur ABBES Houssem) : La personne qui dirige l’équipe en la guidant pour qu’elle se
conforme aux règles et aux processus de la méthodologie. Il veille à ce que chacun puisse donner le maximum
de ses capacités en éliminant les obstacles et en protégeant l’équipe des perturbations extérieures. Il travaille
avec le Product Owner pour maximiser le retour sur investissement. Le Scrum Master est chargé de maintenir
Scrum à jour, de fournir un encadrement, un mentorat et une formation aux équipes en cas de besoin C’est un
véritable facilitateur sur le projet.
• Product owner (Monsieur BOUAJILA Mohamed Hachem) : dans la majorité des projets, c’est le respon-
sable de l’équipe projet client. Il est le responsable produit (Product Owner). C’est lui qui a pour mission de
prioriser et définir la liste des fonctionnalités du produit et planifier la date et le contenu de chaque sprint sur
la base des valeurs qui lui sont communiquées par l’équipe.
• Équipe (HAMILA Faten) : Ce sont les membres responsable au développement du projet en réalisant
les stories auxquelles ils s’engagent au début de chaque sprint.. Ils s’organisent eux-même, ils ne changent pas
durant un sprint. Tous leurs efforts doivent être centralisés sur la livraison du produit.
La vie d’un projet Scrum se déroule suivant un ensemble de réunions qui sont clairement définies et limitées
dans le temps (timeboxing) :
1. Sprint (Sprint = itération) : Le Timeboxing est utilisé pour définir la longueur du Sprint. Le Sprint est
une boiˆte de temps allant jusqu’a un mois dans laquelle l’équipe de mêlée livrera les buts du Sprint.
2. Planification du sprint (Sprint Planning) : Au cours de cette réunion, l’équipe de développement sélectionne
les éléments prioritaires du « Product Backlog » qu’elle pense pouvoir réaliser durant un sprint (en collaboration
avec le « Product Owner »).
3. La mêlée quotidienne (Daily Scrum) : C’est une réunion de 15 minutes pour chaque période de 24 heures
(elle est aussi appelée "stand up meeting") qui aide l’équipe de mêlée a` synchroniser les activités et à rendre
visible tout obstacle pour l’atteinte de l’objectif du sprint. Chacun répond principalement à 3 questions : «
Qu’est ce que j’ai fait depuis la dernière mêlée ? Qu’est ce que j’aurai accompli d’ici la prochaine mêlée ? Quels
obstacles me retardent ? ».
11
4. La revue du sprint (Sprint Review) : Ayant lieu à la fin du sprint, au cours de cette réunion l’équipe
de développement présente les fonctionnalités terminées au cours du sprint et recueille les retours du Product
Owner et des utilisateurs finaux. C’est également le moment pour anticiper le périmètre des prochains sprints
et d’ajuster au besoin la planification de release (nombre de sprints restants).
5. La rétrospective du Sprint (Sprint Retrospective) : La rétrospective qui est l’occasion de s’améliorer
(productivité, qualité, efficacité, conditions de travail, etc) en prenant comme référence le sprint écoulé (principe
d’amélioration continue). Elle permet à l’équipe de se concentrer sur sa performance globale et d’identifier des
stratégies d’amélioration continue. Elle a généralement lieu après la revue de sprint.
Les artefacts Scrum sont des composants permettant de faire fonctionner le cadre de travail Scrum, tout en
respectant les principes et les pratiques de l’agilité. Au nombre de 3, ils regroupent
• Backlog du produit : présente une liste de fonctionnalités demandées nommées « User Stories » ou « Récits
utilisateur », classées par priorité. On associe a chaque élément de la liste des attributs tels qu’ un ordre de
priorité ,une description, une estimation...
• Backlog du sprint : présente une sélection de tâches retenues du « Backlog du produit » que l’équipe
s’engage à réaliser pendant un sprint en tenant compte des priorités et de sa capacité.
• Increment du produit : présente la première étape concrète vers le Product Goal. Il englobe l’ensemble
des éléments terminé du sprint en cours mais aussi de ceux déjà finalisé dans les sprint précédents. Il four-
nit principalement de la valeur aux parties prenantes. Ainsi tout ce qui est dans l’incrément est utilisable et
potentiellement livrable en production.
la figure 1.8 résume les catactéristiques de la méthodologie Scrum
1.8 Conclusion
Dans ce chapitre, nous avons commencé par la présentation du cadre général du projet où nous avons présenté
l’entreprise d’accueil. Ensuite nous avons dégagé la problématique à travers l’étude des applications d’échange
existantes sur le marché, ce qui nous a permis d’avoir une vue synthétique sur leurs caractéristiques afin de
créer une solution qui répondait au mieux aux besoins des utilisateurs, ce que nous allons bien détailler dans le
prochain chapitre. Enfin, nous avons choisi la méthodologie qui sera utilisée tout au long du projet.
12
Chapitre 2
Contents
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Analyse des besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Les besoins fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.3 Les besoins non fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Élaboration du Backlog produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Planification des sprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Analyse globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Diagramme de cas d’utilisation global . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.2 Diagramme de classes global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
13
2.1 Introduction
L’analyse des exigences et la spécification des besoins est une étape indispensable dans le cycle de dévelop-
pement d’un logiciel. Elle représente le fondement de la planification des itérations et des objectifs de chacune
d’entre elles. Cette étude vise en général à faciliter le processus de conception et de développement d’applications
informatiques. Dans ce chapitre, nous exposons la phase d’analyse du projet dont nous identifions tout d’abord,
les acteurs principaux et leurs besoins. Ensuite, nous allons définir le Backlog de produit et la planification des
sprints. Enfin, nous allons clôturer le chapitre par une modélisation globale du projet.
14
• S’inscrire : l’utilisateur doit créer un compte avec un nom, un email et un mot de passe pour pouvoir
ajouter des annonces.
• Récupérer le compte : l’utilisateur peut récupérer son compte en cas d’oubli du mot de passe.
• S’authentifier : pour bénéficier des fonctionnalités de l’applications, le client doit s’authentifier d’abord
avec son email et son mot de passe.
• Gérer le profil : l’utilisateur peut gérer ses informations personnelles : il peut modifier son nom d’utilisateur,
son email et son mot de passe. Il peut également changer sa photo de profil et son addresse.
• Gérer les annonces : l’utilisateur peut consulter les biens et les services proposés par la communauté. Il
peut ajouter, modifier une annonce et même ajouter une étiquette si cette dernière n’existe pas déjà.
• Consulter les profils : l’utilisateur peut visiter les profils des autres utilisateurs pour vérifier les avis.
• Évaluer des utilisateurs : l’utilisateur peut évaluer l’utilisateur avec lequel un échange a été éffectué.
• Envoyer des messages : L’utilisateur peut chatter en temps réel avec un ou plusieurs utilisateurs.
• Recevoir des recommandations : l’utilisateur peut consulter les annonces recommandées par le système.
15
16
17
Table 2.1 – Tableau du Backlog produit
18
2.5.1 Diagramme de cas d’utilisation global
À ce niveau, nous pouvons représenter les différents cas d’utilisation d’une fac¸on générale pour les utilisateurs
de l’application. Les différents cas d’utilisations sont représentés par la figure 2.1
19
ne réalisent donc pas une partition des classes du diagramme de classes. Un diagramme de classes n’est donc
pas adapté (sauf cas particulier) pour détailler, décomposer, ou illustrer la réalisation d’un cas d’utilisation
particulier. La figure 2.2 présente le diagramme de classes global de notre application.
2.6 Conclusion
Ce chapitre nous a permis de bien délimiter le projet et d’avoir une vision plus claire sur le sujet. Nous
avons commencé par identifier les acteurs du système, énumérer les besoins fonctionnels, non fonctionnels, et le
Backlog produit. Ensuite, nous avons passé à la planification et l’organisation du temps consacré à la réalisation
du projet en identifiant les sprints. Puis, nous avons présenté le diagramme de cas d’utilisation global et le
diagramme de classes global. Dans le chapitre suivant, nous allons identifier l’étude technique du projet.
20
Chapitre 3
«Étude technique»
Contents
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Environnement de développement et choix techniques . . . . . . . . . . . . . . . . 22
3.2.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Environnement de développement intégré (IDE) . . . . . . . . . . . . . . . . . . . . . 25
3.2.4 Choix techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 Architecture de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.1 Architecture physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.2 Architecture logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 Diagramme de déploiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5 Patrons de conception : MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
21
3.1 Introduction
Après avoir présenté le cadre général de notre projet, nous dédions ce chapitre a l’élaboration de l’étude
technique. Nous commencons par décrire l’environnement de développement de l’application en présentant les
différents technologies et Framework utilisés, et nous finirons par exposer l’architecture de notre système.
Draw.io dont le logo est présenté par la figure 3.1 est une application en ligne, accessible via son navigateur
permettant de dessiner des diagrammes ou des organigrammes. Cet outil nous propose de concevoir des dia-
grammes de modélisation UML (Unified Modeling Language) de dessins vectoriels, et toutes autres sortes de
diagrammes et de les enregistrer au format XML puis de les exporter. Il constitue une excellente option pour
une familiarisation à la modélisation.
Adobe XD, dont le logo est présenté par la figure 3.2 est un logiciel de réalisation de prototypes d’applications
ou de sites web qui permet d’avoir un visuel, une maquette, même si l’application ou le site n’existe pas en vrai.
C’est un outil parfait pour montrer aux collaborateurs, clients à quoi va ressembler le produit fini. Ensuite,
22
débute le réalisation avec le codage ou le design pour concrétiser le projet. En ce qui concerne le design, adobe
XD vous offre la possibilité de concevoir les interfaces graphiques avec des composants réel (comme si vous etes
vraiment sur un device ou un navigateur)
Postman, dont le logo est présenté par la figure 3.3 est un outil pour tester, vérifier une API. Postmanexiste en
deux versions : une application in browser et une application packagée, toutes deux pour Chrome. Les fonction-
nalités sont proches mais pas strictement identiques. Une fois Postman installé, on dispose d’un environnement
graphique complet pour gérer l’ensemble des interactions avec nos API Web. Postman propose les collections : Il
est ainsi possible d’organiser les requêtes en groupes, elles-mêmes pouvant bénéficier de répertoires pour faciliter
la navigation en cas de grand nombre de requêtes. Postman couvre aussi la gestion d’environnements. Dans ce
cas, les éléments pourront être variabilisés et ainsi permettre de garder un même ensemble logique de requêtes,
alimentées de ces éléments sur simple sélection de l’environnement souhaité.
TablePlus, dont le logo est présenté par la figure 3.4 est un outil graphique très récent, puissant et convivial
dans le domaine des logiciels permettant de visualiser et gérer des bases de données relationnelles. Se caracté-
risant d’une interface facile à utiliser et d’une apparence apaisante , ce logiciel offre rapidité et simplicité sans
avoir a sacrifier la puissance ou le contrôle. De plus, une large gamme de raccourcis clavier est présente pour
aider son utilisateur à condenser ses tâches. Conçu pour gérer les formats SQL les plus courants, dont MySQL,
SQLite et PostgreSQL. TablePlus est extensible, permettant d’ajouter de nouveaux plugins et pilotes lorsqu’ils
sont nécessaires. Léger et minimal, il intègre pourtant la flexibilité et la performance nécessaires afin de répondre
à tous les défis.
23
Figure 3.4 – Logo TablePlus
Overleaf, dont le logo est présenté par la figure 3.5 est un éditeur LaTeX collaboratif basé sur le cloud utilisé
pour la rédaction,l’édition et la publication de documents scientifiques. Il s’associe à un large éventail d’éditeurs
scientifiques pour fournir des modèles LaTeX officiels et des liens de soumission directe.
— Vagrant
Vagrant, dont le logo est présenté par la figure 3.6 est un outil qui permet la création des machines virtuelles
pendant le développement d’une application pour obtenir l’environnement désiré sans pour autant changer la
configuration de la machine. Il permet d’automatiser le processus d’installation et configuration de la machine
virtuelle. L’objectif est de pouvoir travailler, en développement, dans le même environnement qu’en production
ou en staging. Vagrant fournit un client de ligne de commande simple et facile à utiliser pour gérer ces envi-
ronnements ainsi qu’un interpréteur pour les définitions des configurations qui sont rassemblés dans un fichier
spécial appelé Vagrantfile.
— Laravel Homestead
Laravel Homestead, dont le logo est présenté par la figure 3.7 est une "box" Vagrant officiel et pré-emballé qui
vous offre un merveilleux environnement de développement sans avoir à installer PHP, HHVM, un server Web
et tout autre logiciel sur votre machine local. Homestead fonctionne sur n’importe quel ordinateur Windows,
24
Mac et Linux, et inclus un serveur web Nginx, PHP 7, MySQL, Postgres, Redis, Memcached et tous les autres
outils dont nous aurons besoin pour développer nottre application.
— MySQL
MySQL, dont le logo est présenté par la figure 3.8 est un système de gestion de base de données (SGBD). Son
rôle est d’enregistrer des données de manière organisée et cohérente afin de vous aider à les retrouver facilement
plus tard. MySQl dérive directement de SQL (Structred Query Language) qui est un langage de requeˆte vers les
bases de donne´es exploitant le mode`le relationnel. MySQL, selon le type de l’ap- plication, sa licence est libre
ou proprie´taire. Il fait partie des logiciels de gestion de base de donne´es les plus utilise´s au monde, autant par
le grand public ( les applications web principalement) que par des professionnels. MySQL est de´veloppe´ dans
un souci de performance e´leve´e en lecture, ce qui signifie qu’il est oriente´ vers le service de donne´es de´ja`
en place vers celui de mises a` jour fre´quentes et fortement se´curise´es. Il est multithread et multiutilisateurs.
On a choisi MySQL car il est sous licence Open Source et qu’il est le SGBD le plus populaire au monde graˆce
a` sa haute performance, sa fiabilite´ et sa simplicite´ d’utilisation. Ce SGBD est en concurrence avec Oracle
et Microsoft SQL Server.
PhpStorm, dont le logo est présenté par la figure 3.9 est un IDE PHP qui "comprend" votre code. Il existe
depuis plus de 10 ans et posse`de une large communaute´ de plus de 600 000 utilisateurs autour du globe. Il
prend en charge PHP 5.3/5.4/5.5/5.6/7.0/7.1/7.2, fournit la pre´vention des erreurs a` la vole´e, les meilleurs
outils de saisie automatiques et de refactorisation de code, un de´bogage sans configuration et un e´diteur
JavaScript, CSS et HTML e´tendu.
25
Figure 3.9 – Logo PhpStorm
3.2.3.2 WebStorm
WebStorm , dont le logo est présenté par la figure ?? est un IDE qui permet, entre autres, l’auto-comple´tion
en recherchant activement les classes/fonctions de´clare´s dans un projet, la synchronisation automatique des
fichiers locaux et les fichiers distants a` la sauvegarde (et a` la sauvegarde automatique)l’historique de versions
des fichiers (en local), des raccourcis clavier qui sont vraiment utiles. Les points forts de cet IDE sont :
• Coloration syntaxique
• Auto-comple´tion.
• Introspection du code.
• Outils de recherche avance´e.
• Parame´trage IDE/Projet.
• Versionning / Bug-tracker.
• Tre´s bon suivi et mises a` jour fre´quentes.
• Multiple-plateforme.
3.2.3.3 Xcode
Xcode, dont le logo est présenté par la figure 3.11 est un ensemble d’outils complet a` la disposition des
de´veloppeurs et conc¸ue pour la cre´ation d’apps pour Mac, iPhone, iPad, Apple Watch et Apple TV. Xcode
permet d’e´laborer des interfaces utilisateur, de coder, de tester ses applications, de les de´boguer et de les
envoyer sur l’App Store d’une seule traite.
26
3.2.4 Choix techniques
Notre projet se de´compose de deux parties : back-end et front-end. Dans cette section nous allons mentionner
les bibliothèques et les frameworks utilisés pour le développement de ces deux parties.
— Php
PHP, dont le logo est présenté par la figure 3.12 est un langage de script côté serveur qui est intégré au
HTML. Il est utilisé pour gérer le contenu dynamique, les bases de données, le suivi des sessions, et même pour
construire des sites entiers de commerce électronique. Il est intégré à un certain nombre de bases de données
populaires, notamment MySQL, PostgreSQL, Oracle, Sybase, Informix et MicrosoftSQL Server.
— Javascript
Javascript, dont le logo est présenté par la figure 3.13 est un langage de programmation de scripts princi-
palement employé dans les pages web interactives mais aussi pour les serveurs avec l’utilisation (par exemple)
de Node.JS. C’est un langage orienté objet à prototype, c’est-à-dire que les bases du langage et ses principales
interfaces sont fournies par des objets qui ne sont pas des instances de classes, mais qui sont chacun équipés
de constructeurs permettant de créer leurs propriétés, et notamment une propriété de prototypage qui permet
d’en créer des objets héritiers personnalisés. En outre, les fonctions sont des objets de première classe.
— Swift
Swift, dont le logo est présenté par la figure 3.14 est un langage à la fois rapide et efficace qui fournit
des retours en temps réel et s’intègre naturellement au code Objective-C existant. Les développeurs peuvent
donc rédiger un code plus sûr et plus fiable, gagner du temps et créer des applications offrant aux utilisateurs
une expérience plus riche. Apple a officiellement commencé à développer Swift au sein de Swift.org en 2010.
Crée dans le but d’être facile à utiliser, le langage assure un typage fort, ce qui permet d’éviter de nombreuses
catégories d’erreurs de programmation courantes. Swift a également été crée pour être sûr sans nuire aux
performances.Les similitudes avec le langage C et la programmation orientée objet ont contribué à emporter
l’adhésion des programmeurs. Le langage est simple à apprendre, ce qui le rend accessible aux novices et aux
programmeurs chevronnés.
27
Figure 3.14 – Logo Swift
3.2.4.2 Framework
Un Framework est un cadre de travail basé sur une architecture applicative. Il propose ainsi un ensemble
d’outils et de composants logiciels cohérents tels qu’une bibliothèque logicielle réutilisable. Sa structure tech-
nique et logique impose au développeur le respect de certaines pratiques et normes de développement. Un
Framework sert de fondation et de squelette à une application. Toute la partie technique (architecture, struc-
ture et bibliothèque) est gérée en toute transparence. Sa conception est faite de telle manière à faciliter le
travail du développeur et lui permettre de ne se concentrer que sur l’essentiel, c’est à-dire le développement des
composants métiers.
— Laravel
Laravel, dont le logo est présenté par la figure 3.15 est un framework PHP open source, multi-plateforme
permettant de cre´er des applications web. Crée en 2011 par Taylor Otwell, ce framework regroupe les meilleures
librairies utiles pour créer un site web. Laravel est principalement un framework de de´veloppement Backend,
En outre, l’excellent framework laravel intègre aussi bien d’autres fonctionnalités exclusives. C’est notamment le
cas de son moteur de template Blade. Les applications Laravel sont hautement e´volutives et leur base de code
est facile a` maintenir. Les de´veloppeurs peuvent e´galement ajouter des fonctionnalite´s a` leurs applications
de manie`re transparente, graˆce au syste`me de packaging modulaire de Laravel et a` la gestion robuste des
de´pendances.
• Un système de routage perfectionné (RESTFul et ressources) ce système a été pris sur le framework PhP
Symfony
• Un créateur de requêtes SQL et un ORM performant
• Un moteur de template efficace
• Un système d’authentification pour les connexions
• Un système de validation
• Un système de pagination
• Un système de migration pour les bases de données
• Un système d’envoi d’e-mails
• Un système de cache
• Une gestion des sessions
• Possibilité d’effectuer des tests unitaires
28
3.2.4.3 Bibliothèques
— React Js
React, dont le logo est présenté par la figure 3.16 est un projet open-source , de´sormais distribue´ sous
la tre`s populaire licence MIT et pilote´ par Facebook, dont tous les produits web et mobiles reposent sur
cette technologie. Autour d’une e´quipe principale compose´e d’une vingtaine de personnes, gravitent plus de
mille contributeurs occasionnels. En octobre 2017, plus de 20 000 modules sur npm (le principal re´fe´rentiel
de modules de de´veloppement, surtout oriente´ JavaScript, qui contient quelques 650 000 modules au total)
avaient un rapport a` l’e´cosyste`me React. ReactJS est une bibliothe`que JavaScript de´clarative , efficace et
flexible pour la construction de composants d’interface utilisateur re´utilisables. Il s’agit d’une bibliothe`que
frontale open source base´e sur des composants qui n’est responsable que de la couche d’affichage de l’application.
Il a e´te´ initialement de´veloppe´ et maintenu par Facebook et utilise´ plus tard dans ses produits comme
WhatsApp et Instagram.
29
Figure 3.18 – Schéma déscriptif du FCM
FCM utilise les informations d’identification suivantes pour identifier le serveur d’applications et l’application
cliente et utilise ces informations d’identification pour autoriser les transactions de message via FCM :
-ID de l’expéditeur : on l’obtient depuis la console Firebase.
-Clé de l’API : La clé de l’API permet au serveur de l’application d’accéder aux services Firebase. FCM
utilise cette clé pour authentifier le serveur d’applications. Cette référence est également appelée clé de serveur
ou clé API Web.
-App ID : L’identité de votre application client (indépendante de tout périphérique donné) qui s’enregistre
pour recevoir des messages de FCM.
-Registration Token : Le jeton d’enregistrement (également appelé ID d’instance) est l’identité FCM de
votre application client sur un dispositif. Le jeton d’enregistrement est généré au moment de l’exécution. Votre
30
application reçoit un jeton d’inscription lors de son enregistrement initial auprès de FCM lors de son exécution
sur un périphérique. Le jeton d’enregistrement autorise une instance de votre application cliente (exécutée sur
ce périphérique particulier) à recevoir des messages de FCM.
— Inscription à FCM
Comme illustré dans la figure 3.20,Une application cliente doit d’abord s’inscrire auprès de FCM avant que
la messagerie puisse avoir lieu. L’application cliente doit effectuer les étapes d’enregistrement indiquées dans
la figure 46 : 1- L’application cliente contacte FCM pour obtenir un jeton d’enregistrement, transmettant l’ID
de l’expéditeur, la clé API et l’ID d’application à FCM. 2- FCM renvoie un jeton d’inscription à l’application
cliente. 3- L’application cliente (facultativement) transmet le jeton d’inscription au serveur d’applications.
— Swagguer
Pour résumer en une phrase ce qu’est Swagger, dont le logo est présenté par la figure 3.21, on peut dire
que c’est un ensemble d’outils pour aider les développeurs dans la conception, le build, la documentation et la
consommation d’API.
En 2010, Swagger n’était qu’une spécification open source pour construire des API REST. A cela est venu
se greffer divers outils, également open source, pour aider à implémenter et visualiser les API ; on parle là
de Swagger UI, Swagger Editor et Swagger Codegen. En 2015, le projet Swagger est récupéré par Smartbear
Software et la spécification swagger est renommée OpenAPI.
31
3.3.1 Architecture physique
Il est nécessaire à la conception de toute application de choisir l’architecture adéquate qui permet d’assurer un
bon fonctionnement et de meilleures performances. Notre application.repose sur une architecture 3-tiers, Cette
architecture se compose de trois composants, Chaque composant a un rôle et une responsabilité spécifiques au
sein de l’application :
• Le client : celui qui demande les ressources qui peut etre un navigateur ou un smartphone...
• Le serveur d’application qui est un middleware chargé de fournir la ressource mais faisant appel à un autre
serveur.
• Le serveur secondaire généralement un serveur de base de données, fournissant un service au premier
serveur.
L’approche 3-tiers, comme le montre la figure 3.22 dispose de plusieurs avantages. Parmi ses avantages
- Une séparation des données d’où une conception plus claire et plus efficace.
- Un gain de temps de maintenance et d’évolution de l’application.
- Une plus grande souplesse pour organiser le développement de l’application entre différents développeurs.
- Indépendance entre les trois niveaux.
- Plus de flexibilité dans l’allocation des ressources et dans les requêtes du client vers le serveur.
32
Figure 3.23 – Architecture logique de l’application
33
Figure 3.24 – Diagrammme de déploiment
Un patron de conception (souvent appelé design pattern) est une disposition caractéristique de modules,
reconnu comme bonne pratique en réponse à un problème de conception d’un logiciel.
Modèle-Vue-Contrôleurs (MVC) : Il s’agit d’un patron de conception dont le but est de garantir une séparation
des propos et un couplage faible entre les entités d’une application afin de simplifier la maintenance et l’évolution
de la solution. L’utilisation de DAO (Data Access Object) permet de s’abstraire de la façon dont les données
sont stockées au niveau des objets métier. Ainsi, le changement du mode de stockage ne remet pas en cause le
reste de l’application. Pour cela, il est recommandé de découper l’application suivant le modèle de la figure 3.25.
Le but de MVC est justement de séparer la logique du code en trois parties principales que l’on retrouve
dans des fichiers distincts, comme l’explique la description qui suit.
• Le Modèle : cette partie a pour rôle de gérer les différents données du site. Son rôle est d’aller récupérer les
informations brutes dans la base de données, de les organiser et de les assembler pour qu’elles puissent ensuite
être traitées par le contrôleur. On y trouve donc les requêtes SQL ainsi que les relations entre modèles et leurs
validations.
• La Vue : c’est la partie visible qui fait l’interface avec l’utilisateur. On y trouve des formulaires, des
boutons.. tous ce qui objets visuels permettant l’intéraction avec l’utilisateur. Elle a pour tâches l’affichage des
données qu’elle a récupérées auprès du modèle et recevoir les action de l’utilisateur.
• Le Contrôleur : cette partie gère la logique métier qui prend des décisions. C’est en quelque sorte le
34
synchroniseur entre le modèle et la vue : le contrôleur va demander au modèle les données, les analyser, prendre
des décisions et renvoyer le texte à afficher à la vue. Le contrôleur est souvent décomposé en plusieurs sections
dont chacune reçoit les événements relative à une partie des composants.
3.6 Conclusion
Dans ce chapitre, nous avons décrit les étapes effectuées durant le premier release qui a été consacrée à l’au-
thentification , la gestion du profile et des ressources de l’application. Pour chaque sprint, nous avons commencé
par une spécification fonctionnelle, ensuite, nous avons détaillé la conception en présentant les diagrammes
de séquences, d’activités et de classes. Enfin, nous avons clôturé par la présentation de la réalisation via les
interfaces Homme-Machine.
35
Chapitre 4
Contents
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Sprint 1 : Gestion d’authentification et profile . . . . . . . . . . . . . . . . . . . . . 37
4.2.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 Sprint 2 : Gestion des ressources de l’application et des utilisateurs . . . . . . . . 53
4.3.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3.3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
36
4.1 Introduction
Tout au long de ce chapitre, nous allons présenter le premier release qui se décompose d’un premier sprint
pour l’authentification de l’administrateur et de l’utilisateur un deuxième pour la gestion des ressources de
l’application . L’étude de chaque sprint est organisée sur trois phases : l’analyse, la conception, et la réalisation.
Le Sprint backlog est le tableau que nous tirons du Backlog Product. Après avoir fixé l’objectif du sprint 1,
nous définissons quelles sont les « user stories » qui vont faire l’objet du Backlog de ce sprint. Nous présentons
à travers le tableau 4.1 les différentes tâches de chaque user story.
Par la suite, nous présentons la phase d’analyse dont nous décrivons le diagramme de cas d’utilisation et la
description textuelle. La figure 4.1 décrit le diagramme de cas d’utilisation détaillé relatif a ce sprint ainsi que
sa description textuelle à travers le tableau 4.2.
37
Figure 4.1 – Diagramme de cas d’utilisation du sprint 1
Clause Description
Identifiant Gérer l’authentifiaction et configurer le profile.
l’administrateur et l’utilisateur peuvent s’authentifier et configu-
Résumé
rer leurs profile
Acteur Administrateur et utilisateur
Contexte de déclenche- Authentification préalable (sauf pour la création et la récupéra-
ment tion de compte)
Pré conditions Api-token valide pour la gestion de profile.
Email existant dans la base de données pour la récupération du
compte
Si l’administrateur ou l’utilisateur possède la clé d’autorisation
Description
api token valide, il peut gérer son profile.
38
Table 4.3 – Description textuelle du cas d’utilisation s’authentifier
La figure 4.3 illustre le diagramme détaillant le cas d’utilisation de de la création de compte pour l’utilisateur
ainsi que sa description textuelle présentée dans le tableau 4.4.
39
Table 4.4 – Description textuelle du cas d’utilisation créer un compte
La figure 4.4 illustre le diagramme détaillant le cas d’utilisation de l’authentification de l’utilisateur ainsi
que sa description textuelle présentée dans le tableau 4.5.
40
Table 4.5 – Description textuelle du cas d’utilisation récupérer le compte
La figure 4.5 illustre le diagramme détaillant le cas d’utilisation de la modification de profile de l’utilisateur
ainsi que sa description textuelle présentée dans le tableau 4.6.
41
Table 4.6 – Description textuelle du cas d’utilisation modifier profile
4.2.2 Conception
Dans cette partie, nous passons à la deuxième activité dans le sprint de la gestion d’authentification et du
profile qui est la conception où nous présentons les diagrammes de séquences, d’activités ainsi que le diagramme
de classes de ce sprint.
Les diagrammes de séquences documentent les interactions à mettre en œuvre entre les objets de point de
vue temporel pour réaliser un résultat, tel qu’un cas d’utilisation. Le diagramme de séquence énumère des objets
horizontalement, et le temps verticalement. Il modélise l’exécution des différents messages en fonction du temps.
Le diagramme illustré dans la figure 4.6 est le séquencement des interactions entre le client et les objets du
système responsable de l’authentification qui offre au client un formulaire d’authentification.
Dès la validation du client après la saisie de l’e-mail et du mot de passe, le composant côté client consomme
le web service d’authentification exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie
l’existence de ce client et renvoi un résultat sous forme de JSON contenant un token.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat contient un token, alors
le composant fait une redirection vers la page d’accueil de l’application, sinon une redirection vers la page
d’authentification à nouveau et un message sera affiché à l’utilisateur.
42
Figure 4.6 – Diagramme de séquence pour le scénario authentification
Le diagramme illustré dans la figure 4.7 est le séquencement des interactions entre le client et les objets du
système responsable de la récupération du compte qui guide le client avec les étapes qu’il faut suivre.
Après la saisie de l’e-mail le composant côté client consomme le web service de récupération de mot de passe
exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie l’existance de cet e-mail dans la
base de données, génère un code aléatoire, l’envoi a l’utilisateur par e-mail et renvoi un résultat sous forme de
JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat contient un succés et que
l’email est envoyé, alors le composant fait une redirection vers l’interface de saisie du code, sinon un message
d’erreur sera affiché à l’utilisateur.
Le client compose le code reçu,le composant côté client consomme le web service de vérification de code
exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie si le code est correct et renvoi un
résultat sous forme de JSON.
43
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat contient un succés et que
le code est correct, alors le composant fait une redirection vers l’interface de réinitialisation du mot de passe,
sinon un message d’erreur sera affiché à l’utilisateur.
Le client compose son nouveau mot de passe et sa confirmation,le composant côté client consomme le web
service de réinitialisation de mot de passe exposé par le contrôleur responsable de la partie back-end, ce dernier
vérifie si les champs saisies sont valides et renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat contient un succés et que le
mot de passe a été mis a jours, alors le composant fait une redirection vers la page d’accueil, sinon un message
d’erreur sera affiché à l’utilisateur. .
Le diagramme illustré dans la figure 4.8 est le séquencement des interactions entre le client et les objets du
système responsable de la modification du profile qui offre au client un formulaire a remplir.
Dès la validation du client après la saisie des champs a modifier, le composant côté client consomme le web
service de modification de profile exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie
les champs entré par le client et renvoi un résultat sous forme de JSON.
44
Le composant de la partie front-end agit selon le résultat du JSON, si l’opération est réussite, alors un
message de succés sera affiché et l’interface met a jours les champs, sinon un message d’erreur sera affiché à
l’utilisateur.
Les diagrammes d’activités permettent de mettre l’accent sur les traitements. Ils sont donc particulièrement
adaptés à la modélisation du cheminement de flots de contrôle et de flots de données. Ils permettent ainsi de
représenter graphiquement le comportement d’une méthode ou le déroulement d’un cas d’utilisation.
45
4.2.2.6 Diagramme d’activité s’authentifier
L’authentification consiste à vérifier l’identité d’une entité, afin d’autoriser son accès au système. Elle permet
donc de valider l’authenticité de l’entité en question. La figure 4.9 décrit les activités suivantes :
• L’administrateur demande l’authentification en faisant l’accès à l’interface d’authentification,
• Un formulaire d’authentification s’affiche pour cet utilisateur,
• L’administrateur saisie son email et son mot de passe,
• Le système vérifie les coordonnées de l’administrateur dans la base,
• Si les données sont acceptées, le système redirige l’administrateur vers l’interface d’accueil du dashboard,
si non il revient à l’étape précédente.
L’insription consiste à ajouter un nouvel objet. Elle permet donc de La figure 4.10 décrit les activités
suivantes :
• L’utilisateur accède à l’interface d’inscription,
• Un formulaire d’inscription s’affiche pour cet utilisateur,
• L’utilisateur saisie les champs requis,
•le systeme redirige l’utilisateur vers l’interface de localisation
• Le système vérifie les champs saisis.
• Si les données sont acceptées, le système redirige l’utilisateur vers l’interface d’accueil de l’application, si
non il revient à l’étape de saisis de données.
46
Figure 4.10 – Diagramme d’activité créer un compte
47
4.2.2.9 Diagramme de classes
Le diagramme de classes permet de décrire la structure interne tout en montrant les différentes classes, leurs
attributs ainsi que les différentes relations structurelles entre ces classes. Il s’agit d’une vue statique, car on
ne tient pas compte du facteur temporel dans le comportement du système. Le diagramme de classes modélise
les concepts du domaine d’application ainsi que les concepts internes créés de toutes pièces dans le cadre de
l’implémentation d’une application. Chaque langage de Programmation orienté objet donne un moyen spécifique
d’implémenter le paradigme objet (pointeurs ou pas, héritage multiple ou pas, etc.), mais le diagramme de classes
permet de modéliser les classes du système et leurs relations indépendamment d’un langage de programmation
particulier. La figure 4.12 décrit le diagramme de classes que nous avons utilisé pour développer le premier
sprint.
4.2.3 Réalisation
Dans cette section, nous présentons les résultats de ce sprint où nous allons exposer quelques interfaces à
travers différentes imprimes écrans réalisées.
48
Figure 4.13 – Interface d’authentification de l’administrateur
49
Figure 4.15 – Interface de localisation de l’utilisateur
Les figures 4.16, 4.17 et 4.18 représentent les interfaces de récupération du mot de passe de l’utilisateur.
50
Figure 4.17 – Interface de vérification de code de réinitialisation
Les figures 4.19 , 4.20 et 4.21 représente les interfaces de profil et sa modification de l’utilisateur.
51
Figure 4.19 – Interface de profil de l’utilisateur : section annonces
52
Figure 4.21 – Interface de modification de profil de l’utilisateur
Le Sprint backlog est le tableau que nous tirons du Backlog Product. Après avoir fixé l’objectif du sprint 2,
nous définissons quelles sont les « user stories » qui vont faire l’objet du Backlog de ce sprint. Nous présentons
à travers le tableau 4.7 les différentes tâches de chaque user story.
53
Table 4.7 – Backlog du sprint 2
Par la suite, nous présentons la phase d’analyse dont nous décrivons le diagramme de cas d’utilisation et
ladescription textuelle. La figure 4.22 décrit le diagramme de cas d’utilisation détaillé relatif a ce sprint ainsi
que sa description textuelle à travers le tableau 4.9.
54
Figure 4.22 – Diagramme de cas d’utilisation du sprint 2
Clause Description
Identifiant Gérer les ressources et les utilisateurs.
l’administrateur peut gérer les différentes resssources et utilisa-
Résumé
teurs de l’application
Acteur Administrateur
Contexte de déclenche-
Authentification préalable
ment
Pré conditions Api-token valide.
Si l’administrateur possède la clé d’autorisation valide, il peut
Description
gérer les ressources et les utilisateurs.
55
4.3.1.3 Diagramme de cas d’utilisation détaillé de la gestion des utilisateurs
La figure 4.23 illustre le diagramme détaillant le cas d’utilisation de gestion des utilisateurs ainsi que sa
description textuelle présentée dans le tableau 4.9
La figure 4.24 illustre le diagramme détaillant le cas d’utilisation d’ajout d’une catégorie ainsi que sa des-
cription textuelle présentée dans le tableau 4.10
56
Table 4.10 – Description textuelle du cas d’utilisation ajouter une catégorie
La figure 4.25 illustre le diagramme détaillant le cas d’utilisation de modification d’une catégorie ainsi que
sa description textuelle présentée dans le tableau 4.11
57
4.3.1.6 Diagramme de cas d’utilisation détaillé de la suppression d’une catégorie
La figure 4.26 illustre le diagramme détaillant le cas d’utilisation de la suppression d’une catégorie ainsi que
sa description textuelle présentée dans le tableau 4.12.
4.3.2 Conception
Dans cette partie, nous passons à la deuxième activité dans le sprint de la gestion des ressources qui est la
conception où nous présentons les diagrammes de séquences, d’activités ainsi que le diagramme de classes de ce
sprint.
Le diagramme illustré dans la figure 4.27 est le séquencement des interactions entre l’administrateur et les
objets du système responsable de l’ajout d’une catégorie qui offre a l’administrateur un formulaire d’ajout.
58
Dès la validation de l’administrateur après la saisie du nom de la catégorie, le composant côté client consomme
le web service d’ajout de catégories exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie
l’existence de ce nom, crée la catégorie et renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat est un succés, alors le
composant se met a jours et affiche la nouvelle catégorie ajoutée, sinon un message d’erreur sera affiché.
59
Figure 4.28 – Diagramme d’activité ajouter catégorie
• L’administrateur demande la modification d’une catégorie en faisant l’accès à l’interface de gestion des
catégories.
• Un formulaire de modification s’affiche pour cet administrateur,
• L’administrateur saisie le nouveau nom de la catégorie.
• Le système vérifie l’unicité du nom.
• Si les données sont acceptées, le système affiche un message de succés et mis a jours l’interface de listing
des catégories
60
4.3.2.6 Diagramme d’activité supprimer catégorie
La figure 4.31 décrit le diagramme de classes que nous avons utilisé pour développer le deuxième sprint.
61
4.3.3 Réalisation
Dans cette section, nous présentons les résultats de ce sprint où nous allons exposer quelques interfaces à
travers différentes imprimes écrans réalisées.
Les figures 4.32 et 4.33 représente l’interface des utilisateurs et leurs détails.
62
4.3.3.2 Interfaces de gestion des catégories
Les figures 4.34, 4.35 et 4.36 représente l’interface des catégories et leur gestion.
63
Figure 4.36 – Interface de suppression d’une catégorie
4.4 Conclusion
Dans ce chapitre, nous avons décrit les étapes effectuées durant le premier release qui a été consacrée à la
gestion des ressources de l’application et des utilisateurs. Pour chaque sprint, nous avons commencé par une
spécification fonctionnelle, ensuite, nous avons détaillé la conception en présentant les diagrammes de séquences,
d’activités et de classes. Enfin, nous avons clôturé par la présentation de la réalisation via les interfaces Homme-
Machine.
64
Chapitre 5
Contents
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Sprint 1 : Gérer les annonces et les avis et système de matching . . . . . . . . . . 66
5.2.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.2 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Sprint 2 : Envoyer des messages, consulter les recommandations et gérer les
statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.3.1 Spécifications fonctionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.3.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.3.3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
65
5.1 Introduction
Tout au long de ce chapitre, nous allons présenter le deuxième release qui se divise en deux sprints. Le
premier sprint est dédié a la gestion des annonces, des avis et des signal. Quant au deuxième il s’occupera des
fonctionnalités du chat en temps réel, de la récepion de notifications et des recommendations. L’étude de chaque
sprint est organisée sur trois phases : l’analyse, la conception, et la réalisation.
Le Sprint backlog est le tableau que nous tirons du Backlog Product. Après avoir fixé l’objectif du sprint 3,
nous définissons quelles sont les « user stories » qui vont faire l’objet du Backlog de ce sprint. Nous présentons
à travers le tableau 5.1 les différentes tâches de chaque user story.
66
5.2.1.2 Diagramme de cas d’utilisation détaillé du sprint 3
Par la suite, nous présentons la phase d’analyse dont nous décrivons le diagramme de cas d’utilisation et la
description textuelle. La figure 5.1 décrit le diagramme de cas d’utilisation détaillé relatif a ce sprint ainsi que
sa description textuelle à travers le tableau 5.2.
Clause Description
Identifiant Gérer les annonces, les avis.
l’administrateur et l’utilisateur peuvent gérer les annonces, les
Résumé
avis.
Acteur Administrateur et utilisateur
Contexte de déclenche- Authentification préalable (sauf pour la consultation des an-
ment nonces pour l’utilisateur)
Pré conditions Api-token valide
Si l’administrateur possède la clé d’autorisation api token valide,
il peut gérer les annonces et les avis et recevoirs les notifications.
Description
Si l’utilisateur possède la clé d’autorisation api token valide, il
peut gérer les annonces.
67
5.2.1.3 Diagramme de cas d’utilisation ajouter une annonce
La figure 5.2 illustre le diagramme détaillant le cas d’utilisation de l’ajout d’une annonce ainsi que sa
description textuelle présentée dans le tableau 5.3.
La figure 5.3 illustre le diagramme détaillant le cas d’utilisation de la modification d’une annonce ainsi que
sa description textuelle présentée dans le tableau 5.4.
68
Figure 5.3 – Diagramme de cas d’utilisation modifier une annonce
La figure 5.4 illustre le diagramme détaillant le cas d’utilisation de l’ajout d’un avis ainsi que sa description
textuelle présentée dans le tableau 5.5.
69
Table 5.5 – Description textuelle du cas d’utilisation ajouter un avis
La figure 5.5 illustre le diagramme détaillant le cas d’utilisation de la recherche d’une annonce ainsi que sa
description textuelle présentée dans le tableau 5.6.
70
Table 5.6 – Description textuelle du cas d’utilisation éffectuer une recherche
La figure 5.6 illustre le diagramme détaillant le cas d’utilisation de la verification d’une annonce ainsi que
sa description textuelle présentée dans le tableau 5.7.
71
5.2.1.8 Diagramme de cas d’utilisation supprimer un avis
La figure 5.7 illustre le diagramme détaillant le cas d’utilisation de la suppression d’un avis ainsi que sa
description textuelle présentée dans le tableau 5.8.
5.2.1.9 Conception
Dans cette partie, nous passons à la deuxième activité dans le sprint de la gestion des annonces des avis et du
signal qui est la conception où nous présentons les diagrammes de séquences, d’activités ainsi que le diagramme
de classes de ce sprint.
Le diagramme illustré dans la figure 5.8 est le séquencement des interactions entre le client et les objets du
système responsable de l’ajout d’une annonce qui offre au client un formulaire.
Dès la validation du client après la saisie des champs nécessaires , le composant côté client consomme le web
service d’ajout d’une annonce exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie les
données entrées par le client renvoi un résultat sous forme de JSON.
72
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat indique un succés et il
contient une annonce , alors le composant fait une redirection vers la page d’accueil de l’application, sinon un
message sera affiché.
Le diagramme illustré dans la figure 5.9 est le séquencement des interactions entre le client et les objets du
système responsable de du systeme de matching.
Dès la validation du client après la saisie du premier champs de recherche, le composant côté client consomme
le web service de recherche exposé par le contrôleur responsable de la partie back-end, ce dernier filtres les
annonces suivant le champs entré par le client et renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat indique un succés , alors
le composant fait une redirection vers la page de recherche avancée de l’application.
l’utilisateur saisit un deuxième champs avec lequel il pourras consulter les correspondances possibles. Dès
la validation du client, le composant côté client consomme le web service de recherche avancée exposé par le
73
contrôleur responsable de la partie back-end, ce dernier cherche des correspondances entre les annonces suivant
suivant leurs étiquettes et renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat indique un succés , alors
le composant affiche les annonces trouvées.
Le diagramme illustré dans la figure 5.10 est le séquencement des interactions entre le client et les objets du
système responsable de l’ajout d’un avis qui offre au client un formulaire.
Dès la validation du client après la saisie des champs nécessaires , le composant côté client consomme le
web service d’ajout d’une avis exposé par le contrôleur responsable de la partie back-end, ce dernier vérifie les
données entrées par le client renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat indique un succés et il
contient un avis, alors le composant affiche un message de succés, sinon un message d’erreur sera affiché.
74
Figure 5.10 – Diagramme de séquence pour le scénario ajouter un avis
Le diagramme illustré dans la figure 5.11 est le séquencement des interactions entre l’administrateur et les
objets du système responsable de la reception de notification d’une annonce qui offre au client un formulaire.
Dès l’ajout d’une nouvelle annonce par un utilisateur„l’opération consomme le web service d’envoie de
notification exposé par le contrôleur responsable de la partie back-end, ce dernier renvoi un résultat sous forme
de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat indique un succés, alors le
composant mis a jour l’interface et l’administrateur reçoit une notification indiquant l’évenement.
75
Figure 5.11 – Diagramme de séquence pour le scénario notifier l’administrateur
L’ajout d’une annonce consiste à la création d’un nouvel objet. La figure 5.12 décrit les activités suivantes :
• L’utilisateur demande l’interface d’ajout d’une annonce.
• Un formulaire d’ajout s’affiche pour cet utilisateur.
• L’utilisateur saisie les champs nécessaires pour ajouter une annonces.
• Le système vérifie les champs.
• Si les données sont acceptées, le système crée une nouvelle annonce et redirige l’utilisateur vers l’interface
d’accueil de l’application.
76
Figure 5.12 – Diagramme d’activité ajouter une annonce
La modification d’une annonce consiste à modifier un objet déja existant. La figure 5.13 décrit les activités
suivantes :
• L’utilisateur demande l’interface de modification de l’annonce.
• Un formulaire contenant les informations de l’annonce s’affiche pour cet utilisateur.
• L’utilisateur modifie les champs souhaités.
• Le système vérifie les champs saisis.
• Si les données sont acceptées, le système modifie l’annonce et redirige l’utilisateur vers l’interface d’accueil
de l’application.
77
5.2.1.18 Diagramme d’activité ajouter un avis
L’ajout d’un avis consiste a créer un nouvel objet. La figure 5.14 décrit les activités suivantes :
• L’utilisateur accède à l’interface de détails d’une annonce.
• L’utilisateur conclu l’échange de l’annonce.
• Le système affiche un formulaire pour ajouter un avis.
• L’utilisateur saisit les champs requis dans le formulaire.
• Si les données sont acceptées, le système affiche un message de succés et redirige l’utilisateur vers la page
d’accueil.
La figure 5.15 décrit le diagramme de classes que nous avons utilisé pour développer le premier sprint.
78
Figure 5.15 – Diagramme de classe du sprint3
5.2.2 Réalisation
Dans cette section, nous présentons les résultats de ce sprint où nous allons exposer quelques interfaces à
travers différentes imprimes écrans réalisées.
79
Figure 5.16 – Interface d’ajout d’une annonce
80
5.2.2.3 Interface de recherche d’annonces
81
5.2.2.5 Interface de suppression d’un avis
Le Sprint backlog est le tableau que nous tirons du Backlog Product. Après avoir fixé l’objectif du sprint 2,
nous définissons quelles sont les « user stories » qui vont faire l’objet du Backlog de ce sprint. Nous présentons
à travers le tableau 5.9 les différentes tâches de chaque user story.
82
Table 5.9 – Backlog du sprint 4
Par la suite, nous présentons la phase d’analyse dont nous décrivons le diagramme de cas d’utilisation et
la description textuelle. La figure 5.21 décrit le diagramme de cas d’utilisation détaillé relatif a ce sprint ainsi
quesa description textuelle à travers le tableau 5.10
Figure 5.21 – Diagramme de cas d’utilisation envoyer des messages, des notifications et des recommanda-
tions
83
Table 5.10 – Description textuelle de cas d’utilisation du sprint 4
Clause Description
Identifiant Gérer les ressources.
l’administrateur peut gérer les statistiques et l’utilisateur peut
Résumé consulter et envoyer des message ainsi que recevoir des recom-
mandations.
Acteur Administrateur et utilisateur
Contexte de déclenche-
Authentification préalable.
ment
Pré conditions Api-token valide.
Si l’administrateur possède la clé d’autorisation valide,il peur gé-
rer les statistiques. Si l’utilisateur possède la clé d’autorisation
Description
valide, il peut consulter et envoyer des message ainsi que rece-
voir des recommandations.
La figure 5.22 illustre le diagramme détaillant le cas d’utilisation d’envoie d’un message ainsi que sa descrip-
tion textuelle présentée dans le tableau 5.11.
84
5.3.1.4 Diagramme de cas d’utilisation détaillé de la consultation des recommandations
La figure 5.23 illustre le diagramme détaillant le cas d’utilisation de la consultation des recommandations
ainsi que sa description textuelle présentée dans le tableau 5.12.
La figure 5.24 illustre le diagramme détaillant le cas d’utilisation de la gestion des statistiques de l’application
ainsi que sa description textuelle présentée dans le tableau 5.13.
85
Table 5.13 – Description textuelle du cas d’utilisation gérer les statistiques
5.3.2 Conception
Dans cette partie, nous passons à la deuxième activité dans le sprint de la gestion des messages , recomman-
dations et statistiques qui est la conception où nous présentons les diagrammes de séquences, d’activités ainsi
que le diagramme de classes de ce sprint.
Le diagramme illustré dans la figure 5.25 est le séquencement des interactions entre l’adminidtrateur et les
objets du système responsable des statistiques.
Dès la demande de l’administrateur de la page des statistiques, le composant côté client consomme le web
service de gestion des statistiques exposé par le contrôleur responsable de la partie back-end, ce dernier extrait
les données et renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat est un succés, alors le
composant se met a jours et affiche les différents graphiques contenant les statistiques des données.
86
Figure 5.25 – Diagramme de séquence pour le scénario gérer les statistiques
Le diagramme illustré dans la figure 5.26 est le séquencement des interactions entre l’utilisateur et les objets
du système responsable de l’envoie des messages .
Dès la validation de l’administrateur après la saisie du message, le composant côté client consomme le web
service d’envoie de messages exposé par le contrôleur responsable de la partie back-end, ce dernier envoie le
message en temps réel a travers Firebase cloud Messaging(FCM) et renvoi un résultat sous forme de JSON.
Le composant de la partie front-end agit selon le résultat du JSON, si le résultat est un succés, alors le
composant se met a jours en affichant le message envoyé.
87
Figure 5.26 – Diagramme de séquence pour le scénario envoyer des messages
88
Figure 5.27 – Diagramme d’activité envoyer un message
La figure 5.28 décrit le diagramme de classes que nous avons utilisé pour développer le quatrième sprint.
5.3.3 Réalisation
Dans cette section, nous présentons les résultats de ce sprint où nous allons exposer quelques interfaces à
travers différentes imprimes écrans réalisées.
89
5.3.3.1 Interface d’ajout d’envoie de messages
5.4 Conclusion
Dans ce chapitre, nous avons décrit les étapes effectuées durant le deuxième release qui a été consacrée
pour la gestion des annonces,avis et signal chat. Pour chaque sprint, nous avons commencé par une spécification
fonctionnelle, ensuite, nous avons détaillé la conception en présentant les diagrammes de séquences et de classes.
Enfin, nous avons clôturé par la présentation de la réalisation via les interfaces Homme-Machine.
90
Conclusion Générale
L’objectif visé à travers ce rapport est de présenter notre application mobile d’échange de bien et de services
réalisée au cours de notre stage de projet de fin d’études au sein de la société Anypli.
Dans un premier temps, nous avons consacré nos réflexions à l’étude de l’existant, et nous avons critiqué les
applications existantes dans le marché pour améliorer notre application.
Cette étude nous a permis de passer à une phase plus importante qui est : citer les besoins de l’application
et les répartir en besoins fonctionnels et non fonctionnels. Une phase de conception détaillée a précédé l’im-
plémentation de ce projet. En effet, on a pu développer une application mobile qui répond éventuellement aux
exigences soulignés pendant l’analyse et la conception.
Nous avons également appris à appliquer les bonnes pratiques de la réalisation d’un produit de qualité,
tout en appliquant Scrum comme une méthodologie de développement. Mis à part l’instabilité des besoins,
les obstacles techniques rencontrés, ainsi que la période critique de la pandémie, nous considérons que notre
travail a atteint les objectifs définis au niveau du Backlog produit. Néanmoins, il reste toujours susceptible à
être amélioré et à évoluer.
Ce stage était une opportunité pour observer le déroulement de la vie professionnelle et les difficultés que
rencontre chaque membre de la sociétéé au quotidien pour faire évoluer les projets.
Chaque jour les membres de l’équipe alternent des tâches d’organisation, de réflexion, de débuggage, d’amé-
lioration ou même de documentation. Cela nous a permis de nous rendre compte des différentes tâches auxquelles
nous serons confronté et que parfois la connaissance seule ne suffit pas pour résoudre les problèmes. Cela nous
permet de dire que rien n’est acquis et que le travail d’ingénieur est une formation et un apprentissage de tous
les jours. Ce projet est un noyau sur lequel on peut prévoir plusieurs perspectives :
• Rendre cette application disponible sur Android.
• Possibilité de signaler un utilisateur.
• Affichage des annonces sur une carte indiquant leurs emplacements.
• Création d’une sorte de monnaie électronique, virtuelle pour les utilisateurs qui garantira certains prévi-
lèges.
91
Nétographie
92
93