Brain Crafters

Brain Crafters

Brain Crafters

Application de Gestion d'Événements

Cahier de Spécifications

Groupe: Brain Crafters — 3C-SDE1

ESPRIT

Ce document présente les spécifications détaillées du projet de gestion d'événements. Il couvre les besoins fonctionnels et non fonctionnels, les vues architecturales, les diagrammes, et les critères de qualité attendus.

Année Universitaire

2024-2025

Date de Publication

25 octobre 2025

Version du Document

v1.0 - Version Finale

Encadrant

Wiem Baazouzi

Équipe & Responsables des Modules

Montassar SOULI
Montassar SOULI
Zied SNOUSSI
Zied SNOUSSI
Khaled BEN CHEMELKH
Khaled BEN CHEMELKH
Dorra HADDAD BOUBAKER
Dorra HADDAD BOUBAKER
Houssem EDDINE ASKRI
Houssem EDDINE ASKRI
Aroussia HASSEN
Aroussia HASSEN
ESPRIT - École d'Ingénieurs© 2025 Brain Crafters
Table des Matières
Sommaire
I. Description Générale

Présentation générale du système, contexte métier, périmètre, contraintes et stack technologique.

1.1 Objet du document

Ce document présente les spécifications fonctionnelles et non fonctionnelles de l'application de gestion d'événements, destinée à faciliter l'organisation, la planification et le suivi des événements. Il constitue le cahier des charges technique et fonctionnel servant de référence pour le développement, les tests et la validation du système.

1.2 Portée du projet

L'application permet la gestion complète des événements, depuis leur création jusqu'à leur évaluation, en passant par les réservations, les paiements et la gestion des ressources.

Périmètre fonctionnel

  • Gestion des utilisateurs et des rôles (Admin, Manager, Organisateur, Membre)
  • Création, modification et suppression d'événements
  • Système de réservation et gestion des places
  • Traitement des paiements en ligne sécurisés
  • Gestion des ressources (salles, équipements, budgets)
  • Système de notification multi-canal (email, SMS, push)
  • Génération de rapports et tableaux de bord
  • Workflow d'approbation des événements

1.3 Contexte métier

Le système répond aux besoins des organisations souhaitant digitaliser et optimiser la gestion de leurs événements. Il s'adresse aux entreprises, associations, institutions éducatives et organismes publics.

Problématiques adressées

  • • Processus manuel et chronophage
  • • Manque de visibilité sur les ressources
  • • Difficultés de coordination
  • • Absence de traçabilité

Bénéfices attendus

  • • Automatisation des processus
  • • Optimisation des ressources
  • • Amélioration de l'expérience utilisateur
  • • Reporting en temps réel

1.4 Stack Technologique

Frontend

Framework

Next.js 14+, React 18+

Styling

TailwindCSS, shadcn/ui

State

React Hooks, Context API

Validation

Zod, React Hook Form

Backend

Runtime

Node.js, Next.js API

Base de données

PostgreSQL, Prisma ORM

Auth

NextAuth.js, JWT

API

REST, JSON

Infrastructure & DevOps

Hébergement

Vercel, AWS, Azure

CI/CD

GitHub Actions

Monitoring

Sentry, Vercel Analytics

Cache

Redis, Next.js Cache

Services Externes

Paiement

Stripe, PayPal

Email

SendGrid, Resend

SMS

Twilio

Storage

AWS S3, Cloudinary

1.5 Contraintes et Hypothèses

Contraintes techniques

  • Compatibilité avec les navigateurs modernes (Chrome, Firefox, Safari, Edge)
  • Temps de réponse inférieur à 3 secondes pour les opérations critiques
  • Support de 1000+ utilisateurs simultanés
  • Conformité RGPD pour la protection des données personnelles
  • Chiffrement SSL/TLS pour toutes les communications

Hypothèses

  • Les utilisateurs disposent d'une connexion internet stable
  • Les passerelles de paiement externes sont disponibles 99.9% du temps
  • Les données sensibles sont stockées de manière sécurisée et chiffrée
  • Un support technique est disponible pour les utilisateurs
II. Objectifs du Projet

Cette section décrit les objectifs principaux du projet, à la fois métier et techniques.

Objectifs fonctionnels

  • Permettre la création, modification et suppression d'événements par les organisateurs.
  • Offrir un parcours de réservation fluide pour les participants.
  • Gérer les rôles et permissions (administrateur, organisateur, membre, manager).
  • Fournir des états et rapports sur les événements et les inscriptions.

Objectifs techniques

  • Architecture modulaire et testable (API RESTful).
  • Haute disponibilité et scalabilité horizontale.
  • Sécurité des échanges et protection des données utilisateurs.
  • Déploiement automatisé via pipelines CI/CD.

Critères de succès

