1. Introduction
Après avoir défini les grands axes du besoin métier et les cas d’usage attendus par les utilisateurs, cette section se concentre sur la modélisation technique et fonctionnelle du système cible.
L’objectif de cette analyse est de traduire les intentions métier exprimées précédemment en éléments concrets du système d’information, en s’appuyant sur des outils tels que les diagrammes UML (cas d’utilisation, séquence, activités, etc.), les modèles de données ou encore les scénarios d’interaction.
Cette étape constitue un pont essentiel entre le besoin exprimé et la phase de développement, car elle permet de clarifier la structure de l’application, d’anticiper les comportements attendus, et d’identifier les contraintes techniques majeures.
Je reconnais que le périmètre (scope) fixé initialement a été modifié à plusieurs reprises au cours de la phase de développement. Cela a parfois été démoralisant, et j’ai eu l’impression d’évoluer dans un cercle vicieux entre ajustements fonctionnels, contraintes techniques, et le retour constant vers l’adaptation de l’analyse en fonction des fonctionnalités que j’avais ajoutées. Mais avec du recul, je pense que cette expérience est assez représentative de la réalité d’un projet de développement, surtout lorsqu’il est mené seul. Normalement, ce type de projet mobilise plusieurs profils complémentaires (analyste, développeur, designer, etc.), chacun concentré sur un domaine bien défini. De mon côté, je n’ai pas encore les compétences d’un analyste professionnel : mes bases proviennent essentiellement de la formation suivie et de mes efforts d’autoformation. C’est pourquoi les allers-retours entre l’analyse et le développement étaient non seulement inévitables, mais aussi formatrices dans mon cas. |
2. L’analyse système
2.1. Qu’est-ce que l’analyse système ?
De mon point de vue, une fois l’analyse métier achevée, l’analyse système prend le relais.
Elle consiste à traduire ces besoins métier en spécifications fonctionnelles et techniques.
On modélise des cas d’utilisation, on détaille les interactions entre les composants, les flux de données, les interfaces, etc.
L’enjeu est simple : comment le système va-t-il répondre aux exigences identifiées lors de l’analyse métier ?
L’analyse système est une approche qui permet d’examiner un système informatique dans son ensemble, en tenant compte de ses interactions internes et externes.
Elle est utilisée pour comprendre comment les différentes parties d’un système s’influencent mutuellement et pour prendre des décisions éclairées en conséquence.
L’analyse système s’intéresse au "comment" : comment le système actuel fonctionne-t-il ? Quelles sont ses données, ses traitements, ses flux, ses composants ?
Source : Office québécois de la langue française https://vitrinelinguistique.oqlf.gouv.qc.ca/fiche-gdt/fiche/8460144/analyse-de-systeme
2.2. Comparaison entre analyse métier et analyse système
Critère | Analyse métier | Analyse système |
---|---|---|
Objectif |
Comprendre les besoins métier et les formaliser |
Traduire les besoins en une solution informatique réalisable |
Questions principales |
Que fait le métier ? Pourquoi ? Pour qui ? |
Comment va-t-on concevoir le système ? Avec quelles technologies ? |
Portée |
Organisation, processus, rôles, règles métier |
Architecture du SI, bases de données, interfaces, traitements |
Méthodes |
Entretiens, ateliers, modélisation BPMN |
UML (cas d’utilisation, séquence, classes), maquettage, prototypes |
Livrables |
Cahier des charges, diagrammes BPMN, matrice des besoins |
Spécifications fonctionnelles, diagrammes UML, architecture logique |
Intervenants |
Analystes métier, utilisateurs, responsables métier |
Analystes système, architectes, développeurs |
3. L’analyse "Client" système
Les acteurs déjà identifiés dans la partie analyse métier ne seront pas redéfinis ici, afin d’éviter toute redondance. En revanche, les acteurs non encore mentionnés dans l’analyse métier seront introduits au fur et à mesure, selon les besoins de cette partie. |
3.1. Diagramme de cas d’utilisation (use case) : Client Système

3.2. Synthèse des cas d’utilisation – Client
Réf. | Nom du cas d’utilisation | Acteurs principaux | Objectif principal |
---|---|---|---|
UC_S1 |
Gérer le profil |
Client, Système |
Modifier ses informations personnelles ou supprimer son compte. |
UC_S3 |
Chercher / Géolocaliser un salon |
Client, API Géoloc |
Localiser les salons proches en fonction de sa position ou d’une adresse. |
UC_S4 |
Consulter les détails de salon |
Client, Système |
Afficher la fiche complète d’un salon (infos, services, galerie…). |
UC_S5 |
Ajouter / Retirer un salon des favoris |
Client, Système |
Gérer sa liste de salons favoris pour un accès rapide. |
UC_S6 |
Consulter les services et les tarifs |
Client, Système |
Visualiser les prestations, leurs prix et durées proposées par un salon. |
UC_S7 |
Gérer le panier |
Client, Application |
Ajouter ou retirer des services en vue d’une réservation. |
UC_S8 |
Gérer les rendez-vous |
Client, Backend, DB |
Réserver, modifier ou consulter ses rendez-vous. |
UC_S9 |
Choisir un rendez-vous |
Client, Backend, DB |
Sélectionner un créneau disponible avant le paiement. |
UC_S10 |
Valider et payer |
Client, Backend, Stripe |
Finaliser la réservation avec paiement sécurisé via Stripe. |
UC_S11 |
Recevoir des notifications |
Client, Email, Backend |
Être notifié des événements (réservation, rappel, annulation…). |
UC_S12 |
Entamer une conversation avec une coiffeuse |
Client, Firebase, Backend |
Échanger en temps réel avec une coiffeuse via messagerie intégrée. |
3.3. UC_S1 : Gérer le profil
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer le profil |
Description |
Ce cas d’utilisation offre au client la possibilité de visualiser, mettre à jour les informations de son profil utilisateur, telles que son nom, prénom, adresse, photo, email, ou mot de passe, il peut aussi supprimer son compte. |
Acteurs |
Client, Firebase |
Précondition |
Le client est authentifié et dispose d’un compte valide. |
Postcondition |
Le profil est mis à jour avec les nouvelles informations saisies. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Firebase peut être sollicité si l’utilisateur modifie son adresse email ou son mot de passe (re-authentification, sécurité renforcée). |


3.3.1. Ecrans – Gérer le profil
Modifier l’adresse (exemple) | Page de profil (client) |
---|---|
![]() |
![]() |
3.4. UC_S3 : Chercher / Géolocaliser un salon
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Chercher / Géolocaliser un salon |
Description |
Le client souhaite découvrir les salons disponibles proches de sa position actuelle. |
Acteurs |
Client, Système, API de géolocalisation |
Précondition |
Le client est connecté et a autorisé l’accès à sa localisation. |
Postcondition |
Une liste de salons à proximité est affichée avec leur distance, évaluation et détails. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
L’expérience utilisateur peut varier selon la qualité du signal GPS et les autorisations données à l’application. |


3.4.1. Ecrans – Chercher / Géolocaliser un salon
Chercher des salons apartir de ma position | Chercher des salons apartir d’une adresse |
---|---|
![]() |
![]() |
3.5. UC_S4 : Consulter les détails de salon
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Consulter les détails de salon |
Description |
Ce cas d’utilisation permet au client de consulter la fiche complète d’un salon de coiffure après l’avoir sélectionné depuis la liste des résultats. L’utilisateur peut y voir les informations générales (adresse, slogan, services, équipements, galerie, etc.), interagir avec des onglets, et initier une action (réservation ou ajout aux favoris). |
Acteurs |
Client, Système |
Précondition |
|
Postcondition |
La fiche détaillée du salon est affichée avec ses données actualisées. |
Scénario nominal |
|
Scénario alternatif |
Le client ajoute directement le salon aux favoris depuis cette page. Le client clique sur "l’icon panier" pour ajouter un service au panier. Le client clique sur Horaire" pour afficher les horaires du salon. |
Scénario d’exception |
Le salon n’existe plus ou a été désactivé. Une erreur réseau empêche l’affichage des détails. Certaines données du salon sont manquantes ou corrompues. |
Remarque |
Cette page joue un rôle clé dans l’engagement client : elle combine informations pratiques et appels à l’action (favori, réservation, partage). |


