Data Flow Diagrams (DFD)

Introductie

Definitie

Een algemene definitie van een data flowchart is moeilijk te geven, maar een ieder heeft wel een idee bij het woord data flowchart. De volgende definitie houd ik aan:

Een data flowchart is een diagram dat een grafische omschrijving van informatiestromen tussen verschillende entiteiten van een systeem.

Een data flow blijkt dus te bestaan uit de volgende onderdelen:



Figuur 1 de grafische weergave van de verschillende onderdelen van een DFD

De hier getoonde symbolen voor een DFD is niet gestandaardiseerd. Het komt dan ook regelmatig voor dat andere symbolen voor de verschillende onderdelen worden gebruikt. In de voorbeelden zal dit ook duidelijk te zien zijn. In onderstaand figuur 2, staat een abstract voorbeeld van een DFD. We zien processen 1 & 2, een entiteit source S en een Data Store F.


 

Figuur 2 een abstracte DFD

Toepassingsgebied DFDs


Data flowcharts worden vooral gebruikt door software specialisten om systemen te kunnen omschrijven en ontwerpen. De meeste systemen zijn zo complex, dat de data flowcharts vaak gebaseerd zijn op extreem abstracte concepten. Dit maakt een omschrijving van een data flow ook zo lastig. Vaak worden er ook voor de verschillende entiteiten meerdere abstractieniveaus onderscheiden, een entiteit in de ene data flowchart is een compleet systeem in de volgende data flowchart. Een entiteit wordt vaak als een black box gezien, je weet wat erin moet en wat er uit zal moeten komen, hoe het gebeurd is niet interessant. Een data flowchart buit deze eigenschap uit, door meerdere abstractie niveaus te kunnen visualiseren, zonder het overzicht te verliezen.

Door de verschillende abstractieniveaus zal een boom ontstaan van data flow diagrams (DFD). Bovenaan in de boom (de wortel) staat een speciaal type DFD de context diagram (zie figuur 3) . De context diagram geeft aan welke externe informatie bronnen globaal informatie invoeren/uitvoeren in het systeem. Om het overzicht niet te verliezen tussen de relaties van de verschillende DFDs is het zinvol een systematische nummering te gebruiken, zoals aangegeven in figuur 1.
 
 


Figuur 3 boom van DFDs



Naast DFDs worden ook vaak Data Structure Diagrams (DSD) en Entity Relationship Diagrams (ERD) gebruikt in systeem analyse/ontwerp. Alle drie gebruiken definities, waarvan de omschrijvingen terug te vinden zijn in de zogenaamde datadictionary. Een veel voorkomend probleem in systeem analyse/ontwerp wordt hiermee voorkomen; verwarring over de betekenis van een woord of het gebruik van verschillende woorden voor hetzelfde. Figuur 4 geeft het verschil aan tussen de drie verschillende typen diagrammen.


Figuur 4 gebruikte diagrammen in systeem analyse/ontwerp

Om de rol van de DFDs in het proces van systeem ontwerp/analyse duidelijk te kunnen aangeven is het van belang om de relatie tussen de data items zoals beschreven in een DFD en de compositie (DSD) en relatie (ERD) met de andere data items in het systeem duidelijk aan te geven. Om de verschillende type diagrammen te integreren tot  één beschrijving van het systeem is het delen van de data items van eminent belang.

Het maken van een DFD

Een DFD wordt zoals eerder al aangegeven gebruikt voor het ontwerpen en analyseren van systemen. De volgende stappen geven aan hoe van een systeem een DFD beschrijving kan worden gemaakt:
  1. Identificeer alle externe entiteiten, welke als input en output voor het systeem dienen.
  2. Maak een context DFD door één enkel proces te tekenen met hierom heen alle geïdentificeerde externe entiteiten.
  3. Splits het één enkele proces van het context DFD in meerdere processen met behoud van de informatiestromen met de externe entiteiten.
  4. Herhaal stap 3 voor elk gewenst DFD.
  5. Begin bij de externe entiteiten en stel de vraag: "Welk proces heeft deze entiteit als input nodig?"
  6. Teken het proces zoals genoemd in 5 en stel de vraag: "Wat voor output geeft dit proces?" Dit geeft een aanwijzing voor het volgende proces in de keten.
  7. Herhaal de vraag "Welk proces heeft deze entiteit als input nodig?" om achter de identiteit van het volgende proces te komen. Verbind beide processen d.m.v. een informatie stroom en annoteer deze.
  8. Kijk of bepaalde informatiestromen verbanden hebben en kijk of de processen samen te nemen tot één proces om de verdeling van de processen goed te krijgen.
  9. Teken niet meer dan 5 à 7 processen in één DFD om het overzicht niet te verliezen.
  10. Wanneer een externe entiteit rechtstreeks wordt verbonden met een andere externe entiteit d.m.v. een informatiestroom, dan zijn zeer waarschijnlijk beide entiteiten niet relevant in de DFD.