Le projet sera considéré comme réussi si : temps de réservation inférieur à 3s en conditions normales, disponibilité 99.5%, et retour positif des utilisateurs lors de la phase pilote.

III. Analyse des Besoins

Cette section identifie les parties prenantes, leurs attentes, les principaux cas d'utilisation, ainsi que l'analyse des risques et la priorisation des exigences.

3.1 Parties Prenantes

Matrice des parties prenantes
ActeurRôleResponsabilitésNiveau d'influence
AdministrateursGestion globaleParamétrage, supervision, gestion des utilisateursTrès élevé
ManagersSupervisionApprobation budgets, consultation rapports, validationÉlevé
OrganisateursGestion événementsCréation, modification, gestion ressources et participantsÉlevé
MembresParticipantsConsultation, réservation, paiement des événementsMoyen

3.2 Cas d'Utilisation Clés

UC-01 : Créer un événement

L'organisateur crée un événement en définissant ses ressources (lieu, capacités, prix, date).

Priorité: HauteComplexité: Moyenne

UC-02 : Rechercher des événements

Les utilisateurs parcourent et recherchent des événements selon des filtres (date, lieu, type, prix).

Priorité: HauteComplexité: Moyenne

UC-03 : Réserver et payer

Le membre réserve une place et effectue le paiement en ligne de manière sécurisée.

Priorité: CritiqueComplexité: Élevée

UC-04 : Générer des rapports

Les managers génèrent des rapports d'inscriptions, de revenus et de performance.

Priorité: MoyenneComplexité: Moyenne

3.3 Analyse des Risques

Matrice d'analyse des risques
RisqueImpactProbabilitéMitigation
Indisponibilité passerelle paiementÉlevéFaiblePasserelle de secours, gestion de file d'attente
Surcharge serveur lors d'événements populairesMoyenMoyenneAuto-scaling, cache, CDN, load balancing
Violation de données personnellesCritiqueFaibleChiffrement, audits sécurité, conformité RGPD
Réservations multiples simultanéesMoyenÉlevéeVerrouillage optimiste, transactions atomiques
Perte de donnéesCritiqueTrès faibleSauvegardes automatiques quotidiennes, réplication

3.4 Contraintes et Hypothèses

Contraintes techniques

  • Intégration obligatoire avec passerelle de paiement externe
  • Support des utilisateurs mobiles et connexion intermittente
  • Chiffrement des données sensibles au repos et en transit
  • Conformité RGPD et réglementation locale

Contraintes organisationnelles

  • Budget limité pour l'infrastructure cloud
  • Délai de livraison : 6 mois pour MVP
  • Équipe de développement : 3-5 développeurs
  • Formation utilisateurs nécessaire

Hypothèses techniques

  • Connexion internet stable pour les utilisateurs
  • Disponibilité des services externes à 99.9%
  • Navigateurs modernes avec JavaScript activé
  • Capacité de stockage suffisante pour 5 ans

Hypothèses métier

  • Croissance progressive du nombre d'utilisateurs
  • Support technique disponible en heures ouvrées
  • Processus d'approbation définis et respectés
  • Formation initiale des utilisateurs clés

3.5 Priorisation des Exigences

Méthode MoSCoW

Must Have (Indispensable)
  • • Authentification et gestion des rôles
  • • CRUD événements et ressources
  • • Système de réservation et paiement
  • • Notifications email de base
Should Have (Important)
  • • Workflow d'approbation
  • • Rapports et tableaux de bord
  • • Notifications SMS
  • • Recherche avancée et filtres
Could Have (Souhaitable)
  • • Intégration calendrier externe
  • • Notifications push
  • • Export de données avancé
  • • Multi-langue
Won't Have (Reporté)
  • • Application mobile native
  • • Intelligence artificielle pour recommandations
  • • Intégration réseaux sociaux avancée
IV. Besoins Fonctionnels

4.1 Authentification et Autorisation

Authentification et Autorisation - exigences fonctionnelles
#Exigence
1Système de connexion sécurisé avec gestion des sessions
2Contrôle d'accès basé sur les rôles (RBAC)
3Authentification multi-facteurs optionnelle
4Gestion des mots de passe oubliés

4.2 Gestion des Événements

Gestion des événements - exigences fonctionnelles
#Exigence
1CRUD complet pour les événements
2Système de workflow pour l'approbation des événements
3Gestion des événements récurrents
4Système de notification automatique

4.3 Système de Réservation

Système de Réservation - exigences fonctionnelles
#Exigence
1Réservation en temps réel avec vérification de disponibilité
2Gestion des conflits de réservation
3Système de file d'attente automatique
4Confirmation par email/SMS

4.4 Traitement des Paiements