3.5.1. Ecrans – Consulter les détails de salon
Détails salon 1 | Détails salon 2 |
---|---|
![]() |
![]() |
3.6. UC_S5 : Ajouter / Retirer un salon des favoris
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Ajouter / Retirer un salon des favoris |
Description |
Ce cas d’utilisation permet au client de marquer un salon comme favori ou de le retirer de sa liste de favoris. |
Acteurs |
Client, Système, API Favoris |
Précondition |
Le client est connecté à son compte. |
Postcondition |
Le salon est ajouté ou retiré de la liste des favoris du client. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Cette fonctionnalité permet de renforcer l’expérience personnalisée et fidéliser les utilisateurs. |


3.7. UC_S6 : Consulter les services et les tarifs
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Consulter les services et les tarifs |
Description |
Permet au client de visualiser l’ensemble des services proposés par un salon sélectionné, ainsi que leurs prix et durées. Le client peut aussi initier une action comme l’ajout au panier ou accéder aux détails d’un service. |
Acteurs |
Client, Système |
Précondition |
Le client a ouvert la fiche d’un salon existant. |
Postcondition |
Les services disponibles sont affichés dans l’onglet dédié. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Cette interface est souvent déterminante dans la décision de réservation, elle doit être claire, attractive et rapide. |


3.7.1. Ecrans – Consulter les services et les tarifs

3.8. UC_S7 : Gérer le panier
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer le panier |
Description |
Ce cas d’utilisation permet au client d’ajouter, consulter ou supprimer des services dans son panier en vue d’une réservation. |
Acteurs |
Client, Application, Backend |
Précondition |
Le client est connecté et a sélectionné au moins un service. |
Postcondition |
Le panier est mis à jour selon les actions effectuées (ajout, suppression). |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Le panier est local mais synchronisé avec le backend pour garantir la cohérence et disponibilité des services. |


3.8.1. Ecrans – Gérer le panier

3.9. UC_S8 : Gérer les rendez-vous
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer les rendez-vous |
Description |
Ce cas d’utilisation permet au client de consulter, réserver ou annuler ses rendez-vous coiffure via l’application Hairbnb. |
Acteurs |
Client, Application, Backend, Base de données |
Précondition |
Le client est authentifié et a un panier prêt à réserver ou des rendez-vous déjà enregistrés. |
Postcondition |
Le rendez-vous est créé, modifié ou annulé selon l’action du client. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


3.10. UC_S9 : Choisir un rendez-vous
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Choisir un rendez-vous |
Description |
Ce cas d’utilisation intervient après que le client a sélectionné un salon et ajouté des services à son panier. |
Acteurs |
Client, Application, Backend, Base de données |
Précondition |
|
Postcondition |
Un créneau est sélectionné et associé à la réservation en attente de paiement. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Cette étape précède le paiement. |


3.10.1. Écrans – Choisir un rendez-vous
Choisir une date | Choisir un horaire |
---|---|
![]() |
![]() |
Les dates affichées en gris dans le calendrier correspondent aux créneaux non disponibles à la réservation. Cela peut être dû à des journées complètes, des fermetures exceptionnelles du salon ou des créneaux déjà réservés par d’autres clients. Ces dates sont rendues inactives afin d’améliorer l’expérience utilisateur et d’éviter toute tentative de réservation sur des périodes bloquées. La logique de disponibilité repose sur la durée totale des services sélectionnés. Par exemple, si un client choisit plusieurs prestations totalisant 4 heures, mais que seuls 2 créneaux de 3 heures sont encore libres dans la journée (le reste étant déjà réservé), alors cette date sera considérée comme indisponible pour ce client. Le système écarte automatiquement les dates qui ne permettent pas d’assurer la prestation complète. |
3.11. UC_S10 : Valider et payer
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Valider et payer |
Description |
Ce cas d’utilisation permet au client de finaliser sa réservation en procédant au paiement via Stripe. |
Acteurs |
Client, Application, Backend, Stripe |
Précondition |
|
Postcondition |
La réservation est confirmée et marquée comme payée dans la base de données. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
L’utilisation de Stripe garantit la conformité PCI-DSS et simplifie la gestion des méthodes de paiement et des devises. |


3.12. UC_S11 : Recevoir des notifications
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Recevoir des notifications |
Description |
Ce cas d’utilisation permet au client de recevoir automatiquement des notifications concernant ses activités sur la plateforme Hairbnb. Cela inclut : confirmations de réservation, rappels de rendez-vous, annulations, ou toute autre information pertinente envoyée par e-mail ou notification intégrée à l’application. |
Acteurs |
Client, Backend, Système Email (configuré avec le domaine hairbnb.be) |
Précondition |
|
Postcondition |
Le client est notifié par email et/ou dans l’app selon l’événement déclencheur (réservation, annulation…). |
Scénario nominal |
|
Scénario alternatif |
La notification est affichée uniquement dans l’application sans envoi d’email. |
Scénario d’exception |
|
Remarque |
Le système utilise une stratégie de retry pour les envois échoués. |


3.13. UC_S12 : Entamer une conversation avec une coiffeuse
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Entamer une conversation avec une coiffeuse |
Description |
Ce cas d’utilisation permet à un client de démarrer une discussion en temps réel avec une coiffeuse. |
Acteurs |
Client, Coiffeuse, Firebase, Backend, Base de données |
Précondition |
Le client est connecté. Le salon a au moins une coiffeuse associée visible et active. Firebase est initialisé côté client et backend. |
Postcondition |
Une conversation est créée dans Firebase, les messages sont synchronisés en temps réel, et archivés en base si nécessaire. |
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Le système doit assurer la sécurité, la traçabilité (logs), et éventuellement la modération des échanges. |

3.13.1. Ecrans – Entamer une conversation avec une coiffeuse
Entamer une conversation | Liste des conversations | Conversation |
---|---|---|
![]() |
![]() |
![]() |

