Aller au contenu

Flux de données

Comprendre d'ou viennent les données, ou elles vont, et quelles transformations elles subissent en chemin.


Pourquoi modéliser les flux

Les diagrammes de composants montrent ce qui existe. Les diagrammes de sequence montrent ce qui se passe pour un scenario. Mais ni l'un ni l'autre ne répondent a une question simple : comment les données traversent-elles le système ?

Un DFD (Data Flow Diagram) répond a cette question. Il montre les sources de données, les transformations, les stockages et les destinations. C'est un outil d'analyse indispensable dans trois contextes :

  1. Comprehension d'un SI existant : quand on hérité d'un système, le DFD est la première carte qu'on dessine. Il révélé les flux implicites, les copies cachees, les transformations non documentees.
  2. Conception d'un nouveau système : avant d'implémenter, on trace les flux pour vérifier que chaque donnée a une source et une destination.
  3. Analyse de sécurité : le threat modeling (STRIDE, PASTA) utilise les DFD pour identifier les frontieres de confiance et les points d'attaque.

Éléments d'un DFD

Le DFD utilise une notation volontairement simple — quatre éléments seulement.

Élément Description Notation classique
Processus Transformation qui reçoit des données et en produit Cercle ou rectangle arrondi
Data store Dépôt de données (base, fichier, cache, queue) Deux lignes parallèles
Entité externe Source ou destination hors du système Rectangle
Flux de données Données en mouvement entre éléments Fleche avec label

Règles fondamentales

  • Un processus doit avoir au moins une entree et une sortie.
  • Un data store ne produit pas de données spontanement — un processus doit les lire.
  • Une entité externe est hors du périmètre du système — on ne la contrôle pas.
  • Les flux sont toujours etiquetes — un flux sans nom est un flux mal compris.

Le DFD n'est pas un flowchart

Le DFD montre les flux de données, pas les flux de contrôle. Il n'y a pas de décisions (if/else), pas de boucles, pas de sequencement temporel. L'ordre dans lequel les processus s'exécutent n'est pas représenté — seul le mouvement des données compte. C'est la confusion la plus fréquente.


Niveaux de DFD

Les DFD se decomposent en niveaux de détail croissant. Chaque niveau zoome dans un processus du niveau supérieur.

Niveau 0 — Diagramme de contexte

Le niveau 0 montre le système comme une seule boite noire, entoure de ses entités externes. Il répond a : "quelles données entrent et sortent du système ?"

graph LR
    CLI[Client] --"commande"--> SYS((Plateforme e-commerce))
    SYS --"confirmation, facture"--> CLI

    FOUR[Fournisseur] --"catalogue produits"--> SYS
    SYS --"bons de commande"--> FOUR

    BANK[Banque] --"confirmation paiement"--> SYS
    SYS --"demande de debit"--> BANK

    TRANS[Transporteur] --"statut livraison"--> SYS
    SYS --"demande d'expedition"--> TRANS

    FISC[Administration fiscale] --"reglementations"--> SYS
    SYS --"declarations TVA"--> FISC

Niveau 1 — Decomposition principale

Le niveau 1 eclate le système en processus principaux et montre les data stores.

graph TD
    CLI[Client] --"commande"--> P1((Gerer les commandes))
    P1 --"confirmation"--> CLI

    P1 --"articles commandes"--> P2((Gerer le stock))
    FOUR[Fournisseur] --"catalogue"--> P2

    P1 --"montant a debiter"--> P3((Traiter le paiement))
    BANK[Banque] --"confirmation"--> P3
    P3 --"demande debit"--> BANK
    P3 --"paiement valide"--> P1

    P1 --"colis a expedier"--> P4((Gerer la livraison))
    TRANS[Transporteur] --"statut"--> P4
    P4 --"demande expedition"--> TRANS
    P4 --"statut livraison"--> P1

    P1 --"donnees commande"--> D1[(Base commandes)]
    D1 --"historique"--> P1
    P2 --"niveaux stock"--> D2[(Base stock)]
    D2 --"disponibilite"--> P2
    P3 --"transactions"--> D3[(Base paiements)]

Niveau 2 — Détail d'un processus

Le niveau 2 decompose un processus du niveau 1. Par exemple, "Gérer les commandes" se decompose en : valider la commande, calculer le total, vérifier le stock, confirmer au client.

Niveau Contenu Public Quantite typique
0 Système en boite noire + entités externes Direction, sponsors 1 diagramme
1 Processus principaux + data stores Architectes, chefs projet 1 diagramme
2 Détail d'un processus du niveau 1 Analystes, développeurs 1 par processus N1
3+ Sous-détail (rarement nécessaire) Specialistes À la demande

Règle de cohérence entre niveaux

Les flux entrants et sortants d'un processus au niveau N doivent correspondre exactement aux flux entrants et sortants de sa decomposition au niveau N+1. C'est le principe de balancing. Si un flux apparait au niveau 1 mais pas au niveau 2, il y a une erreur.


DFD vs diagramme d'activité vs BPMN

Les trois notations peuvent représenter des processus, mais avec des perspectives différentes.

Critère DFD Diagramme d'activité BPMN
Focus Flux de données Flux de contrôle Processus métier
Temps / Ordre Non représenté Représenté (fleches) Représenté (sequence flow)
Décisions Non representees Oui (losanges) Oui (gateways)
Stockage de données Explicite (data stores) Non représenté Implicite (data objects)
Entités externes Explicites Implicites (swimlanes) Explicites (pools)
Decomposition hierarchique Oui (niveaux 0, 1, 2...) Non native Sous-processus
Meilleur pour Cartographier les flux d'un SI Décrire un algorithme Modéliser un processus métier