Traitement des Paiements - exigences fonctionnelles
#Exigence
1Intégration sécurisée avec les passerelles de paiement
2Support de multiples devises
3Gestion des paiements échelonnés
4Système de facturation automatique

4.5 Communication

Communication - exigences fonctionnelles
#Exigence
1Système de notification intégré (email, SMS, push)
2Messagerie interne entre utilisateurs
3Alertes et rappels automatiques
4Newsletter et communications de masse
V. Besoins Non-Fonctionnels

5.1 Performance

Performance - exigences non fonctionnelles
#Exigence
1Temps de réponse < 3 secondes pour les opérations courantes
2Support de 1000 utilisateurs simultanés minimum
3Disponibilité du système : 99.5%
4Optimisation pour mobile et desktop

5.2 Sécurité

Sécurité - exigences non fonctionnelles
#Exigence
1Chiffrement des données sensibles (SSL/TLS)
2Conformité RGPD pour la protection des données
3Audit trail de toutes les opérations critiques
4Sauvegarde quotidienne des données

5.3 Compatibilité

Compatibilité - exigences non fonctionnelles
#Exigence
1Compatible avec les navigateurs modernes (Chrome, Firefox, Safari, Edge)
2Interface responsive pour mobiles et tablettes
3APIs RESTful pour l'intégration avec d'autres systèmes
4Support multi-langues (français, anglais, arabe)

5.4 Maintenabilité

Maintenabilité - exigences non fonctionnelles
#Exigence
1Architecture modulaire et évolutive
2Documentation technique complète
3Tests automatisés pour les fonctionnalités critiques
4Déploiement automatisé (CI/CD)

5.5 Utilisabilité

Utilisabilité - exigences non fonctionnelles
#Exigence
1Interface intuitive et ergonomique
2Aide contextuelle et documentation utilisateur
3Accessibilité pour les personnes handicapées (WCAG 2.1)
4Formation utilisateur intégrée
VI. Vue Contextuelle

Cette section présente le contexte système, les acteurs principaux, leurs interactions avec l'application, ainsi que les systèmes externes avec lesquels l'application communique.

6.1 Contexte Système

L'application de gestion d'événements s'intègre dans un écosystème comprenant des utilisateurs internes, des systèmes externes et des services tiers pour offrir une solution complète.

Systèmes Externes et Intégrations

Services de Paiement
  • Stripe/PayPal : Traitement des paiements en ligne
  • Webhooks : Notifications de statut de paiement
  • API REST : Création de sessions de paiement
Services de Communication
  • SendGrid/Resend : Envoi d'emails transactionnels
  • Twilio : Notifications SMS
  • Push Notifications : Alertes en temps réel
Stockage et Médias
  • AWS S3/Cloudinary : Stockage d'images et documents
  • CDN : Distribution de contenu optimisée
  • Compression : Optimisation automatique
Authentification
  • NextAuth.js : Gestion des sessions
  • OAuth 2.0 : Connexion via réseaux sociaux
  • JWT : Tokens d'authentification sécurisés

6.2 Acteurs et Cas d'Utilisation

Le système supporte quatre types d'acteurs principaux, chacun avec des responsabilités et des cas d'utilisation spécifiques.

Administrateur

Responsable de la gestion globale du système, de la configuration et de la supervision de toutes les activités.

Responsabilités principales
  • • Gestion des utilisateurs et attribution des rôles
  • • Configuration des paramètres système
  • • Supervision des ressources et des événements
  • • Génération de rapports globaux et analytics
  • • Gestion des droits d'accès et permissions
Use case ADMIN
Cas d'utilisation - ADMIN

Manager

Supervise les événements et les ressources, approuve les demandes et consulte les rapports de performance.

Responsabilités principales
  • • Approbation des événements et des budgets
  • • Consultation des rapports et tableaux de bord
  • • Validation des ressources allouées
  • • Suivi des KPIs et métriques de performance
  • • Gestion des conflits de ressources
Use case MANAGER
Cas d'utilisation - MANAGER

Organisateur

Crée et gère les événements, coordonne les ressources et assure le bon déroulement des activités.

Responsabilités principales
  • • Création et modification d'événements
  • • Gestion des inscriptions et des participants
  • • Allocation et réservation de ressources
  • • Communication avec les participants
  • • Suivi du déroulement des événements
Use case ORGANISATEUR
Cas d'utilisation - ORGANISATEUR

Membre / Participant

Consulte les événements disponibles, effectue des réservations et gère ses inscriptions.

Responsabilités principales
  • • Consultation du catalogue d'événements
  • • Réservation de places et paiement en ligne
  • • Gestion de son profil et préférences
  • • Consultation de l'historique des participations
  • • Réception de notifications et rappels
Use case MEMBER
Cas d'utilisation - MEMBER

6.3 Flux d'Interaction Typiques