3.14. Diagramme d’activité global – Hairbnb (Client)
3.14.1. Qu’est-ce qu’un diagramme d’activité ?
Dans la première partie d’analyse métier, la définition du diagramme d’activité (DA) était volontairement concise pour conserver une lecture légère. Toutefois, en raison de son utilisation fréquente dans ce rapport, il est apparu pertinent d’en proposer une redéfinition plus approfondie. Cette nouvelle définition vise à mieux éclairer le rôle du DA dans l’analyse fonctionnelle (système). |
Un diagramme d’activité est un type de diagramme UML (Unified Modeling Language) qui modélise le flux d’activités et les actions au sein d’un système, d’un processus métier ou d’un algorithme.
Il représente la séquence des étapes, les points de décision, les boucles et les activités parallèles.
Il est souvent considéré comme une évolution des diagrammes de flux traditionnels, mais avec des capacités de modélisation plus riches.
Voici les éléments clés d’un diagramme d’activité :
-
Nœud d’activité (Activity Node) : Représente une étape ou une action à exécuter, il est souvent symbolisé par un rectangle aux bords arrondis.
-
Nœud initial (Initial Node) : Indique le point de départ du flux d’activités, c’est un cercle plein.
-
Nœud final (Final Node) : Indique la fin du flux d’activités, c’est un cercle avec un cercle plein en son centre.
-
Flèches de transition (Control Flows) : Représentent le passage du contrôle d’une activité à une autre.
-
Nœud de décision (Decision Node) : Symbolisé par un losange, il représente un point où le flux peut se diviser en plusieurs branches basées sur une condition, chaque branche est étiquetée avec la condition.
-
Nœud de fusion (Merge Node) : Aussi un losange, il réunit les branches divergentes d’un nœud de décision.
-
Nœud de bifurcation (Fork Node) : Une barre horizontale épaisse qui divise un flux unique en plusieurs flux parallèles ou concurrents.
-
Nœud de jointure (Join Node) : Une barre horizontale épaisse qui synchronise les flux parallèles et les rassemble en un seul flux.
-
Pistes (Swimlanes / Partitions) : Des conteneurs visuels (colonnes ou lignes) qui regroupent les activités par responsable ou par unité organisationnelle, montrant quelle partie du système ou quel acteur est responsable de quelle action.
-
Nœud d’objet (Object Node) : Un rectangle montrant un objet qui est produit ou consommé par une activité.
À quoi sert un diagramme d’activité ?
-
Modélisation des processus métier : Il est excellent pour décrire la logique de processus métier complexes, montrant qui fait quoi et quand.
-
Analyse des flux de travail : Il aide à comprendre la séquence des étapes dans un flux de travail et à identifier les goulots d’étranglement ou les opportunités d’amélioration.
-
Conception d’algorithmes : Il peut être utilisé pour représenter la logique d’un algorithme ou d’une fonction logicielle.
-
Spécification des cas d’utilisation : Il détaille les étapes d’un cas d’utilisation, y compris les chemins alternatifs et les exceptions.
-
Documentation : Il offre une représentation visuelle claire et concise du comportement dynamique du système.[1]

3.15. Diagramme de séquence global – Hairbnb (Client)
3.15.1. Qu’est-ce qu’un diagramme de séquence ?
Un diagramme de séquence est un type de diagramme UML (Unified Modeling Language) qui modélise les interactions entre les objets ou les participants d’un système dans un ordre chronologique.
Il est particulièrement utile pour visualiser le flux de contrôle et les échanges de messages au fil du temps.
Voici les éléments clés d’un diagramme de séquence :
-
Acteurs (Actors) : Représentent des entités externes qui interagissent avec le système (par exemple, un utilisateur, un autre système).
-
Lignes de vie (Lifelines) : Représentent les objets ou les participants au sein du système (par exemple, l’application mobile, le service backend, la base de données).
Elles sont représentées par des lignes verticales en pointillés, et le temps s’écoule de haut en bas le long de ces lignes. -
Messages : Représentent les communications entre les lignes de vie, ls sont symbolisés par des flèches horizontales.
-
Messages synchrones : L’expéditeur attend une réponse avant de continuer (flèche pleine avec une pointe pleine).
-
Messages asynchrones : L’expéditeur n’attend pas de réponse immédiate et continue son activité (flèche pleine avec une pointe ouverte).
-
Messages de réponse : Indiquent une réponse à un message précédent (flèche en pointillés).
-
-
Barres d’activation (Activation Bars) : Des rectangles étroits placés sur les lignes de vie, indiquant la période pendant laquelle un objet est actif ou exécute une opération.
-
Fragments combinés : Permettent de modéliser des logiques plus complexes comme :
-
alt
(alternative) : Pour des chemins d’exécution alternatifs (si/alors/sinon). -
opt
(option) : Pour un chemin d’exécution optionnel. -
loop
(boucle) : Pour des actions répétées. -
par
(parallèle) : Pour des exécutions concurrentes.
-
À quoi sert un diagramme de séquence ?
-
Comprendre le comportement : Il aide à visualiser comment les différentes parties d’un système interagissent pour accomplir une tâche spécifique ou un cas d’utilisation.
-
Conception : Il est utilisé pour concevoir la logique d’interaction entre les objets d’un système.
-
Débogage : Il peut aider à identifier les problèmes potentiels de flux ou de communication entre les composants.
-
Documentation : Il sert de documentation claire pour les développeurs, les testeurs et les autres parties prenantes. [2]

3.16. Conclusion sur les cas d’utilisation côté client
Avant de passer à la suite, voici quelques précisions importantes afin de lever d’éventuelles ambiguïtés :
-
Dans les diagrammes de séquence :
-
Certains échanges entre le backend et la base de données peuvent laisser penser à l’utilisation directe de requêtes SQL.
-
Ce n’est pas le cas : Django utilise un ORM (Object-Relational Mapping) qui permet de manipuler la base de données sans écrire de SQL brut.
-
L’objectif était uniquement d’illustrer de manière simplifiée les traitements réalisés en arrière-plan (lecture, écriture, suppression, etc.).
-
Ce choix permet de rendre les échanges plus compréhensibles pour un lecteur non technique, sans compromettre la rigueur du modèle.
-
-
Concernant l’interface utilisateur :
-
Il est possible que certains écrans diffèrent légèrement de ceux de la version finale de l’application.
-
L’application étant encore en phase de développement, des ajustements UI/UX sont en cours.
-
Ces ajustements ne remettent pas en cause les fonctionnalités définies dans les cas d’utilisation, qui restent stables.
-
-
À propos de l’authentification :
-
Le cas d’utilisation UC_S2 : S’authentifier n’est pas traité dans cette section volontairement.
-
Il fera l’objet d’un diagramme de cas d’utilisation spécifique qui détaillera tout le processus d’authentification, notamment l’interaction avec Firebase, la validation des identifiants, la sécurité, etc.
-
-
Sur la rédaction des scénarios :
-
Certains scénarios sont issus de cas concrets rencontrés durant le développement et le teste.
-
D’autres, plus hypothétiques, ont été élaborés à l’aide de l’intelligence artificielle pour anticiper des comportements utilisateurs ou des situations exceptionnelles que je n’avais pas envisagées.
-
Cette aide m’a permis d’élargir la réflexion et de mieux me préparer à des cas d’usage réels.
-
|
4. L’analyse "Système d’authentification"
4.1. À propos du choix de l’authentification avec Firebase Auth
Dans ce projet, j’ai choisi d’intégrer un module externe pour gérer l’authentification des utilisateurs : Firebase Authentication
.
Firebase Authentication est un service proposé par Google permettant de gérer l’inscription, la connexion et la sécurité des utilisateurs dans une application. Il prend en charge plusieurs méthodes d’authentification comme l’email/mot de passe, Google, Facebook, Apple, ou encore l’authentification anonyme. |
J’ai découvert, plus tard dans le projet, que Django proposait également son propre module d’authentification.
Toutefois, je ne regrette pas mon choix car cela m’a permis de :
-
Découvrir un écosystème complet et puissant,
-
Expérimenter des cas concrets d’intégration de services cloud,
-
Me rendre compte que de nombreuses applications du quotidien utilisent Firebase Auth (ex. : Duolingo, TikTok, etc.).
Voici un comparatif synthétique entre Firebase Auth
et le module natif Django Authentication
:
Critère | Firebase Authentication | Django Authentication |
---|---|---|
Configuration initiale |
Configuration rapide via console Firebase |
Nécessite la mise en place manuelle de formulaires, vues et routes |
Méthodes d’authentification |
Multi-support (email, Google, Facebook, etc.) |
Principalement email/mot de passe (extensions nécessaires pour OAuth) |
Sécurité |
Gérée et auditée par Google (2FA, sécurité renforcée, token JWT) |
Bonne sécurité mais nécessite une gestion côté serveur (tokens, sessions) |
Intégration mobile |
Excellente, nativement conçue pour apps mobiles (Flutter, React Native, etc.) |
Plus adaptée aux applications web Django classiques |
Scalabilité |
Hautement scalable via infrastructure cloud Firebase |
Dépend du serveur Django et de l’architecture mise en place |
Backend requis |
Optionnel (stateless) |
Requiert un backend complet Django |
Ce tableau ne vise pas à établir une hiérarchie entre les technologies, mais à illustrer leurs différences. Chaque développeur entretient souvent une forme d’« amour sectaire » pour certains outils ou frameworks, en fonction de son parcours, de ses expériences et de ses habitudes. Le choix entre Firebase Auth et Django Auth dépend donc moins d’une vérité absolue que du contexte de développement, des objectifs du projet, et de cette affinité parfois passionnée que chacun peut avoir envers certaines technologies. |
4.1.1. Pourquoi j’ai choisi Firebase Auth ?
Les raisons principales qui m’ont conduit à choisir ce module externe sont :
-
Pas besoin de gérer moi-même les mots de passe (stockage, hachage, récupération).
-
Authentification prête à l’emploi, avec des SDK bien documentés pour Flutter.
-
Prise en charge facile de plusieurs méthodes de connexion (Google, email).
-
Très bien intégré avec d’autres services Firebase (ex. : Firestore, Firebase Cloud Messaging).
-
Moins de charge serveur côté backend (tout est géré via Firebase).
La raison la plus importante pourquoi j’ai choisi cette technologie est que : je n’ai aucune responsabilité directe sur la sécurité liée à l’authentification :
la gestion des mots de passe, leur hachage, les risques de fuites ou d’attaques (comme le brute-force ou le credential stuffing) sont entièrement pris en charge par Firebase.
Et c’est un vrai soulagement, car cette plateforme repose sur une infrastructure solide et bénéficie du travail constant d’équipes spécialisées en sécurité.
Dans les sections suivantes, le thème de l’authentification sera encore abordé à travers d’autres aspects du projet. Il peut y avoir des redondances, mais je trouve utile de poser clairement les bases avant d’analyser plus en détail le rôle de cette technologie dans l’architecture globale. |
4.2. Diagramme de cas d’utilisation de l’authentification

