====== Diagramme de flux de données ======
===== Définition =====
Le diagramme de flux de données est un outil de représentation graphique de [[wiki:structure:definir_le_systeme_d_information|système d'information]].\\
Il permet d'avoir une vue synthétique des flux de données avec les tiers et des fonctions de transformation à l'œuvre dans l'entreprise.
Comme une carte, il peut être réalisé à différentes échelles :
* Le **diagramme de contexte** résume le système à quelques fonctions et fait apparaitre les **flux principaux avec les tiers**.
* Le **diagramme logique**, détaille **ce que fait le système** : les fonctions logiques, les flux internes et les dépôts.
* Le **diagramme organisationnel** précise **qui** fait quelle fonction.
* Le **diagramme physique**, détaille les sous-fonctions suivant la mise en œuvre organisationnelle et défini **quand** et **comment** les fonctions sont réalisées.
Le diagramme de données est utilisable aussi bien pour des fonctions manuelles que des fonctions informatique, dans la pratique il permet de préciser les limites du système informatique.
===== Conventions =====
Il existe plusieurs convention graphique pour représenter des diagrammes de flux de données. Nous vous proposons ici une adaptation qui utilise des notations [[wpfr>UML_(informatique)|UML]] et l'outil libre [[https://plantuml.com/fr/|PlantUML]]. Commençons par définir les 4 concepts de bases.
==== Entité externe ====
/*
@startuml
:Entité\n Externe:
@enduml
*/
{{:wiki:structure:entiteexterne.png?nolink |}}
En anglais "External Entity".\\
Tout acteur (tiers - personne morale ou physique) échangeant de l'information avec le système considéré.
L'acteur est externe si pour le diagramme considéré on ne s'intéresse pas à la manière dont il produit ou consomme l'information.
Dans le cas contraire on représentera la [[#fonction]] de l'acteur.
Il est possible de dupliquer ce symbole sur un diagramme, dans ce cas on ajoute une numérotation après le nom : ''Entité (n)''.
==== Fonction ====
/*
@startuml
usecase UC1 as "Décrire
la
fonction
___
Acteur"
@enduml
*/
{{:wiki:structure:fonction.png?nolink |}}
En anglais "Process".\\
Tout processus de transformation d'information (de données) effectué par le système considéré.
Chaque fonction doit être décrite par un verbe suivit d'un complément : faire ceci, faire cela ...
Il n'est pas possible de dupliquer ce symbole sur un diagramme. Chaque fonction est unique.
La fonction doit produire au moins un flux de données et s'alimenter d'au moins un autre flux.
Sur un modèle organisationnel, on peut ajouter le nom de l'acteur qui réalise cette fonction.
==== Dépôt de données ====
/*
@startuml
collections datastore as "Dépôts
de données"
@enduml
*/
{{:wiki:structure:depotdedonnees.png?nolink |}}
En anglais "Datastore".\\
Tout ensemble de données conservé par le système considéré, sans tenir compte de sa forme (fiches, classeur, numérisation, ...).
Chaque dépôt doit être décrit par un nom caractérisant la nature de l'information.
Un dépôt ne peut être crée que pour l'une des raisons suivantes :
* Une raison légale : archivage, conservation des données obligatoire
* Un délai entre fonctions, par exemple faire la synthèse mensuelle d'information capturée tous les jours.
* Un référentiel utile aux fonctions, par exemple le plan comptable, les codes postaux, etc.
Un dépôt doit être utilisé au moins une fois par un flux sortant et s'alimenter d'au moins un autre flux.
Il est possible de dupliquer ce symbole sur un diagramme, dans ce cas on ajoute une numérotation après le nom : ''Dépôt de données (n)''.
==== Flux de données ====
Un flux de données est représenté par une flèche et un nom qui décrit les informations échangées.\\
Un flux est obligatoirement en entrée ou sortie d'une fonction.\\
Le diagramme de flux ci-dessous présente toutes les possibilités de flux :
@startuml
actor A1 as "Acteur A"
actor A2 as "Acteur B"
collections datastore as "Collection de données"
usecase process1 as "Collecter l'information"
usecase process2 as "Élaborer une synthèse"
usecase process3 as "Accuser réception"
A1 -> process1 : Information\n fournie
process1 --> datastore : Information\n mémorisée
process1 --> process3 : Information\n collectée
process3 --> A1 : Accusé\n de\n réception
process2 <-- datastore : Informations lues\n à synthétiser
process2 -> A2 : Synthèse
@enduml
Le nom de chaque flux doit indiquer le contenu de l'information transmise (de **Quoi** s'agit-il ? Adhésion; Don, Achat, Vente...).
Éventuellement sur un modèle organisationnel ou physique on peut préciser :
* son statut logique : brouillon, validée, à valider, à vérifier, vérifiée...
* sa forme (comment est-elle mise en forme ?) : bordereau, journal, formulaire, reçu...
* son support physique : orale, papier, électronique ...
===== Règles à respecter =====
==== Utiliser des noms significatifs ====
Un diagramme de flux n'est utile que si les objets sont nommés de façon signifiante. Voici une liste de questions à se poser lorsque l'on cherche un nom significatif :
* Pour une entité externe :
* Quel est le rôle de cet acteur en tant que source ou destinataire d'information ?
* Pour une fonction :
* Quelle information produit-elle ?
* Quelle transformation logique est réalisée ?
* Pour un dépôt de données :
* Quelle collection d'information est conservée ?
* Quel est l'usage, le besoin qui nécessite cette conservation ?
* Pour un flux de données
* Quelle est l'information échangée ?
* Pourquoi ? Qu'elle est son utilité ?
==== Corriger les erreurs du diagramme ====
Tous les cas cité dans ce chapitre ne sont pas valides dans un diagramme de flux de données. Pour chacun, nous vous proposons une résolution possible.
=== Flux de données entre 2 entités externes ===
@startuml
title NE PAS FAIRE
:Adhérent: -> :Trésorier: : Adhésion
@enduml
Les adhésions sont collectées par le trésorier. Le flux alimente l'un des acteurs du système d'information de l'association. Dans ce cas il faut traduire ce que fait cet acteur de l'information qu'il reçoit en explicitant sa fonction. Avec cette représentation logique, on peut alors envisager d'affecter la fonction à un autre rôle.
@startuml
title FAIRE
usecase process1 as "Collecter
les adhésions
---
Trésorier"
:Adhérent: -> process1 : Adhésion
@enduml
=== Flux de données entre 2 dépôts ===
@startuml
title NE PAS FAIRE
collections d1 as "Factures à régler"
collections d2 as "Factures réglées"
(Enregistrer\n les factures) --> d1 : Facture à régler
(Enregistrer\n les factures) --> d2 : Facture déjà réglée
d1 --> d2 :règlement
@enduml
=== Flux de données entre entité externe et dépôt ===
@startuml
title NE PAS FAIRE
actor A1 as "Adhérents"
collections D1 as "Comptes Annuels"
(Effectuer\n la comptabilité) --> D1
D1 -> A1 : Rapport financier
@enduml
=== Fonction sans production de données (trou noir) ===
@startuml
title NE PAS FAIRE
actor A1 as "Salarié"
usecase process1 as "Collecter\n le temps\n travaillé"
A1 -> process1 : Temps travaillé
@enduml
=== Fonction sans alimentation en données (production spontanée) ===
@startuml
title NE PAS FAIRE
actor A1 as "Adhérent"
usecase process1 as "Fournir\n les cartes\n d'adhérent"
process1 --> A1 : Carte d'adhérent
@enduml
=== Dépôt de données sans alimentation ===
@startuml
title À VÉRIFIER
actor A1 as "Acteur A"
collections datastore as "Collection de données"
usecase process2 as "Élaborer une synthèse"
process2 <-- datastore : Informations lues\n à synthétiser
process2 -> A1 : Synthèse
@enduml
=== Dépôt de données sans utilisation ===
@startuml
title À VÉRIFIER
actor A1 as "Acteur A"
collections datastore as "Collection de données"
usecase process1 as "Collecter l'information"
A1 -> process1 : Information\n fournie
process1 --> datastore : Information\n mémorisée
@enduml
===== Ressources =====
* [[wiki:structure:l_entreprise_pour_tous|]]
* [[wiki:structure:definir_le_systeme_d_information|]]
* [[wpfr>Diagramme_de_flux_de_données|Diagrammes de flux de données]]
* [[https://plantuml.com/fr/|Plant UML]] l'outil libre utilisé sur ce site.
~~SNIPPET_O1781743646~~wiki:snippets:retour_au_sommaire~~
/* Bloc à utiliser au niveau R+3 */
====== Retourner aux sommaires ======
/* lien vers les sommaires des catégories supérieure */
[[:]] - [[..:]] - [[.:]]
~~SNIPPET_C~~wiki:snippets:retour_au_sommaire~~