Scénario 1 : Création d'un événement

  1. L'organisateur crée un événement avec détails et ressources
  2. Le système vérifie la disponibilité des ressources
  3. Le manager reçoit une notification pour approbation
  4. Après approbation, l'événement devient visible aux membres
  5. Les notifications sont envoyées aux utilisateurs intéressés

Scénario 2 : Réservation et paiement

  1. Le membre sélectionne un événement et réserve une place
  2. Le système vérifie la disponibilité en temps réel
  3. Redirection vers la passerelle de paiement sécurisée
  4. Confirmation de paiement via webhook
  5. Envoi de confirmation par email et SMS
  6. Mise à jour du statut de réservation
VII. Vue Building Block

Cette section présente la décomposition architecturale du système en building blocks, du niveau le plus abstrait (niveau 0) jusqu'aux composants détaillés par acteur (niveau 2).

Vue Niveau 0 - Vue Globale

Vue Building Block Niveau 0
Figure VII.1 - Vue Building Block Niveau 0 - Vision globale du système

Vue de haut niveau montrant les principaux building blocks du système : Gateway/API, Services métier, Gestion des ressources, Notification et Persistance.

Vue Niveau 1 - Décomposition Principale

Vue Building Block Niveau 1
Figure VII.2 - Vue Building Block Niveau 1 - Décomposition des composants principaux

Décomposition détaillée des building blocks principaux, montrant les interactions entre les différents composants et leurs responsabilités spécifiques.

Vue Niveau 2 - Administrateur

Vue Building Block Niveau 2 - Admin
Figure VII.3 - Vue Building Block Niveau 2 - Composants de l'Administrateur

Détail des composants spécifiques à l'administrateur, incluant la gestion des utilisateurs, des ressources système et des droits d'accès.

Vue Niveau 2 - Manager

Vue Building Block Niveau 2 - Manager
Figure VII.4 - Vue Building Block Niveau 2 - Composants du Manager

Architecture détaillée des composants du manager, montrant la gestion des événements, des ressources et des réservations.

Vue Niveau 2 - Organisateur

Vue Building Block Niveau 2 - Organisateur
Figure VII.5 - Vue Building Block Niveau 2 - Composants de l'Organisateur

Vue détaillée des composants de l'organisateur, illustrant la création et la gestion des événements ainsi que l'interaction avec les ressources.

VIII. Diagramme de Classe

Diagrammes UML de classes décrivant les entités et relations pour chaque acteur principal du système.

Diagramme de Classes - Administrateur

Diagramme de Classes Admin
Figure VIII.1 - Diagramme de Classes niveau 3 - Administrateur

Représentation détaillée des classes liées à l'administrateur, montrant la gestion des utilisateurs, des ressources et des droits d'accès.

Diagramme de Classes - Manager

Diagramme de Classes Manager
Figure VIII.2 - Diagramme de Classes niveau 3 - Manager

Vue détaillée des classes associées au manager, illustrant la gestion des événements, des ressources et des réservations.

Diagramme de Classes - Organisateur

Diagramme de Classes Organisateur
Figure VIII.3 - Diagramme de Classes niveau 3 - Organisateur

Structure détaillée des classes de l'organisateur, montrant la création et la gestion des événements ainsi que l'interaction avec les ressources.

IX. Diagramme de Raffinement

Diagrammes supplémentaires expliquant le raffinement des composants.

Raffinement Admin

Raffinement Admin
Figure IX.1 - Diagramme de raffinement - Admin

Raffinement Manager

Raffinement Manager
Figure IX.2 - Diagramme de raffinement - Manager

Raffinement Organisateur

Raffinement Organisateur
Figure IX.3 - Diagramme de raffinement - Organisateur
X. Vue de Déploiement

Architecture de déploiement et infrastructure cible (serveurs, conteneurs, cloud).

Deployment
Diagramme de déploiement
XI. Vue d'Exécution

Cette section décrit les flux d'exécution des scénarios critiques du système, incluant les interactions entre composants, les temps de réponse attendus et la gestion des erreurs.

11.1 Scénario : Authentification Utilisateur

Processus de connexion sécurisée permettant aux utilisateurs d'accéder au système avec leurs identifiants.

Étapes du processus

  1. Saisie des identifiants : L'utilisateur entre son email et mot de passeTemps estimé : 10-30 secondes
  2. Validation côté client : Vérification du format des donnéesTemps : instantané (moins de 100ms)
  3. Requête au serveur : Envoi sécurisé via HTTPS au backendTemps : 200-500ms
  4. Vérification en base : Comparaison du hash du mot de passeTemps : 300-800ms
  5. Génération du token : Création d'un JWT avec les informations utilisateurTemps : 50-150ms
  6. Réponse et redirection : Stockage du token et redirection vers le dashboardTemps : 100-300ms