4.3. Synthèse des cas d’utilisation – Authentification Hairbnb
Réf. | Nom du cas d’utilisation | Acteurs principaux | Objectif principal |
---|---|---|---|
UC_SA1 |
Créer un compte client |
Client, Firebase Authentication |
Permettre à un nouvel utilisateur de s’inscrire en tant que client via email/mot de passe. |
UC_SA2 |
Créer un compte coiffeuse |
Coiffeuse, Firebase, Backend |
Enregistrer les données spécifiques d’une professionnelle dans la base Hairbnb. |
UC_S2 |
S’authentifier |
Client / Coiffeuse, Firebase |
Authentifier un utilisateur existant et récupérer son rôle. |
UC_SA3 |
Utiliser un compte Google |
Utilisateur, Firebase, Backend |
S’inscrire ou se connecter avec un compte Google via OAuth 2.0. |
UC_SA4 |
Créer un compte avec email et mot de passe |
Utilisateur, Firebase, Backend |
Créer un compte Hairbnb avec email/password et initier la validation email. |
UC_SA5 |
Valider le compte (email) |
Utilisateur, Firebase |
Confirmer l’adresse email via un lien de vérification pour sécuriser l’accès. |
UC_SA6 |
Se connecter avec email et mot de passe |
Utilisateur, Firebase, Backend |
Authentifier un utilisateur existant avec email/password. |
UC_SA7 |
Réinitialiser le mot de passe |
Utilisateur, Firebase |
Envoyer un email de réinitialisation pour définir un nouveau mot de passe. |
UC_SA8 |
Générer un token |
Utilisateur, Firebase, Backend |
Obtenir un token JWT Firebase pour sécuriser les requêtes vers le backend. |
4.4. UC_SA1 : Créer un compte client
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Créer un compte client |
Description |
Ce cas d’utilisation permet à une personne souhaitant utiliser les services de la plateforme en tant que client de créer un compte via l’application Hairbnb. |
Acteurs |
Client, Firebase Authentication |
Précondition |
L’utilisateur n’est pas encore inscrit sur la plateforme Hairbnb. |
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


4.4.1. Écrans – Créer un compte client
Email & mot de passe | Ecran de confirmation | Email de confirmation |
---|---|---|
![]() |
![]() |
![]() |
Message émail est validé | Creation de profil | image::img/screens/Creer compte client/C4.png[Image A, 250, 200, align="center"] |
---|
Détection de l’adresse | Enregistrer | image::img/screens/Creer compte client/C7.png[Image A, 250, 200, align="center"] |
---|

4.5. UC_SA2 : Créer un compte coiffeuse
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Créer un compte coiffeuse |
Description |
Ce cas d’utilisation permet à une personne souhaitant utiliser la plateforme en tant que professionnelle (coiffeuse) de créer son compte, après avoir sélectionné ce rôle en fin de processus d’inscription. |
Acteurs |
Coiffeuse, Firebase Authentication, Backend, Firestore |
Précondition |
L’utilisateur a choisi le rôle "coiffeuse" à la fin du processus d’inscription. |
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque a |
- Cette étape ne correspond pas à la création du salon, mais uniquement à la création du profil de la coiffeuse. |


4.6. UC_S2 : S’authentifier
Élément | Détail |
---|---|
Nom du cas d’utilisation |
S’authentifier |
Description |
Ce cas d’utilisation permet à un utilisateur déjà inscrit (client ou coiffeuse) d’accéder à son espace personnel sur la plateforme Hairbnb via un mécanisme sécurisé d’authentification. |
Acteurs |
Utilisateur (client ou coiffeuse), Firebase Authentication, Application |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


4.6.1. Écrans – Authentification
Email & mot de passe | Afficher mot de passe |
---|---|
![]() |
![]() |
4.7. UC_SA3 : Utiliser un compte Google
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Utiliser un compte Google |
Description |
Ce cas d’utilisation permet à un utilisateur de s’inscrire ou de se connecter via son compte Google, en utilisant l’authentification OAuth 2.0 fournie par Firebase. |
Acteurs |
Utilisateur, Firebase Authentication, Firestore, Backend Django |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


4.7.1. Écrans – Utiliser un compte google

4.8. UC_SA4 : Créer un compte avec email et mot de passe
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Créer un compte avec email et mot de passe |
Description |
Ce cas d’utilisation permet à un utilisateur de créer un compte Hairbnb à l’aide d’une adresse email et d’un mot de passe. |
Acteurs |
Utilisateur, Firebase Authentication, Firestore, Backend Django |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
La validation de l’email est obligatoire avant toute action sensible. |


4.8.1. Écrans – Créer un compte avec email et mot de passe
Email & confirmation demot de passe | Ecran de Vérification de l’émail |
---|---|
![]() |
![]() |
4.9. UC_SA5 : Valider le compte (email)
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Valider le compte |
Description |
Ce cas d’utilisation permet à l’utilisateur d’activer son compte Hairbnb en confirmant son adresse email via le lien de vérification envoyé par Firebase lors de l’inscription. |
Acteurs |
Utilisateur, Firebase Authentication, App Mobile |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Il est essentiel que l’email soit validé avant d’autoriser des actions sensibles (création de salon, messagerie, réservation…). |


4.9.1. Écrans – Valider le compte
Email De vérification (en attente) | Email de vérification | Méssage de vérification |
---|---|---|
![]() |
![]() |
![]() |
4.10. UC_SA6 : Se connecter avec email et mot de passe
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Se connecter avec email et mot de passe |
Description |
Ce cas d’utilisation permet à un utilisateur existant de se connecter à son compte Hairbnb en utilisant une adresse email et un mot de passe déjà enregistrés dans Firebase. |
Acteurs |
Utilisateur, Firebase Authentication, Backend Django |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Le token Firebase (JWT) est utilisé comme preuve d’authentification côté serveur. |


