Data Flow Diagramming by Example: Process Modeling ...index-of.co.uk/Various/Data Flow Diagramming...
Transcript of Data Flow Diagramming by Example: Process Modeling ...index-of.co.uk/Various/Data Flow Diagramming...
DataFlowDiagrammingbyExample
ProcessModelingTechniquesforRequirementsElicitation
ThomasHathawayAngelaHathaway
©2015byBA-Experts.
Allrightsreserved.Nopartofthispublicationmaybereproduced,storedinaretrievalsystem,ortransmittedinanyformorbyanymeans,electronic,mechanical,photocopying,
recording,orotherwisewithoutpriorpermissionofthecopyrightholder.
ThecontentsofthispublicationareprovidedingoodfaithandneitherTheAuthorsnorThePublishercanbeheldresponsibleforanyerrorsoromissionscontainedherein.Anypersonrelyingupontheinformationmustindependentlysatisfyhimselforherselfastothesafetyoranyotherimplicationsofactinguponsuchinformationandnoliabilityshallbe
acceptedeitherbyTheAuthororThePublisherintheeventofrelianceuponsuchinformationnorforanydamageorinjuryarisingfromanyinterpretationofitscontents.
Thispublicationmaynotbeusedinanyprocessofriskassessment.
PrefaceThiseBookwasneithercreated“ForDummies®”nor“ForCompleteIdiots®”,butfornormalpeopleintherealworldtogivethemabasicunderstandingofbusinessanalysisconceptsandtechniques.Manypeopledobusinessanalysisalthoughitisnotintheirjobdescription.WhetheryouaretheCEO,COO,Director,Manager,oronthefrontlines,youmaybeinvolvedindefininghowtechnologycanbenefityouandyourorganization.Whenyouareinthatawesomerole,youareatthattime“theonewearingtheBusinessAnalysis(BA)hat”.
Intoday’swiredworld,softwareapplicationsoftentakecenterstageinoptimizingworkflowandincreasingproductivity.Unfortunately,theprocessofdeliveringtherightsoftwaretotherightpeopleattherighttimeischallengingtosaytheleast.ThiseBookpresentsDataFlowDiagrams(DFDs)asaphenomenaltoolforvisualizingandanalyzingdependenciesandinteractionsamongstmanualandautomatedbusinessprocesses.ItexplainswhataDFDis,whyyouneedone,andhowtocreateit.Youwilllearnthebenefitsofprocessvisualizationforthebusinesscommunity,fortheonewearingtheBAhat,forthosetaskedwithdevelopingthesolution,andultimatelyfortheentireorganization.YouwillalsodiscoverhowDFDsarepowerfultoolsforrecognizingandeliminatingtwoofthemajorproblemsthathauntITprojects,namelyScopeCreepandProjectOverrunscausedbylateprojectchangerequests.
AbouttheAuthorsAngelaandTomHathawayhaveauthoredanddeliveredhundredsoftrainingcoursesandpublicationstothousandsofbusinessanalystsaroundtheworld.Theyhavefacilitatednumerousrequirementsdiscoverysessionsforinformationtechnologyprojectsunderavarietyofacronyms(JAD,ASAP,JADr,JRP,etc.).
Basedontheirpersonaljourneyandexperiencesreportedbytheirstudents,theyrecognizedhowmuchanyonecanbenefitfromabasicunderstandingofwhataDataFlowDiagramis,whattheyrepresent,whoneedsone,andhowtogetstartedcreatingone.
Angela’sandTom’smissionistoallowanyone,anywhereaccesstosimple,easy-to-learntechniquesbysharingtheirexperienceandexpertiseintheirtrainingseminars,blogposts,eBooks,videocourses,KnowledgeKnuggets™,andpublicpresentations.
AdditionalResourcesThecontentsofthiseBookarealsocontainedinourinstructor-ledtrainingwhichweofferonlineoratyoursite.Peruseourtrainingprogram.
TableofContentsPreface
AbouttheAuthors
TableofContents
IntroductiontoDataFlowDiagrams(DFDs)fortheBusiness
BusinessProcesses,DataFlows,andValueChains
WhyCreateaDataFlowDiagram?
ModelingtheFlowofMaterialandData
VisualizingProjectScope
HowtoIdentifyInternalProcessesonaDFD
GettingtotheNextLevel
MiningforProcesses
DrawingaDetailLevelDFD
DiscoveringMissingProcessesandData
DetailedProcessandDataSpecifications
OptionalProcessMini-Specs
CapturingDataElements
HorizontalBalancingRevealsMissingDataElements
ThePowerofDataFlowDiagrams
WhatDoestheDataFlowDiagramDoforYou?
AFullyBalancedDFD
CreatingaDFDFragment
Summary
Questionsansweredinthischapter:
WhatisaDataFlowDiagram(DFD)?
WhendoIneedone?
IntroductiontoDataFlowDiagrams(DFDs)fortheBusiness
BusinessProcesses,DataFlows,andValueChains
Apicturereallyisworthathousandwords,especiallyintheworldofBusinessAnalysisforITprojects.TrytodescribeworkflowsorbusinessprocessesinnaturallanguageandthechancesthatITwilldeliverthesolutionyouwantareverysmallindeed.Thechallengeiswhatpicturedoyouneedtodraw?
Thereareseveraltechniquesfordrawingprocessmodelsordiagramsatvariouslevelsofdetailandeachhasaspecificfocus.DataFlowDiagrams(DFDs)representtheworkfloworstepswithinaprocesswithafocusontheflowandtransformationofdata.YoucancreateDFDsatthebusinesslevel(asinthisexample)representingbusinessprocessesandbusinessdataoratthesystemleveldepictingITapplications,databases,andfiles.Sincewearetalkingaboutbusinessanalysis,ourfocuswillbecreatingandusingdataflowdiagramsatthebusinesslevel.
Everybusinessprocessisamore-or-lesscomplexsequenceofstepsthatchangessomethingcomingintocreatesomethingnew.Assuch,theprocessneedssomeformofinput,whichcouldbeinformationoranyotherresource.Bydefinition,adataflowdiagramisapictureofhowthedepictedprocessescreate,consume,transport,andstoredata.ADFDistherightchoiceforbusinessprocessmodelingifyouneedtounderstandthecreationanduseofdatawithintheindividualbusinessprocesses.Thoseprocessescanbemanualorautomated;itdoesnotmatterasfarasthediagramisconcerned.
Processesuseinputtocreateoutput,whethertheoutputissomethingaltogetherneworsimplyanalteredversionoftheoriginalinput.Sincetheprocessaddssomemeasurablevaluetotheinput,weoftenrefertothe“valuechain”oftheorganization.
Fundamentally,anydiagramissimplyapicturewithconstraints.InthecaseoftheDFD,theconstraintsarewhichsymbolsyoucanuseandwhateachsymbolmeans.TherearereallyonlytwowidelyusedconventionsfordrawingDFDsandthedifferencesareminimal.Bothallowonlyfourbasicsymbols.
Aroundedrectangle(oracircledependingonwhichconventionyoufollow)representsaprocessatsomelevelofdetail.Thenameoftheprocesstellsuswhattheprocessdoes(i.e.,whatitsprimaryfunctionis)incommonbusinessterms.Sincefunctionsareactions,thenameconsistsofanactiveverb(whatisdone)andadirectobject(whatisitdoneto—e.g.,PROCESSCREDITCARD,SELLPRODUCT,CHECKITEMPRICE).
Asyoucanseefromtheexamples,thenamedprocesscanbeatanylevelofdetail,fromtheveryhigh-level(SELLPRODUCT)totheverylow-level(CHECKITEMPRICE).
ProcessesInteractwithData
Anarrowrepresentsadataflow,meaninginformationcomingfromsomewhereandgoingsomewhereelse.Becausethedataismovingfromsomewheretosomewhere,thearrowpointsinthedirectionofmovement.Everydataflowhastohaveaname.Becauseitrepresentsdataanddataisathing,thenamehastobeanounwithorwithoutappropriatemodifiers(i.e.,CreditCardAuthorization,Invoice,ItemNumber).Aswiththeprocess,thenameddataflowcanbeatanylevelofdetail.
Adatastoreissimplydataatrest.Itisnotgoinganywheresoitcannotbeadataflow;itiswaitingtobeconsumedbyaprocess.Adatastoreisnotnecessarilyafilealthoughafileisadatastore(likeasquareisarectanglebutarectangleisnotnecessarilyasquare).Aspecialsymbolconsistingofasmallsquarewiththetopandbottomlinesextendingoutwardtotheright(orsimplytwoparallellines,againdependingonconvention)representsadatastore.
ADFDMakesScopeVisible
Asimplesquare(withorwithoutanoptionalshadow)representsanexternalentity.Intheworldofdataflowdiagramming,anexternalentityrepresentsaperson,organization,orapplicationthatisoutofscopefortheprojectfromtheperspectiveoftheDFD.Specifically,itimpliesthattherepresentedobjectisnotgoingtobeanalyzedorimpactedbyanyprojectusingthisdiagramalthoughdataflowstoandfromtheexternalentityhavetobeanalyzed.
WhyCreateaDataFlowDiagram?
ADFDservesmultiplepurposes.Youmightcreateonetobeabletoanalyzethecurrentsituationwiththegoalofidentifyingroadblocksandimprovingefficiency.Youmightalsocreateonetopresentanddiscusstheprocesswithothers.YoucouldcreateaDFDofaproposedbusinessprocessbeforeyoudevelopdetailedprocessesandsupportingITapplicationstoidentifypotentialissuesbeforetheyoccur.Itsprincipleuseispresumablytoidentify,document,andcommunicatestakeholderrequirementsforanITproject.
Fundamentally,therearetwogoodreasonswhyyouneedadiagram.Firstoff,peoplecanpointtothediagramtodiscussaprocessorflowinsteadofusingwordstodescribewhattheymean.Thediagramrepresentsavisualmodeofcommunication,whichallstudiesshowismuchmoreeffectivethanmerewords.Pointingpowerprovesthatitworks.Secondly,studyingthediagramgeneratesquestionsthatmightindicatemissingstepsorexternalentities.Ifthediagrampiquesyourcuriosity,itiswellworthyourwhiletoinvestigatethesituationtofindananswer.
Questionsansweredinthischapter:
WhatisaRigorousPhysicalProcessModel(RPPM)andwhydoIneedone?
Whatsymbolsdoesituse?
HowcanIcreateanRPPMfrominterviewnotes?
ModelingtheFlowofMaterialandData
ARigorousPhysicalProcessModelshowsthemovementofphysicalobjectsanddataamongsttheunitsinanorganization.Theideaistorepresenttherealworldascloselyaspossible.Giventhattheproposedinformationtechnology(IT)solutionwillneedtoknowsomethingaboutthephysicalobjects,thesewillhavetoberepresentedindataaswell.ThepowerofanRPPMliesinitssimplicity.Itonlyallowstwosymbols,acircletorepresentpeopleorplacesandanarrowrepresentingthemovementofphysicalmaterialordata.ThissimplicitymakesiteasytoimplementanditisanidealprecursortoaDataFlowDiagram.
NowthatyouknowthesymbolsforcreatinganRPPM,Iwouldliketowalkyouthroughtheexerciseofanalyzingasituationtocreateoneusingastandardscenariofromourinstructor-ledclass.FYI,thisisatranscriptofaninterviewwiththeManageroftheOrderEntryDepartment,Mary(theprojectsponsor).
InterviewNotes
Thecustomertriggersalltheactioninourdepartment.Wereceiveanorder(withorwithout
payment),acomplaintorapayment(withorwithoutinvoicecopy)fromthecustomer.Theseareseparated
andthefollowingactionstakeplace:
Ifitisanorder,weverifyanexistingcustomer’screditstatusandthenweverifythattheitemnumbers
arevalidbycheckingourinventoryfile.Newcustomer’sordersaresenttothecreditdepartmentandhelduntiltheyclearacreditcheck.(Ifhalf
paymentormoreisincluded,thatorderistreatedasifitwereacreditorderwithgoodcredit.)
Validordersareaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteranorderisfilled,thecustomeraddressisattached,thebestorrequestedshippingmethod
determined,postageorshippingcostscalculated,theorderisshipped,andthewarehouseinventoryisreduced.Acopyofthepackingslipgoesto
accountingwhereaninvoiceiscreatedandsenttothecustomer,andthecustomer’saccountupdated.Copies
oforderswithpaymentsandpaymentsgotoaccounting,wherethepaymentsareappliedtothecustomer’saccount.Theiteminventoryisofficially
updatedinaccounting.
Customercomplaintsgodirectlytocustomerservice.Theyresearchthesituationandrespondtothecustomerassoonaspossible.Anyactiontakenby
customerservice,whichaffectsaccountingorinventory,ispassedtothemforupdating.Possibleactionsareaneworder,adebit,oracredit.These
lookexactlyliketheregularorderprocess.
MyapproachistoreadthetextandlookforpeopleandplacesthatIwanttorepresentinmyRPPM.WhenIfindanoun,IdecidewhetheritnamesapersonorplaceonmyprocessmodelorsimplynamesdataorphysicalmaterialIneedtotrack.I’lltrymybest,butdon’thavetobeperfectasthisismyfirstcutatit.
InterviewNotes
Thecustomertriggersalltheactioninourdepartment.Wereceiveanorder(withorwithout
payment),acomplaint,orapayment(withorwithout
invoicecopy)fromthecustomer.Theseareseparatedandthefollowingactionstakeplace:
Ifitisanorder,weverifyanexistingcustomer’screditstatusandthenweverifythattheitemnumbers
arevalidbycheckingourinventoryfile.Newcustomer’sordersaresenttothecreditdepartmentandhelduntiltheyclearacreditcheck.(Ifhalf
paymentormoreisincluded,thatorderistreatedasifitwereacreditorderwithgoodcredit.)
Validordersareaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteranorderisfilled,thecustomeraddressisattached,thebestorrequestedshippingmethod
determined,postageorshippingcostscalculated,theorderisshipped,andthewarehouseinventoryisreduced.Acopyofthepackingslipgoesto
accountingwhereaninvoiceiscreatedandsenttothecustomer,andthecustomer’saccountupdated.Copies
oforderswithpaymentsandpaymentsgotoaccounting,wherethepaymentsareappliedtothecustomer’saccount.Theiteminventoryisofficially
updatedinaccounting.
Customercomplaintsgodirectlytocustomerservice.Theyresearchthesituationandrespondtothecustomerassoonaspossible.Anyactiontakenby
customerservice,whichaffectsaccountingorinventory,ispassedtothemforupdating.Possibleactionsareaneworder,adebit,oracredit.These
lookexactlyliketheregularorderprocess.
Iusuallyusecolor-codingwhileIamdoingthis,soasyouseehere,Ihighlightedfive
nounsthatIthinkrepresentpeopleorplaces(ourdepartment–akaORDERENTRY,CREDITDEPARTMENT,WAREHOUSE,ACCOUNTING,andCUSTOMERSERVICE)andtheCUSTOMER.Therearealotofothernounsinthenarrative,butIthinktheyareallsimplythingsImayneedtokeeptrackof,soIamgoingtoignorethemfornow.Atthistime,Iamonlyinterestedinpeopleandplaces(inthiscase,organizationalunits)wherethedatamightcomefromorgoto.
Sincethetextindicatesthateverythingstartswiththecustomer,Istartmydiagrambydrawingacircleintheupperleft-handcornerofthepageandlabelingitCUSTOMER.Thenextpartmentionedinthenarrativeis‘ourdepartment’,soIdrawanothercirclediagonallytotherightofandbelowtheCUSTOMERandnameitORDERENTRY.SinceIwilladdflowsbetweentheentities,Ineedtoleaveroomenoughforalabelandoneormorearrowsbetweenthetwocircles.Analyzingthenarrative,IseethatORDERENTRYreceivesOrders,Payments,andComplaintsfromtheCUSTOMER,soIdrawthearrowindicatingtheflowfromtheCUSTOMERtoORDERENTRYandlabelitrespectively.
Next,IreadseveralthingsthatORDERENTRYdoeswiththeincomingflow.Iamgoingtobeinterestedinthesespecificactionslater(onceIknowthescopeofthisproject)butforthetimebeing,Iamignoringthem.AllIamreallyinterestedinatthistimeistheflowofdatabetweendepartmentsandnotwhateachdepartmentdoeswithit.Becauseofthat,thenextflowIfindinthenarrativeisthatORDERENTRYsendsnewcustomerorderstotheCREDITDEPARTMENT.ThatcausesmetoaddacirclediagonallyaboveandtotherightoftheORDERENTRYsymbol,labellingitCREDITDEPARTMENT,addinganarrowfromORDERENTRYtotheCREDITDEPARTMENT,andlabellingthearrowNewCustomerOrder.Again,Ineedtomakesurethespacingbetweenthecirclesleavesroomforthearrowanditslabel.
Readingon,InotethatvalidordersaretransmittedtotheWAREHOUSE,soIaddacirclelabelled“WAREHOUSE”belowtheonelabelledCREDITDEPARTMENTandaddaValidOrderarroworiginatingfromORDERENTRY.Asyoucanbynowsurmise,Iamtryingtodrawthediagramdiagonallyfromtheupperlefttothelowerrightofthepagefollowingtheflowoftheorderasexpressedinthenarrative.Themajorreasonforthisiscultural.Englishandmanyotherlanguagesarewrittenfromlefttorightstartingatthetopofthepageandcontinuedowntothebottom.Ifmydiagramconformstothisconvention,itiseasierformostpeopletofollow.
Backtothenarrative,thenextflowofdatathatInoteistheWAREHOUSEshippingtheordertothecustomer.Torepresentthisflow,IcoulddrawanarrowfromtheWAREHOUSEaroundtheCREDITDEPARTMENTbacktotheCUSTOMERbutthatwouldviolatemyleft-to-right,top-to-bottomflow.SinceIconsiderthereadabilityofthe
diagramtobecritical,I’mgoingto‘cheat’byaddingasecondcirclelabelledCUSTOMER/2(indicatingthatthissymbolisarepeat)diagonallybelowandtotherightoftheWAREHOUSEsymbolandinsertanarrowlabelledShipmentfromtheWAREHOUSEtotheCUSTOMER/2symbol.Thispositioningkeepsthedirectionalflowintact.
Next,IreadacopyofthePackingSlipgoesfromtheWAREHOUSEtoACCOUNTING,soIaddanappropriatelylabelledcirclebelow,totheleftoftheWAREHOUSEsymbol,andaddtheflowCopyofPackingSlipfromtheWAREHOUSEtoACCOUNTING.ACCOUNTINGsendsaninvoicetothecustomerwhichIrepresentwithanarrowlabelledinvoicefromACCOUNTINGtoCUSTOMER/2,againmaintainingtheproperreadingdirectionofthediagram.WhenIread‘copiesoforderswithpaymentsandpaymentsgotoaccounting’,IhavetobacktracktothebeginningofthenarrativetodiscoverthatthesearecomingfromtheCUSTOMERtoORDERENTRY,sothissimplyaddsanewflowfromORDERENTRYtoACCOUNTINGwiththelabelCopyofOrderwithPayment,Payments.UpdatingtheItemInventoryisinternaltoACCOUNTING,soitdoesnotconcernmehere.
Thefinalparagraphisabitmoreconfusing.Firstoff,complaintsgodirectlytoCUSTOMERSERVICE.Again,byrereadingthefirstparagraph,IrecognizethatORDERENTRYreceivedthecomplaints,soIaddthearrowcomplaintsgoingfromORDERENTRYtoCUSTOMERSERVICE.CUSTOMERSERVICEsendsaResponsetothecustomerwhichisanarrowbetweenCUSTOMERSERVICEandCUSTOMER/2.InreadingtheactionsCUSTOMERSERVICEtakes,IconcludethatIalsoneedaflowlabeledDebitorCreditfromCUSTOMERSERVICEtoACCOUNTINGandaNewOrderflowfromCUSTOMERSERVICEbacktotheORDERENTRYdepartment(whichmakesthese“lookexactlyliketheregularorderprocess”asexpressedintheinterviewnotes).
InowhaveapictureoftheprocessdepictedintheinterviewnotesfromMary.Icanuseittopresenttheprocesstoanyaudience.Wecanfocusourdiscussionsabouttheprocessbypointingatthevariousunitsandflows.Asimple,clearpicturelikethisincreasescomprehensionandretention.OnceIhavegainedMary’sapprovalthatmydiagramisanaccuraterepresentationoftheprocessflow,wecaninitiatetheprocessofmorphingthisRigorousPhysicalProcessModelintoalegitimateDataFlowDiagram.
Questionsansweredinthischapter:
WhatisthedifferencebetweenaRigorousPhysicalProcessModelandaContext-LevelDFD?
HowcanIconverttheRPPMtoalegitimateDFD?
Whyisthisconversionnecessary?
VisualizingProjectScope
Atthispoint,Ihaveagreatdiagramofthesituationdescribedinthenarrative.TheproblemisthatitdoesnotfollowtherulesgoverningsymbolsonaDataFlowDiagram.AllIhavearecircleswithNOUNnamesbutaccordingtotherules,circlesrepresentPROCESSESonaDFDandPROCESSEShavetohaveaVERB/OBJECTname(dosomethingtosomething)!ThereasonforthisisthatIdrewtheRigorousPhysicalProcessModelwithoutknowingwhichofthesedepictedpeopleandplacesareinscopeformyprojectandwhicharenot.IneedtogetananswertothescopequestiontoconvertthisRigorousPhysicalProcessModeltoaContextDataFlowDiagram.
AstheonewearingtheBAhat,Icannotmakeadecisionregardingthescopeoftheproject.Thatdecisionultimatelyhastobemadebytheprojectsponsor(thecommontitlefortheindividualintheorganizationwhoisfundingtheproject).MaryisourprojectsponsorandtheDepartmentManagerofOrderEntry.HerauthorityislimitedtoanythingtheOrderEntryDepartmentdoes.Basedonherauthority,Icannowconvertmyinitialdiagrambyfollowingafewsimplerules.Firstoff,sinceORDERENTRYisinscopeformyproject,IneedtochangethenounORDERENTRYtoaVERB/OBJECTtomakeitalegitimatefunction.WhatIlookforistheprimaryfunctionthatORDERENTRYperformsandMaryagreesthattheirprimaryfunctionistoENTERORDERS.
BychangingthenameofthecirclefromthedepartmentORDERENTRYtothefunctionENTERORDERS,Inotonlyhavealegitimatefunction,Ialsomadeacriticalpsychologicalshift.Astheprojectprogresses,IamgoingtoanalyzewhathappensinsidetheENTERORDERSprocesswhichwillleadtotherecognitionthatthereareseveralproblemswithhowtheunitcurrentlyprocessesorders(that’swhytheprojectwasinitiated).
IfIleavethenameoftheobjectORDERENTRY,Iwouldbeaccusingthedepartmentofmakingerrors,whichleadstopointingfingersandmakingaccusations.Thiscanresultinalotofpushbackfromtheemployeesinthedepartmentastheyfeelunjustlycriticized.Havingchangedthenamefromthedepartmenttothefunction,IcancriticallyanalyzetheENTERORDERSfunctionandfindflawsinit.Inthiscase,thesameemployeeswilljoininenthusiasticallybecausetheproblemsarecausedbytheprocessanditisnottheirfault.Thisseeminglysimplestepcanliterallymakeorbreaktheproject.
Next,IconvertallothercirclesonthediagramtosquarestoturnthemintolegitimateexternalentitiestogettoanalmostlegitimateDFD.Theonlyremainingproblemisthatthediagramviolatesasimplebutpowerfulruleofdataflowdiagramming,namelythatflowsbetweentwoexternalentitiesarelogicallyoutofscope(sincebothendsoftheflowareoutofscope).
Tocomplywiththatrule,IeliminatetheDebitorCreditflowfromCUSTOMERSERVICEtoACCOUNTINGandtheflowResponsefromCUSTOMERSERVICEtoCUSTOMER/2.IcanfurtherignoretheShipmentflowfromtheWAREHOUSEtoCUSTOMER/2,theCopyofPackingSlipfromtheWAREHOUSEtoACCOUNTING,andtheInvoiceflowfromACCOUNTINGtoCUSTOMER/2.Aftereliminatingalloftheseout-of-scopeflows,IseethattheCUSTOMER/2entityIhadaddedtomaintainthelogicalleft-to-right,top-downflowisunnecessarysinceitisnolongerinvolvedinanydataflows,soIcanalsodeleteit.
InowhaveaperfectlylegitimateContextLevelDataFlowDiagram(akaa“ContextDiagram”,a“LevelO(Zero)DFD”,orsometimesa“Level1DFD”)fortheproject.Notethateveryflowonthediagrameithergoesintoorcomesoutoftheoneprocessonthediagramthatisinscope,namelyENTERORDERS.ThatisoneofthehallmarksofagoodContextLevelDFD.Itsprimaryreasonforbeingistomanagethescopeoftheproject.Assumingmydiagramisanaccuraterepresentationofthesituation,anythingdoneduringtheENTERORDERSprocessisinscopeandsubjecttochange;everythingelseisoutofscopeforthisproject.Ifanyonestartstodiscussproblemswithselectingthebestshippingmethodforashipment(basedonthenarrativethisisdoneintheWAREHOUSE),Ipointtothediagramtoshowwhythatproblemisirrelevanttothecurrentscopeoftheprojectandthereforeweshouldnotspendprojectresourcesdiscussingit.
WhenIlookatthisdiagram,Irecognizeadifferentproblem.IamsendingNewCustomerOrderstotheCREDITDEPARTMENTwhereaccordingtothenarrativetheyare‘helduntiltheyclearacreditcheck’.Thatbegsthequestion,‘Whathappenstothemoncetheyhaveclearedthecreditcheck?’WhatdoestheCREDITDEPARTMENTdowiththem?WhenIposethatquestiontomyprojectsponsor,sheexplainsthattheCREDITDEPARTMENTsendsapprovedordersbacktoORDERENTRY,whichODERENTRYhastocontinueprocessingthesameasotherordersfromknowncustomerswithgoodcredit.ThatfactcausesmetoaddtheflowCreditOKOrdersfromtheCREDITDEPARTMENTtotheENTERORDERSprocess.
Asasidenote,itisnotunusualtodiscovermissingflowssuchasthisonceyoustarttoworkwiththeContextLevelDFD.Theearlierintheprojectthatyoucanidentifythem,thecheaperitistoincorporatethemintoyourprojectwork.Bytheway,ifyouidentifiedthisissuewhileyouwerecreatingtheoriginaldiagramandaddedthisflowatthattime,kudos,youareonestepaheadofme.
Questionsansweredinthischapter:
Whatdoes“explodingaprocess”mean?
Whatisthebusinessvalueofdoingit?
Whatprocesseswillthelowerleveldiagramcontain?
HowtoIdentifyInternalProcessesonaDFD
GettingtotheNextLevel
AsrevealingandusefulasaContextDiagrammaybe,itiscertainlylackingalotofdetail.InDataFlowDiagramminglingo,thedetailisrevealedby“exploding”or“levelling”complexprocesses(e.g.ORDERGOODS)toidentifyinternalprocessesandflowsthatarenotvisibleatthehigherlevel.Byexplodingaprocess,youwillalsoidentifyinternaldatastores,meaningplaceswherethedatajustsitswithintheprocesswaitinguntilitisusedbyanotherprocess.DelvingintothislevelofdetailmayallowyoutodiscoveradditionalmissingflowssuchastheCreditOKOrdersflowwedealtwithpreviously.
Eachoftheseinternalprocessescreatesandconsumesspecificdata.Ifyoudrawadataflowdiagramatthismoredetailedlevel,youuncoverinternaldataflowsanddatastoresthataremorespecificanddetailedaswell.Anyprocessatanylevelofdetailisapotentialcandidateforexploding.Theonlyfactortoconsideriswhetheryouunderstandtheprocesssufficientlytopredicthowchangewillaffectit.
Forexample,toanalyzehowtheENTERORDERSprocessworks,Ineeddetails.Torepresentit,IamgoingtolookinsidetheENTERORDERSprocessanddefinehowitcurrentlyworks.
MiningforProcesses
GiventhatallIhaveatthistimearemyinterviewnotesfromtheprojectsponsor,Istartbyanalyzingthemtofindtheselower-leveldetails.Specifically,IamlookingforactionsthatrepresentlowerlevelprocessesperformedwithinENTERORDERS.Weexpressactionsasverbs,buttheverbshavetopassacoupleofothertestsbeforeIwillconsiderthemcandidatesforaprocessonmydetail-leveldiagram:
1. Verb-Object
Iwillonlyacceptverbsintheiractivevoice(e.g.,‘enterorders’isactivewhereas‘ordersareentered’ispassive).WhenIfindaverbinthepassivevoice,Iconvertittoactivevoicetoevaluateifitisalegitimateprocess.Specifically,Itrytogiveeachprospectaproperactive-verb-direct-objectnameasrecommendedfornamingprocessesonaDFD(e.g.,CheckInventory,SeparateMail).
2. TransformingAction
Thestatedactionhastodosomethingthatwillultimatelyberepresentedintheformofdata,meaningittransformsincomingdataintooutgoingdata.Iftheactionaffectsphysicalmaterial(e.g.,‘Shipment’),theapplicationwillhavetoknowsomethingaboutthematerialandthatsomethingwillalsobedatainsomeformoranother.
3. InScope
TheactionhastobewithinthescopeoftheprocessIamanalyzing(inthiscase,EnterOrders).
OnlyiftheactionpassesallthreeruleswillIconsideritasapotentialinternalprocess.
TomakesurethatmylowerleveldiagramisanaccuratedepictionofhowtheENTERORDERSprocessreallyworkstoday,Iinvolvearepresentativefromthegroupwhoactuallydoesthework.ManagerssuchasMarytypicallydonotneedtoknowthelevelofdetailIneed.Assumingtheywerepromotedfromtheranks,theyprobablyknowhowtheydidtheworkbackthenbuttheymaynotbeuptodateonexactlyhowtheworkisdonetoday.TogetatrulyaccurateandcurrentpictureoftheENTERORDERSprocess,IreviewthenarrativeandidentifytheinternalprocesseswithPaul,anOrderEntryClerk.SinceprocessesonaDFDareactions,wesimplylookforverbsstatingorimplyingactionsandthenapplymythreerules.Hereisalistofthecandidatesweidentifyinouranalysisoftheinterviewnotes.
InterviewNotes
Thecustomertriggersalltheactioninourdepartment.Wereceiveanorder(withorwithout
payment),acomplaint,orapayment(withorwithout
invoicecopy)fromthecustomer.Theseareseparatedandthefollowingactionstakeplace:
Ifitisanorder,weverifyanexistingcustomer’screditstatusandthenweverifythattheitemnumbers
arevalidbycheckingourinventoryfile.Newcustomer’sordersaresenttothecreditdepartmentandhelduntiltheyclearacreditcheck.(Ifhalf
paymentormoreisincluded,thatorderistreatedasifitwereacreditorderwithgoodcredit.)
Validordersareaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobe
filled.Afteranorderisfilled,…
Afterapplyingouraforementionedrules,thefollowingpictureemerges:
Ananalysisoftheremaininginterviewnotesdoesnotrevealanyadditionalactionsthat
areinscopeANDtransformdata.Asyoucansee,outoftheratherlengthyinterviewnotesfromMaryweactuallyidentifiedonlyfourinternalprocessesthatarepartoftheENTERORDERSprocess:
SORTMAIL
VERIFYCREDIT
VALIDATEITEMS
GROUPVALIDORDERS
ALevel2DataFlowDiagramwillshowhowthesefourinternalprocessestransformtheincomingflowstocreatealloutgoingflows.Whiledrawingthediagram,wemaydiscovermissingflowsand/ormissinginternalprocesses.Thatisnotabadthing;itisoneofthemajorbenefitsofexplodingorlevelingaprocess.
Questionsansweredinthischapter:
Whatisasimpleapproachfordrillingdownintoaprocess?
WhydoitandwherecanIstart?
HowcanIshowtheinternalprocessesandflowsthatproducetheresults?
DrawingaDetailLevelDFD
LookingattheContextdiagram,the“Orders,Complaints,andPayments”dataflowfromtheCUSTOMERiswhereitallstartsandlookingatourlistofpotentialinternalprocesses,SORTMAILappearstobethefirststepintheprocess.
Thecustomertriggersalltheactioninourdepartment.Wereceiveanorder(withorwithout
payment),acomplaint,orapayment(withorwithoutinvoicecopy)fromthecustomer.Theseareseparated
andthefollowingactionstakeplace:
Therefore,IstartmydetaileddiagramontheleftsideofanewsheetofpaperwiththeOrders,Complaints,andPaymentsflowcomingfromtheleftintotheprocessSORTMAIL.Bytheway,dataflowdiagramstendtogrowwideasopposedtohighsoIsuggestdrawingthediagramin‘Landscape’orientation.Withthatlayoutoption,Iamgoingtotrytosimplydrawthediagramhorizontallyacrossthemiddleofthepage,leavingspacebothaboveandbelowthesymbolsforadditionalinformationthatIsomehowalwaysneed.
NotethatIamexplodingaprocessENTERORDERSfromahigherleveldiagramwhichclearlyshowstheOrders,Complaints,andPaymentsdataflowcomingfromtheexternalentityCUSTOMER.Technicallyspeaking,Idonothavetorepeattheexternalentitysymbolonthelowerleveldiagram—butIwillifitaddsclarity.
BasedonPaul’sexplanationofwhattheSORTMAILprocessentails,IaddthreeseparateflowsOrders,Complaints,Paymentsastheoutcomeoftheprocess.SincemyprimaryinterestistheOrders,thatisthedataflowgoingouttotherightoftheprocess.Theothertwosecondaryflowscomeoutofthelowerpartoftheprocesssymbol.
Basedonthenarrative,thenextstepintheprocessisVERIFYCREDITsoIaddaprocesswiththatnametotherightoftheSORTMAILprocesswiththeOrdersdataflowcomingintoitfromtheleft.
InterviewNotes
Ifitisanorder,weverifyanexistingcustomer’screditstatusandthenweverifythattheitemnumbers
arevalidbycheckingourinventoryfile.Newcustomer’sordersaresenttothecreditdepartmentandhelduntiltheyclearacreditcheck.(Ifhalf
paymentormoreisincluded,thatorderistreatedasifitwereacreditorderwithgoodcredit.)
Theverb‘Verify’onaprocessmodelalwaysimpliestwoinputs.Ineedsomethingtoverify(inthiscasethecustomerinfofromtheOrder)andsomethingtoverifyitagainst.ThenarrativedoesnotstatewhatthatisbutPaulexplainstomethatheverifiesacustomer’screditstatusbycheckingtheCUSTOMERSdatastore.
ThisrevelationcausesmetoaddthedatastoreCUSTOMERSabovetheVERIFYCREDITprocessandthedataflowCustomerCreditStatusfromCUSTOMERStoVERIFYCREDIT.DrawingthisforcesmetoaskPaulwhathappensifthecustomerisnotintheCUSTOMERSdatastore?“Well,thatwouldmeanitisanewcustomerinwhichcasewesendtheorderovertotheCREDITDEPARTMENTforacreditcheck,”Paulreplies.
IrepresentthisknowledgebyaddingadataflowlabeledNewCustomerOrdercomingoutofthebottomoftheVERIFYCREDITprocess.SincetheflowwiththatnameisshownontheContextDiagramgoingfromENTERORDERStotheCREDITDEPARTMENT,IdonothavetodrawtheexternalentityCREDITDEPARTMENTonmydetaileddiagram(butIwillifitaddsclarity).
Customerswithgoodcreditgotothenextprocess,whichournarrativeindicatesistheVALIDATEITEMSprocesssoIaddCreditOKOrderscomingoutoftheright-handsideoftheVERIFYCREDITprocessgoingintotheleftsideofthenewVALIDATEITEMSprocess.
InterviewNotes
Ifitisanorder,weverifyanexistingcustomer’screditstatusandthenweverifythattheitemnumbers
arevalidbycheckingourinventoryfile.Newcustomer’sordersaresenttothecreditdepartmentandhelduntiltheyclearacreditcheck.(Ifhalf
paymentormoreisincluded,thatorderistreatedasifitwereacreditorderwithgoodcredit.)
Thatbegsthequestion,“Whathappenstocustomerswithbadcredit?”whichPaulexplainsarealsosenttotheCREDITDEPARTMENT.ThisaddstheflowCreditNOKOrdersdrawnparalleltotheNewCustomerOrdersflowbelowtheprocess.SincebothdataflowsaregoingtotheCREDITDEPARTMENT,Iaddthatexternalentitytothediagramtomakeitvisibleatthislevel.
Havingdonethat,IreferbacktothecontextdiagramandseetheCreditOKOrdersdataflowcomingfromtheCREDITDEPARTMENTonceanewcustomerhasclearedacreditcheck.IaskPaulandheexplainsthattheseordersgodirectlyintotheVALIDATEITEMSprocessthesameastheCreditOKOrderscomingfromourinternalVERIFYCREDITprocess.IcansimplifymydiagramthenbymergingthetwoincomingflowsandremovingthenamefromthedataflowfromtheCREDITDEPARTMENT.Iliketokeepthediagramas‘clean’aspossibleastoomuchclutterconfusespeople.Iftwoflowsareidentical,Iwouldliketohavethenameofthedataflowonthediagramwherethetwo
becomeone.
Accordingtothenarrative,theVALIDATEITEMSprocessneedsaccesstoanINVENTORYfile,soweaddthedatastoresymbolwiththatname.WhenIaskPaulwhattheyneedfromtheINVENTORYfiletoverifytheitemnumbers,herepliesItemNumbersandDescriptions,soIaddthatflowfromINVENTORYtoVALIDATEITEMS.
Theaction‘validate’isjustlike‘verify’inthattherewillalwaysbetwopossibleoutcomes,agoodandabad.OrdersonwhichallitemnumbersarevalidarecalledValidOrdersandtheseareaccumulated—whichisnotalegitimateinternalprocessbutimpliesadatastore.IaddthedataflowValidOrdersgoingouttherightsideofVALIDATEITEMSintoanewdatastorewiththesamename.
AnotherconventionofDFD’sstatesthatifthedataflowgoingintoadatastorehasthesamenameasthedatastoreitself,Idonothavetonamethedataflowasitisself-evident.RemovingthenamefromtheflowallowsmetoshortenthearrowandmovethedatastoreVALIDORDERSclosertoVALIDATEITEMS,whichfreesupspaceforonemoreprocess.
First,however,IhavetoaskPaulwhathappensifthereisamismatchbetweenanitemnumberanddescriptionontheorderandtheitemnumberanddescriptionontheINVENTORYfile.HerepliesthatwouldmakeitanInvalidOrderwhichtheysendtoCUSTOMERSERVICEsotheycancontactthecustomertoclarifyexactlywhatthecustomerintendedtoorder.Sincethisrevelationisnewtome,Iaddtheexternal
CUSTOMERSERVICEbelowtheVALIDATEITEMSprocessastherecipientoftheComplaintsflowandaddthedataflowInvalidOrderscomingfromVALIDATEITEMStoCUSTOMERSERVICE.
AsalwayswhenIdiscoveranewflowtoanexternal,Ineedtoaskthefollow-onquestion,“Doyougetanythingback?”
“Sure,wegetaValidOrderbackfromCUSTOMERSERVICE,”Paulreplies.
“AndwhatdoyoudowiththatValidOrder?”
“ItgoesdirectlyintotheVALIDORDERSpilejustlikethoseordersthatpassedtheVALIDATEITEMtest.”
ThisstatementaddstheflowfromCUSTOMERSERVICEtothedatastoreVALIDORDERS.Again,sincethedataflowandthedatastorehavethesamename,Idonotputthenameonthedataflow.
ThefinalinternalprocessonourlistofcandidatesisGROUPORDERSandthenarrativeconfirmsthatvalidordersare‘groupedintoshippingzones’,soIaddaprocessGROUPORDERStothediagramandaddadataflowcomingfromtheVALIDORDERSdatastore.
InterviewNotes
Validordersareaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteranorderisfilled,thecustomeraddressisattached,thebestorrequestedshippingmethod
determined,postageorshippingcostscalculated,theorderisshipped,andthe…
MydiscussionwithPaulrevealsthatSHIPPINGZONESisadatastore,whichIaddabovetheprocessGROUPORDERSandconnectthetwowithadataflowdowntotheprocess.
Thephrase‘transmittedtothewarehouse’representsaflowfromtheGROUPORDERSprocesstotheWAREHOUSE.
InterviewNotes
Validordersareaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteranorderisfilled,thecustomeraddressisattached,thebestorrequestedshippingmethod
determined,postageorshippingcostscalculated,theorderisshipped,andthe…
Logically,wenamethedataflowGroupsofValidOrderstoindicatethatboththevalidationandgroupingprocessesarecomplete.Asperconvention,IcaneitherputtheWAREHOUSEentityonthediagramorleaveitoff,asitisobviousonthecontextdiagram.
ThenextsentencesintheinterviewnotesfromMarydescribewhattheWAREHOUSEthendoeswiththeorder.TheWAREHOUSEmightbeofinterestifIdecidetocreateadataflowdiagramoftheorderfulfillmentprocess,butinthatcase,IwouldreallyhavetotalktosomeoneintheWAREHOUSEtomakesureIunderstandthatprocess.SincetheWAREHOUSEisanexternalentity,Idonothavetoworryaboutthatforthisproject.
Atthispoint,wehaveusedalloftheinternalprocessesweidentifiedinourinitialanalysisoftheinterviewnotes.Lookingatthediagram,InoticethateveryflowleavingoneoftheinternalprocessesgoestoanexternalentityatthislevelwiththeexceptionofthePaymentsflow,soIaddACCOUNTINGtothediagramtomakeitconsistent.Voila,wenowhaveafirstcutdataflowdiagramofhowtheENTERORDERSprocessworks.Theonlyquestionis,howcanweconfirmthatitiscomplete?
Questionsansweredinthischapter:
WhatdoesbalancingaDataFlowDiagrammean?
Whatisthebusinessvalueofbalancing?
WhatisthemostefficientapproachtobalancingaDFD?
DiscoveringMissingProcessesandData
Toconfirmthatitisindeedcorrectandcomplete,thenextstepisto‘balance’thetwodiagrams.Whatdoesthatmean?
ThereareactuallytwostepstobalancetheindividuallevelsofDFDs.Thefirststepisverysimpleinthatyouarecomparingflowsenteringandleavingthedetailleveldiagramwiththehigherleveldiagram.Todothat,Ineedtobeabletoviewbothdiagramsatthesametime.
Inourexample,weexplodedtheENTERORDERSprocessfromthecontextdiagram.IfInowcomparetheexplodedversionwiththecontextversion,logicdictatesthatallflowsgoingintoorcomingoutoftheENTERORDERSprocessonthecontextdiagramhavetoshowupontheexplodedversiongoingintoorcomingfromoneofthemoredetailedprocessesatthatlevelandviceversa.
Ifinditsimplesttobalancestartingattheupperlevelandcomparingflowsclockwisefromthatdiagramtomakesuretheyallappearonthelowerlevel.IchecktheflowsoffonbothdiagramsasIgotohaveavisibletrailandensurethatIamnotmissinganything.Lookingatthecontextdiagram,IseeOrders,Payments,ComplaintscomingfromcustomerintoENTERORDERS.Iseethesameflowonthedetailedviewcomingfrom
CUSTOMERintoSORTMAIL.Theseflowsarethesame;therefore,Iputacheckmarkonthemoneachdiagram.
ContinuingclockwisearoundENTERORDERSontheContextLeveldiagram,IseeaNewCustomerOrdergoingtotheCREDITDEPARTMENT.Iseethesameflowinthesamedirectiononthelowerleveldiagram,soIcheckthoseoff.IalsoseematchingCredit
OKOrderscomingbackfromtheCREDITDEPARTMENTandcancheckthemoffaswell.
NextIseeValidOrdersgoingfromENTERORDERStotheWAREHOUSE.Onthedetaileddiagram,IseeGroupsofValidOrdersgoingtotheWAREHOUSE.AfterconfirmingwithPaulthatthatistheonlydataflowtothewarehouse,Iwouldliketoremovethediscrepancytoavoidmisinterpretation.Sincethedetailedlevelismorespecific,IchangethecontextdiagramtoreadGroupsofValidOrdersandcheckbothflowsoff.
Onthecontextdiagram,thenextflowoutofENTERORDERSistheCopyofOrderwithPayment,PaymentsbeingsenttoACCOUNTING.OnthedetaillevelIseePaymentsgoingfromSORTMAILtoACCOUNTING,soIcancheckoffthatpartoftheflow,butwhatabouttheotherhalf?Itappearsthatwemissedsomething.
IaskPaulwheretheCopyofOrderwithPaymentcomesfromandheexplainsthatACCOUNTINGrequestedacopyofanyorderthathasanattachedpayment.Asaresult,whiletheysortthemail,theyseparateorderswithpaymentfromorderswithoutpayment.Oncetheyaredonesorting,theygothroughthestackwithattachedpayments,removeattachedchecksfromorders,makeaphysicalcopyofthatorder,attachthechecktothecopy,andputthecopyoftheorderwiththeattachedcheckonthestackofpaymentsdestinedforACCOUNTING.Iftheattachedpaymentisatleasthalfofthetotalorderprice,theoriginalorderisstamped“CreditOK”andsentdirectlytotheVALIDATEITEMSprocess,bypassingtheVERIFYCREDITprocess.
Thisadditionalinformationcreatesaproblem.Obviously,wemissedthislittlenuanceinouroriginalanalysis,sowehavenochoicebuttocorrectthelowerleveldiagramtoreflectthenewlydiscoveredfacts.WeaddaprocessCOPYORDERSw/$betweenSORTMAILandACCOUNTING.WeaddaflowOrdersw/$fromSORTMAILtoCOPYORDERSw/$andthenaddtheoutgoingflowsCopiedOrdersw/$toACCOUNTING,OriginalOrdertoVERIFYCREDIT,andCreditOKORDERSflowtotheVALIDATEITEMSprocess.IhavetochangetheOrderflowbetweenSORTMAILandVERIFYCREDITtoreadOrdersw/o$.Inaddition,IchangethecontextdiagramflowCopyofOrderwithPayment,PaymentstoreadCopiedOrdersW/$,Paymentsandcheckmatchingflowsoffonbothdiagrams.
Thatisagreatexampleofhowexplodingandlevelingadataflowdiagramcanidentifyamissingprocess.
Backtothecontextdiagram,IseeaNewOrdercominginfromCUSTOMERSERVICE.Onthedetailview,IhaveaValidOrderandaCreditOKOrderbothcomingfromCUSTOMERSERVICE.WhichistheNewOrder?PaulexplainsthattheNewOrderisonethatCUSTOMERSERVICEcreatesinresponsetoacomplaint.ItisconsideredaCreditOKOrderbytheOrderEntryDepartmentandtheyjustchecktheitemnumbers,soIchangetheNewOrderflowonthecontextdiagramtoreadCreditOKOrderandmarkthosetwoflowsoff.Note,IcanonlymarktheCreditOKOrderfromCUSTOMERSERVICEoffonthedetaileddiagramalthoughIhavethreeotherflowsonthatdiagramthatareallnamedCreditOKOrders.IalsomarkthematchingflowsComplaintsgoingfromENTERORDERStoCUSTOMERSERVICEonbothdiagrams.
Havingcompletedthatstep,IamsatisfiedthatallflowsthatareonthecontextdiagraminvolvingENTERORDERSaretakencareof.Whatabouttheopposite,haveIcheckedoffalloftheflowscomingintoorleavingthedetaileddiagram?HereIamonlyinterestedinflowsthatarebetweenthedetailedprocessesandexternalentitiesandcanignorethe
internalflowsbetweenprocesses.
StartingwiththedataflowOrders,Payments,ComplaintscomingfromtheCUSTOMER,Iproceedclockwisearoundthelower-leveldiagramtoseeifthereareanyunmatchedflows.InoteanInvalidItemsdataflowgoingtoCUSTOMERSERVICEthathasnomatchatthecontextlevel.ConfirmingwithPaulthatthedetailedviewiscorrect,IsimplyhavetoaddthatflowtothecontextdiagramflowingfromORDERENTRYtoCUSTOMERSERVICE.Icanthenmarkbothflowsasmatching.
Continuing,IdiscoverthatthedetaileddiagramalsoshowsCUSTOMERSERVICEsendingValidOrdersdirectlyintotheinternaldatastorewiththatname.Onthecontextleveldiagram,theyonlysendCreditOKOrders.CheckingwithPaul,IdiscoverthatValidOrdersfromCustomerServicearethecorrectedInvalidOrderstheyreceivedfromVALIDATEITEMS.Asaresult,IaddaseparateflowValidOrdersfromCUSTOMERSERVICEtoENTERORDERSonthehigherleveldiagram.
Finally,IfindaCreditNOKOrdergoingtotheCREDITDEPARTMENTonthelowerlevelthatisalsounmatched.Again,sincetheflowiscorrect,Isimplyaddittothecontextdiagramandmarkitoffonbothdiagrams.
Inowhaveawonderfullybalancedsetoftwodiagrams,oneshowingthecontextoftheprojectandtheseconddetailingtheENTERORDERSprocess.Obviously,ifmyprojecthadincludedtheWAREHOUSEorCREDITDEPARTMENT,Iwouldrepeattheprocessforeachrespectivelyandwouldprobablyidentifyadditionaldisconnectsthere.Giventhescopeofthisproject,Icouldbedoneatthistime.IfIfeelthatallprojectstakeholdersunderstandeveryprocessonmylowerleveldiagramatthelevelofdetailtheyneedtomaketheircontributions,Iwouldconsiderthediagrammingstepcomplete.Otherwise,thereisstillworktobedone.
Questionsansweredinthischapter:
Whatbusinessvaluedodetailedprocessspecificationsoffer?
HowcanIexpressdetailedspecificationsforprocessesanddata?
Whatis“metadata”andwhydoyouneedit?
DetailedProcessandDataSpecifications
OptionalProcessMini-Specs
Ifwefeelthataprocessonthedetaildiagram,e.g.,theVERIFYCREDITprocess,isstilltoovagueandweneedmoredetail,wecouldexplodethatprocessfollowingthestepsIjustoutlined.Indataflowdiagramminglanguage,anyprocessthatyoudonotexplodetoalowerlevelofdetailiscalleda‘FunctionalPrimitive’.FunctionalPrimitivesarenotgoodcandidatesforfurtherexplosionbecauseanalyzingthedataflowswithinthemwouldrevealnothingofvalue.
Nonetheless,youmayneedtodescribewhathappensinsideaFunctionalPrimitiveusingadifferenttooltoenableathoroughanalysisortoinformthedownstreamdeveloperswhattheprocessreallydoes.AdescriptionofaFunctionalPrimitiveiscalleda‘Mini-Spec’ora‘ProcessSpecification’.YouhaveawiderangeofpossibletoolsfordocumentingtheseSpecifications.
Youcoulduseplain,simpleEnglishbywritingabriefdescriptionofhowweSORTMAIL.Inourexample,Icouldwrite:
Themailarrivesbetween8amand10amMondaythroughFriday.TheMailClerkopenseachenvelopeandseparatesthecontentsintofourstacks:OrderswithPayments,OrderswithoutPayments,Payments,andComplaints.Oncethatiscomplete,theMailClerkprocessesthestackofOrderswithPayments.
Foreachorder,hecarefullyseparatesthecheckfromtheorderwithoutdamagingeither,makesacopyoftheorder,staplesthechecktothecopy,andaddsthecopywithcheckattachedtothestackofPaymentsdestinedforACCOUNTING.Iftheamountofpaymentexceeds50%ofthetotalprice,hestampstheorder“CreditOK”andputsitonastacklabeledPrepaidOrders;otherwise,heplacestheoriginalorderonthe
OrderswithoutPaymentstacks.
OncehehasprocessedallOrderswithPayment,theMailClerkdistributesthestackstotheappropriatedepartment:
OriginalOrdersstayintheOrderEntryDepartmentPaymentsandCopiesofOrderswithPaymentgottoAccountingComplaintsgotoCustomerService
IfyouandyourtargetaudiencearecomfortablewithconceptssuchasPseudoCodeorStructuredEnglish,youcouldalsowritethespecificationthusly:
Iftheprocessisprimarilyadecision-makingprocessandyourtargetaudienceiscomfortablewiththem,youcanalsouseadecisiontable(alsocalled‘TruthTables’).Tocreateadecisiontable,openaspreadsheet,andwritedowneachpotentialactionasacolumnheaderstartingwiththesecondcolumn.Ourcolumnheadersforthisexamplewillbe:
Iftheprocessinvolvesalotoflogicalbranching,youmightconsideranActivityDiagram,anEvent-ResponseDiagram,aSystemFlowChart,oranyothertoolsuitedfordepictingconditionalsequencesofactions.
IftheFunctionalPrimitiveisalreadyautomated,considerreferencingexistingdocumentationfromthatapplication.Ifitisnotautomated,checkforaproceduremanualdescribinghowtodoit.
Often,processesarecontrolledbybusinessrules.Youmightconsidersimplylistingtherelevantbusinessrulesasprocessspecifications:
SortMailRules:
1. Orderswithmorethan½paymentarecreditOKorders.2. Checkswillbeforwardedtoaccountingforimmediatedeposit.3. ComplaintswillbeforwardedtoCustomerService.
Giventhestateoftechnologytoday,youcanuseyoursmartphonetomakeavideoshowingthepeopleperformingtheprocess.ThekeyhereisthatyouhavemanyoptionsforcapturingandexpressingwhataFunctionalPrimitivedoesandtheseoptionsfarexceedthescopeofthispublication.EachofthepresentedexamplescontainthesameinformationabouttheSORTMAILprocess.AstheonewearingtheBAhat,youhavetopickthemodeofpresentationthatissuitablefortheprocessitdefinesandthatyouandyourtargetaudiencebothunderstand.
CapturingDataElements
Theothersideofadataflowdiagramisthedata.Recognizethateveryarrowonthediagramrepresentsdataflowingfromsomewheretosomewhereandeverydatastorerepresentsdataatrest.Atthelowestlevelofdetail,youneedtounderstandexactlywhatdataiscontainedwithineachdataflowandineachdatastore.
Veryoften,problemsinaprocessarecausedbymissing,incomplete,inaccurate,oruntimelydata.Tobeabletoisolatedataissuesandtodefinetherequirementsforhowafutureapplicationcanavoidthem,youneedtoknowthedataelements.Youcouldconsiderthistheequivalentofexplodingaprocess.Ifyouexplodeadatafloworadatastoretoitslowestlevelofdetail,youfindabunchofDataElements.
ADataElementisatomicdata,meaningapieceofdatathatonlyhasvalueasawhole.Forexample,thedataflowCreditOKOrdercontainsallofthedatadescribingtheorder(customernameandaddress,itemsordered,orderdate,etc.)andsomeindicatorthatthiscustomerhasgoodcredit.Toshowthedataonyourdataflowdiagram,youcanlistallofthedataelementsoneverydataflowandeverydatastore.Whereasthislevelofdetailisoverkillformostprojects,itmightbeveryvaluabletoexplodeoneortwodataflowsordatastoresdowntotheelementaryleveltouncoverhiddenproblemsorensureunderstandablerequirements.Youmightalsoconsiderhyperlinkingthedataflowordatastoretoaworddocumentlistingtherelevantdataelements.
Letuslookataconcreteexample.ThisistheOrderFormthatourexampleuses:
IfIignorethephysicallayoutandlookonlyattheindividualdataelementsontheform,Igetthislist:
OrderDateOrderNumberCustomerPO#CustomerIDCustomerNameShip-ToAddressBill-ToAddressItem#ItemDescriptionUnitPriceQuantityOrderedExtendedPriceDesiredShippingMethodTotalPrice
ThislistrepresentstheminimumdatacontentforeverydataflowonmydiagramthatcontainsthewordOrder(e.g.,Ordersw/$,Ordersw/o$,NewCustomerOrder,etc.).ItisalsothedatacontentforthedatastoreValidOrders.Ofcourse,thatisprimarilybecausethediagramrepresentsamanualprocessinvolvingphysicalorderformsbeingmovedfromoneprocesstoanother.Therewillbeadditional,flow-specificdataelements
associatedwiththestatetheorderisin(withpayment,withoutpayment,newcustomer,etc.)butthislistismystartingpoint.
WhatdoestheonewearingtheBAhatneedtocommunicateabouteachofthesedataelementstothesolutionproviderssotheycandotheirjob?Typically,theyneedtoknowwhattheelementcontains(itsdescription),wheredoesitcomefrom(itssource),whohastheauthoritytochangeit(itsowner),whatkindofdatadoesitcontain(itstype),howtovalidateitscontents(datarange,validationrules),etc.Collectively,thisdataabouteachdataelementiscalled‘Metadata’.DependingontheroleyouastheonewearingtheBAhathaveontheproject,capturingandcommunicatingtheMetadatamayormaynotfallintoyourareaofresponsibility.
Ifyoudohavetocapturethis,Irecommendcreatingasimplespreadsheetcontainingallrelevantmetadataabouteachdataelement,forexample:
Obviously,thecolumnsinthespreadsheetcanbedifferentbasedonyourorganization’sneedsandtheproject.Thekeytakeawayhereisthatsolutionprovidersneedtoknowatonofdetailsaboutthedatathatthesolutionwillmanipulate.WhethertheresponsibilityoftheonewearingtheBAhatoranotherrole(i.e.,theonewearingthedataanalysthat)doesthis,itshouldbebusinessdecisionsmadebytheappropriatedecisionmakerswithinthebusinesscommunityandnotlefttotheimaginationofthosetaskedwithdevelopingthesolutionoreventheonewearingtheBAhat.
HorizontalBalancingRevealsMissingDataElements
Ifyouinvestthetimetocreateadataflowdiagram(DFD),makesurethatyouaregettingthemostoutofit.Youcanusethediagramtoidentifypotentiallymissingdata,redundantdata,andpossibledataconflicts.Wewouldliketointroduceatechniquecalled‘HorizontalBalancing’orthe‘PreservationofData’law.Thetechniquecanbeveryusefulforidentifyingdatadiscrepancies,inconsistencies,andconflictswhicharethreemajorcontributorstoITprojectoverrunsandfailures.
BasedontherulesgoverningDFDs,aprocesshastotransformdata,meaningthedataitproduceshastobedifferentthanthedataitconsumes.Logicdictatesthatthedatacomingoutofaprocesscanonlycomefromtwopossiblesources:eitheritcomesdirectlyviaanincomingdataflowORtheprocesscreatesitusingthedataitreceives.
Adataflowcancomefromadatastore,anotherprocess,oranexternalentity.Processesneedalgorithmsorbusinessrulestocreatedata.Forexample,thesimpleprocessDetermineAgecontainsthealgorithmAge=CurrentYear(fromtoday’sdate)–BirthYear(fromtheEmployee’sDateofBirth).Algorithmsandbusinessrulesinturnneeddata(gettingtheBirthYearrequiresanEmployeeIDtoselecttheappropriateemployee)whichhastoeithercomeintotheprocessfromanincomingdatafloworitselfbecreatedbyadifferentalgorithmorbusinessrule.Intheend,youshouldaccountforeverydataelementtheprocesscreatesandeverydataelementitneedstocreatetheoutput.
Tosimplifyhorizontalbalancing,focusondatafromtheincomingdataflowthateachprocessneedstocreatetherelevantoutput.Forexample,thephysicalorderformissentfromoneprocesstothenextinourexample,buteachprocessonlyneedsspecificdataelements.Forexample,theVERIFYCREDITprocessonlyneedstheCustomerIDand/orCustomerNametoaccesstheCUSTOMERSdatastore.CustomerIDandCustomerNameareessential;alloftheotherdataelementsontheorderformareirrelevanttoaccessingthecustomerdata.
IwilldemonstratethisconceptusingtheVERIFYCREDITprocessfromourretailstoreorderentryexample.
Allthreeoutgoingdataflowshavetheword‘Orders’intheirnamebecausetheydealwithphysicalorderforms.
InmyanalysisoftheOrderFormshowninthelastchapter,Idiscovereditcontainsthedataelements:
OrderDateOrderNumberCustomerPO#CustomerIDCustomerNameShip-ToAddressBill-ToAddress
Item#ItemDescriptionUnitPriceQuantityOrderedExtendedPriceDesiredShippingMethodTotalPrice
FromthesampleordersPaul,anOrderEntryClerk,provided,Ialsonotethatsomehaveastamp‘AttachedPayment’withadollaramounthandwrittenbelowit.Somealsohavea‘CreditOK’stampandothershaveonestating‘CreditCheckRequested’.Inriflingthroughthosestamped‘CreditCheckRequested’,IalsofindseveralordersinwhichtheCustomerIDfieldisblank.
Iinitiatehorizontalbalancingstartingwiththe‘norm’ormostcommonflowcreatedbytheprocess.AccordingtoPaul,thatistheCreditOKOrdersdataflowgoingtotheVALIDATEITEMSprocess.WhenIaskPaultoidentifytheEssentialDataElementsonthatflow,hereplies,“TheonlyEssentialDataElementinthiscasewouldbetheCreditOKIndicatorontheorder.Itjustshowsthattheorderisapprovedforfurtherprocessing.”
“Iunderstand.ButIalsothinkyouwouldneedtoknowwhichorderthat‘CreditOKStamp’ison,wouldn’tyou?”
Paulreplies,“Thatmakessense.IguesswealsoneedtheOrderNumber,whichis
assignedwhenwesortthemail.Itisaddedtoeachorderbywhicheverofusissortingthemail.Itsimplyconsistsofthecurrentdateplusa4-digitrunningnumber.TheexampleIhaveherehasordernumber141103_1966writtenonitbywhoeversortedthemailonNovember3,2014.”
Basedonthatinformation,IaddOrder#,CreditOKIndicatorbeneaththelinelabeledCreditOKOrdersinparenthesistoindicatethesearedataelements.
“OK,thenextflowistheCreditNOKOrdersbeingsenttotheCREDITDEPARTMENT.Whatistheessentialinformationonthatflow?IassumetheOrderNumberandsomekindofastampindicatingthecreditisnotOK?”
Paul:“Thosewouldbetheoneswith‘CreditCheckRequested’stampedonthem.Thatindicatesitiseitheranewcustomerwhichweindicatebyleavingthe‘CustomerID’blankoranexistingcustomerwhoowesusfrompreviousorders.”
“Makessense.SoEssentialDatafortheCreditNOKOrdersdataflowwouldbethe‘OrderNumber’andthe‘CheckCreditRequestStamp’,right?DoestheCREDITDEPARTMENTneedanyotherinformationtodealwiththeseorders?”
“Sure,theyneedtoknowthe‘TotalPrice’ontheordersotheycandeterminewhethertheyshouldOKtheorderandsenditbacktouswiththe‘CreditOKStamp’onitornot.”
“WhatdotheydowithCreditNOKOrdersthatyousendthemthattheydonotapprove?”
“YouwouldhavetoasksomeoneintheCREDITDEPARTMENTthat.Ithinktheysend
themovertoCustomerServicetocontactthecustomersincetheyaretheonlyonesinthecompanywhoarealloweddirectcustomercontact.”
“Ifthatistrue,thatwouldbebetweentheCREDITDEPARTMENTandCUSTOMERSERVICE,bothofwhomareoutofscopeforourprojectsowewon’tworryaboutthoseorders.”IjotdownOrder#,CheckCreditRequestIndicator,TotalPricebelowtheCreditNOKOrderslabel.
“AndIguessthesameistrueforNewCustomerOrders,right?”
“No.Anorderisfromanewcustomerifwecan’tmatchthe‘CustomerName’and‘Bill-To’fromtheorderwithanycustomersinourCUSTOMERSfile.Actually,ifthecustomerprovidesa‘CustomerID’,welookforthatfirstandifwefinditinourfile,wecomparethe‘CustomerName’and‘Bill-ToAddress’fromthe‘Order’toourfile.Iftheymatch,thenwesimplylookatthecustomer’s‘CreditStatus’andputtherespectivestampontheorder.
“Ifthe‘CustomerID’ontheformisblank,wehavetosearchthealphabeticalcustomerlisttotrytofindthecustomer.Ifwehaveacustomerwithamatchingname,wecomparethe‘Bill-ToAddress’ontheformwiththeoneinourCUSTOMERSfile.Iftheymatch,wefillinthe‘CustomerID’onthe‘Order’andagain,addtherespective‘CreditStatusStamp’.Ifwecan’tfindthecustomereitherbythe‘CustomerID’orbythe‘CustomerName’,westampthe‘OrderCreditCheckRequested’andputitonthepilegoingtotheCREDITDEPARTMENT.”
IaddthedataelementsCustomerID,CustomerName,Bill-ToAddress,andCreditStatustothedataflowcomingfromtheCUSTOMERSdatastoreintotheVERIFYCREDITprocess.Inaddition,IaddtheCustomerName,Bill-ToAddress,CheckCreditRequestIndicator,andTotalPricebelowtheNewCustomerOrderslabelandask,“Doesthataccuratelyrepresentwhatyoujusttoldme?”
Paulreplies,“Ithinkso.Idon’tknowwhethertheCREDITDEPARTMENTneedsanythingelsefromusforaNewCustomerOrder,butwhatyouwrotedownmakessensetome.Iamnotsuretheydon’tneedtheShip-ToAddressforthecustomeraswell.Youmightwanttocheckwiththemtoconfirmthattheydonotneedanythingelse,though.”
“IwillcertainlyrunthisbythemtoseeifthisisallthedatatheyneedtoprocesseitheraNewCustomerOrderoronefromacustomerwithbadcredit.Fornow,wewillassumethattheDataElementsIlistedonthediagramaretheessentialDataElementsoneachflowcomingoutoftheVERIFYCREDITprocess.AsIexplainedearlier,eachofthesedataelementshastocomeintotheprocessononeoftheincomingdataflowsorbecreatedintheprocess.ComingbacktotheprimarydataflowCreditOKOrders,youtoldmethattheOrder#iscreatedintheSORTMAILprocess,right?”
“Right.That’sthenumberwehavetoaddtomakesurewecankeeptrackoftheorder.”
“Great.”IwriteOrder#beneaththedataflowlabelsOrdersw/o$andOriginalOrderandadd“Iassumethatthisistruewhethertheorderhadanypaymentattachedornot,correct?”Paulconfirmsmyassumption.
“Furthermore,Iunderstoodyouearliertoindicatethatyoualwaysgeta‘CustomerName’,and‘Bill-toAddress’fromtheorderandsometimesyoualsogeta‘CustomerID’.”AfterPaulconfirms,IaddthoseDataElementnamesbelowtheOrder#onboth,theOrdersw/o$andOriginalOrderdataflows.IalsonoticethattheTotalPriceisonorderformsoIadditasadataelementtotheOrdersw/o$andtheOriginalOrderdataflows.
Havingdealtwithalloutgoingandincomingflows,InowreviewtheresultswithPaul.“ItappearsthattheonlydataVERIFYCREDITcreatesistheCreditOKIndicatorortheCheckCreditRequestIndicator.BothofthemarecreatedbasedonthecontentsoftheCustomer’sCreditStatus,whichiscomingoutoftheCUSTOMERSFile.YoufindthecustomerbasedoneithertheCustomerIDorbothCustomerNameandBill-ToAddress.Bothofthemarecominginononeofthetwoorderdataflows.Isthatallcorrect?”
Paulagrees.
Questionsansweredinthischapter:
WhyshouldIdrawaDataFlowDiagram?
WhatdoesafullybalancedDFDlooklike?
WhatvaluedoesaDFDfragmentprovide?
ThePowerofDataFlowDiagrams
WhatDoestheDataFlowDiagramDoforYou?
FromtheperspectiveoftheonewearingtheBAhat,theactofcreatingadataflowdiagramisanawakening.Drawingthediagramforcesyoutoaskquestionsthatyoumightotherwiseoverlook.Itisalsoanawakeningformembersofthebusinesscommunitywhoseprocessyouaredepicting.Thepeopleinthetrenchesandthosemanagingthemquiteoftenhaveneverseenapictureoftheirprocessandapictureactivatespartsofthehumanbrainthatwordscannot.Asaresult,thephrase,“Isee”takesonawholedifferentmeaningwhenyouarepresentedwithapictureofyourprocess.Forthatreason,IrecommenddrawingaDFDjusttogeteveryoneinvolvedonthesamepage.
OnceyouhaveaDFD,explodingaprocessandbalancingthedatainputsandoutputsbetweenthelevelsoftenrevealsmissingdataflows.
Afterall,noonecanthinkofeverythingatonce.Ifthetoolfindsasinglemisseddataflow,itisprobablywellworththetimeittooktodrawthediagramandapplythetechnique.Thesameistrueofhorizontalbalancingtorevealmissingdataelements.IfweaskedITtoautomateaprocesswithamissingdataflow,wemostlikelywillendupwithanapplicationthatdoesnotmeetthebusinessneeds.
ITprofessionalsaregenerallyextremelygoodattheirjobandtheywillmostlikelyrecognizethattheyaremissingsomethingatsomepointinthedevelopmentprocess.Theproblemisthetimingofthediscoveryandtherelatedcostwhentheomissionis
discovered.Addingamissingprocesslateintheprojectisarelativelysimplestep,butmissingdataoftenaffectsamultitudeofprocesses,makingitoneofthemostexpensiveerrorsforITprojects.Thesimpleactofidentifyingdataelementsandensuringtheircompletenessallowsyoutorecognizeandresolvetheseissuesbeforeyouinvolvedevelopers.Inmyexperience,thatisoneofthemostpowerfulargumentsforspendingtimetodevelopandanalyzeadataflowdiagram.
AFullyBalancedDFD
Torecap,acompletelybalanced(levelled)dataflowdiagramstartsatthetopwithacontextdiagramconsistingofoneormoreprocessesthatareinscopeforyourprojectandallexternalentitieswithwhichthoseprocessesexchangedata.
EachofthoseLevel1processesexplodestoaLevel2dataflowdiagramdepictingthedetailedprocessesinsidetheLevel1processwithalldataflowsanddatastoresthatareinternaltotheexplodedprocess.EachprocessontheLevel2diagramwouldeitherexplodefurthertoaLevel3DFD(andfromLevel3toLevel4,etc.)orbedescribedindetailedprocessspecifications.EachdataflowandeachdatastoreonthelowestlevelDFDwouldexplodetoalistofthecontaineddataelements.
CreatingaDFDFragment
AlthoughbalancingacompletelylevelledDFDrevealsdatadiscrepanciesanddisconnects,itmaynotbenecessaryforyourproject.Manypeople(inparticularonprojectsfollowinganAgileapproachtodeliveringtechnology)onlyneedasmallfragmentofaDFDtounderstandtheinnerworkingsofaspecificprocess.ThetimerequiredtocreateacompletelybalanceddiagramisnotjustifiedifadeveloperonlyneedstoknowhowtheCREDITDEPARTMENTestablishesthecreditlimitforanewcustomer.Inthatcase,aDFDfragmentmightsuffice.
ThefollowingisanexampleofaDFDfragmentbasedonanexercisethatweuseinourinstructor-ledclasses.Totestyourunderstandingoftheconceptspresented,youmightwanttotakethisopportunitytodrawaDFDfragmentusingtheprojectScopeStatementandtheInterviewNotesthatfollowbeforepeekingatoursolution.
ScopeStatement:Thisprojectwillenhanceourweb-basedPolicyMaintenanceSystembyallowingpolicyholderstointeractdirectlywiththeirinsurancepoliciesorclaims.Thesystemwillsupportweb-basedpolicypaymentsandallowprospectstoapplyfortemporarycoveragependingunderwritingrateapproval.OncetheapplicationisreceivedbyUnderwriting,itwillfollowstandardUnderwritingprocedures.
InterviewNotes:Inthefuture,aprospectwillsubmithis/herapplicationviaourwebsite.Iftheprospectdoesnotyethaveapolicywithus,thesitewillrequestacreditcheckwebserviceandeitherrejectorapprovetheapplicationdirectly.Iftherequestisfromoneofourcurrentcustomersingoodstandingorapprovedviathecreditcheck,thesitewillprovideatemporaryproofofinsurancecertificatethattheprospectcanprintoutandusetoregisterhis/hervehicle.Inanycase,therequestwillthenbeforwardedtounderwritingfornormalprocessing,whichwilleitherleadtoacceptance(thenorm),modification(overridingawebrejection)orrejection(badrisk).Iftherequestisapproved,apolicywillbeissuedandsenttothecustomerviastandardmail.
Hereisanexampleofthediagramthatmanyofourstudentshaveproducedforthisscenario.
Notethatthisdataflowdiagramshowsabusinessprocessatsomeindeterminatelevelofdetail.Someoftheprocessesmightbeveryhigh-levelwhereasothersareveryspecific.Ifyouneedtounderstandhowanyoftheseprocessesworksindetail,youcould“explode”ittoseeitsinternalprocesses.
Summary
CreatingaDataFlowDiagramisanextremelyrevealingandrewardingstepintheanalysisofabusinessprocess.Ihaveneverusedanyothertoolthatisaseffectiveattriggeringanimateddiscussionsamongstthestakeholdersabouthowabusinessprocessworksandhowitcouldbeimproved.Obviously,creatingthediagramisjustthefirststep.Thediagramopensthedoortoaseriesofspecificbusinessanalysistechniquesthatwillhelpthebusinesscommunityrecognizehowtheiractionsimpactotherdownstreamprocesses.Youcanalsoidentifyproblemareas,timinganomalies,anderrorhandlingissuesthatcanleadtomissingrequirements.
Itisimportanttonotethatthediagramisasnapshotintime.Onceyoupresentthebusinesscommunitywiththisversatilevisualaid,theymayimmediatelystarttomakechanges.Becauseofthecumulativeeffectofthosechanges,youshouldneverassumethatthediagramyoucreatedafewmonthsorevenyearsagoisvalid.Ifyoureallyneedtounderstandthecurrentbusinessprocess,youarebestservedbystartingfromscratchaswedemonstrated.Theproblemyoufaceis,ofcourse,theeffortrequiredtoflushoutallofthedetailspresentedinthebalancingsection.Isitreallyworththetime?
Adataflowdiagramasatoolthatbenefitstheprojectorreducestheriskofpotentialprojectfailurecanbeworthitsweightingold.Werecommendagainstspendingprojectresourcesdevelopingonejustforthesakeofhavingapicture.
“Ithinkbydrawing,soI’lldrawordiagrameverythingfromapieceoffurnituretoastagegesture.Iunderstandthingsbestwhenthey’reingraphics,notwords.”-RobertWilson
TableofContents
Preface
AbouttheAuthors
TableofContents
IntroductiontoDataFlowDiagrams(DFDs)fortheBusiness
BusinessProcesses,DataFlows,andValueChains
WhyCreateaDataFlowDiagram?
ModelingtheFlowofMaterialandData
VisualizingProjectScope
HowtoIdentifyInternalProcessesonaDFD
GettingtotheNextLevel
MiningforProcesses
DrawingaDetailLevelDFD
DiscoveringMissingProcessesandData
DetailedProcessandDataSpecifications
OptionalProcessMini-Specs
CapturingDataElements
HorizontalBalancingRevealsMissingDataElements
ThePowerofDataFlowDiagrams
WhatDoestheDataFlowDiagramDoforYou?
AFullyBalancedDFD
CreatingaDFDFragment
Summary