Temps total attendu : 1-2 secondes

Gestion des erreurs

  • Identifiants incorrects : Message d'erreur générique pour éviter l'énumération
  • Compte bloqué : Après 5 tentatives échouées, blocage temporaire de 15 minutes
  • Session expirée : Redirection automatique vers la page de connexion
  • Erreur serveur : Message utilisateur convivial et logging côté serveur
Sequence Authentification
Diagramme de séquence - Authentification

11.2 Scénario : Ajout de Ressource

Processus permettant aux organisateurs d'ajouter des ressources (salles, équipements) au système.

Étapes du processus

  1. Accès au formulaire : Navigation vers la page d'ajout de ressourceTemps : 200-400ms
  2. Saisie des informations : Nom, type, capacité, disponibilité, coûtTemps : 1-3 minutes (utilisateur)
  3. Upload de fichiers : Images, documents associésTemps : 2-10 secondes selon taille
  4. Validation des données : Vérification des champs requis et formatsTemps : 100-300ms
  5. Vérification des conflits : Contrôle de l'unicité et disponibilitéTemps : 300-600ms
  6. Enregistrement : Insertion en base de donnéesTemps : 200-500ms
  7. Notification : Alerte aux managers pour validationTemps : 500ms-2s (asynchrone)

Temps total attendu : 2-4 secondes (hors saisie utilisateur)

Validations et contraintes

  • Nom unique : Pas de doublon dans la même catégorie
  • Capacité valide : Nombre positif et réaliste
  • Fichiers : Taille maximale 5MB, formats autorisés (JPG, PNG, PDF)
  • Permissions : Vérification du rôle organisateur/admin
Sequence Ajouter Resource
Diagramme de séquence - Ajouter une ressource

11.3 Scénario : Réservation d'Événement

Processus complet de réservation incluant la vérification de disponibilité, le paiement et la confirmation.

Étapes du processus

  1. Sélection de l'événement : Consultation des détails et disponibilitéTemps : 300-600ms
  2. Vérification en temps réel : Contrôle du nombre de places disponiblesTemps : 200-400ms
  3. Réservation temporaire : Blocage de la place pendant 10 minutesTemps : 300-500ms
  4. Redirection paiement : Création de session Stripe/PayPalTemps : 1-2 secondes
  5. Traitement du paiement : Transaction sécurisée via passerelleTemps : 3-8 secondes
  6. Webhook de confirmation : Réception du statut de paiementTemps : 1-3 secondes
  7. Finalisation : Mise à jour du statut et envoi de confirmationsTemps : 500ms-1s
  8. Notifications : Email et SMS de confirmationTemps : 2-5 secondes (asynchrone)

Temps total attendu : 8-15 secondes

Gestion des cas limites

  • Places épuisées : Message d'erreur et proposition d'événements similaires
  • Paiement échoué : Libération de la réservation temporaire
  • Timeout : Annulation automatique après 10 minutes
  • Doublon : Vérification pour éviter les réservations multiples
  • Concurrence : Gestion optimiste avec verrouillage de ligne
Sequence Reservation
Diagramme de séquence - Réservation d'un événement

11.4 Considérations de Performance

Optimisations appliquées

  • • Cache Redis pour les données fréquentes
  • • Indexation des requêtes critiques
  • • Pagination des résultats
  • • Compression des réponses API
  • • CDN pour les assets statiques

Monitoring et alertes

  • • Temps de réponse API (seuil : 3s)
  • • Taux d'erreur (seuil : 1%)
  • • Disponibilité (objectif : 99.5%)
  • • Utilisation CPU/Mémoire
  • • Logs centralisés avec Sentry
XII. Patrons d'Architecture

Les patrons architecturaux choisis favorisent la scalabilité, la résilience et la maintenabilité. Le découpage fonctionnel de l'application suit une approche par niveaux pour une meilleure organisation des responsabilités.

Choix de patrons

  • Microservices / services modulaires pour découpage fonctionnel
  • Event-driven pour notifications et traitements asynchrones
  • API Gateway pour centraliser l'authentification et la sécurisation
  • Cache distribué pour améliorer les temps de réponse sur lectures fréquentes

Découpage Fonctionnel - Niveau 1 (Partie 1)

Découpage Fonctionnel Niveau 1 - Partie 1
Figure XII.1 - Découpage fonctionnel de l'application - Niveau 1 (Première partie)

Premier niveau de découpage fonctionnel montrant les composants principaux et leurs interactions dans la première partie de l'architecture.

Découpage Fonctionnel - Niveau 1 (Partie 2)

Découpage Fonctionnel Niveau 1 - Partie 2
Figure XII.2 - Découpage fonctionnel de l'application - Niveau 1 (Deuxième partie)

