Rapport PFE Model MR
Rapport PFE Model MR
Université de la Manouba
Réalisé par
Rim Ben Abdelfatteh
Encadré par
M. Marouen Kachroudi – ISAMM
M. Oussema Ben Amor – NAXXUM MEA
À Dieu tout-puissant, qui m’a donné la force, la volonté et le courage nécessaires pour mener
ce travail à terme.
À ma famille qui a toujours été mes piliers, me guidant avec sagesse et m'encourageant à
poursuivre mes rêves.
À mes amis qui ont été mes compagnons de route, apportant de la joie, des rires et un
précieux soutien à chaque étape.
À mes chers proches, votre présence chaleureuse et vos encouragements sincères ont illuminé
mon chemin.
À tous ceux qui me sont chers, à l’homme de ma vie qui m’a toujours soutenu.
Remerciements
Je tiens à exprimer ma sincère gratitude envers toutes les personnes qui m'ont soutenu
tout au long de ce projet. Tout d'abord, je remercie chaleureusement mes enseignants de
l’Institut Supérieur des Arts Multimédia de la Manouba pour leurs précieuses guidances et leurs
conseils éclairés. Leur expertise a été d'une importance capitale pour la réussite de ce projet.
Enfin, je tiens à exprimer mes remerciements à ma famille et mes amis pour leur soutien
indéfectible et leur encouragement constant. Leur confiance en moi a été ma source
d'inspiration.
Notre rapport comporte sur cinq chapitres, apportant chacun une perspective
enrichissante à notre projet.
Le premier chapitre, "Contexte général du projet", nous immerge dans le cadre de travail en
exposant la problématique sous-jacente, en décrivant le contexte global de notre projet, et en
expliquant notre choix de la méthodologie SCRUM.
1
Le deuxième chapitre, intitulé "Étude Préalable", approfondit les aspects conceptuels et
logiciels de notre application tout en spécifiant les exigences. Il met en évidence les besoins
fonctionnels et non fonctionnels qui ont guidé notre démarche, ainsi qu'la planification du
projet.
Le troisième chapitre, "Release 1", se concentre sur les particularités du premier livrable,
détaillant les sprints 1 et 2 et présentant les fonctionnalités essentielles que nous avons
développées.
Le quatrième chapitre, "Release 2", est entièrement consacré aux sprints 3 et 4, offrant un
aperçu des innovations que nous avons apportées.
Le cinquième chapitre, "Release 3", éclaire les sprints 5 et 6, ajoutant une dimension
supplémentaire à notre projet.
Notre rapport s'achève par une synthèse de nos découvertes et une réflexion sur les perspectives
à venir, créant ainsi une toile complète de notre travail accompli jusqu'à présent.
2
Chapitre I : Contexte général du projet
Introduction
Tout d’abord, dans ce chapitre, nous présenterons l’organisme d’accueil au sein de
laquelle nous avons réalisé ce stage. Ensuite, nous décrirons le cadre général du projet et nous
analyserons les différents projets existants à travers une étude approfondie pour identifier notre
problématique et proposer une solution. Enfin, nous introduisons le choix de l’approche adopté
dans la réalisation du projet.
Naxxum Group est un hub de startup, permettant de transformer une idée de l’état
embryonnaire à la concrétisation et au développement d’un business réel. De plus, Naxxum est
avant tout un ensemble de jeunes talents passionnés de nouvelles technologies croyant que
l’innovation est un moyen de progression sociale, économique et culturelle. Par le biais de
l’innovation, Naxxum Mea opte pour mettre à disposition son savoir-faire pour mener des
projets proposant des solutions aux problématiques de tous les jours des homos sapiens du
21éme siècle.
Naxxum est une Entreprise de Services du Numérique internationale, l’une de partenaire
de Microsoft, qui offre des services IT tournant autour des prestations de conseil,
développement spécifique, maintenance (corrective, évolutive, préventive), assurance qualité
et du cyber sécurité.
3
I.2 Organigramme de l’organisme d’accueil
Dans cette section, nous présentons une étude qui se base sur l'observation de différentes
applications web similaires à celles que nous sommes chargés de développer. L'examen des
applications existantes est important, car il nous permet de comprendre les tendances actuelles
du marché, d'identifier leurs atouts majeurs, et ensuite d'entreprendre une évaluation critique.
4
II.1.1 Solutions Existantes
• Mobicoop est un site de covoiturage coopératif basé sur l'économie sociale et solidaire.
Le fonctionnement est simple : les conducteurs postent leur trajet en indiquant les détails
tels que la date, l'heure et le lieu de départ et d'arrivée. Les passagers peuvent ensuite
réserver une place et participer aux frais de manière solidaire, selon une fourchette de
prix recommandée.
• Go voiturage est un nouveau site de covoiturage en Tunisie, qui malgré son aspect très
pratique, n'a pas encore attiré un grand nombre d'utilisateurs. Le fonctionnement du site
est simple : le conducteur doit remplir un formulaire pour publier une annonce de
covoiturage, tandis que le passager peut consulter les annonces publiées et choisir celle
5
qui lui convient en fonction des lieux de départ et de destination ainsi que de la date.
Ensuite, le passager peut contacter le conducteur par email ou téléphone pour réserver
une place.
Pour évaluer les solutions existantes, nous avons pris en compte les retours d'utilisateurs
de ces applications sur les réseaux sociaux, ce qui nous a permis d'obtenir une compréhension
plus approfondie concernant principalement les critères relatifs à l'ergonomie, aux options de
paiement, aux fonctionnalités fournies, à la sécurité, au support client et à l’interactivité entre
les utilisateurs. Ci-après, un tableau qui illustre le résultat de cette étude comparative.
Options de
***** ***** *
paiement
Interactivité entre
** * *
les utilisateurs
Tableau 1: Tableau comparative des plateformes
6
II.1.3 Critique de l'existant
• Temps d'attente trop longs : Les temps d'attente pour trouver un covoitureur sont
souvent trop longs, ce qui peut décourager les utilisateurs et les amener à chercher
d'autres solutions de transport.
• Manque de flexibilité : Les solutions de covoiturage actuelles ne sont pas suffisamment
flexibles pour répondre aux besoins des utilisateurs en termes de choix de trajet et de
critères de sélection des covoitureurs.
• Expérience utilisateur limitée : L'expérience utilisateur des solutions de covoiturage
actuelles peut être limitée en termes de facilité d'utilisation, de convivialité de l'interface
utilisateur, ou de qualité du service client.
• Certaines solutions exigent que le paiement soit effectué avant la prise de contact avec
le conducteur.
Notre projet vise à mettre en œuvre une solution innovante de covoiturage, offrant aux
utilisateurs la possibilité de trouver des covoitureurs pour partager les frais de transport entre
différents points de départ et d'arrivée. Cette application se distingue par sa fonctionnalité de
réponse assez interactive et rapide. Le projet sera réalisé à travers deux parties distinctes : une
partie Web pour l’administrateur et une partie Mobile pour les utilisateurs, afin de fournir une
expérience utilisateur fluide.
Notre plateforme de covoiturage vise à surmonter ces limitations en offrant une
expérience utilisateur optimale. Nous avons pour objectif de transformer l'industrie du
covoiturage en proposant une plateforme souple, dynamique et centrée sur les besoins
individuels.
Nous devons noter aussi que la solution proposée est une solution qui va aider à :
7
• La possibilité aux conducteurs de publier des annonces pour proposer et les clients pour
rechercher des trajets spécifiques avec plusieurs options comme animaux autorisés ou
pas, WIFI disponible ou pas, bagages autorisés ou pas, fumeurs autorisés ou pas etc...
• La possibilité aux utilisateurs de signaler tout comportement inapproprié des
conducteurs pour une expérience de covoiturage sécurisée et agréable.
• La réservation et l’annulation des trajets simplifiées grâce à une interface intuitive.
• La permission aux utilisateurs de partager leur expérience et donner leur avis pour
améliorer la qualité du service.
• Le suivi personnalisé pour garantir la satisfaction totale des clients.
8
Grande flexibilité face aux Peut être difficile à appliquer
changements. pour des projets complexes.
SCRUM Réduction du gaspillage et Exige une certaine discipline
de la surcharge. pour suivre le processus.
Transparence et visibilité
du processus.
Scrum est conçu pour les petites équipes et vise à maximiser la productivité grâce à des
règles de vie flexibles adaptées au cycle de développement [1]. Voici un schéma illustrant le
fonctionnement de Scrum :
9
Les grandes étapes de la méthode Scrum :
• Sprint Planning : Cette réunion Agile est la première étape du cycle de réalisation. Elle
se déroule au début de l'itération et a pour objectif de sélectionner les user stories qui
seront intégrées dans le cycle de développement d’un sprint.
• Daily Scrum : Il s'agit de la réunion la plus importante du cycle Agile, centrée sur
l'efficacité opérationnelle. Elle dure 15 minutes, se tient quotidiennement et rassemble
l'équipe de développement. Durant cette réunion, chaque membre est appelé à partager
les points de situation :
➢ Les progrès réalisés depuis la dernière réunion.
➢ Les tâches qu'il a prévu d'accomplir au cours de la journée.
➢ Les obstacles ou difficultés rencontrés dans la réalisation des tâches depuis la
dernière réunion.
• Sprint Review : C'est lors de cette réunion, qui marque la fin d'une itération de
développement, que l'équipe SCRUM présente son travail aux parties prenantes du
projet, les "Stakeholders". L'objectif est de démontrer que toutes les fonctionnalités
développées fonctionnent conformément aux spécifications. Chaque "User Story" est
passée en revue et démontrée.
• Sprint rétrospective : L'objectif fondamental de cette réunion consiste à évaluer le
sprint écoulé en examinant les réussites remarquables dans la résolution des difficultés
et à tirer des enseignements précieux des pratiques bénéfiques. De plus, elle vise à
identifier clairement les erreurs ou les inefficacités relevées pendant cette période de
travail. Cette rencontre représente un moment crucial pour l'ensemble de l'équipe,
offrant à chacun l'opportunité de présenter son point de vue sur l’amélioration du
fonctionnement de l'équipe, que ce soit du point de vue technique ou organisationnel.
10
• L'équipe de développement : Est composée de professionnels de développement qui
fournissent à la fin de chaque Sprint un incrément abouti du produit, pouvant être livré
potentiellement. Ces membres sont autonomes dans leur organisation et possèdent des
compétences variées [4].
Dans notre projet, les rôles sont répartis comme suit :
➢ Product Owner : Mr. Yasser AROUAOUI
➢ Scrum Master : Mme Malek HARB et Mr Oussema ben Amor
➢ Equipe de travail : Rim Ben Abdelfatteh, Mohamed Omar SLAMA, et Chiheb
Eddine ALLOUCHE
Conclusion
11
Chapitre II : Etude Préalable
Introduction
Dans ce chapitre, nous avons choisi une approche détaillée pour présenter notre projet
en précisant les besoins fonctionnels. Nous utilisons le diagramme de cas d'utilisation pour
illustrer les différentes fonctionnalités du système, ainsi que les besoins non fonctionnels qui
expliquent les contraintes à respecter. En plus, nous examinerons d’une manière détaillée le
backlog de notre projet et élaborerons le planning d'exécution des tâches.
Un acteur désigne les actions qu’une entité autonome interne ou externe peut avoir avec
le système dont nous souhaitons décrire le fonctionnement. D’une manière générale, un acteur
correspond à une personne physique ou moral interne ou externe ayant une tâche ou une
interaction avec le périmètre de notre projet.
Voici les acteurs identifiés dans notre projet :
12
être ou faire [5]. Dans ce contexte notre application de covoiturage, doit répondre aux exigences
suivantes :
Un besoin non fonctionnel est un besoin spécifiant des propriétés du système, telles que les
contraintes liées à l'environnement et l'implémentation, les exigences en matière de
performances, de dépendances de plate-forme, de facilité de maintenance, d'extensibilité et de
fiabilité [6]. Dans notre système, les besoins non fonctionnels se présente comme suit :
13
• Performance : l'application doit être rapide et réactive, en offrant des temps de réponse
rapides même avec un grand nombre d'utilisateurs simultanés.
• Scalabilité : l'application doit pouvoir gérer une augmentation du nombre d'utilisateurs
et de trajets sans compromettre ses performances.
• Convivialité : notre application doit fournir des interfaces simples et élégantes
conformes aux normes d’ergonomie dont le but est de garantir une facilité d’exploitation
et une rapidité de service.
• Sécurité : les données des utilisateurs et les communications doivent être protégées et
sécurisées contre tout accès non autorisé.
• Maintenance : l'application doit être facile à entretenir et à mettre à jour, minimisant
ainsi les temps d'arrêt et les perturbations pour les utilisateurs.
• Efficacité : l’application devra être fonctionnelle indépendamment de toutes
circonstances pouvant entourer l’utilisateur.
• Disponibilité : l’application doit être disponible à tout moment sans défaillance pour
répondre au besoin de client.
Le diagramme de classe globale représente la structure et les relations entre les classes
principales du système de l'application de covoiturage. Il offre une vue d'ensemble des entités
clés, de leurs attributs et de leurs relations, permettant ainsi de comprendre la structure générale
du système et comment les différentes classes interagissent entre elles.
14
Figure 7: Diagramme de cas d’utilisation global
15
Figure 8: Diagramme de classes global
16
I.7 Planification du projet
La planification de projet joue un rôle vital dans la gestion efficace des tâches, des
ressources et des délais. Les tableaux de Gantt, largement utilisés dans ce contexte, offrent une
vue visuelle des différentes étapes du projet, facilitant ainsi la coordination et le suivi des
activités. Ce tableau présente la planification prévue pour la réalisation des différentes phases
du projet.
Dans le cadre de ce projet, nous avons bénéficié de l'occasion d'exploiter Azure DevOps
pour assurer la gestion et le suivi de notre projet. Pour traduire les diverses user stories à
développer en tâches concrètes, nous avons choisi d'utiliser Azure Boards. Parallèlement, Azure
Repos a été employé pour gérer notre code source, à travers la création de trois dépôts distincts.
Microsoft Azure DevOps est un outil qui prend en charge les équipes de développement
de logiciels tout au long du cycle de vie du développement, de la collecte des exigences à la
mise en œuvre, aux tests et au déploiement automatisé. Le nom DevOps est dérivé des
abréviations Développement (Dev) et Operations (Ops) et est considéré comme l’une des
principales tendances de l’industrie qui attire de plus en plus l’attention [8].
Dans le cadre de notre démarche, nous avons choisi d'adopter Azure Boards comme
outil central pour la gestion des user stories à élaborer. Cette plateforme nous permet de manière
visuelle et structurée de suivre l'évolution de chaque étape du projet, comme illustré dans la
figure suivante :
17
Figure 11: Interface de gestion avec Azure Boards
Nous avons opté pour l'utilisation d'Azure Repos pour assurer la gestion du code source
de notre application. Cette plateforme nous offre un espace centralisé pour stocker, modifier et
collaborer sur le code, renforçant ainsi notre processus de développement, comme démontré
dans la figure suivante :
18
N° de
La
la Rôle User story Priorité
durée
tache
En tant
Administrateur/
qu’utilisateur je
1 Conducteur / 10 1
peux créer un
Passager
compte
Sprint 1 : En tant
Administrateur/
Release 1 authentification qu’utilisateur je
2 Conducteur / 10 2
peux accéder à
Passager
l’application
En tant
qu’utilisateur, si
Administrateur/
j'ai oublié mon
3 Conducteur / 10 3
mot de passe, je
Passager
peux le
réinitialiser
En tant
qu’administrateur
4 Administrateur je peux consulter 5 1
la liste des
utilisateurs
En tant
Conducteur / qu’utilisateur je
5 5 5
Passager peux changer
mon rôle
En tant
Sprint 2 : qu’administrateur
Gestion des 6 Administrateur je peux modifier 5 5
utilisateurs le rôle
Release 1
d’utilisateur
En tant
qu’administrateur
7 Administrateur 5 3
je peux bloque un
utilisateur
En tant
Administrateur/ qu’utilisateur je
8 Conducteur / peux modifier 5 3
Passager mes données
personnelles
Sprint 3 : En tant
Administrateur/
Release 2 Gestion qu’utilisateur je
9 Conducteur / 5 2
d’Annonce peux changer
Passager
mon mot de passe
19
En tant que
conducteur je
10 Conducteur peux poster une 3 1
annonce de
covoiturage
En tant que
conducteur je
11 Conducteur peux modifier 3 4
une annonce de
covoiturage
En tant
qu’utilisateur je
Conducteur /
12 peux supprimer 3 5
Administrateur
une annonce de
covoiturage
En tant
qu’administrateur
je peux ajouter
13 Administrateur option (WIFI, 3 5
bagages,
animaux,
fumeurs…)
Release 2 Sprint 3 : En tant
Gestion qu’administrateur
d’Annonce je peux supprimer
14 Administrateur option (WIFI, 3 5
bagages,
animaux,
fumeurs…)
En tant
qu’utilisateur je
peux choisir les
options de
15 Conducteur 3 5
l’annonce (WIFI,
bagages,
animaux,
fumeurs…)
En tant
Conducteur / qu’utilisateur je
16 3 5
Passager peux commenter
annonce
En tant
qu’administrateur
17 Administrateur je peux consulter 3 3
la liste des
commentaires
20
En tant
Administrateur/
qu’utilisateur je
18 Conducteur / 3 2
peux consulter
Passager
annonce
En tant
qu’utilisateur je
19 Passager 20 1
peux envoyer une
Sprint 4 : réclamation
Gestion des
Réclamations En tant
qu’administrateur
20 Administrateur 10 1
je peux consulter
les réclamations
En tant que
passager je peux
21 Passager réserver places 6 1
sur l’annonce de
trajet
En tant que
conducteur je
22 Conducteur 6 3
peux accepter
réservation
Sprint 5 : En tant que
Release 3 Réservation conducteur je
23 Conducteur 6 3
peux refuser
réservation
En tant
Conducteur / qu’utilisateur je
24 6 5
Passager peux annuler
réservation
En tant
qu’administrateur
25 Administrateur 6 2
je peux consulter
les réservation
Sprint 6 :
Evaluation En tant
Conducteur /
26 qu’utilisateur je 30 1
Passager
peux donner avis
Tableau 3: Backlog du produit
Cette section est dédiée à l'environnement matériel et logiciel qui a été utilisé lors de la
réalisation de notre projet.
21
IV.1 Environnement matériel
Pendant la réalisation de notre application, nous avons utilisé des équipements dotés des
caractéristiques suivantes :
Dans cette section, nous allons introduire le contexte logiciel qui a été utilisé durant la phase de
développement de notre application.
• Visual Studio Code est un éditeur de code source léger mais puissant. Sur le
plan architectural, il combine le meilleur des technologies Web, natives et
spécifiques à la langue [9].
22
Android, iOS, Windows, ainsi que des applications web et des services cloud
[10].
23
• Git Bash Git Bash est une application pour les environnements Microsoft
Windows qui fournit une couche d'émulation pour une expérience de ligne de
commande Git. Bash est l'acronyme de Bourne Again Shell. Un shell est une
application de terminal utilisée pour faire l'interface avec un système
d'exploitation par le biais de commandes écrites. Bash est un shell par défaut
populaire sous Linux et macOS. Git Bash est un package qui installe Bash,
quelques utilitaires Bash courants et Git sur un système d'exploitation Windows
[14].
• Google Chrome est un navigateur web développé par Google, reconnu pour sa
rapidité, sa sécurité et ses nombreuses fonctionnalités. Il est largement utilisé
24
pour naviguer sur Internet et exécuter des applications web. Nous avons utilisé
le navigateur Chrome pour tester et déboguer l’interface utilisateur de notre
application web, en nous assurant qu’elle fonctionne de manière optimale dans
un environnement couramment utilisé par les utilisateurs finaux.
25
Figure 22: Logo du Langage de Modélisation Unifié
L’outil de modélisation UML est similaire aux plans utilisés dans d’autres domaines et
se compose de différents types de diagrammes qui permettent de décrire le comportement du
système ainsi que des objets qui le composent. Ils offrent une représentation graphique claire et
détaillée de notre système, facilitant ainsi la compréhension et la communication au sein de
notre équipe de développement.
Cette partie présente l’ensemble des technologies utilisées pour la réalisation de notre projet.
26
Figure 24: Logo C#
• API Gateway « Ocelot » est un point d’entrée centralisé pour les clients dans
une architecture de microservices. Elle simplifie les requêtes clients en dirigeant
les demandes vers les services appropriés, gérant l’authentification,
l’autorisation et la mise en cache. Elle facilite également la gestion des erreurs,
la surveillance et l’exposition des API. En résumé, l’API Gateway améliore
l’efficacité du développement et la sécurité en centralisant la gestion des
interactions entre les clients et les services [21].
27
différentes parties de l’application peuvent communiquer de manière centralisée
en envoyant des demandes et en gérant les actions à l’aide de gestionnaires
spécifiques. Cela simplifie la gestion des interactions et rend le code plus
modulaire et facilement extensible. MediatR est particulièrement utile pour la
mise en œuvre du modèle CQRS (Command Query Responsibility Segregation)
et pour créer des applications plus flexibles et évolutives [23].
28
Figure 29: Logo MySQL
29
d’applications web complexes en détectant les erreurs à l’avance et en
améliorant la maintenabilité du code [28].
• Bootstrap est un framework CSS open source qui facilite la création d’interfaces
web responsives et esthétiques. Il offre une collection de composants prédéfinis,
de grilles et de styles CSS prêts à l’emploi, accélérant ainsi le processus de
conception et d’alignement [30].
• Les feuilles de style en cascade (CSS) sont utilisées pour définir la présentation
visuelle des éléments HTML. CSS permet de personnaliser les couleurs, les
polices, les marges et d’autres aspects de la mise en page, contribuant à l’aspect
esthétique et à l’expérience utilisateur d’un site web [31].
30
Figure 35: Logo CSS
• Flutter est un framework open source développée par Google pour la création
d’applications mobiles multiplateformes. Il utilise le langage Dart et propose une
approche de développement rapide et cohérente pour iOS et Android. Flutter se
distingue par ses widgets personnalisables et sa haute performance graphique
[32].
31
V. Architecture de l’application
32
sécurité et la performance globale de notre système. Ces décisions architecturales renforcent la
robustesse et la capacité d’adaptation de notre application de covoiturage.
La Clean Architecture est un concept de conception logicielle qui vise à créer des
systèmes modulaires et faciles à entretenir en organisant le code en différentes couches. Ces
couches sont conçues pour être indépendantes les unes des autres, ce qui favorise la séparation
des préoccupations et la réduction des dépendances entre les composants [35].
33
utilisant les services de la couche de domaine. Elle est également responsable de
la validation des données et de la gestion des erreurs.
• Couche d’Infrastructure : Cette couche gère les détails techniques tels que les
bases de données, les services externes, la communication réseau, etc. Elle agit
comme une passerelle entre les couches supérieures et les composants externes,
en veillant à ce que la couche de domaine ne soit pas dépendante des
technologies sous-jacentes.
Le modèle Médiator est un pattern de conception qui facilite les interactions entre les
composants d’une application en centralisant la communication entre eux. Au lieu d’avoir des
liaisons directes entre les composants, Médiator agit comme un intermédiaire, réduisant les
dépendances et simplifiant la maintenance. Il favorise la modularité en permettant aux
composants de collaborer sans connaître les détails de mise en œuvre des autres composants.
Médiator est souvent associé à CQRS pour gérer la communication entre les commandes et les
gestionnaires de requêtes [36].
34
IV.2.2 Le Pattern CQRS
35
également les interactions de l’utilisateur et peut contenir une partie de la logique
métier liée à l’interface.
• Modèle : Tout comme dans l’architecture MVVM, le Modèle gère les données et la
logique métier de l’application.
• Vue : La Vue est chargée de présenter les données au format approprié pour l’utilisateur.
Elle ne contient généralement pas de logique métier.
• Contrôleur : Le Contrôleur agit comme un intermédiaire entre le Modèle et la Vue. Il
gère les interactions de l’utilisateur et la logique de traitement. Contrairement au Vue
Modèle de MVVM, le Contrôleur peut contenir davantage de logique métier, y compris
celle liée à l’interface.
36
Figure 44: Architecture Globale de l’application
Conclusion :
Ce Chapitre a établi un solide fondement pour le projet en présentant le contexte général,
les besoins spécifiques, la méthodologie de développement et les choix architecturaux. Ces
éléments fournissent une base solide pour la réalisation du projet, en alignant les objectifs avec
les ressources et les méthodes les plus appropriées. La prochaine étape consistera à mettre en
œuvre ces concepts et à concrétiser la vision du projet.
37
Chapitre III : Release 1
Introduction
Une fois les exigences identifiées dans le Product Backlog, il est temps d’expliquer en
détail chaque livraison.
Au cours de ce chapitre, nous allons détailler la première livraison, en détaillant les
étapes de sa réalisation.
I. Sprint 1: Authentification
Le début du projet a été marqué par le premier sprint, centré sur l’établissement de
l’authentification et de l’inscription. Ces deux fonctionnalités revêtent une importance cruciale
pour garantir la sécurité de l’application. Avant d’entamer les travaux de ce sprint, l’équipe a
sélectionné les scénarios utilisateurs à traiter au cours de cette phase de développement. Par la
suite, ces scénarios ont été décomposés en tâches élémentaires, avec une estimation de la durée
en heures pour chacune, consignée dans le Backlog du sprint 1.
38
• Réaliser interface
d’activation compte
mobile
• Réaliser interface
d’activation compte web
• Authentification
En tant • Réaliser interface
d’authentification pour
Administrateur/ qu’utilisateur je Dashboard
2 Conducteur / • Réaliser interface 2
peux accéder à
Passager
d’authentification pour
l’application
application mobile
• Réinitialiser le mot de
passe
• Envoyer mail de
En tant
réinitialisation mot de
qu’utilisateur, si passe
Administrateur/ j’ai oublié mon • Réaliser interface de
3 Conducteur / réinitialisation mot de 3
mot de passe, je passe pour Dashboard
Passager
peux le • Réaliser interface
réinitialisation mot de
réinitialiser
passe pour application
mobile
Les diagrammes de cas d’utilisation décrivent ce que fait un système et comment les
acteurs l’utilisent, sans montrer comment le système fonctionne à l’intérieur.
La figure ci-dessous représente le diagramme de cas d’utilisation « S’inscrire ».
39
Figure 45: Diagramme de cas d’utilisation « S’inscrire »
40
I.3.4 Description textuelle du cas d’utilisation « S’inscrire »
partie Mobile
Pour la partie mobile, la description textuelle du cas d’utilisation « S’inscrire » concerne
le processus de création de compte. Cette partie présente en détail les étapes et les
fonctionnalités liées à cette fonctionnalité. Le tableau suivant détaille la description textuelle
du cas d’utilisation « S’inscrire » dans la partie mobile.
Post-condition Créer un compte correct qui permet la connexion, et l’accès aux services
de l’application.
Scénario 1. L’utilisateur remplit les champs du formulaire (Nom utilisateur, mot
nominal
de passe …)
2. Soumettre le formulaire.
3. Vérification des informations par le système, et l’envoie d’un code
pour confirmer le compte.
4. L’utilisateur saisi le code de confirmation reçu par mail.
5. Compte créé.
Scénario 1.1 Si les champs obligatoires sont vides, ou les données entrées ne
alternatif vérifies pas la forme demandée : un message d’erreur est affiché, et
demande de ressaisie.
3.1 Si le compte est déjà existant : affichage d’un message d’erreur.
4.1 Si le code est incorrect : affichage d’un message d’erreur.
Tableau 5: Description textuelle du cas d’utilisation « S’inscrire » partie mobile
41
Figure 48: Diagramme de séquence « S’inscrire » partie Mobile
Acteur(s) Administrateur.
42
Pré condition L’Administrateur n’a pas un compte.
Post-condition Créer un compte correct qui permet la connexion, et l’accès aux services
de Dashboard.
Scénario 1. L’Administrateur remplit les champs du formulaire (Nom utilisateur,
nominal mot de passe …)
2. Soumettre le formulaire.
3. Vérification des informations par le système, et l’envoie d’un email
pour confirmer le compte.
4. Confirmation de compte à travers le lien reçu par mail.
5. Compte créé.
Scénario 1.1 Si les champs obligatoires sont vides, ou les données entrées ne
alternatif vérifies pas la forme demandée : un message d’erreur est affiché, et
demande de ressaisie.
3.1 Si le compte est déjà existant : affichage d’un message d’erreur.
4.1 Si l’Administrateur se connecte sans avoir confirmer son compte
avec le lien reçu par mail : affichage d’un message d’erreur.
Tableau 6: Description textuelle du cas d’utilisation « S’inscrire » partie web
43
Figure 49: Diagramme de séquence du cas d’utilisation « S’inscrire » Web
Acteur(s) Administrateur.
Pré condition L’Administrateur est déjà inscrit.
Post-condition Accès au Dashboard.
44
Scénario 1. L’Administrateur remplit le formulaire.
nominal 2. Le système vérifie les données saisies.
4. Le système affiche l’interface d’accueil.
Scénarios 1.1 L’Administrateur remplit le formulaire par des données incorrectes.
alternatif 1.2 Le système vérifie les données et Le système affiche un message
d’erreur.
Tableau 7: Description textuelle du cas d’utilisation « S’authentifier » partie web
45
I.3.10 Description textuelle du cas d’utilisation « Mot de passe
oublié » partie Mobile
Le Tableau 8 décrit de manière détaillée le cas d’utilisation « Mot de passe oublié » dans
la partie Mobile, mettant en lumière les étapes clés de ce processus.
46
Figure 51: Diagramme de séquence de mot de passe oublié
La revue du sprint est tenue à la fin de chaque Sprint pour démontrer l’incrément, l’inspecter et
adapter le Product Backlog si nécessaire.
Les figures suivantes représentent l’interface d’inscription partie Web et Mobile :
• L’interface d’inscription côté web permet aux administrateurs de créer un compte sur le
Dashboard Admin en fournissant ses informations.
47
• Interface de Connexion Web représente l’écran par lequel les administrateurs peuvent
se connecter au Dashboard en saisissant leur adresse e-mail et leur mot de passe.
48
Figure 55: Interfaces mot de passe oubliée Application Mobile
• La figure suivante représente l’e-mail envoyé aux utilisateurs après leur inscription sur
notre plateforme. Cet e-mail contient un message, un lien de confirmation, et le code de
vérification pour activer leur compte.
49
• Les interfaces de l’application mobiles comprennent l’inscription, la connexion, le
téléchargement d’une image de profil et la vérification par e-mail via un code. Elles
offrent une expérience utilisateur complète et sécurisée.
50
permis de tirer des enseignements précieux pour optimiser notre méthodologie et notre
efficacité.
Le tableau ci-dessous illustre les résultats de la rétrospective du sprint 1 :
Ce qui a bien fonctionné Ce qui peut être amélioré Plan d’actions
• L’installation de
• La bonne • Renforcer la
l’environnement de travail
compréhension des communication au sein de
• Authentification mise en
besoins de Product l’équipe en organisant des
place avec succès
Owner réunions plus fréquentes.
Ce sprint a été consacré à la mise en place de Microservice Gestion des profils pour
permettre à l’utilisateur, conducteur ou passager, de gérer son profil, son rôle, et à
l’administrateur de gérer les utilisateurs et son profil.
• Mettre en place les fonctionnalités nécessaires pour que les utilisateurs puissent
modifier leurs données personnelles et de personnaliser leurs profils sur la
plateforme et de changer leurs propres mots de passe en toute simplicité.
• Permettre d’une part à l’administrateur de consulter la liste des utilisateurs, de
changer le rôle d’un utilisateur et de bloquer un utilisateur.
51
• Basculer entre rôle «
En tant conducteur » ou
Conducteur / qu’utilisateur je « passager »
5 peux changer mon • Réaliser une interface 5
Passager
rôle mobile pour changer le
rôle
En tant • Modifier le rôle d’un
qu’administrateur utilisateur
6 Administrateur je peux modifier le • Réaliser une interface 5
rôle d’un web simple pour changer
utilisateur le rôle d’un utilisateur
52
Figure 59: Diagramme de cas d’utilisation « Gérer son profil »
53
II.3.2 Diagramme de cas d’utilisation « Modifier son rôle »
La figure suivante représente le diagramme des cas d’utilisations détaillé du sprint 2 « Modifier
son rôle » :
54
II.3.4 Description textuelle du cas d’utilisation « Modifier le rôle
d’un utilisateur »
Acteur(s) Administrateur
55
Figure 63: Diagramme de séquence du cas d’utilisation « Modifier le rôle d’un utilisateur »
Tableau 12: Description textuelle du cas d’utilisation « Modifier ses données personnelles »
56
II.3.7 Diagramme de séquence du cas d’utilisation « modifier
profil »
Le diagramme suivant illustre de manière séquentielle les étapes et les interactions entre
l’utilisateur et le système lorsqu’il effectue des modifications à son profil dans l’application.
Figure 64: Diagramme de séquence du cas d’utilisation « Modifier ses données personnelles »
Cette partie décrit comment un utilisateur peut mettre à jour son mot de passe au sein
de l’application pour renforcer la sécurité de son compte.
Cas d’utilisation Changer mot de passe
57
4. L’utilisateur clique sur enregistrer le
changement.
Scénario alternatif 2.1 Le mot de passe actuel saisit par
L’utilisateur est incorrect : afficher un
message d’erreur.
2.2 Le nouveau mot de passe saisit par
L’utilisateur est court ou faible (au moins 8
caractères avec au minimum un chiffre, un
caractère spécial et une lettre en majuscule).
Tableau 13: Description textuelle du cas d’utilisation « Changer mot de passe »
La figure suivante montre les étapes et les interactions entre l’utilisateur et le système lors
d’un changement de mot de passe.
58
II.4 Sprint Review
Pour illustrer la réalisation de la gestion des profils, des captures d’écran ont été incluses
dans la Sprint Review, mettant en évidence les fonctionnalités implémentées telles que la
modification des informations personnelles et la mise à jour des images de profil. Ces images
offrent un aperçu concret des avancées réalisées au cours de ce sprint.
59
Figure 68: Interface de gestion de profil administrateur
• Voici les interfaces de l’application mobile de gestion des profils pour les utilisateurs,
offrant une expérience conviviale et pratique pour la gestion de leurs informations
personnelles, de leur photo de profil, et d’autres paramètres associés à leur profil au sein
de l’application.
60
II.5 Rétrospective du Sprint n°2
Pour garantir une amélioration continue, nous avons élaboré un plan d’amélioration
comprenant les actions suivantes notamment en ce qui concerne la gestion des images des
profils, nous avons remarqué que le chargement prend un temps assez important qui dépend de
la taille de l’image. Pour y remédier, nous avons prévu d’implémenter une solution de stockage
d’images plus efficace et conviviale :
Ce qui a bien fonctionné Ce qui peut être amélioré Plan d’actions
• Mise en place d’une
• Gestion des profils mise en • Gestion des images à solution de réduction de
place de manière efficace. améliorer. temps de chargement
d’image.
Conclusion
La Release 1, englobant les sprints 1 et 2, axés sur l’authentification et la gestion des
profils, a été couronnée de succès. Les livrables du Sprint 1 et Sprint 2 ont marqué une avancée
significative dans notre projet, améliorant ainsi l’expérience globale de nos utilisateurs. Nous
sommes désormais prêts à poursuivre notre progression avec la Release 2 pour étendre
davantage les fonctionnalités de notre application.
61
Chapitre IV : Release 2
Introduction
Dans cette deuxième phase de notre projet, appelée Release 2, nous nous concentrons
sur deux aspects essentiels : la gestion des annonces lors du Sprint 3 et la gestion des
réclamations lors du Sprint 4. Ces éléments sont cruciaux pour offrir une expérience utilisateur
optimale. Nous explorerons en détail les fonctionnalités développées dans ces sprints, en
mettant en avant leurs bénéfices pour notre système de covoiturage.
62
ID Rôle User story Tâches Priorité
10 En tant que • Ajouter une annonce
conducteur je • Réaliser une interface
Conducteur peux poster une Mobile pour ajouter 1
annonce de une annonce
covoiturage
11 En tant que • Modifier une annonce
conducteur je • Réaliser une interface
Conducteur peux modifier Mobile pour afficher
une annonce de les données actuelles 4
covoiturage d’une annonce et les
modifier
12 En tant • Suppression logique
qu’utilisateur je d’une annonce
Conducteur / peux supprimer • Confirmer la 5
Administrateur une annonce de suppression d’une
covoiturage annonce
13 En tant • Ajouter une option de
qu’administrateur covoiturage (défense
je peux une ou pas de fumer, wifi,
ajouter des animaux etc…)
options • Réaliser une interface
Administrateur spécifiques pour web pour ajouter des 5
les annonces options (défense ou pas
(défense ou pas de fumer, wifi,
de fumer, wifi, animaux etc…)
animaux etc..)
14 En tant • Supprimer une option
qu’administrateur (défense ou pas de
je peux supprimer fumer, wifi, animaux
Administrateur une option etc...) 5
(défense ou pas
de fumer, wifi,
animaux etc..)
15 En tant • Récupérer les options
qu’utilisateur je (défense ou pas de
peux choisir les fumer, wifi, animaux
options de etc..)
Conducteur l’annonce • Afficher les options 5
(défense ou pas • Sélectionner les
de fumer, wifi, option(s) (défense ou
animaux etc..) pas de fumer, wifi,
animaux etc..)
63
16 En tant • Ajouter commentaire
Conducteur / qu’utilisateur je • Afficher les
peux commenter commentaires de 5
Passager
annonce chaque annonce
17 En tant • Récupérer les
qu’administrateur commentaires
Administrateur je peux consulter • Afficher les 3
les commentaires commentaires
18 En tant • Récupérer les
Administrateur/ qu’utilisateur je annonces
Conducteur / peux consulter les • Afficher les annonces 2
Passager annonces
Figure 70: Diagramme de cas d’utilisation « Gérer les annonces pour les conducteurs »
64
I.3.2 Diagramme de cas d’utilisation « Gérer les annonces pour
les passagers »
Les interactions des passagers avec les annonces sont illustrées dans ce diagramme :
Figure 71: Diagramme de cas d’utilisation « Gérer les annonces pour les passagers »
Figure 72: Diagramme de cas d’utilisation « Gérer les annonces pour administrateur »
65
I.3.4 Diagramme de cas d’utilisation « Gérer les options »
Le schéma qui se suit représente la gestion des options, comme animaux autorisés ou
pas, WIFI disponible ou pas, bagages autorisés ou pas, fumeurs autorisés ou pas etc, au sein
d’une application ou d’un système par l’administrateur.
Le diagramme suivant représente les classes et des relations spécifiques développées lors du
troisième sprint du projet.
66
I.3.6 Description textuelle du cas d’utilisation « Ajouter une
annonce »
Acteur(s) Conducteur
67
Scénario alternatif 13.1 Le conducteur annule la publication de
l’annonce
Tableau 16: Description textuelle du cas d’utilisation « Ajouter une annonce »
68
Post-condition L’annonce est modifiée.
Scénario nominal 1. Le conducteur accède à la liste de ses annonces.
2. Le conducteur sélectionne l’annonce qu’il
souhaite modifier.
3. L’interface affiche les informations actuelles de
l’annonce.
4. Le conducteur modifie les informations
nécessaires de l’annonce.
5. Le conducteur clique sur le bouton enregistrer.
6. Le conducteur confirme la modification de
l’annonce.
Scénario alternatif 6.1 Le conducteur annule la modification de
l’annonce
Tableau 17: Description textuelle du cas d’utilisation « Modifier une Annonce »
69
I.4 Sprint Review
Pour rendre compte de la mise en œuvre de la gestion des annonces, des options (défense
ou pas de fumer, wifi, animaux etc..), et des commentaires, ces captures d’écran sont fournies
dans la Sprint Review, montrant les fonctionnalités clés mises en place. Ces images illustrent
visuellement les progrès réalisés au cours de ce sprint.
• Les interfaces suivantes sont des captures d’écran qui montrent le tableau de
bord de l’administrateur pour gérer les annonces, les options et les
commentaires, respectivement.
70
Figure 79: Interface gestion des commentaires partie administrateur
• Les interfaces de gestion des annonces pour les utilisateurs sur la partie mobile
fournissent aux utilisateurs les outils nécessaires pour gérer leurs propres annonces ou
interactions avec les annonces sur l’application mobile. Cela inclut la recherche
d’annonces, la consultation des détails des annonces, la publication de l’annonce, et
d’autres fonctionnalités liées aux annonces.
71
I.5 Rétrospective du Sprint n°3
Dans ce sprint, nous avons réussi à mettre en place la gestion des annonces. Cependant,
nous avons également identifié quelques domaines d’amélioration, notamment en ce qui
concerne la suivie en temps réel de la localisation du covoitureur par le passager, et de la
localisation du passager par le covoitureur.
Ce qui a bien fonctionné Ce qui peut être amélioré Plan d’actions
Le quatrième sprint a été consacré à la gestion des réclamations afin de limiter les tentatives de
fraudes et d’assurer la sécurité des utilisateurs pour une bonne expérience de covoiturage.
• Aux passagers de signaler des problèmes liés aux annonces ou conducteurs, une
interface conviviale sera mise en place pour faciliter le processus de signalement.
• Enregistrement des réclamations des passagers de manière fiable. En parallèle, un
tableau de bord administratif sera développé pour permettre à l’administrateur de gérer
efficacement ces signalements et de prendre les mesures appropriées pour maintenir un
environnement respectueux et transparent au sein de la plateforme.
72
ID Rôle User story Tâches Priorité
En tant que • Sélectionner type de
passager je peux réclamation
19 Passager envoyer une • Envoyer une 1
réclamation réclamation
En tant
qu’administrateur • Consulter une
20 Administrateur je peux consulter réclamation 1
les réclamations
73
Figure 83: Diagramme de classe de Sprint n°4
Acteur(s) Passager
74
5. Le passager confirme l’envoi de la
réclamation.
6. La réclamation est envoyée à
l’administrateur.
Figure 84: Diagramme de séquence du cas d’utilisation du cas d’utilisation « Envoyer une
réclamation »
La revue de sprint relatif à la gestion des réclamations est illustrée par des captures
d’écran détaillant la mise en place des fonctionnalités liées aux réclamations. Ces images offrent
75
une vue visuelle de la façon dont les utilisateurs peuvent soumettre des réclamations et comment
les administrateurs peuvent gérer ces réclamations de manière efficace.
• Ces interfaces, qui se trouvent dans partie des utilisateurs, permettent d’illustrer l’envoi
d’une réclamation.
76
II.5 Rétrospective du Sprint n°4
Conclusion
En conclusion de cette deuxième release, la gestion des annonces permet aux
conducteurs de publier et de gérer leurs offres de covoiturage de manière conviviale, alors que
la gestion des réclamations offre aux utilisateurs un moyen simple et efficace pour signaler des
problèmes. Ces fonctionnalités renforcent la confiance des utilisateurs dans notre plateforme,
ce qui est essentiel pour son succès continu. Dans le prochain chapitre, nous explorerons la
troisième release, où nous continuerons à ajouter des fonctionnalités essentielles pour améliorer
encore l’expérience de nos utilisateurs.
77
Chapitre V : Release 3
Introduction
Dans cette livraison, nous nous concentrons sur la gestion des réservations et le
développement d’un système d’évaluation. Ces fonctionnalités visent à optimiser davantage
l’expérience des utilisateurs, en leur offrant une gestion simplifiée des réservations et la
possibilité d’exprimer leur satisfaction à travers des évaluations.
L’objectif de ce sprint est de mettre en place un système de gestion des réservations pour
les utilisateurs de la plateforme de covoiturage.
78
En tant que
conducteur je
23 Conducteur • Refuser une réservation 3
peux refuser une
réservation
En tant
Conducteur / qu’utilisateur je • Annuler une
24 peux annuler une réservation 5
Passager
réservation
En tant • Récupérer les
qu’administrateur réservations
25 Administrateur je peux consulter • Afficher les 2
les réservations réservations
Tableau 22: Backlog de Sprint n°5 Gestion des réservations
Ce diagramme illustre visuellement les actions que les passagers peuvent entreprendre pour
gérer leurs réservations au sein de l’application ou du système.
Figure 87: Diagramme de cas d'utilisation « Gestion des réservations pour les passagers »
79
I.3.2 Diagramme de cas d’utilisation « Gestion des réservations
pour les conducteurs »
Les conducteurs peuvent gérer leurs réservations au sein de l’application en réalisant les
actions suivantes.
Figure 88: Diagramme de cas d’utilisation « Gestion des réservations pour les conducteurs »
80
I.3.4 Diagramme de classe de Sprint n°5
La description textuelle suivante explique comment les utilisateurs peuvent initier une
demande de réservation.
81
Post condition Réservation envoyé
Cette figure illustre chronologiquement les étapes et les interactions entre l’utilisateur
et le système lorsqu’il fait une demande de réservation.
82
Figure 91: Diagramme de séquence de cas d’utilisation « Demander une réservation »
Cette description textuelle du cas d’utilisation explique comment les utilisateurs peuvent
confirmer une réservation.
Acteur(s) Conducteur
83
Scénario nominal 1. Le conducteur reçoit une notification de
réservation
2. Le conducteur consulte la liste des
réservations reçut
3. Le conducteur clique sur bouton accepter
4. La réservation est acceptée
Scénario alternatif 3.1 Le conducteur clique sur bouton refuser
4.1 La réservation est supprimée
Figure 92: Diagramme de séquence de cas d’utilisation «Traiter une demande de réservation»
84
I.3.9 Description textuelle de cas d’utilisation « Annuler
réservation »
Acteur(s) Passager
85
I.3.10 Diagramme de séquence de cas d’utilisation « Annuler une
réservation »
Ce diagramme décrit les interactions entre l’utilisateur et le système lorsqu’il annule une
réservation.
86
Figure 94: Interface gestion des réservations partie web
Durant ce sprint, nous avons accompli la mise en place du module de gestion des
réservations conformément à la planification. Cependant, nous avons rencontré des défis en
respectant les délais fixés pour certaines fonctionnalités. Pour améliorer notre gestion du temps,
nous prévoyons de mettre en œuvre une approche de planification plus agile et de renforcer la
communication au sein de l’équipe.
87
Ce qui a bien fonctionné Ce qui peut être amélioré Plan d’actions
Le sixième sprint a été consacré à l’évaluation qui permet aux utilisateurs de donner
leurs avis de satisfaction, ce sprint permettra aux utilisateurs de partager leurs retours et d’aider
à maintenir la qualité du service de covoiturage en mettant en avant les expériences positives et
en identifiant les domaines à améliorer.
Ce diagramme décrit l’action laisser un avis après une expérience de covoiturage par le
passager.
88
Figure 96: Diagramme de cas d’utilisation « Donner avis »
Cette description textuelle explique comment un utilisateur peut exprimer son feedback
ou son avis sur une expérience de covoiturage.
89
Cas d’utilisation Donner avis
Acteur(s) Passager
90
Figure 98: Diagramme de séquence du cas d’utilisation « Donner un Avis »
Les captures d’écran présentées dans la revue de sprint de la gestion des évaluations
illustrent le processus d’évaluation des covoiturages effectués par les utilisateurs et la note
attribuée à l’utilisateur après.
91
II.5 Rétrospective du Sprint n°6
Conclusion
En conclusion de cette troisième livraison, achevant nos releases, nous avons ajouté des
fonctionnalités capitales à notre plateforme de covoiturage. La gestion des réservations et le
système d’évaluation renforcent l’expérience utilisateur en simplifiant la réservation de trajets
et en favorisant la confiance au sein de notre communauté. Ces ajouts désignent une étape
importante dans notre projet, et nous continuons notre engagement envers l’amélioration
continue de notre application.
92
Conclusion générale
Dans le cadre de notre projet de fin d‘études réalisé au sein de la société Naxxum, nous
avons conçu une plateforme de covoiturage moderne qui répond aux besoins actuels de mobilité
tout en encourageant des pratiques plus durables. Inspirant de la méthodologie agile Scrum au
niveau de management, le projet a été couronné de succès.
93
Webographie
[1] https ://www.appvizer.fr/magazine/operations/gestion-de-projet/scrum : Article sur la
méthode agile Scrum. Consulté en février 2023.
[2] https ://www.qrpinternational.fr/blog/glossaire/quest-ce-quun-backlog-definition-etapes-
caracteristiques-et-
outils/#:~:text=Qui%20est%20responsable%20du%20product,en%20charge%20par%20les%
20d%C3%A9veloppeurs. : Définition Product Owner. Consulté en février 2023.
[3] https ://asana.com/fr/resources/scrum-master : Définition Scrum Master. Consulté en
février 2023.
[4] https ://blog.myagilepartner.fr/index.php/2019/08/02/lequipe-de-developpement-en-
scrum/#:~:text=L’%C3%A9quipe%20de%20d%C3%A9veloppement%20se,de%20d%C3%A
9veloppement%20cr%C3%A9ent%20l’incr%C3%A9ment. : Définition L’équipe de
développement. Consulté en février 2023.
[5] https ://www.advaloris.ch/nos-services/gestion-de-projet/definir-besoins-fonctionnels-
gestion-de-projet. : Article sur les besoins fonctionnels en gestion de projet. Consulté en
février 2023.
[6] https ://www.memoireonline.com/11/12/6484/m_Conception-et-realisation-dune-
application-de-gestion-des-marches-par-appel-doffres-au-sein7.html. : Conception et
réalisation d’une application de gestion des marchés par appel d’offres au sein de l’Entreprise
Tunisienne d’Activités Pétrolières. Consulté en février 2023.
[7] https ://www.ibm.com/docs/fr/rational-soft-arch/9.5?topic=diagrams-use-case : Définition
de diagrammes de cas d’utilisation. Consulté en février 2023.
[8] https ://learn.microsoft.com/fr-fr/azure/devops/user-guide/devops-alm-
overview?view=azure-devops : Documentation officielle d’Azure DevOps Consulté en février
2023.
[9]
https ://visualstudio.microsoft.com/fr/#:~:text=Visual%20Studio%20Code%20est%20un,de%
20JavaScript%2C%20TypeScript%20et%20Node. : Définition Visual Code. Consulté en
février 2023.
[10] https ://learn.microsoft.com/fr-fr/visualstudio/get-started/visual-studio-ide?view=vs-
2022 : Définition Visual Studio Community. Consulté en février 2023.
94
[11]
https://developer.android.com/studio/intro?hl=fr#:~:text=Android%20Studio%20est%20l'envi
ronnement,vous%20cr%C3%A9ez%20des%20applications%20Android. : Définition Android
Studio. Consulté en février 2023.
[12] https://www.lucidchart.com/pages/fr/exemple/logiciel-conception-base-de-
donnees#:~:text=Lucidchart%20est%20une%20application%20de,donn%C3%A9es%20et%2
0bien%20plus%20encore.&text=D%C3%A9couvrez%20pourquoi%20des%20millions%20d,
entier%20font%20confiance%20%C3%A0%20Lucidchart. : Documentation officielle de
Lucidchart Consulté en février 2023.
[13]
https://www.blogdumoderateur.com/tools/figma/#:~:text=Figma%20est%20une%20plateform
e%20collaborative,UX%20designers%20et%20des%20d%C3%A9veloppeurs. :
Documentation officielle de Figma Consulté en février 2023.
[14] https://www.atlassian.com/fr/git/tutorials/git-
bash#:~:text=Qu'est%2Dce%20que%20Git,acronyme%20de%20Bourne%20Again%20Shell.
: Définition de Git Bash Consulté en février 2023.
[15] https://azure.microsoft.com/fr-fr/products/devops : Documentation officielle d’Azure
DevOps Consulté en février 2023
[16] https://sql.sh/sgbd/sql-server : Article sur Microsoft SQL Server Consulté en février
2023
[17] https://learn.microsoft.com/fr-fr/office365/servicedescriptions/teams-service-
description : Documentation officielle de Microsoft Teams Consulté en février 2023
[18] https://www.ionos.fr/digitalguide/sites-internet/developpement-web/uml-un-langage-de-
modelisation-pour-la-programmation-orientee-objet/ : Article sur UML (Unified Modeling
Language) en programmation orientée objet. Consulté en février 2023.
[19] https://learn.microsoft.com/fr-fr/dotnet/core/whats-new/dotnet-7 : Documentation
officielle de Microsoft .NET. Consultée en février 2023.
[20] https://learn.microsoft.com/fr-fr/dotnet/csharp/tour-of-csharp/ : Documentation officielle
C# Consulté en février 2023
[21] https://learn.microsoft.com/fr-fr/dotnet/architecture/microservices/multi-container-
microservice-net-applications/implement-api-gateways-with-ocelot : Documentation officielle
API Gateway « Ocelot » Consulté en février 2023
[22] https://www.rabbitmq.com/documentation.html : Documentation officielle de
RabbitMQ. Consultée en février 2023.
95
[23] https://learn.microsoft.com/fr-fr/azure/architecture/patterns/cqrs : Documentation
officielle de MediatR. Consultée en février 2023.
[24] https://www.redhat.com/fr/topics/containers/what-is-docker : Définition de Docker.
Consulté en mars 2023.
[25] https://www.websiterating.com/fr/web-hosting/glossary/what-is-
mysql/#:~:text=et%20Open%20Source-
,MySQL%20est%20un%20syst%C3%A8me%20de%20gestion%20de%20base%20de%20do
nn%C3%A9es,le%20voir%20et%20le%20modifier. : Article sur MySQL . Consulté en mars
2023.
[26] https://appmaster.io/fr/blog/outils-du-createur-dapi : Article sur Swagger. Consulté en
mars 2023.
[27] https://angular.io/guide/architecture : Documentation officielle d'Angular, le framework
utilisé pour le développement web. Consultée en février 2023.
[28] https://thetribe.io/metier-
typescript/#:~:text=TypeScript%20est%20un%20langage%20de,peut%20%C3%AAtre%20ut
ilis%C3%A9%20avec%20TypeScript). : Article sur TypeScript Consultée en février 2023.
[29] https://www.hostinger.fr/tutoriels/differences-
html#:~:text=HTML5%20est%20la%20derni%C3%A8re%20version%20de%20HTML%20e
t%20prend%20en,l'audio%20et%20la%20vid%C3%A9o.&text=HTML%20ne%20fournit%2
0pas%20de,audio%20et%20de%20la%20vid%C3%A9o. : Article sur HTML 5 Consultée en
février 2023.
[30] https://www.journaldunet.com/web-tech/developpeur/1159810-bootstrap-definition-
tutoriels-astuces-pratiques/. : Article sur Bootstrap Consultée en février 2023.
[31] https://www.websiterating.com/fr/website-builders/glossary/what-is-
css/#:~:text=CSS%20(Cascading%20Style%20Sheets)%20est,aspects%20visuels%20des%20
pages%20Web.. : Article sur Les feuilles de style en cascade (CSS) Consultée en février
2023.
[32] https://docs.flutter.dev : Documentation officielle de Flutter. Consulté en janvier 2023.
[33] https://dart.dev/guides : Documentation officielle de Dart. Consulté en janvier 2023.
96
[35] https://www.adimeo.com/blog/forum-php-2019-clean-architecture : Article sur Clean
Architecture. Consulté en février 2023.
[36] https://medium.com/elp-2018/mediator-design-pattern-ou-comment-%C3%A9viter-le-
code-spaghetti-8cc3dd35388e : Article sur Mediator design pattern. Consulté en février 2023
[37] https://learn.microsoft.com/fr-fr/azure/architecture/patterns/cqrs : Article sur le modèle
CQRS. Consulté en février 2023
[38] https://www.arkance-systems.fr/blog/pattern-
mvvm/#:~:text=Définition,liés%20à%20la%20logique%20métier : Article sur le modèle de
conception MVVM. Consulté en mars 2023.
[39]
https://www.irif.fr/~carton/Enseignement/InterfacesGraphiques/Cours/Swing/mvc.html#:~:te
xt=L%27architecture%20Modèle%2FVue%2F,rôle%20précis%20dans%20l%27interface :
Article sur l'architecture Modèle-Vue-Contrôleur (MVC) en Swing. Consulté en mars 2023.
97
Résumé
Ce travail s’inscrit dans le cadre de notre projet fin d’étude à l’Institut Supérieur des Arts
Multimédia, en vue de l’obtention d’un diplôme en Master Professionnel d’ingénierie des
médias développement web. Ce projet a été réalisé au sein de l’entreprise NAXXUM intitulé
Conception et développement d’une application web/mobile d’un système de co-
voiturage,
L'objectif de notre projet est de concevoir et de développer une solution numérique de pointe
qui permettra aux utilisateurs en quête de covoiturage de trouver des solutions de mobilité
efficaces et durables.
Nous avons mis en œuvre un ensemble de technologies modernes pour garantir une architecture
robuste et évolutive. Nous avons opté pour une architecture microservices pour favoriser la
modularité et la scalabilité de l'application et pour garantir une communication fluide entre ces
derniers, nous avons intégré le message broker RabbitMQ. Nous avons également suivi les
principes de la Clean Architecture pour maintenir un code propre et bien structuré.En outre,
Nous avons mis en place le design pattern CQRS pour séparer les opérations de lecture et
d'écriture. Nous avons aussi utilisé Flutter pour développer une expérience mobile attrayante et
Angular pour la version web, le tout soutenu par le framework .NET Core pour la logique métier
backend.
Cette combinaison de technologies nous a permis de créer un système polyvalent et performant.