Skip to content

Architecture du projet

Schéma de l’architecture

Voici la structure globale du projet Django :

Architecture du projet

⚠️ Remarque importante : Cette architecture représente la structure initiale du projet. Au fil du développement, de nouveaux fichiers et modules ont été ajoutés afin de répondre à des besoins non prévus dans le cahier des charges initial. Cependant, l’essentiel du système reste basé sur cette organisation, qui reflète la logique principale de l’application.

Modélisation du système

Pourquoi modéliser avant de coder ?

La modélisation permet de transformer un besoin fonctionnel en une structure claire et organisée avant le développement.

Elle aide à identifier :

  • les acteurs du système
  • les objets métiers
  • les relations entre les entités
  • les flux d’information
  • les responsabilités techniques

Elle permet de réduire les erreurs de conception avant l’écriture du code et facilite la communication entre enseignants, apprenants et développeurs.


À retenir

Dans ce projet, la modélisation est comprise à trois niveaux :

  • Fonctionnel : qui fait quoi ?
  • Structurel : quelles données sont manipulées ?
  • Technique : comment Django organise l’application ?

Vue d’ensemble du système

Élément Description
Superadmin gère les catégories, les produits et le paramétrage global
Admin gère uniquement les produits
Utilisateur simple consulte, recherche, filtre et trie les produits
Category organise les produits par famille ou type
Product contient les informations métier de l’article
Application Django traite les requêtes, applique les règles et affiche les résultats

Bonnes pratiques

Le noyau du projet repose sur deux entités principales (Category et Product) avec des droits différents selon le profil utilisateur.

Diagramme de cas d’utilisation

Principe

Le diagramme de cas d’utilisation décrit les services rendus par le système du point de vue des utilisateurs.
Il permet de répondre à la question suivante :

Quelles actions chaque acteur peut-il réaliser dans le système ?


Objectif

Ce diagramme est particulièrement utile pour distinguer les différents niveaux d’accès et de permissions :

  • Super Admin
  • Admin
  • Utilisateur simple

Comparaison

Contrairement au diagramme de classes qui se concentre sur la structure des données et les relations entre objets,
le diagramme de cas d’utilisation met l’accent sur les fonctionnalités offertes par le système et les interactions avec les utilisateurs.


Diagramme de cas d’utilisation

Voici la représentation graphique du fonctionnement global du système :

Diagramme de cas d’utilisation


Resumé

Ce diagramme permet de mieux comprendre les rôles des utilisateurs ainsi que les services accessibles à chacun,
ce qui facilite la conception des droits d’accès et la sécurité du système.

Diagramme de flux

Principe

Le diagramme de flux décrit l’enchaînement des étapes dans le système.
Il permet de visualiser le fonctionnement global de l’application de manière séquentielle.

Il montre principalement :

  • les entrées
  • les décisions
  • les traitements
  • les sorties

Utilité

Ce diagramme est utile pour comprendre le comportement global du système et la logique de traitement des données à travers les différentes étapes de l’application.


Diagramme de flux

Voici la représentation graphique du flux de fonctionnement du système :

Diagramme de flux


Resumé

Le diagramme de flux permet de mieux comprendre l’enchaînement des opérations dans le système et la logique globale de traitement des données.

Lecture pédagogique du diagramme de flux

Lecture du diagramme

Toute interaction commence par l’identification de l’utilisateur.
Le système applique ensuite une décision basée sur le rôle de l’utilisateur.

Les traitements autorisés conduisent à des opérations de lecture ou d’écriture en base de données.
Le résultat final est ensuite affiché sous forme de pages HTML.


Bonnes pratiques

Le diagramme de flux permet de préparer la compréhension de l’architecture logique de l’application.
Il facilite notamment la transition vers l’implémentation des vues Django et du routage des requêtes.


Resumé

Cette modélisation aide à comprendre le comportement dynamique du système et constitue une base importante pour la conception de l’application web.

Diagramme de classes UML

Principe

Le diagramme de classes décrit la structure statique du système.
Il permet de représenter l’organisation des données et des objets du projet.

Il présente principalement :

  • les classes
  • leurs attributs
  • les relations entre les classes

Classes principales du projet

Dans ce projet, les classes principales sont :

  • User
  • Category
  • Product

Diagramme de classes UML

Voici la représentation graphique du diagramme de classes :

Diagramme de classes UML


Resumé

Ce diagramme permet de comprendre la structure interne du système ainsi que les relations entre les principales entités du projet.

Interprétation du diagramme de classes

Analyse des relations

Le diagramme de classes met en évidence les relations suivantes :

  • Une catégorie peut contenir plusieurs produits.
  • Chaque produit appartient à une seule catégorie.
  • Les utilisateurs interagissent avec les produits selon leur rôle dans le système.
  • Les catégories sont gérées uniquement par le superadmin.

Mise en pratique (Django)