Suite du découpage de niveau 1 présentant les composants complémentaires et leurs interactions dans la deuxième partie de l'architecture.

Découpage Fonctionnel - Niveau 2

Découpage Fonctionnel Niveau 2
Figure XII.3 - Découpage fonctionnel détaillé - Niveau 2

Vue détaillée du découpage fonctionnel de niveau 2, illustrant la décomposition fine des composants et leurs relations au sein de l'architecture. Ce niveau montre comment les patrons architecturaux sont appliqués concrètement dans l'organisation des services.

Découpage Fonctionnel - Niveau 3 (Partie 1)

Découpage Fonctionnel Niveau 3 - Partie 1
Figure IX.4 - Diagramme de découpage fonctionnel - Niveau 3 (Partie 1)

Découpage Fonctionnel - Niveau 3 (Partie 2)

Découpage Fonctionnel Niveau 3 - Partie 2
Figure IX.5 - Diagramme de découpage fonctionnel - Niveau 3 (Partie 2)
XIII. Modèle MVC

Le pattern MVC (Model-View-Controller) sépare la présentation, la logique métier et la gestion des données, facilitant la testabilité, la maintenabilité et l'évolutivité de l'application.

Diagramme MVC - Architecture Globale

Représentation visuelle des interactions entre Utilisateur, Vue, Contrôleur, Modèle et Base de données.

Architecture MVC
Figure XIII-1 : Architecture MVC avec flux de données bidirectionnel

Architecture MVC Appliquée

Model (Modèle)

Représente les données et la logique métier de l'application.

  • Entités principales : Event, User, Reservation, Payment, Resource, Notification
  • Repositories : Abstraction de l'accès aux données (EventRepository, UserRepository)
  • Services métier : Logique de validation, calculs, règles métier
  • DTOs : Objets de transfert de données entre les couches

View (Vue)

Interface utilisateur et présentation des données.

  • Composants React/Next.js : Pages, composants réutilisables, layouts
  • UI Components : Formulaires, tableaux, modales, notifications
  • State Management : React hooks, Context API pour l'état local
  • Styling : TailwindCSS, shadcn/ui pour une interface moderne

Controller (Contrôleur)

Gère les requêtes utilisateur et coordonne Model et View.

  • API REST : Endpoints exposant les opérations CRUD
  • Route Handlers : Next.js API routes pour le traitement des requêtes
  • Middleware : Authentification, validation, logging, gestion d'erreurs
  • Controllers : EventController, UserController, ReservationController

Flux de Données

  1. Requête utilisateur : L'utilisateur interagit avec la Vue (clic, formulaire)
  2. Appel Controller : La Vue envoie une requête HTTP au Controller via API
  3. Traitement métier : Le Controller invoque les services et repositories du Model
  4. Accès données : Le Model interagit avec la base de données
  5. Réponse : Le Controller retourne les données au format JSON
  6. Mise à jour Vue : La Vue met à jour l'interface avec les nouvelles données

Avantages de l'Architecture MVC

✓ Séparation des préoccupations

Chaque couche a une responsabilité claire et distincte

✓ Testabilité améliorée

Tests unitaires et d'intégration facilités par l'isolation

✓ Maintenabilité

Modifications localisées sans impact sur les autres couches

✓ Réutilisabilité

Composants et services réutilisables dans différents contextes

Exemple d'Implémentation

Cas d'usage : Création d'un événement

  • View : Formulaire de création d'événement (EventForm.tsx)
  • Controller : POST /api/events - Validation et traitement
  • Model : EventService.create() → EventRepository.save()
  • Retour : Événement créé avec ID, redirection vers la liste
XIV. Patrons de Conception

Cette section présente les patrons de conception appliqués dans le projet et justifie leur usage pour assurer une architecture maintenable et évolutive.

Patrons Comportementaux

Les patrons comportementaux définissent les interactions et les responsabilités entre les objets du système.

Patrons de Conception Comportementaux
Figure XIV.1 - Diagramme des patrons de conception comportementaux
  • Strategy : pour varier le comportement des règles de tarification et validation.
  • Observer/EventEmitter : pour notifications internes et hooks d'audit.
  • Command : pour encapsuler les actions utilisateur et faciliter l'annulation.

Patrons Structuraux

Les patrons structuraux organisent les relations entre les classes et objets pour créer des structures flexibles.

Patrons de Conception Structuraux
Figure XIV.2 - Diagramme des patrons de conception structuraux
  • Repository : abstraction de la persistance pour faciliter les tests.
  • Adapter : pour intégrer des services externes (paiement, notifications).
  • Facade : pour simplifier l'accès aux sous-systèmes complexes.