Verschil tussen flowcharts en DFDs


Een flowchart geeft een grafische weergave van het gehele proces, daarentegen een DFD een grafische weergave van de gehele proces organisatie geeft. M.a.w. een flowchart is een tot op de bodem grafische weergave van een proces. Een DFD houdt zich meer bezig met de onderlinge informatie stromen tussen processen en kan op meerdere abstractie niveaus worden gedefinieerd.
 

Sterke & zwakke punten

Sterke punten

Een DFD is een veel gebruikte ondersteuning bij het programmeren van Object Oriented systems (OO). Het wordt op grote schaal gebruikt en vereenvoudigt het maken van een ontwerp en de latere implementatie. De grootste kracht ligt wel in het feit dat een DFD zeer eenvoudig is aan te leren, door het beperkt aantal eenvoudige symbolen, maar er kan wel ontzettend veel mee kan worden uitgedrukt. Het grote voordeel van een DFD is dat het de context van de verschillende processen aangeeft, iets wat met woorden veel moeite kost. Een eigenschap van diagrammen, het  vergelijken van onderdelen, stimuleert een beter ontwerp. Vaak kunnen overeenkomsten tussen processen worden uitgebuit, alleen dan moeten deze overeenkomsten wel worden gesignaleerd.
 

Zwakke punten

Hoe geweldig een DFD ook kan zijn, er zijn ook nadelen te vinden. Een probleem waarmee de DFD kamt is dat wanneer er meer dan 7 processen worden weergegeven er zoveel informatie stromen zichtbaar worden dat het complete systeem verzuipt in  chaos. Dit heeft direct te maken met de capaciteiten van de maker van de DFD om de verschillende abstractie niveaus in het systeem goed te kunnen herkennen. Voor de grotere systemen kan een boom van DFDs zo groot worden dat een praktische uitwerking ervan teveel tijd zal gaan kosten, vaak wordt er dan ook maar tot een bepaald abstractie niveau de DFDs gemaakt. Verder zijn de symbolen die worden gebruikt voor een DFD niet gestandaardiseerd, net zoals de methode die wordt gebruikt om ze te maken. Het is dan ook niet voor niets dat DFDs niet zijn opgenomen in de Unified Modelling Language (UML, www.omg.org), de algemene taal (met bijhorden grafische diagrammen) voor het beschrijven van systemen.
 

Voorbeelden

Bij onderstaande DFD is het mogelijk om op de verschillende componenten te klikken en een uitleg te krijgen.


 

Figuur 5 een DFD van een onbekend systeem. Discrete Control Flow Continuous Control Flow Continuous Data Flow Discrete Data flow Discrete Control Flow Continuous Data Flow Discrete Control Flow Discrete Control Flow Discrete Control Flow Control Process Data Process Bundary Point Equipment Data Store Control Store Terminator

Een van de eerste belangrijke gebreken van deze DFD komt meteen al naar voren, de context van bovenstaand systeem is niet geheel duidelijk. De gebruikte termen voor de verschillende entiteiten en processen geven ook geen opheldering. Afkortingen als T en E/D voor de twee informatie stromen helpen ook niet echt.

Studenten administratie systeem

Figuur 6 een DFD van een studenten administratie.

 In dit voorbeeld zijn Student en Staff entititeiten, m.a.w. de bestemmingen en bronnen van informatie. Enrol 1, Examine 2 en Graduate 3 zijn processen in het systeem. In de student file, hetgeen een Data Store is, worden de gegevens van de verschillende processen opgeslagen. Het proces Enrol 1 heeft als input een Enrolment Form, die de student heeft ingevuld. Op basis van het Enrolment form wordt het Subject Taken opgeslagen in de Student File, verder wordt Class Rolls informatie naar de Staff gestuurd. De Staff een Exam paper maken, waarna vervolgens een Examine zal plaatsvinden, waaruit Grades zullen komen die ook in de Student File zullen worden bewaard. Op basis van de gehele carriére van een student kan een Acadmic Record worden gemaakt, waarop basis van weer een Degree Transcript kan worden gemaakt, die naar de Student wordt gestuurd.