La règle : si la question est "ou vont les données", on utilise un DFD. Si la question est "dans quel ordre les étapes s'enchainent", on utilise un diagramme d'activité ou BPMN.


Data mapping

Le data mapping complète le DFD en repondant a trois questions pour chaque donnée :

  1. D'ou vient-elle ? (source)
  2. Ou va-t-elle ? (destination)
  3. Quelle transformation subit-elle ? (règle de mapping)

Matrice de data mapping

Donnée Source Transformation Destination
Commande Formulaire client Validation + enrichissement adresse Base commandes
Montant TTC Lignes de commande Somme(quantite x prix) + TVA applicable Service paiement
Stock disponible Base stock Stock physique - reservations en cours Service catalogue (cache)
Facture PDF Données commande Génération template + calculs fiscaux Stockage documents + email
Statut livraison API transporteur Mapping codes transporteur vers statuts internes Base commandes

Pourquoi le data mapping est critique

Le data mapping révélé les problèmes que les autres diagrammes masquent :

  • Données sans source : d'ou vient cette information ? Personne ne sait. C'est souvent une saisie manuelle cachee ou un défaut de conception.
  • Transformations implicites : le prix HT devient TTC "quelque part". Ou exactement ? Qui est responsable du calcul ? Avec quelle règle de TVA ?
  • Copies multiples : la même donnée existe dans trois bases différentes. Laquelle fait référence ? Comment les synchroniser ?
  • Formats incompatibles : le système source envoie une date en ISO 8601, le système cible attend un timestamp Unix. La conversion est-elle documentee ?

Flux entre zones de confiance

Le DFD est l'outil de base du threat modeling. En ajoutant des frontieres de confiance au DFD, on identifie les points ou les données passent d'une zone protégée a une zone non protégée — et vice versa.

Zones de confiance typiques

Zone Niveau de confiance Exemples
Internet public Aucune Navigateur client, API publique
DMZ Partielle Load balancer, WAF, API Gateway
Réseau interne Élevée Services métier, bases de données
Zone de données Maximale Bases de production, secrets manager

Identifier les menaces aux frontieres

Chaque flux qui traverse une frontiere de confiance est un point d'attaque potentiel.

graph TD
    subgraph "Zone : Internet public"
        CLI[Client navigateur]
    end

    subgraph "Zone : DMZ"
        WAF[WAF / Reverse proxy]
        GW[API Gateway]
    end

    subgraph "Zone : Reseau interne"
        SVC[Services metier]
    end

    subgraph "Zone : Donnees"
        DB[(Base de donnees)]
        SEC[Secrets manager]
    end

    CLI --"HTTPS"--> WAF
    WAF --"HTTP interne"--> GW
    GW --"gRPC / mTLS"--> SVC
    SVC --"SQL / TLS"--> DB
    SVC --"API"--> SEC

À chaque frontiere traversee, on appliqué STRIDE (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege) pour identifier les menaces. Le chapitre sécurité (08) détaillé cette méthode.

DFD + zones de confiance = threat model

Le DFD annote avec les zones de confiance est le livrable central d'un threat model. Microsoft, OWASP et la plupart des frameworks de sécurité partent de cette représentation pour identifier les vulnérabilités. Un architecte qui sait dessiner un DFD avec des zones de confiance a une longueur d'avance en sécurité.


Cartographier les flux d'un SI existant

La cartographie des flux est souvent le premier travail quand on hérité d'un SI existant. Voici une méthode pragmatique en cinq étapes.

Méthode de cartographie

Étape Action Livrable
1 Lister les systèmes connus (applications, bases, API) Inventaire brut
2 Identifier les entités externes (partenaires, clients, regulateurs) Liste des acteurs externes
3 Tracer les flux visibles (API calls, jobs batch, fichiers échanges) DFD niveau 0 brouillon
4 Interviewer les équipes pour les flux implicites (emails, exports manuels) DFD niveau 0 complet
5 Decomposer les processus principaux en niveau 1 DFD niveau 1

Signaux d'alerte

Pendant la cartographie, certains patterns révèlent des problèmes structurels :

  • Flux en etoile : un système central par lequel tout transite — point de défaillance unique
  • Boucles de données : A envoie a B qui envoie a C qui envoie a A — la source de vérité est perdue
  • Flux sans propriétaire : personne ne sait qui maintient cette intégration — elle cassera sans que personne ne s'en rende compte
  • Copies fantomes : des exports CSV/Excel que des équipes copient manuellement dans d'autres systèmes — shadow IT des données

Quand utiliser un DFD

Le DFD n'est pas toujours le bon outil. Voici un guide de décision rapide.

Situation DFD adapté ? Alternative
Comprendre les flux d'un SI existant Oui
Analyser les menaces de sécurité (threat model) Oui
Planifier une migration de données Oui Data mapping seul si système simple
Décrire un algorithme Non Diagramme d'activité
Modéliser un processus métier avec rôles Non BPMN
Documenter les interactions entre services Non Diagramme de sequence

Erreurs classiques

Erreur Conséquence Correction
Confondre DFD et flowchart Ajout de logique de contrôle dans le DFD Le DFD montre les données, pas les décisions
Flux sans étiquette On ne sait pas quelle donnée circule Chaque fleche porte le nom de la donnée
Oublier les data stores Les données apparaissent "de nulle part" Tracer explicitement le stockage
Niveau 1 avec 30 processus Diagramme illisible Regrouper en 5-8 processus, decomposer en N2
Ignorer les flux de retour Vision incomplète des échanges Chaque flux a potentiellement un retour
Zones de confiance non tracees Sécurité non analysable Ajouter les frontieres des la conception

Chapitre suivant : Du modèle au code — traçabilité, génération de code, reverse engineering et la question des modèles vivants vs jetables.