Patrons de Création

  • Factory : pour création standardisée des objets de domaine.
  • Builder : pour construire des objets complexes étape par étape.
  • Singleton : pour gérer les instances uniques de services partagés.
XV. Qualité de l'Architecture

Définition des critères de qualité, métriques à suivre et stratégies d'assurance.

Métriques de qualité

  • Temps de réponse moyen et percentiles 95/99.
  • Taux d'erreur (4xx/5xx) et taux d'échecs de transactions critiques.
  • Couverture de tests unitaires et d'intégration.
  • Durée moyenne de restauration (MTTR) après incident.

Modèle FCM (Facteurs → Critères → Métriques)

Modèle FCM - Facteurs Critères Métriques
Figure: Modèle FCM liant facteurs, critères et métriques

Cas de test détaillés

1) Cas de test : Temps de réponse

Cas de test Temps de réponse
Source de simulationUtilisateur, Testeur
SimulationAjout d’un test (questions, catégorie, réponses correctes). Utilisation d'un outil de performance (Chrome network)
EnvironnementNormal load, High load, overload
Partie du systèmeGestion des tests
Réponse attendueUn test ajouté avec succès et affichage du temps depuis l'outil de test
Métrique de réponse< 3 ms (seuil UX critique)

Le seuil de 3 millisecondes pour les temps de réponse critiques est basé sur des études UX indiquant qu'il maintient l'engagement des utilisateurs.

2) Cas de test : Ergonomie

Cas de test Ergonomie
Source de simulationUtilisateur, Testeur
SimulationInteraction UI: navigation intuitive, disposition, clarté visuelle, accessibilité. Utilisation d'outils ergonomiques
EnvironnementÉvaluations en conditions normales, sous forte sollicitation, en surcharge
Partie du systèmeInterface utilisateur et expérience utilisateur globale
Réponse attendueInterface claire et intuitive, navigation fluide, retours utilisateur immédiats avec messages clairs
Métrique de réponseNombre de couleurs principales ≤ 3, nombre d'étapes minimales pour tâche critique

3) Cas de test : Confidentialité

Cas de test Confidentialité
Source de simulationUtilisateur, Testeur
SimulationAuthentification: cas de données valides et non valides (login, password)
EnvironnementApplication initialisée avec accès aux serveurs de données et application
Partie du systèmeGestion des utilisateurs
Réponse attendueUtilisateur connecté / accès refusé selon les données
Métrique de réponseAttribution d'un rôle précis par utilisateur selon login et mot de passe

4) Cas de test : Précision

Cas de test Précision
Source de simulationUtilisateur, Testeur
SimulationVérification de l'exactitude des données affichées; validation via outils de comparaison
EnvironnementConditions normales, forte sollicitation, surcharge
Partie du systèmeMécanisme d'affichage des résultats, calculs et visualisation
Réponse attendueRésultats affichés de façon détaillée, précise et compréhensible
Métrique de réponseTous les champs nécessaires visibles; pas de données manquantes; organisation pour lecture rapide

Résultats des Tests Réels - Modèle FCM

Tableaux détaillant les résultats des tests organisés par Facteur → Critère → Métrique

Tests Validés (SUCCÈS)