Zoals in dit voorbeeld duidelijk wordt kan één DFD zeer veel informatie over een systeem bevatten. Een belangrijk probleem komt ook direct naar voren, wat is nu de betekenis van de verschillende aangegeven informatie stromen ? Hoe ziet bijvoorbeeld een Academic Record eruit ? Dit alles dient uitvoerig te worden omschreven in een datadictionary.

Een ander voorbeeld van een studenten administratie systeem is onderstaande DFD:

Figuur 7 een DFD van een studenten administratie.

Het proces verwerk inschrijving plaatst de gegevens in de datastore tentamen inschrijvingen. Echter er moet ook een proces zijn die deze datastore weer leegmaakt als het tentamen is geweest. Een vergelijkbaar probleem doet zich voor bij de datastore student gegevens: welk proces vult deze datastore? In deze DFD is met rood aangegeven hoe dit probleem opgelost zou kunnen worden. Gekozen is voor een extra externe entiteit administratie met een proces update systeem die zowel uit de datastores kan lezen, schrijven als gegevens kan verwijderen.

Eén van de mindere eigenschappen van de DFD is het feit dat de entiteiten mentor en student, onnodig dubbel voorkomen. De plaatsing van het proces verwerk overzicht is ook niet op een echt handige plaats. Niet alle informatie stromen zijn geannoteerd, hetgeen op zich geen ramp hoeft te zijn, maar de precieze functie wel
onduidelijker maakt. 

 

Monitoring

Om aan te geven dat de formele presentatie zoals eerder voorbeelden niet altijd hoeft bewijst de volgende DFD:

Figuur 8 een DFD van een monitoring systeem.

Het gebruik van pictogrammen geeft wel duidelijk aan welke architectuur wordt gebruikt voor het proces, maar nog steeds is een annotatie nodig om duidelijk te maken wat het proces inhoudt. De context is ook hier niet eenvoudig te herleiden, nemen we de beschrijving van het systeem mee, dan wordt al veel duidelijk:

Adlink monitors all radio stations in both FM and AM bandwidths 24 hours a day, 7 days per week. Along with this, Adlink can also monitor all television stations whether they are VHF or UHF channels. This competence, coupled with the ability to monitor not only all local television stations but cable channels as well, yields highly competitive advertising information -- accessible at the click of a mouse button. Furthermore, Adlink has a comprehensive database of all the ads that are broadcasted in either the TV or radio and keeps track of ad-related information such the advertiser, product classification, brands, ad agencies, featured artists, etc.

De specialistische toepassing van DFD maken de context zoals hier niet altijd direct duidelijk.

 

CD bibliotheek


Figuur 9 een DFD van een CD bibliotheek.

Deze context DFD geeft een overzicht van een cd uitleen systeem. Het proces maak herinnering haalt gegevens uit de store uitleen gegevens (gegevens van een lid) en de store cd gegevens voor de titel en artiest van de cd. Echter wat gebeurt er als een cd niet retour komt, bijvoorbeeld omdat een lid is vertrokken zonder daarvan de mediatheek in kennis te stellen?  Normaliter zal dit probleem met de klant worden besproken. In de uitwerking is met rood aangegeven dat het proces maak herinnering, na bijvoorbeeld een drietal herinneringen, automatisch de stores uitleen gegevens en cd gegevens bijwerkt.

Opvallend bij deze DFD is de verschillende grafische weergave van de informatiestromen. We zien naast de normale zwarte pijlen ook andere representaties van informatiestromen; gestippelde en rode pijlen. De rode pijl geeft een informatiestroom aan die niet altijd zal bestaan, immers het is een afhankelijke informatiestroom van de input informatiestromen van het proces maak herinnering. De grote elliptische kromme op de verschillende processen geeft in dit context DFD de scheiding aan tussen het systeem en de buiten wereld.

Links

Hieronder enkele links naar meer informatie.

 

Anton Jansen (gradius@fmf.nl) 14-1-2001