Dans l’implémentation Django, la relation entre les produits et les catégories est modélisée à l’aide d’une clé étrangère :

```python category = models.ForeignKey(Category, on_delete=models.CASCADE)

Passage UML vers Django

Correspondance entre UML et Django

Concept UML Traduction dans Django
Classe Modèle dans models.py
Attribut Champ Django (CharField, DecimalField, etc.)
Association 1..N ForeignKey
Acteur Utilisateur authentifié
Rôle / Action Groupes Django ou permissions
Action utilisateur Vue associée à une URL

Exemple concret

En UML, une relation entre Category et Product (1..N) devient en Django :

```python category = models.ForeignKey(Category, on_delete=models.CASCADE)

Diagramme de séquence

Principe

Le diagramme de séquence décrit le déroulement temporel d’une opération dans le système.
Il met en évidence l’ordre dans lequel les objets interagissent au cours d’un scénario précis.

Il permet de répondre à la question suivante :

Dans quel ordre les objets interagissent-ils ?


Cas d’utilisation typiques

Ce diagramme est particulièrement utile pour illustrer des opérations concrètes telles que :

  • ajouter un produit
  • modifier un produit
  • consulter la liste des produits

Diagramme de séquence

Voici la représentation graphique du déroulement des interactions :

Diagramme de séquence


Resumé

Le diagramme de séquence permet de comprendre le comportement dynamique du système en illustrant clairement l’ordre des échanges entre les différents composants.

Lecture du diagramme de séquence

Déroulement des interactions

Le diagramme de séquence décrit les étapes suivantes :

  • L’utilisateur remplit le formulaire.
  • Le template envoie les données à la vue.
  • La vue valide les données et appelle le modèle.
  • Le modèle enregistre le produit dans la base de données.
  • La vue renvoie un message et effectue une redirection.
  • L’utilisateur obtient la nouvelle page affichant le résultat.

Comparaison

Le diagramme de séquence complète le diagramme de classes :

  • Le diagramme de classes décrit la structure statique du système.
  • Le diagramme de séquence décrit le comportement dynamique et le déroulement des opérations dans le temps.

Resumé

Ainsi, le diagramme de séquence permet de comprendre comment les différentes couches du système interagissent lors de l’exécution d’une fonctionnalité dans l’application.

Architecture MVT dans Django

Principe

Django repose sur l’architecture MVT (Model – View – Template) :

  • Model : représente la structure des données et les règles métier.
  • View : contient la logique de traitement et la gestion des requêtes.
  • Template : représente l’interface utilisateur en HTML.

Avantages de l’architecture MVT

Cette séparation permet d’améliorer plusieurs aspects du projet :

  • la lisibilité du code
  • la maintenance de l’application
  • la réutilisabilité des composants
  • l’évolution future du système

Schéma de l’architecture MVT

Architecture MVT Django


À retenir

L’architecture MVT est très proche du modèle MVC, mais adaptée au fonctionnement interne de Django.
Elle permet une organisation claire et structurée du développement web.


Schéma de l’architecture MVT

Voici la représentation graphique de l’architecture MVT Dans notre cas pour ce present projet :

Architecture MVT Django

Exemple MVT – Suppression d’un produit

Composant MVT Rôle dans la suppression
Model Représente le produit à supprimer (Product)
View Récupère l’objet et exécute la suppression
Template Affiche une page de confirmation
URL Relie /products/delete/<id>/ à la vue

Bonnes pratiques

  • Vérifier que l’utilisateur a les droits nécessaires
  • Demander confirmation avant suppression
  • Rediriger vers la liste après suppression

Exemple MVT – Mise à jour d’un produit

Composant MVT Rôle dans la mise à jour
Model Produit existant à modifier
View Charge les données, valide et sauvegarde
Template Formulaire pré-rempli
URL /products/edit/<id>/

Étapes du processus

  1. L’utilisateur ouvre la page d’édition
  2. La vue charge les données du produit
  3. Le formulaire est affiché avec les anciennes valeurs
  4. L’utilisateur modifie et soumet
  5. La vue valide et met à jour la base de données

Synthèse du cycle CRUD dans MVT

Opération Vue principale Résultat
Create add_product Ajout d’un produit
Read product_list Affichage des produits
Update edit_product Modification
Delete delete_product Suppression

Avantage de l’architecture MVT

L’architecture MVT de Django permet :

  • Une séparation claire des responsabilités
  • Une meilleure organisation du code
  • Une maintenance simplifiée
  • Une évolution facile du projet
  • Une réutilisation des composants

Conclusion générale de la partie MVT

À retenir :

  • Le Model gère les données
  • La View gère la logique
  • Le Template gère l’affichage
  • L’URL connecte l’utilisateur au système

L’ensemble forme une architecture cohérente qui rend le développement web structuré, lisible et scalable.

🌐 Retrouvez-moi sur mes plateformes