4.10.1. Écrans – Se connecter avec email et mot de passe

4.11. UC_SA7 : Réinitialiser le mot de passe
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Réinitialiser le mot de passe |
Description |
Ce cas d’utilisation permet à un utilisateur de demander la réinitialisation de son mot de passe, uniquement si son compte a été créé avec l’option email + mot de passe. |
Acteurs |
Utilisateur, Firebase Authentication, App Mobile |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Cette fonctionnalité est exclusivement destinée aux comptes créés par email et mot de passe ( |


4.11.1. Écrans – Réinitialiser le mot de passe

4.12. UC_SA8 : Générer un token
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Générer un token |
Description |
Ce cas d’utilisation permet à un utilisateur authentifié via Firebase de récupérer un ID Token sécurisé (JWT), qui sera ensuite transmis au backend pour identification et autorisation. |
Acteurs |
Utilisateur, Firebase Authentication, App Mobile, Backend Django |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


4.13. Diagramme d’activité global – Authentification

4.14. Diagramme de séquence global – Authentification

Firebase est également utilisé dans le projet Hairbnb pour gérer la messagerie instantanée entre le client et la coiffeuse. Cependant, cette fonctionnalité a déjà été détaillée séparément dans la partie dédiée à la communication temps réel. C’est pourquoi elle ne figure pas parmi les cas d’utilisation décrits ici, qui sont exclusivement consacrés au système d’authentification et de gestion des comptes utilisateur. |
5. L’analyse "Coiffeuse" système
Comme déjà mentionné, l’analyse système présentée ici est le reflet direct de l’analyse métier To-Be.
Il est donc tout à fait normal de constater une forte ressemblance, voire une compatibilité totale entre les deux approches.
Cette section a pour but d’apporter davantage de clarté sur les fonctionnalités accessibles à la coiffeuse au sein de l’application Hairbnb.
Par ailleurs, même si l’analyse distingue clairement les rôles de coiffeuse et de propriétaire, il faut rappeler qu’il s’agit dans la réalité d’une application pensée pour de petites structures. Concrètement, la coiffeuse est aussi la propriétaire de son salon.
Ce découpage analytique a été volontairement maintenu afin de garder une ouverture sur une éventuelle évolution future de la plateforme, dans laquelle un salon pourrait être géré par plusieurs coiffeuses distinctes.
Certains cas d’utilisation, bien qu’ils apparaissent dans le diagramme de cas d’utilisation de la coiffeuse, ne seront pas réanalysés dans cette section. En effet, ils ont déjà été traités en détail dans les parties précédentes, notamment : Gérer le profil, S’authentifier, Entamer une conversation avec un client. Afin d’éviter toute redondance, ces éléments sont considérés comme acquis et sont référencés dans leur contexte d’origine. En revanche, le cas d’utilisation Créer un compte coiffeuse sera à nouveau analysé ici. La raison est simple : dans la partie précédente, cette action a été étudiée du point de vue de l’authentification Firebase — c’est-à-dire l’enregistrement de l’identité de l’utilisatrice (coiffeuse) dans le module Firebase Authentication, avec les mécanismes de création de compte, et la gestion de validation de l’email, etc. Dans cette section, l’objectif est de compléter cette approche par une vision orientée système backend, en particulier la création du profil professionnel de la coiffeuse ainsi que l’association à un salon dans la base de données relationnelle PostgreSQL. Il est important de souligner que Firebase et PostgreSQL jouent ici des rôles complémentaires :
Ce découplage permet de combiner les atouts d’une infrastructure sécurisée et scalable pour l’authentification (Firebase) avec la puissance d’un système relationnel robuste pour la gestion des données fonctionnelles (PostgreSQL). |
5.1. Diagramme de cas d’utilisation (use case) coiffeuse

5.2. Synthèse des cas d’utilisation Coiffeuse / Propriétaire
Réf. | Nom du cas d’utilisation | Acteurs principaux | Objectif principal |
---|---|---|---|
UC_SC1 |
Gérer les services proposés |
Coiffeuse |
Ajouter, modifier ou supprimer les prestations proposées par la coiffeuse. |
UC_SC2 |
Gérer les disponibilités |
Coiffeuse |
Définir les créneaux horaires disponibles et les absences. |
UC_SC3 |
Être notifiée des nouvelles réservations |
Coiffeuse |
Recevoir une alerte instantanée lorsqu’un client réserve une prestation. |
UC_SC4 |
Communiquer avec les clients |
Coiffeuse, Client |
Échanger des messages via messagerie en temps réel (Firebase). |
UC_SC5 |
Réaliser une prestation |
Coiffeuse |
Marquer une prestation comme réalisée à la fin du rendez-vous. |
UC_SC6 |
Consulter les avis clients |
Coiffeuse |
Lire les retours, notes et commentaires laissés par les clients. |
UC_SC7 |
Gérer son image et sa galerie |
Propriétaire de salon |
Modifier le logo du salon et la galerie photo professionnelle. |
UC_SC8 |
Consulter les paiements reçus |
Coiffeuse |
Suivre les revenus liés aux prestations réalisées. |
UC_SC9 |
Consulter les statistiques/analytique |
Coiffeuse, AI Agent, Backend |
Obtenir des données analytiques via une interface IA conversationnelle. |
UC_SC10 |
Créer un compte coiffeuse |
Coiffeuse, Backend |
Insérer les informations personnelles, professionnelles et adresse dans la base. |
UC_SC11 |
Gérer les réservations |
Coiffeuse |
Accepter, refuser ou consulter l’historique des demandes de réservation. |
UC_SC12 |
Gérer les promotions |
Coiffeuse |
Créer ou modifier des remises sur les services proposés. |
UC_SC13 |
Gérer le compte coiffeuse |
Propriétaire de salon |
Modifier ou désactiver les comptes coiffeuses liés au salon. |
5.3. UC_SC1 : Gérer les services proposés
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer les services proposés |
Description |
Ce cas d’utilisation permet à la coiffeuse de gérer les services qu’elle propose dans le cadre de son activité : ajout de nouvelles prestations, modification des intitulés, des prix, du temps estimé ou suppression d’un service obsolète. |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


5.3.1. Écrans – Gérer les services proposés
Bouton vers les services | Liste des services | Détails d’un service |
---|---|---|
![]() |
![]() |
![]() |
Modifier un service | Ajouter une promotion | Service avec une promotion |
---|---|---|
![]() |
![]() |
![]() |

5.4. UC_SC2 : Gérer les disponibilités
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer les disponibilités |
Description |
Ce cas d’utilisation permet à la coiffeuse de définir ses horaires de travail réguliers ainsi que ses indisponibilités exceptionnelles (ex : vacances, absences). Ces données sont utilisées pour la prise de rendez-vous en ligne par les clients. |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
La combinaison des horaires hebdomadaires et des indisponibilités ponctuelles permet de construire un planning de réservation fiable. |


5.4.1. Écrans – Gérer les disponibilités
Bouton vers les disponibilités | Horaire & indisponibilités |
---|---|
![]() |
![]() |
5.5. UC_SC3 : Être notifiée des réservations
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Être notifiée des réservations |
Description |
Ce cas d’utilisation permet à la coiffeuse d’être informée en temps réel lorsqu’un client réserve une prestation, via une notification instantanée (push) déclenchée par le backend ou Firebase. |
Acteurs |
Coiffeuse, Client, Backend Django, Firebase Cloud Messaging (FCM) |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Le système utilise Firebase Cloud Messaging pour assurer une diffusion rapide, fiable et ciblée. |


5.6. UC_SC5 : Réaliser une prestation
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Réaliser une prestation |
Description |
Ce cas d’utilisation permet à la coiffeuse de marquer une réservation comme "réalisée" une fois la prestation terminée, afin d’assurer le suivi et de déclencher les étapes suivantes (paiement, avis client, statistiques). |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Cette action permet de tracer l’historique réel des prestations effectuées et de garantir une transparence côté client comme côté coiffeuse. |


5.6.1. Écrans – Marquer une prestation comme-REALISÉE

5.7. UC_SC6 : Consulter les avis clients
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Consulter les avis clients |
Description |
|
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Les avis peuvent être triés ou filtrés (par date, note…). |


5.7.1. Écrans – Consulter les avis clients
Avis | Ajout Avis |
---|---|
![]() |
![]() |
5.8. UC_SC7 : Gérer son image et sa galerie
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer son image et sa galerie |
Description |
Ce cas d’utilisation permet au propriétaire d’un salon de gérer les visuels liés à son établissement : logo principal, photos de la galerie, image de couverture, etc. |
Acteurs |
Propriétaire de salon, Backend Django, Base de données PostgreSQL, |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Une limite de nombre d’images par salon est appliquée (via |


5.9. UC_SC8 : Consulter les paiements reçus
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Consulter les paiements reçus |
Description |
Ce cas d’utilisation permet à une coiffeuse de consulter l’historique des paiements liés aux prestations qu’elle a réalisées, avec les détails des montants perçus et des statuts (payé, en attente, remboursé…). |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
|


5.10. UC_SC9 : Consulter les statistiques / analytique
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Consulter les statistiques / analytique |
Description |
Ce cas d’utilisation permet à la coiffeuse (propriétaire) d’obtenir des statistiques personnalisées via une interface de conversation avec une IA. Elle peut poser des questions (ex. : "Quels sont mes revenus ce mois-ci ?", "Quels services sont les plus demandés ?") et recevoir une réponse basée sur ses propres données. |
Acteurs |
Coiffeuse, Agent conversationnel IA, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Ce système permet une approche flexible et intuitive de la consultation analytique. |


5.10.1. Écrans – Consulter les statistiques / analytique
Bouton vers l’assistant IA | Liste des conversations | Une conversation avec l’IA |
---|---|---|
![]() |
![]() |
![]() |
5.11. UC_SC10 : Créer un compte coiffeuse
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Créer un compte coiffeuse (PostgreSQL) |
Description |
Ce cas d’utilisation permet d’enregistrer dans la base de données toutes les informations personnelles, professionnelles et d’adresse d’une utilisatrice ayant choisi le rôle "coiffeuse", après avoir été authentifiée via Firebase. |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Ce processus respecte l’architecture 3 couches (UI, logique métier, BDD) et s’appuie sur les mécanismes sécurisés de Django (ORM, transaction). |


5.11.1. Écrans – Créer un compte coiffeuse
Créer un compte avec google | Remplir les informations de la coiffeuse | l’api détécte l’adresse |
---|---|---|
![]() |
![]() |
![]() |
Ajouter l’adresse | Ajouter le nom commercial | Passer a la page de la creation salon |
---|---|---|
![]() |
![]() |
![]() |
Créer le salon de la coiffeuse | Remplir les informations du salon | Ajouter un service |
---|---|---|
![]() |
![]() |
![]() |
5.12. UC_SC11 : Gérer les réservations
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer les réservations |
Description |
Ce cas d’utilisation permet à la coiffeuse (ou propriétaire) de consulter, accepter, refuser ou archiver les demandes de réservation reçues, en fonction de sa disponibilité et de la nature du service demandé. |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Les actions doivent être rapides, traçables et sécurisées. |


5.12.1. Écrans – Gérer les réservations
Réservations actifs | Réservations archivées |
---|---|
![]() |
![]() |
5.13. UC_SC12 : Gérer les promotions
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer les promotions |
Description |
Ce cas d’utilisation permet à la coiffeuse ou la propriétaire de salon de créer, modifier ou supprimer des promotions liées à ses services, afin d’attirer plus de clients ou de fidéliser. |
Acteurs |
Coiffeuse, Backend Django, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Les promotions doivent être activables/désactivables à tout moment. |


5.13.1. Écrans – Gérer les promotions
Botton vers les promotions | Listes des promotions |
---|---|
![]() |
![]() |
Ajouter une promotion | Le service avec une promotion |
---|---|
![]() |
![]() |
5.14. Diagramme d’activité global – Hairbnb (Coiffeuse & Propriétaire)

Afin de garantir une meilleure lisibilité du diagramme d’activité global, une version compacte et synthétique a été privilégiée. Elle met en lumière les activités principales des deux rôles – coiffeuse et propriétaire – en les organisant par thématiques fonctionnelles (services, réservations, relation client, etc…). Ce choix permet d’éviter une surcharge visuelle due à l’utilisation excessive de forks et de conditions, qui aurait nécessité de scinder le diagramme en plusieurs sous-parties. Ainsi, le diagramme joue un rôle complémentaire, en fournissant une vue d’ensemble claire et cohérente, tandis que les scénarios détaillés de chaque UC ont été décrits plus haut dans le document. |
5.15. Diagramme d’activité global – Hairbnb (Coiffeuse & Propriétaire)

Afin d’assurer la lisibilité et la clarté du diagramme de séquence global, une stratégie similaire à celle adoptée pour le diagramme d’activité a été appliquée. Plutôt que de représenter chaque cas d’utilisation individuellement — ce qui aurait rendu le diagramme complexe, surchargé et difficile à interpréter —, nous avons privilégié une approche synthétique. Le diagramme global se concentre sur les grandes interactions typiques entre les principaux composants du système Hairbnb :
Cette représentation condensée permet de fournir une vue d’ensemble structurée et cohérente du système, tout en conservant les détails propres à chaque UC dans leurs diagrammes dédiés. |
6. L’analyse "L’administrateur" système
L’administrateur joue un rôle central dans la gestion du back-office de l’application Hairbnb.
C’est un acteur disposant de privilèges élevés, souvent comparé à un développeur ou un gestionnaire de plateforme.
-
Il :
-
Supervise l’ensemble des interactions entre les coiffeuses et les clients,
-
Veille à la modération des contenus,
-
Gère les éventuels litiges et garantit un environnement sécurisé et de confiance pour tous les utilisateurs.
-
Son rôle ne se limite pas à un simple contrôle, mais inclut aussi la supervision des statistiques globales, la validation de certains profils, la gestion des signalements et le suivi de la qualité de service.
Il agit comme un garant de la conformité et de la fluidité de l’écosystème Hairbnb.
Cela dit, dans le cadre d’un travail de fin de formation, mon objectif n’est pas d’approfondir les fonctionnalités liées à l’administrateur, afin de ne pas élargir excessivement le périmètre fonctionnel du projet (lutte contre le "scope creep").
J’ai donc choisi d’illustrer cet acteur de manière moderne et conceptuelle, en optant pour une interaction via une interface conversationnelle : l’administrateur dialogue avec un chatbot alimenté par l’IA, qui exécute les requêtes nécessaires de façon automatisée.
Cette démarche s’inscrit dans une tendance actuelle d’automatisation intelligente, permettant de conserver la dimension stratégique sans alourdir le développement technique du MVP.
6.1. Diagramme de cas d’utilisation – Administrateur

6.2. Synthèse des cas d’utilisation – Administrateur
Réf. | Nom du cas d’utilisation | Acteurs principaux | Objectif principal |
---|---|---|---|
UC_A1 |
Suivre l’activité de la plateforme |
Administrateur, AI Agent |
Visualiser les indicateurs globaux de performance, de trafic et d’usage de la plateforme. |
UC_A2 |
Modérer les utilisateurs |
Administrateur, AI Agent |
Suspendre ou désactiver les comptes en cas de comportement inapproprié. |
UC_A3 |
Superviser les incidents techniques |
Administrateur, AI Agent |
Suivre les erreurs critiques, logs et anomalies signalées sur l’infrastructure. |
UC_A4 |
Gérer les accès administrateurs |
Administrateur |
Ajouter, retirer ou modifier les rôles et autorisations des autres comptes admin. |
UC_A5 |
Gérer la modération des avis |
Administrateur, AI Agent |
Ssupprimer les avis publics laissés par les clients. |
6.3. UC_A1 : Suivre l’activité de la plateforme
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Suivre l’activité de la plateforme |
Description |
Ce cas d’utilisation permet à l’administrateur de consulter les statistiques et indicateurs d’usage de la plateforme à travers une interface conversationnelle avec une IA. |
Acteurs |
Administrateur, Agent IA, Backend, Base de données |
Précondition |
L’administrateur est connecté avec les droits requis. L’agent IA est accessible et connecté au backend. |
Postcondition |
Des statistiques sont extraites du backend et affichées à l’administrateur sous forme synthétique ou visuelle. |
Scénario nominal |
|
Scénario alternatif |
L’administrateur clique sur un raccourci d’indicateur (ex : "trafic journalier"). L’IA répond avec les données préconfigurées. |
Scénario d’exception |
L’IA ne comprend pas la requête → demande de reformulation. Le backend ne retourne aucune donnée → message d’erreur. |
Remarque |
Cette fonctionnalité ne nécessite pas de tableau de bord classique ; elle mise sur une interaction fluide et contextualisée avec l’IA. |


6.4. Ecrans – Suivre l’activité de la plateforme
Demander des statistiques | Demander un tableau des résultats |
---|---|
![]() |
![]() |
6.5. UC_A2 : Modérer les utilisateurs
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Modérer les utilisateurs |
Description |
Ce cas d’utilisation permet à l’administrateur de désactiver temporairement ou définitivement un compte utilisateur en cas d’abus, via une commande adressée à une IA. |
Acteurs |
Administrateur, Agent IA, Backend Django, Base de données |
Précondition |
L’administrateur est connecté et autorisé à modérer. Le compte ciblé existe et est actif. |
Postcondition |
Le compte utilisateur est désactivé en base. L’utilisateur concerné est notifié de sa suspension. |
Scénario nominal |
|
Scénario alternatif |
L’IA propose plusieurs correspondances si le nom est ambigu. L’admin peut spécifier une durée ou une raison plus précise. |
Scénario d’exception |
L’ID utilisateur est introuvable. Le backend retourne une erreur de droits ou de connexion. Le compte est déjà suspendu. |
Remarque |
Ce cas d’utilisation s’inscrit dans une stratégie de supervision intelligente : l’IA agit comme un intermédiaire entre l’humain et le système pour faciliter la modération. |


6.6. UC_A3 : Superviser les incidents techniques
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Superviser les incidents techniques |
Description |
Ce cas d’utilisation permet à l’administrateur de suivre les erreurs critiques, logs et anomalies techniques signalées automatiquement par l’infrastructure, via une interface d’analyse pilotée par une IA. |
Acteurs |
Administrateur, Agent IA, Backend, Outils de monitoring |
Précondition |
L’administrateur est connecté et a les autorisations requises. Les outils de monitoring sont actifs et correctement intégrés au backend. |
Postcondition |
Les logs et incidents récents sont affichés ou signalés. L’administrateur peut consulter ou archiver les incidents signalés. |
Scénario nominal |
|
Scénario alternatif |
L’IA détecte automatiquement une anomalie et notifie l’admin sans requête manuelle. Des incidents sont classés par priorité ou par module technique. |
Scénario d’exception |
Aucune donnée de log n’est disponible → message d’indisponibilité. Erreur de récupération depuis les outils de monitoring → message d’échec. Requête IA mal formulée → suggestion de reformulation. |
Remarque |
L’objectif est de proposer une supervision proactive et intelligente, sans imposer une interface de surveillance complexe. |
6.7. Diagramme d’activité : Superviser les incidents techniques (UC_A3)

6.8. Diagramme de séquence : Superviser les incidents techniques (UC_A3)

6.9. UC_A4 : Suivre l’activité de la plateforme
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer les accès administrateurs |
Description |
Ce cas d’utilisation permet à un administrateur principal d’attribuer ou de révoquer les droits d’administration à d’autres utilisateurs via une interface dédiée, sans passer par le chatbot. |
Acteurs |
Administrateur, Backend, Base de données PostgreSQL |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Cette fonctionnalité repose sur une gestion sécurisée des rôles. |
6.9.1. Diagramme d’activité : Gérer les accès administrateurs (UC_A4)

6.9.2. Diagramme de séquence : Gérer les accès administrateurs (UC_A4)

6.10. UC_A5 : Gérer la modération des avis
Élément | Détail |
---|---|
Nom du cas d’utilisation |
Gérer la modération des avis |
Description |
Ce cas d’utilisation permet à l’administrateur de consulter les avis publiés par les clients sur les coiffeuses ou les salons, et de supprimer ceux jugés inappropriés ou contraires aux règles de la plateforme. |
Acteurs |
Administrateur, IA, Backend, Base de données |
Précondition |
|
Postcondition |
|
Scénario nominal |
|
Scénario alternatif |
|
Scénario d’exception |
|
Remarque |
Ce processus renforce la confiance des utilisateurs et garantit un environnement de publication sain et respectueux. |
6.10.1. Diagramme d’activité : Gérer la modération des avis (UC_A5)

6.10.2. Diagramme de séquence : Gérer la modération des avis (UC_A5)

7. Conclusion de l’analyse système
Dans cette section consacrée à l’analyse système, j’ai veillé à fournir une modélisation aussi claire et cohérente que possible.
L’objectif principal était de rendre cette partie lisible, structurée, et directement exploitable pour les phases de conception et de développement à venir.
J’ai fait le choix de limiter volontairement les blocs de texte trop longs afin de préserver une lecture fluide, tout en apportant les définitions nécessaires lorsqu’elles s’avéraient pertinentes.
Les éléments plus terminologiques, spécifiques ou répétitifs seront explicités de manière centralisée dans une section dédiée au lexique, afin de ne pas alourdir cette partie.
Cette analyse s’est concentrée sur la modélisation fonctionnelle à travers différents types de diagrammes UML (cas d’utilisation, activités, séquences), dans une logique d’expressivité orientée utilisateur.
Elle permet de cadrer les interactions majeures, les rôles clés et les processus applicatifs essentiels du projet Hairbnb.
Enfin, il est important de noter que cette étape de modélisation ne constitue qu’un deuxiéme volet.
Elle sera complétée ultérieurement par une analyse orientée données, à travers une méthode adaptée (MERISE), qui viendra structurer la base de données relationnelle PostgreSQL et renforcer l’articulation backend ↔ logique métier.
Je dois reconnaître que cette partie de l’analyse système a été particulièrement exigeante.
Elle m’a demandé beaucoup d’efforts, de rigueur, et surtout de persévérance.
Le travail a parfois été long, répétitif, et pas toujours motivant — mais je reste convaincu qu’il était nécessaire d’aller aussi loin pour poser des bases solides et structurées.
Il est possible que la qualité de rédaction ou de présentation varie légèrement entre le début et la fin de cette section, reflet naturel de la fatigue accumulée au fil des jours.
Néanmoins, parvenir au bout de cette phase est pour moi une réelle source de soulagement et de satisfaction.
J’espère que la lecture de cette partie, malgré sa densité, ne s’est pas révélée trop lourde ou ennuyeuse.
Merci à ceux qui prendront le temps de la parcourir avec attention.
8. Lexique des termes techniques
Terme technique | Définition |
---|---|
API (Application Programming Interface) |
Interface de programmation permettant à différentes applications de communiquer entre elles via des protocoles standardisés. |
Backend |
Partie serveur d’une application qui gère la logique métier, les bases de données et les traitements côté serveur, invisible pour l’utilisateur final. |
Base de données relationnelle |
Système de gestion de base de données organisant les informations en tables liées par des relations, permettant l’intégrité et la cohérence des données. |
BPMN (Business Process Model and Notation) |
Standard de modélisation graphique pour représenter les processus métier de manière visuelle et standardisée. |
Cloud |
Infrastructure informatique accessible via Internet, permettant le stockage et le traitement de données sur des serveurs distants. |
Credential stuffing |
Attaque informatique consistant à utiliser massivement des combinaisons login/mot de passe volées pour accéder à des comptes utilisateurs. |
Django |
Framework web Python open-source suivant le pattern Model-View-Template, facilitant le développement rapide d’applications web sécurisées. |
FCM (Firebase Cloud Messaging) |
Service de Google permettant l’envoi de notifications push gratuitement vers des applications mobile et web. |
Firebase |
Plateforme de développement d’applications mobiles et web de Google, offrant des services backend comme l’authentification, les bases de données et l’hébergement. |
Firestore |
Base de données NoSQL en temps réel de Firebase, permettant la synchronisation automatique des données entre clients. |
Flutter |
Framework de développement d’applications mobiles créé par Google, permettant de créer des apps natives pour iOS et Android avec un seul code source. |
Fork (diagramme d’activité) |
Élément UML représentant la division d’un flux d’activité en plusieurs branches parallèles, symbolisé par une barre horizontale. |
Framework |
Structure logicielle réutilisable fournissant des fonctionnalités de base pour développer des applications, réduisant le temps de développement. |
Frontend |
Partie client d’une application avec laquelle l’utilisateur interagit directement, incluant l’interface utilisateur et l’expérience utilisateur. |
Géolocalisation |
Technologie permettant de déterminer la position géographique d’un dispositif à l’aide de GPS, Wi-Fi ou données de réseau mobile. |
HTTPS |
Protocole de communication sécurisé basé sur HTTP, utilisant le chiffrement SSL/TLS pour protéger les échanges de données. |
JWT (JSON Web Token) |
Standard ouvert pour transmettre des informations de manière sécurisée entre parties sous forme de token JSON signé numériquement. |
ORM (Object-Relational Mapping) |
Technique de programmation permettant de manipuler une base de données relationnelle en utilisant des objets plutôt que du SQL direct. |
OAuth 2.0 |
Protocole d’autorisation permettant à une application d’accéder aux ressources d’un utilisateur sans connaître ses identifiants. |
PCI-DSS |
Standard de sécurité pour les entreprises qui traitent des informations de cartes de crédit, garantissant la protection des données financières. |
PostgreSQL |
Système de gestion de base de données relationnelle open-source, réputé pour sa robustesse et ses fonctionnalités avancées. |
Push notification |
Message envoyé automatiquement par une application vers l’appareil d’un utilisateur, même quand l’application n’est pas active. |
REST API |
Architecture pour les services web utilisant les méthodes HTTP standard (GET, POST, PUT, DELETE) pour les opérations sur les ressources. |
SDK (Software Development Kit) |
Ensemble d’outils de développement permettant d’intégrer des fonctionnalités spécifiques dans une application. |
SMTP |
Protocole standard pour l’envoi d’emails sur Internet, gérant l’acheminement des messages entre serveurs de messagerie. |
SPF (Sender Policy Framework) |
Mécanisme d’authentification email permettant de vérifier qu’un email provient bien du serveur autorisé par le domaine expéditeur. |
SQL |
Langage de programmation standardisé pour gérer et manipuler les bases de données relationnelles. |
SSL/TLS |
Protocoles cryptographiques assurant la sécurité des communications sur Internet en chiffrant les données échangées. |
Stripe |
Plateforme de paiement en ligne permettant aux entreprises d’accepter des paiements par carte bancaire de manière sécurisée. |
Timeout |
Délai d’attente maximal pour une opération, après lequel le système considère que l’opération a échoué. |
Token |
Chaîne de caractères sécurisée utilisée pour authentifier un utilisateur ou autoriser l’accès à des ressources sans révéler les identifiants. |
UML (Unified Modeling Language) |
Langage de modélisation graphique standardisé utilisé pour spécifier, visualiser et documenter les systèmes logiciels. |
UID (User Identifier) |
Identifiant unique attribué à chaque utilisateur dans un système, permettant de le distinguer de manière univoque. |
UI/UX (User Interface/User Experience) |
Conception de l’interface utilisateur (UI) et optimisation de l’expérience utilisateur (UX) pour améliorer l’utilisabilité d’une application. |
Webhook |
Mécanisme permettant à une application d’envoyer automatiquement des données à une autre application lors d’événements spécifiques. |
9. Sources et références
Type | Titre/Description | Source | Année |
---|---|---|---|
Méthodologie UML |
UML 2.5.1 Specification - Unified Modeling Language |
Object Management Group (OMG) |
2017 |
Méthodologie UML |
What is Activity Diagram? - UML Activity Diagram Tutorial |
Visual Paradigm |
2024 |
Méthodologie UML |
Qu’est-ce qu’un diagramme de séquence UML ? - Guide complet |
Miro |
2024 |
Analyse système |
Analyse de système - Définition et méthodologie |
Office québécois de la langue française |
2024 |
Tutorial YouTube |
Firebase Darija |
YouTube - GOTOCODE |
2021 |
Tutorial YouTube |
Stripe Payment Integration Tutorial |
YouTube - Web Dev Simplified |
2023 |
Tutorial YouTube |
API Design Best Practices |
YouTube - Hussein Nasser |
2024 |
Tutorial YouTube |
Cours Complet et exercice sur Astah UML |
YouTube - Prof. Fatimazahra BARRAMOU |
2021 |
Tutorial YouTube |
Cours UML |
YouTube - Abdelkhalek BENHOUMINE |
2020 |
Documentation API |
Stripe API Reference - Payment Methods |
Stripe Developers |
2024 |
Documentation API |
Firebase Admin SDK Documentation |
Google Cloud |
2024 |
9.1. Notes sur les sources
9.1.1. Sources YouTube
Les tutoriels issus de YouTube ont été principalement utilisés dans un objectif pédagogique, à savoir :
-
Réviser les principes fondamentaux de la modélisation UML.
-
Apprendre mieux à utiliser des outils comme Astah pour la création de diagrammes.
-
Approfondir certains concepts via des contenus en langue arabe (ma langue maternelle), afin de faciliter leur compréhension.
-
Réduire l’effort cognitif lié à l’apprentissage en accédant à des explications plus intuitives, souvent illustrées de cas concrets.
9.1.2. Sources académiques
Les ressources académiques et les standards reconnus ont servi de socle théorique pour :
-
Structurer l’analyse système selon des normes rigoureuses (selon ma degree de comprehension).
-
Comprendre et intégrer les spécifications techniques des protocoles et méthodes utilisés.
-
S’appuyer sur des méthodologies UML standardisées dans le domaine de l’ingénierie logicielle.
9.1.3. Sources techniques et pratiques
Les documentations officielles et articles spécialisés ont joué un rôle fondamental pour :
-
L’implémentation concrète des fonctionnalités définies dans le cahier des charges.
-
La résolution de problèmes techniques spécifiques rencontrés lors du développement.
-
L’optimisation des performances de l’application Hairbnb.
-
Le respect (selon ma degree de comprehension) des bonnes pratiques industrielles dans les technologies employées (Django, Flutter, Firebase, PostgreSQL…).
Méthodologie de traitement des sources :
|