ID Cas de TestFacteur / Critère / MétriquePartie du SystèmePré-conditionsRésultat AttenduRésultat ObtenuStatut
FCM_FCT_001Fonctionnel / Conformité, ErgonomieGestion des Événements (Formulaire de Création)Utilisateur connecté avec droits de créationÉvénement créé avec message de confirmation et redirectionÉvénement créé avec message flash et redirection instantanéeSUCCÈS ✅
FCM_PERF_002Performance / Temps de réponse (< 2s)Tableau de Bord (Chargement données agrégées)Utilisateur connecté, DB avec 5000 événementsTemps de chargement < 2s pour éléments critiquesTemps de chargement mesuré: 1.5sSUCCÈS ✅
FCM_SEC_003Sécurité / Confidentialité (Rôle Précis)Gestion des Utilisateurs (Contrôle d'Accès)Comptes Admin et Participant existantsAccès refusé avec redirection vers page d'erreur 403Redirection vers accueil avec message "Accès non autorisé"SUCCÈS ✅
FCM_PERF_004Performance / Test de Charge (Taux erreur <1%)Moteur d'Inscription aux ÉvénementsÉvénement ouvert, simulation 6000 inscriptions/60sTaux d'erreur <1%, temps réponse moyen <200ms5980/6000 réussies (0.33%), temps moyen: 185msSUCCÈS ✅

Tests en Échec (Améliorations Requises)

ID Cas de TestFacteur / Critère / MétriquePartie du SystèmePré-conditionsRésultat AttenduRésultat ObtenuStatut
FCM_FCT_005Fonctionnel / Gestion d'ErreursGestion des Événements (Validation Formulaire)Utilisateur connecté avec droits de créationMessage d'erreur spécifique pour champ obligatoire manquantMessage générique sans indication du champ problématiqueÉCHEC ❌
FCM_PERF_006Performance / Temps de réponse (< 2s)Tableau de Bord (Chargement données complexes)Utilisateur connecté, DB avec 5000 événementsTemps de chargement < 2sTemps de chargement mesuré: 3s (dépassement seuil)ÉCHEC ❌
FCM_SEC_007Sécurité / Contrôle d'Accès BackendAPI de Gestion des ÉvénementsComptes Admin et Participant existantsRejet des requêtes non autorisées avec code 403Requête acceptée - contrôle d'accès manquant au backendÉCHEC ❌
FCM_PERF_008Performance / Robustesse sous ChargeMoteur d'Inscription aux ÉvénementsÉvénement ouvert, simulation 6000 inscriptions/60sTaux d'erreur <1%, performance stableTaux d'erreur 8.33%, temps réponse moyen: 950msÉCHEC ❌

Analyse des Résultats FCM

Facteur Fonctionnel

✓ Conformité générale validée
⚠️ Gestion d'erreurs à améliorer

Facteur Performance

✓ Charges normales OK
⚠️ Optimisation requise pour pics de charge

Facteur Sécurité

✓ Contrôles UI fonctionnels
❌ Renforcement backend nécessaire

Stratégies d'Amélioration

  • Implémentation de validations backend supplémentaires pour la sécurité
  • Optimisation des requêtes database et mise en cache pour la performance
  • Amélioration des messages d'erreur utilisateur pour l'expérience
  • CI/CD avec pipelines automatisés et validations (tests, lint, sécurité).
  • Monitoring via Application Insights / Prometheus + Grafana pour alerting.
  • Tests de charge sur les chemins critiques avant chaque release majeure.
Table des figures
Liste des figures
  1. Figure VI-1 : Diagramme de cas d'utilisation — Administrateurouvrirtélécharger
  2. Figure VI-2 : Diagramme de cas d'utilisation — Managerouvrirtélécharger
  3. Figure VI-3 : Diagramme de cas d'utilisation — Membreouvrirtélécharger
  4. Figure VI-4 : Diagramme de cas d'utilisation — Organisateurouvrirtélécharger
  5. Figure VII-1 : Vue Building Block Niveau 0 — Vision globaleouvrirtélécharger
  6. Figure VII-2 : Vue Building Block Niveau 1 — Décomposition principaleouvrirtélécharger
  7. Figure VII-3 : Vue Building Block Niveau 2 — Administrateurouvrirtélécharger
  8. Figure VII-4 : Vue Building Block Niveau 2 — Managerouvrirtélécharger
  9. Figure VII-5 : Vue Building Block Niveau 2 — Organisateurouvrirtélécharger
  10. Figure VIII-1 : Diagramme de Classes niveau 3 — Administrateurouvrirtélécharger
  11. Figure VIII-2 : Diagramme de Classes niveau 3 — Managerouvrirtélécharger
  12. Figure VIII-3 : Diagramme de Classes niveau 3 — Organisateurouvrirtélécharger
  13. Figure IX-1 : Diagramme de raffinement — Adminouvrirtélécharger
  14. Figure IX-2 : Diagramme de raffinement — Managerouvrirtélécharger
  15. Figure IX-3 : Diagramme de raffinement — Organisateurouvrirtélécharger
  16. Figure IX-4 : Découpage fonctionnel Niveau 3 — Partie 1ouvrirtélécharger
  17. Figure IX-5 : Découpage fonctionnel Niveau 3 — Partie 2ouvrirtélécharger
  18. Figure X-1 : Diagramme de déploiementouvrirtélécharger
  19. Figure XI-1 : Diagramme de séquence — Authentificationouvrirtélécharger
  20. Figure XI-2 : Diagramme de séquence — Ajouter ressourceouvrirtélécharger
  21. Figure XI-3 : Diagramme de séquence — Réservation événementouvrirtélécharger
  22. Figure XII-1 : Découpage fonctionnel Niveau 1 — Partie 1ouvrirtélécharger
  23. Figure XII-2 : Découpage fonctionnel Niveau 1 — Partie 2ouvrirtélécharger
  24. Figure XII-3 : Découpage fonctionnel Niveau 2ouvrirtélécharger
  25. Figure XIII-1 : Architecture MVC avec flux de données bidirectionnelouvrirtélécharger
  26. Figure XIV-1 : Patrons de conception comportementauxouvrirtélécharger
  27. Figure XIV-2 : Patrons de conception structurauxouvrirtélécharger
  28. Figure XV-1 : Modèle FCM — Facteurs Critères Métriquesouvrirtélécharger