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 :
- 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.
- 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.
- 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 :
- D'ou vient-elle ? (source)
- Ou va-t-elle ? (destination)
- 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.