Data Flow Diagramming by Example: Process Modeling...

Post on 14-Mar-2020

2 views 0 download

Transcript of Data Flow Diagramming by Example: Process Modeling...

DataFlowDiagrammingbyExample

ProcessModeling

Techniquesfor

RequirementsElicitation

ThomasHathawayAngelaHathaway

©2015byBA-Experts.

Allrightsreserved.Nopartofthispublicationmaybereproduced,storedinaretrievalsystem,or

transmittedinanyformorbyanymeans,electronic,

mechanical,photocopying,recording,orotherwise

withoutpriorpermissionofthecopyrightholder.

Thecontentsofthis

publicationareprovidedingoodfaithandneitherTheAuthorsnorThePublishercanbeheldresponsibleforanyerrorsoromissions

containedherein.Anypersonrelyingupontheinformationmustindependentlysatisfyhimselforherselfastothe

safetyoranyotherimplicationsofactinguponsuchinformationandnoliabilityshallbeacceptedeitherbyTheAuthororThe

Publisherintheeventofrelianceuponsuch

informationnorforanydamageorinjuryarisingfrom

anyinterpretationofitscontents.Thispublicationmaynotbeusedinany

processofriskassessment.

PrefaceThiseBookwasneithercreated“ForDummies®”nor“ForCompleteIdiots®”,butfornormalpeopleintherealworldtogivethemabasicunderstandingofbusinessanalysisconceptsandtechniques.Manypeopledobusinessanalysisalthoughit

isnotintheirjobdescription.WhetheryouaretheCEO,COO,Director,Manager,oronthefrontlines,youmaybeinvolvedindefininghowtechnologycanbenefityouandyourorganization.Whenyouareinthatawesomerole,youareatthattime“theonewearingtheBusinessAnalysis(BA)hat”.

Intoday’swiredworld,softwareapplicationsoften

takecenterstageinoptimizingworkflowandincreasingproductivity.Unfortunately,theprocessofdeliveringtherightsoftwaretotherightpeopleattherighttimeischallengingtosaytheleast.ThiseBookpresentsDataFlowDiagrams(DFDs)asaphenomenaltoolforvisualizingandanalyzingdependenciesandinteractionsamongstmanualandautomatedbusiness

processes.ItexplainswhataDFDis,whyyouneedone,andhowtocreateit.Youwilllearnthebenefitsofprocessvisualizationforthebusinesscommunity,fortheonewearingtheBAhat,forthosetaskedwithdevelopingthesolution,andultimatelyfortheentireorganization.YouwillalsodiscoverhowDFDsarepowerfultoolsforrecognizingandeliminatingtwoofthemajorproblems

thathauntITprojects,namelyScopeCreepandProjectOverrunscausedbylateprojectchangerequests.

AbouttheAuthorsAngelaandTomHathawayhaveauthoredanddeliveredhundredsoftrainingcoursesandpublicationstothousandsofbusinessanalystsaroundtheworld.Theyhavefacilitatednumerousrequirementsdiscovery

sessionsforinformationtechnologyprojectsunderavarietyofacronyms(JAD,ASAP,JADr,JRP,etc.).

Basedontheirpersonaljourneyandexperiencesreportedbytheirstudents,theyrecognizedhowmuchanyonecanbenefitfromabasicunderstandingofwhataDataFlowDiagramis,whattheyrepresent,whoneedsone,andhowtogetstarted

creatingone.

Angela’sandTom’smissionistoallowanyone,anywhereaccesstosimple,easy-to-learntechniquesbysharingtheirexperienceandexpertiseintheirtrainingseminars,blogposts,eBooks,videocourses,KnowledgeKnuggets™,andpublicpresentations.

AdditionalResourcesThecontentsofthiseBookarealsocontainedinourinstructor-ledtrainingwhichweofferonlineoratyoursite.Peruseourtrainingprogram.

TableofContents

Preface

AbouttheAuthors

TableofContents

IntroductiontoDataFlowDiagrams(DFDs)forthe

BusinessBusinessProcesses,DataFlows,andValueChainsWhyCreateaDataFlowDiagram?

ModelingtheFlowofMaterialandData

VisualizingProjectScope

HowtoIdentifyInternalProcessesonaDFD

GettingtotheNextLevelMiningforProcesses

DrawingaDetailLevelDFD

DiscoveringMissingProcessesandData

DetailedProcessandDataSpecificationsOptionalProcessMini-Specs

CapturingDataElementsHorizontalBalancingRevealsMissingDataElements

ThePowerofDataFlowDiagramsWhatDoestheDataFlowDiagramDoforYou?AFullyBalancedDFDCreatingaDFDFragment

Summary

IntroductiontoDataFlowDiagrams(DFDs)fortheBusiness

Questionsansweredinthischapter:

WhatisaDataFlowDiagram(DFD)?WhendoIneedone?

BusinessProcesses,DataFlows,andValueChains

Apicturereallyisworthathousandwords,especiallyintheworldofBusiness

AnalysisforITprojects.TrytodescribeworkflowsorbusinessprocessesinnaturallanguageandthechancesthatITwilldeliverthesolutionyouwantareverysmallindeed.Thechallengeiswhatpicturedoyouneedtodraw?

Thereareseveraltechniquesfordrawingprocessmodelsordiagramsatvariouslevelsofdetailandeachhasaspecificfocus.DataFlow

Diagrams(DFDs)representtheworkfloworstepswithinaprocesswithafocusontheflowandtransformationofdata.YoucancreateDFDsatthebusinesslevel(asinthisexample)representingbusinessprocessesandbusinessdataoratthesystemleveldepictingITapplications,databases,andfiles.Sincewearetalkingaboutbusinessanalysis,ourfocuswillbecreatingand

usingdataflowdiagramsatthebusinesslevel.

Everybusinessprocessisamore-or-lesscomplexsequenceofstepsthatchangessomethingcomingin

tocreatesomethingnew.Assuch,theprocessneedssomeformofinput,whichcouldbeinformationoranyotherresource.Bydefinition,adataflowdiagramisapictureofhowthedepictedprocessescreate,consume,transport,andstoredata.ADFDistherightchoiceforbusinessprocessmodelingifyouneedtounderstandthecreationanduseofdatawithintheindividualbusinessprocesses.

Thoseprocessescanbemanualorautomated;itdoesnotmatterasfarasthediagramisconcerned.

Processesuseinputtocreateoutput,whethertheoutputissomethingaltogetherneworsimplyanalteredversionof

theoriginalinput.Sincetheprocessaddssomemeasurablevaluetotheinput,weoftenrefertothe“valuechain”oftheorganization.

Fundamentally,anydiagramissimplyapicturewithconstraints.InthecaseoftheDFD,theconstraintsarewhichsymbolsyoucanuseandwhateachsymbolmeans.Therearereallyonlytwowidelyusedconventionsfor

drawingDFDsandthedifferencesareminimal.Bothallowonlyfourbasicsymbols.

Aroundedrectangle(oracircledependingonwhichconventionyoufollow)representsaprocessatsomelevelofdetail.Thenameoftheprocesstellsuswhattheprocessdoes(i.e.,whatitsprimaryfunctionis)incommonbusinessterms.

Sincefunctionsareactions,thenameconsistsofanactiveverb(whatisdone)andadirectobject(whatisitdoneto—e.g.,PROCESSCREDITCARD,SELLPRODUCT,CHECKITEMPRICE).

Asyoucanseefromthe

examples,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).Aspecialsymbol

consistingofasmallsquarewiththetopandbottomlinesextendingoutwardtotheright(orsimplytwoparallellines,againdependingonconvention)representsadatastore.

ADFDMakesScopeVisible

Asimplesquare(withor

withoutanoptionalshadow)representsanexternalentity.Intheworldofdataflowdiagramming,anexternalentityrepresentsaperson,organization,orapplicationthatisoutofscopefortheprojectfromtheperspectiveoftheDFD.Specifically,itimpliesthattherepresentedobjectisnotgoingtobeanalyzedorimpactedbyanyprojectusingthisdiagramalthoughdataflowstoand

fromtheexternalentityhavetobeanalyzed.

WhyCreateaDataFlowDiagram?

ADFDservesmultiplepurposes.Youmightcreateonetobeabletoanalyzethecurrentsituationwiththegoalofidentifyingroadblocksandimprovingefficiency.You

mightalsocreateonetopresentanddiscusstheprocesswithothers.YoucouldcreateaDFDofaproposedbusinessprocessbeforeyoudevelopdetailedprocessesandsupportingITapplicationstoidentifypotentialissuesbeforetheyoccur.Itsprincipleuseispresumablytoidentify,document,andcommunicatestakeholderrequirementsforanITproject.

Fundamentally,therearetwogoodreasonswhyyouneedadiagram.Firstoff,peoplecanpointtothediagramtodiscussaprocessorflowinsteadofusingwordstodescribewhattheymean.Thediagramrepresentsavisualmodeofcommunication,whichallstudiesshowismuchmoreeffectivethanmerewords.Pointingpowerprovesthatitworks.Secondly,studyingthe

diagramgeneratesquestionsthatmightindicatemissingstepsorexternalentities.Ifthediagrampiquesyourcuriosity,itiswellworthyourwhiletoinvestigatethesituationtofindananswer.

ModelingtheFlowofMaterialandData

Questionsansweredinthischapter:

WhatisaRigorousPhysicalProcessModel(RPPM)andwhydoIneedone?Whatsymbols

doesituse?HowcanIcreateanRPPMfrominterviewnotes?

ARigorousPhysicalProcessModelshowsthemovementofphysicalobjectsanddataamongsttheunitsinan

organization.Theideaistorepresenttherealworldascloselyaspossible.Giventhattheproposedinformationtechnology(IT)solutionwillneedtoknowsomethingaboutthephysicalobjects,thesewillhavetoberepresentedindataaswell.ThepowerofanRPPMliesinitssimplicity.Itonlyallowstwosymbols,acircletorepresentpeopleorplacesandanarrowrepresentingthe

movementofphysicalmaterialordata.ThissimplicitymakesiteasytoimplementanditisanidealprecursortoaDataFlowDiagram.

NowthatyouknowthesymbolsforcreatinganRPPM,Iwouldliketowalkyouthroughtheexerciseofanalyzingasituationtocreateoneusingastandardscenariofromourinstructor-ledclass.

FYI,thisisatranscriptofaninterviewwiththeManageroftheOrderEntryDepartment,Mary(theprojectsponsor).

InterviewNotes

Thecustomertriggersalltheactioninour

department.Wereceiveanorder(withorwithoutpayment),acomplaintorapayment(withorwithoutinvoicecopy)fromthecustomer.These

areseparatedandthefollowing

actionstakeplace:

Ifitisanorder,weverifyanexistingcustomer'screditstatusandthenweverifythattheitemnumbers

arevalidbycheckingourinventoryfile.Newcustomer'sordersaresentto

thecreditdepartmentandhelduntiltheyclearacredit

check.(Ifhalfpaymentormoreisincluded,that

orderistreatedasifitwereacreditorderwithgood

credit.)

Validordersareaccumulated

andgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteran

orderisfilled,thecustomeraddressisattached,thebestorrequested

shippingmethoddetermined,postageor

shippingcostscalculated,theorderisshipped,andthewarehouse

inventoryisreduced.Acopyof

thepackingslipgoestoaccountingwhereaninvoiceiscreatedandsenttothecustomer,andthecustomer'saccountupdated.Copiesoforderswithpaymentsand

paymentsgotoaccounting,wherethepaymentsareappliedtothecustomer's

account.Theiteminventoryis

officiallyupdatedinaccounting.

Customercomplaintsgodirectlyto

customerservice.Theyresearchthesituationandrespondtothecustomerassoonaspossible.Any

actiontakenbycustomerservice,whichaffectsaccountingorinventory,is

passedtothemforupdating.Possibleactionsareaneworder,adebit,ora

credit.Theselookexactlyliketheregularorderprocess.

MyapproachistoreadthetextandlookforpeopleandplacesthatIwanttorepresentinmyRPPM.WhenIfindanoun,Idecidewhetheritnamesapersonorplaceon

myprocessmodelorsimplynamesdataorphysicalmaterialIneedtotrack.I’lltrymybest,butdon’thavetobeperfectasthisismyfirstcutatit.

InterviewNotes

Thecustomertriggersallthe

actioninourdepartment.Wereceiveanorder(withorwithoutpayment),a

complaint,orapayment(withorwithoutinvoicecopy)fromthe

customer.Theseareseparatedandthefollowing

actionstakeplace:

Ifitisanorder,weverifyanexistingcustomer'screditstatusandthenweverifythat

theitemnumbersarevalidbycheckingourinventoryfile.Newcustomer'sordersaresentto

thecreditdepartmentandhelduntilthey

clearacreditcheck.(Ifhalf

paymentormoreisincluded,that

orderistreatedasifitwereacreditorderwithgood

credit.)

Validorders

areaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteran

orderisfilled,thecustomeraddressisattached,the

bestorrequestedshippingmethoddetermined,postageor

shippingcostscalculated,theorderisshipped,andthewarehouse

inventoryis

reduced.Acopyofthepackingslipgoestoaccountingwhereaninvoiceiscreatedandsenttothecustomer,andthecustomer'saccountupdated.Copiesoforders

withpaymentsandpaymentsgotoaccounting,wherethepaymentsareappliedtothecustomer's

account.Theiteminventoryis

officiallyupdated

inaccounting.

Customercomplaintsgodirectlyto

customerservice.Theyresearchthesituationandrespondtothecustomerassoon

aspossible.Anyactiontakenbycustomerservice,whichaffectsaccountingorinventory,is

passedtothemforupdating.Possibleactionsareanew

order,adebit,oracredit.Theselookexactlyliketheregularorderprocess.

Iusuallyusecolor-codingwhileIamdoingthis,soasyouseehere,IhighlightedfivenounsthatIthink

representpeopleorplaces(ourdepartment–akaORDERENTRY,CREDITDEPARTMENT,WAREHOUSE,ACCOUNTING,andCUSTOMERSERVICE)andtheCUSTOMER.Therearealotofothernounsinthenarrative,butIthinktheyareallsimplythingsImayneedtokeeptrackof,soIamgoingtoignorethemfornow.Atthistime,Iamonly

interestedinpeopleandplaces(inthiscase,organizationalunits)wherethedatamightcomefromorgoto.

Sincethetextindicatesthateverythingstartswiththecustomer,Istartmydiagrambydrawingacircleintheupperleft-handcornerofthepageandlabelingitCUSTOMER.Thenextpartmentionedinthenarrativeis

‘ourdepartment’,soIdrawanothercirclediagonallytotherightofandbelowtheCUSTOMERandnameitORDERENTRY.SinceIwilladdflowsbetweentheentities,Ineedtoleaveroomenoughforalabelandoneormorearrowsbetweenthetwocircles.Analyzingthenarrative,IseethatORDERENTRYreceivesOrders,Payments,andComplaintsfromtheCUSTOMER,soI

drawthearrowindicatingtheflowfromtheCUSTOMERtoORDERENTRYandlabelitrespectively.

Next,IreadseveralthingsthatORDERENTRYdoeswiththeincomingflow.Iam

goingtobeinterestedinthesespecificactionslater(onceIknowthescopeofthisproject)butforthetimebeing,Iamignoringthem.AllIamreallyinterestedinatthistimeistheflowofdatabetweendepartmentsandnotwhateachdepartmentdoeswithit.Becauseofthat,thenextflowIfindinthenarrativeisthatORDERENTRYsendsnewcustomerorderstotheCREDIT

DEPARTMENT.ThatcausesmetoaddacirclediagonallyaboveandtotherightoftheORDERENTRYsymbol,labellingitCREDITDEPARTMENT,addinganarrowfromORDERENTRYtotheCREDITDEPARTMENT,andlabellingthearrowNewCustomerOrder.Again,Ineedtomakesurethespacingbetweenthecirclesleavesroomforthearrowandits

label.

Readingon,InotethatvalidordersaretransmittedtotheWAREHOUSE,soIaddacirclelabelled“WAREHOUSE”belowtheonelabelledCREDIT

DEPARTMENTandaddaValidOrderarroworiginatingfromORDERENTRY.Asyoucanbynowsurmise,Iamtryingtodrawthediagramdiagonallyfromtheupperlefttothelowerrightofthepagefollowingtheflowoftheorderasexpressedinthenarrative.Themajorreasonforthisiscultural.Englishandmanyotherlanguagesarewrittenfromlefttorightstartingatthetopofthepage

andcontinuedowntothebottom.Ifmydiagramconformstothisconvention,itiseasierformostpeopletofollow.

Backtothenarrative,thenextflowofdatathatInoteistheWAREHOUSEshippingtheordertothecustomer.Torepresentthisflow,IcoulddrawanarrowfromtheWAREHOUSEaroundtheCREDITDEPARTMENTbacktotheCUSTOMERbutthatwouldviolatemyleft-to-right,top-to-bottomflow.SinceIconsiderthereadabilityofthediagramtobecritical,I’mgoingto

‘cheat’byaddingasecondcirclelabelledCUSTOMER/2(indicatingthatthissymbolisarepeat)diagonallybelowandtotherightoftheWAREHOUSEsymbolandinsertanarrowlabelledShipmentfromtheWAREHOUSEtotheCUSTOMER/2symbol.Thispositioningkeepsthedirectionalflowintact.

Next,IreadacopyofthePackingSlipgoesfromtheWAREHOUSEtoACCOUNTING,soIaddan

appropriatelylabelledcirclebelow,totheleftoftheWAREHOUSEsymbol,andaddtheflowCopyofPackingSlipfromtheWAREHOUSEtoACCOUNTING.ACCOUNTINGsendsaninvoicetothecustomerwhichIrepresentwithanarrowlabelledinvoicefromACCOUNTINGtoCUSTOMER/2,againmaintainingtheproperreadingdirectionofthe

diagram.WhenIread‘copiesoforderswithpaymentsandpaymentsgotoaccounting’,IhavetobacktracktothebeginningofthenarrativetodiscoverthatthesearecomingfromtheCUSTOMERtoORDERENTRY,sothissimplyaddsanewflowfromORDERENTRYtoACCOUNTINGwiththelabelCopyofOrderwithPayment,Payments.UpdatingtheItemInventory

isinternaltoACCOUNTING,soitdoesnotconcernmehere.

Thefinalparagraphisabitmoreconfusing.Firstoff,complaintsgodirectlytoCUSTOMERSERVICE.Again,byrereadingthefirstparagraph,IrecognizethatORDERENTRYreceivedthecomplaints,soIaddthearrowcomplaintsgoingfromORDERENTRYtoCUSTOMERSERVICE.CUSTOMERSERVICEsendsaResponsetothecustomerwhichisanarrow

betweenCUSTOMERSERVICEandCUSTOMER/2.InreadingtheactionsCUSTOMERSERVICEtakes,IconcludethatIalsoneedaflowlabeledDebitorCreditfromCUSTOMERSERVICEtoACCOUNTINGandaNewOrderflowfromCUSTOMERSERVICEbacktotheORDERENTRYdepartment(whichmakesthese“lookexactlyliketheregularorderprocess”as

expressedintheinterviewnotes).

Inowhaveapictureofthe

processdepictedintheinterviewnotesfromMary.Icanuseittopresenttheprocesstoanyaudience.Wecanfocusourdiscussionsabouttheprocessbypointingatthevariousunitsandflows.Asimple,clearpicturelikethisincreasescomprehensionandretention.OnceIhavegainedMary’sapprovalthatmydiagramisanaccuraterepresentationoftheprocessflow,wecaninitiatethe

processofmorphingthisRigorousPhysicalProcessModelintoalegitimateDataFlowDiagram.

VisualizingProjectScope

Questionsansweredinthischapter:

WhatisthedifferencebetweenaRigorousPhysicalProcessModelandaContext-LevelDFD?HowcanI

converttheRPPMtoalegitimateDFD?Whyisthisconversionnecessary?

Atthispoint,Ihaveagreatdiagramofthesituationdescribedinthenarrative.

TheproblemisthatitdoesnotfollowtherulesgoverningsymbolsonaDataFlowDiagram.AllIhavearecircleswithNOUNnamesbutaccordingtotherules,circlesrepresentPROCESSESonaDFDandPROCESSEShavetohaveaVERB/OBJECTname(dosomethingtosomething)!ThereasonforthisisthatIdrewtheRigorousPhysicalProcessModelwithoutknowing

whichofthesedepictedpeopleandplacesareinscopeformyprojectandwhicharenot.IneedtogetananswertothescopequestiontoconvertthisRigorousPhysicalProcessModeltoaContextDataFlowDiagram.

AstheonewearingtheBAhat,Icannotmakeadecisionregardingthescopeoftheproject.Thatdecision

ultimatelyhastobemadebytheprojectsponsor(thecommontitlefortheindividualintheorganizationwhoisfundingtheproject).MaryisourprojectsponsorandtheDepartmentManagerofOrderEntry.HerauthorityislimitedtoanythingtheOrderEntryDepartmentdoes.Basedonherauthority,Icannowconvertmyinitialdiagrambyfollowingafewsimplerules.Firstoff,since

ORDERENTRYisinscopeformyproject,IneedtochangethenounORDERENTRYtoaVERB/OBJECTtomakeitalegitimatefunction.WhatIlookforistheprimaryfunctionthatORDERENTRYperformsandMaryagreesthattheirprimaryfunctionistoENTERORDERS.

BychangingthenameofthecirclefromthedepartmentORDERENTRYtothefunctionENTERORDERS,I

notonlyhavealegitimatefunction,Ialsomadeacriticalpsychologicalshift.Astheprojectprogresses,IamgoingtoanalyzewhathappensinsidetheENTERORDERSprocesswhichwillleadtotherecognitionthatthereareseveralproblemswithhowtheunitcurrentlyprocessesorders(that’swhytheprojectwasinitiated).

IfIleavethenameofthe

objectORDERENTRY,Iwouldbeaccusingthedepartmentofmakingerrors,whichleadstopointingfingersandmakingaccusations.Thiscanresultinalotofpushbackfromtheemployeesinthedepartmentastheyfeelunjustlycriticized.Havingchangedthenamefromthedepartmenttothefunction,IcancriticallyanalyzetheENTERORDERSfunctionandfind

flawsinit.Inthiscase,thesameemployeeswilljoininenthusiasticallybecausetheproblemsarecausedbytheprocessanditisnottheirfault.Thisseeminglysimplestepcanliterallymakeorbreaktheproject.

Next,Iconvertallothercirclesonthediagramtosquarestoturnthemintolegitimateexternalentitiestogettoanalmostlegitimate

DFD.Theonlyremainingproblemisthatthediagramviolatesasimplebutpowerfulruleofdataflowdiagramming,namelythatflowsbetweentwoexternalentitiesarelogicallyoutofscope(sincebothendsoftheflowareoutofscope).

Tocomplywiththatrule,IeliminatetheDebitorCreditflowfromCUSTOMERSERVICEtoACCOUNTING

andtheflowResponsefromCUSTOMERSERVICEtoCUSTOMER/2.IcanfurtherignoretheShipmentflowfromtheWAREHOUSEtoCUSTOMER/2,theCopyofPackingSlipfromtheWAREHOUSEtoACCOUNTING,andtheInvoiceflowfromACCOUNTINGtoCUSTOMER/2.Aftereliminatingalloftheseout-of-scopeflows,Iseethatthe

CUSTOMER/2entityIhadaddedtomaintainthelogicalleft-to-right,top-downflowisunnecessarysinceitisnolongerinvolvedinanydataflows,soIcanalsodeleteit.

InowhaveaperfectlylegitimateContextLevelDataFlowDiagram(akaa“ContextDiagram”,a“Level

O(Zero)DFD”,orsometimesa“Level1DFD”)fortheproject.Notethateveryflowonthediagrameithergoesintoorcomesoutoftheoneprocessonthediagramthatisinscope,namelyENTERORDERS.ThatisoneofthehallmarksofagoodContextLevelDFD.Itsprimaryreasonforbeingistomanagethescopeoftheproject.Assumingmydiagramisanaccurate

representationofthesituation,anythingdoneduringtheENTERORDERSprocessisinscopeandsubjecttochange;everythingelseisoutofscopeforthisproject.Ifanyonestartstodiscussproblemswithselectingthebestshippingmethodforashipment(basedonthenarrativethisisdoneintheWAREHOUSE),Ipointtothediagramtoshowwhythatproblemisirrelevant

tothecurrentscopeoftheprojectandthereforeweshouldnotspendprojectresourcesdiscussingit.

WhenIlookatthisdiagram,Irecognizeadifferentproblem.IamsendingNewCustomerOrderstotheCREDITDEPARTMENTwhereaccordingtothenarrativetheyare‘helduntiltheyclearacreditcheck’.Thatbegsthequestion,‘What

happenstothemoncetheyhaveclearedthecreditcheck?’WhatdoestheCREDITDEPARTMENTdowiththem?WhenIposethatquestiontomyprojectsponsor,sheexplainsthattheCREDITDEPARTMENTsendsapprovedordersbacktoORDERENTRY,whichODERENTRYhastocontinueprocessingthesameasotherordersfromknowncustomerswithgoodcredit.

ThatfactcausesmetoaddtheflowCreditOKOrdersfromtheCREDITDEPARTMENTtotheENTERORDERSprocess.

Asasidenote,itisnotunusualtodiscovermissingflowssuchasthisonceyoustarttoworkwiththeContext

LevelDFD.Theearlierintheprojectthatyoucanidentifythem,thecheaperitistoincorporatethemintoyourprojectwork.Bytheway,ifyouidentifiedthisissuewhileyouwerecreatingtheoriginaldiagramandaddedthisflowatthattime,kudos,youareonestepaheadofme.

HowtoIdentifyInternalProcessesonaDFD

Questionsansweredinthischapter:

Whatdoes“explodingaprocess”mean?Whatisthebusinessvalueofdoingit?Whatprocesses

willthelowerleveldiagramcontain?

GettingtotheNextLevel

AsrevealingandusefulasaContextDiagrammaybe,itiscertainlylackingalotofdetail.InDataFlowDiagramminglingo,thedetailisrevealedby“exploding”or“levelling”complexprocesses(e.g.ORDER

GOODS)toidentifyinternalprocessesandflowsthatarenotvisibleatthehigherlevel.Byexplodingaprocess,youwillalsoidentifyinternaldatastores,meaningplaceswherethedatajustsitswithintheprocesswaitinguntilitisusedbyanotherprocess.DelvingintothislevelofdetailmayallowyoutodiscoveradditionalmissingflowssuchastheCreditOKOrdersflowwedealtwith

previously.

Eachoftheseinternalprocessescreatesand

consumesspecificdata.Ifyoudrawadataflowdiagramatthismoredetailedlevel,youuncoverinternaldataflowsanddatastoresthataremorespecificanddetailedaswell.Anyprocessatanylevelofdetailisapotentialcandidateforexploding.Theonlyfactortoconsideriswhetheryouunderstandtheprocesssufficientlytopredicthowchangewillaffectit.

Forexample,toanalyzehowtheENTERORDERSprocessworks,Ineeddetails.Torepresentit,IamgoingtolookinsidetheENTERORDERSprocessanddefinehowitcurrentlyworks.

MiningforProcesses

GiventhatallIhaveatthistimearemyinterviewnotesfromtheprojectsponsor,Istartbyanalyzingthemtofindtheselower-leveldetails.Specifically,Iamlookingforactionsthatrepresentlowerlevelprocessesperformed

withinENTERORDERS.Weexpressactionsasverbs,buttheverbshavetopassacoupleofothertestsbeforeIwillconsiderthemcandidatesforaprocessonmydetail-leveldiagram:

1. Verb-Object

Iwillonlyacceptverbsintheiractivevoice(e.g.,‘enterorders’isactivewhereas‘orders

areentered’ispassive).WhenIfindaverbinthepassivevoice,Iconvertittoactivevoicetoevaluateifitisalegitimateprocess.Specifically,Itrytogiveeachprospectaproperactive-verb-direct-objectnameasrecommendedfornamingprocessesonaDFD(e.g.,CheckInventory,Separate

Mail).

2. TransformingAction

Thestatedactionhastodosomethingthatwillultimatelyberepresentedintheformofdata,meaningittransformsincomingdataintooutgoingdata.Iftheactionaffectsphysicalmaterial(e.g.,‘Shipment’),the

applicationwillhavetoknowsomethingaboutthematerialandthatsomethingwillalsobedatainsomeformoranother.

3. InScope

TheactionhastobewithinthescopeoftheprocessIamanalyzing(inthiscase,EnterOrders).

OnlyiftheactionpassesallthreeruleswillIconsideritasapotentialinternalprocess.

TomakesurethatmylowerleveldiagramisanaccuratedepictionofhowtheENTERORDERSprocessreallyworkstoday,Iinvolvearepresentativefromthegroupwhoactuallydoesthework.ManagerssuchasMarytypicallydonotneedtoknowthelevelofdetailIneed.

Assumingtheywerepromotedfromtheranks,theyprobablyknowhowtheydidtheworkbackthenbuttheymaynotbeuptodateonexactlyhowtheworkisdonetoday.TogetatrulyaccurateandcurrentpictureoftheENTERORDERSprocess,IreviewthenarrativeandidentifytheinternalprocesseswithPaul,anOrderEntryClerk.SinceprocessesonaDFDareactions,wesimply

lookforverbsstatingorimplyingactionsandthenapplymythreerules.Hereisalistofthecandidatesweidentifyinouranalysisoftheinterviewnotes.

InterviewNotes

Thecustomertriggersallthe

actioninourdepartment.Wereceiveanorder(withorwithoutpayment),a

complaint,orapayment(withorwithoutinvoicecopy)fromthe

customer.Theseareseparatedandthefollowing

actionstakeplace:

Ifitisanorder,weverifyanexistingcustomer'screditstatusandthenweverifythat

theitemnumbersarevalidbycheckingourinventoryfile.Newcustomer'sordersaresentto

thecreditdepartmentandhelduntilthey

clearacreditcheck.(Ifhalf

paymentormoreisincluded,that

orderistreatedasifitwereacreditorderwithgood

credit.)

Validorders

areaccumulatedandgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteran

orderisfilled,...

Afterapplyingour

aforementionedrules,thefollowingpictureemerges:

Ananalysisoftheremaining

interviewnotesdoesnotrevealanyadditionalactionsthatareinscopeANDtransformdata.Asyoucansee,outoftheratherlengthyinterviewnotesfromMaryweactuallyidentifiedonlyfourinternalprocessesthatarepartoftheENTERORDERSprocess:

SORTMAIL

VERIFYCREDIT

VALIDATEITEMS

GROUPVALIDORDERS

ALevel2DataFlowDiagramwillshowhowthesefourinternalprocessestransformtheincomingflowstocreatealloutgoingflows.Whiledrawingthediagram,wemaydiscovermissingflowsand/ormissinginternalprocesses.Thatisnotabad

thing;itisoneofthemajorbenefitsofexplodingorlevelingaprocess.

DrawingaDetailLevelDFD

Questionsansweredinthischapter:

Whatisasimpleapproachfordrillingdownintoaprocess?WhydoitandwherecanIstart?HowcanI

showtheinternalprocessesandflowsthatproducetheresults?

LookingattheContextdiagram,the“Orders,Complaints,andPayments”dataflowfromthe

CUSTOMERiswhereitallstartsandlookingatourlistofpotentialinternalprocesses,SORTMAILappearstobethefirststepintheprocess.

Thecustomertriggersalltheactioninourdepartment.We

receiveanorder(withorwithoutpayment),a

complaint,orapayment(withorwithoutinvoicecopy)fromthecustomer.Theseareseparatedand

thefollowingactionstakeplace:

Therefore,IstartmydetaileddiagramontheleftsideofanewsheetofpaperwiththeOrders,Complaints,andPaymentsflowcomingfromtheleftintotheprocessSORTMAIL.Bytheway,dataflowdiagramstendtogrowwide

asopposedtohighsoIsuggestdrawingthediagramin‘Landscape’orientation.Withthatlayoutoption,Iamgoingtotrytosimplydrawthediagramhorizontallyacrossthemiddleofthepage,leavingspacebothaboveandbelowthesymbolsforadditionalinformationthatIsomehowalwaysneed.

NotethatIamexplodingaprocessENTERORDERS

fromahigherleveldiagramwhichclearlyshowstheOrders,Complaints,andPaymentsdataflowcomingfromtheexternalentityCUSTOMER.Technicallyspeaking,Idonothavetorepeattheexternalentitysymbolonthelowerleveldiagram—butIwillifitaddsclarity.

BasedonPaul’sexplanationofwhattheSORTMAIL

processentails,IaddthreeseparateflowsOrders,Complaints,Paymentsastheoutcomeoftheprocess.SincemyprimaryinterestistheOrders,thatisthedataflowgoingouttotherightoftheprocess.Theothertwosecondaryflowscomeoutofthelowerpartoftheprocesssymbol.

Basedonthenarrative,thenextstepintheprocessisVERIFYCREDITsoIaddaprocesswiththatnametothe

rightoftheSORTMAILprocesswiththeOrdersdataflowcomingintoitfromtheleft.

InterviewNotes

Ifitisanorder,weverifyanexistingcustomer'screditstatusand

thenweverifythattheitemnumbersarevalidbycheckingour

inventoryfile.Newcustomer'sordersaresenttothe

creditdepartmentandhelduntilthey

clearacreditcheck.(Ifhalf

paymentormoreisincluded,that

orderistreatedasifitwereacreditorderwithgood

credit.)

Theverb‘Verify’onaprocessmodelalwaysimpliestwoinputs.Ineedsomethingtoverify(inthiscasethecustomerinfofromtheOrder)andsomethingtoverifyitagainst.ThenarrativedoesnotstatewhatthatisbutPaulexplainstomethatheverifiesacustomer’screditstatusbycheckingtheCUSTOMERSdatastore.

Thisrevelationcausesmeto

addthedatastoreCUSTOMERSabovetheVERIFYCREDITprocessandthedataflowCustomerCreditStatusfromCUSTOMERStoVERIFYCREDIT.DrawingthisforcesmetoaskPaulwhathappensifthecustomerisnotintheCUSTOMERSdatastore?“Well,thatwouldmeanitisanewcustomerinwhichcasewesendtheorderovertotheCREDITDEPARTMENTfor

acreditcheck,”Paulreplies.

IrepresentthisknowledgebyaddingadataflowlabeledNewCustomerOrdercomingoutofthebottomoftheVERIFYCREDITprocess.SincetheflowwiththatnameisshownontheContextDiagramgoingfromENTERORDERStotheCREDITDEPARTMENT,IdonothavetodrawtheexternalentityCREDIT

DEPARTMENTonmydetaileddiagram(butIwillifitaddsclarity).

Customerswithgoodcreditgotothenextprocess,whichournarrativeindicatesistheVALIDATEITEMSprocesssoIaddCreditOKOrderscomingoutoftheright-handsideoftheVERIFYCREDITprocessgoingintotheleftsideofthenewVALIDATEITEMSprocess.

InterviewNotes

Ifitisanorder,weverifyanexistingcustomer'screditstatusandthenweverifythattheitemnumbersarevalidbycheckingour

inventoryfile.New

customer'sordersaresenttothe

creditdepartmentandhelduntiltheyclearacreditcheck.(Ifhalf

paymentormoreisincluded,that

orderistreatedas

ifitwereacreditorderwithgood

credit.)

Thatbegsthequestion,“Whathappenstocustomerswithbadcredit?”whichPaulexplainsarealsosenttotheCREDITDEPARTMENT.ThisaddstheflowCreditNOKOrdersdrawnparallel

totheNewCustomerOrdersflowbelowtheprocess.SincebothdataflowsaregoingtotheCREDITDEPARTMENT,Iaddthatexternalentitytothediagramtomakeitvisibleatthislevel.

Havingdonethat,IreferbacktothecontextdiagramandseetheCreditOKOrdersdataflowcomingfromthe

CREDITDEPARTMENTonceanewcustomerhasclearedacreditcheck.IaskPaulandheexplainsthattheseordersgodirectlyintotheVALIDATEITEMSprocessthesameastheCreditOKOrderscomingfromourinternalVERIFYCREDITprocess.Icansimplifymydiagramthenbymergingthetwoincomingflowsandremovingthenamefromthedataflowfromthe

CREDITDEPARTMENT.Iliketokeepthediagramas‘clean’aspossibleastoomuchclutterconfusespeople.Iftwoflowsareidentical,Iwouldliketohavethenameofthedataflowonthediagramwherethetwobecomeone.

Accordingtothenarrative,theVALIDATEITEMSprocessneedsaccesstoanINVENTORYfile,soweadd

thedatastoresymbolwiththatname.WhenIaskPaulwhattheyneedfromtheINVENTORYfiletoverifytheitemnumbers,herepliesItemNumbersandDescriptions,soIaddthatflowfromINVENTORYtoVALIDATEITEMS.

Theaction‘validate’isjustlike‘verify’inthattherewillalwaysbetwopossibleoutcomes,agoodandabad.

OrdersonwhichallitemnumbersarevalidarecalledValidOrdersandtheseareaccumulated—whichisnotalegitimateinternalprocessbutimpliesadatastore.IaddthedataflowValidOrdersgoingouttherightsideofVALIDATEITEMSintoanewdatastorewiththesamename.

AnotherconventionofDFD’sstatesthatifthedataflow

goingintoadatastorehasthesamenameasthedatastoreitself,Idonothavetonamethedataflowasitisself-evident.RemovingthenamefromtheflowallowsmetoshortenthearrowandmovethedatastoreVALIDORDERSclosertoVALIDATEITEMS,whichfreesupspaceforonemoreprocess.

First,however,Ihavetoask

PaulwhathappensifthereisamismatchbetweenanitemnumberanddescriptionontheorderandtheitemnumberanddescriptionontheINVENTORYfile.HerepliesthatwouldmakeitanInvalidOrderwhichtheysendtoCUSTOMERSERVICEsotheycancontactthecustomertoclarifyexactlywhatthecustomerintendedtoorder.Sincethisrevelationisnewtome,Iaddtheexternal

CUSTOMERSERVICEbelowtheVALIDATEITEMSprocessastherecipientoftheComplaintsflowandaddthedataflowInvalidOrderscomingfromVALIDATEITEMStoCUSTOMERSERVICE.

AsalwayswhenIdiscoveranewflowtoanexternal,Ineedtoaskthefollow-onquestion,“Doyouget

anythingback?”

“Sure,wegetaValidOrderbackfromCUSTOMERSERVICE,”Paulreplies.

“AndwhatdoyoudowiththatValidOrder?”

“ItgoesdirectlyintotheVALIDORDERSpilejustlikethoseordersthatpassedtheVALIDATEITEMtest.”

ThisstatementaddstheflowfromCUSTOMERSERVICEtothedatastoreVALIDORDERS.Again,sincethedataflowandthedatastorehavethesamename,Idonotputthenameonthedataflow.

ThefinalinternalprocessonourlistofcandidatesisGROUPORDERSandthenarrativeconfirmsthatvalid

ordersare‘groupedintoshippingzones’,soIaddaprocessGROUPORDERStothediagramandaddadataflowcomingfromtheVALIDORDERSdatastore.

InterviewNotes

Validordersareaccumulated

andgroupedintoshippingzonesandtransmittedtothewarehousetobefilled.Afteran

orderisfilled,thecustomeraddressisattached,thebestorrequested

shippingmethoddetermined,postageor

shippingcostscalculated,theorderisshipped,andthe...

MydiscussionwithPaul

revealsthatSHIPPINGZONESisadatastore,whichIaddabovetheprocessGROUPORDERSandconnectthetwowithadataflowdowntotheprocess.

Thephrase‘transmittedtothewarehouse’representsaflowfromtheGROUPORDERSprocesstotheWAREHOUSE.

InterviewNotes

Validordersareaccumulatedandgroupedinto

shippingzonesandtransmittedtothewarehousetobefilled.Afteran

orderisfilled,thecustomeraddressisattached,thebestorrequestedshippingmethod

determined,postageor

shippingcostscalculated,theorderisshipped,andthe...

Logically,wenamethedataflowGroupsofValidOrderstoindicatethatboththe

validationandgroupingprocessesarecomplete.Asperconvention,IcaneitherputtheWAREHOUSEentityonthediagramorleaveitoff,asitisobviousonthecontextdiagram.

ThenextsentencesintheinterviewnotesfromMarydescribewhattheWAREHOUSEthendoeswiththeorder.TheWAREHOUSEmightbeofinterestifIdecidetocreateadataflowdiagramoftheorderfulfillmentprocess,butinthatcase,IwouldreallyhavetotalktosomeoneintheWAREHOUSEtomakesureIunderstandthatprocess.SincetheWAREHOUSEis

anexternalentity,Idonothavetoworryaboutthatforthisproject.

Atthispoint,wehaveusedalloftheinternalprocessesweidentifiedinourinitialanalysisoftheinterviewnotes.Lookingatthediagram,Inoticethateveryflowleavingoneoftheinternalprocessesgoestoanexternalentityatthislevelwiththeexceptionofthe

Paymentsflow,soIaddACCOUNTINGtothediagramtomakeitconsistent.Voila,wenowhaveafirstcutdataflowdiagramofhowtheENTERORDERSprocessworks.Theonlyquestionis,howcanweconfirmthatitiscomplete?

DiscoveringMissingProcessesandData

Questionsansweredinthischapter:

WhatdoesbalancingaDataFlowDiagrammean?Whatisthebusinessvalueofbalancing?Whatisthe

mostefficientapproachtobalancingaDFD?

Toconfirmthatitisindeedcorrectandcomplete,thenextstepisto‘balance’thetwodiagrams.Whatdoesthatmean?

ThereareactuallytwostepstobalancetheindividuallevelsofDFDs.Thefirststepisverysimpleinthatyouarecomparingflowsenteringandleavingthedetailleveldiagramwiththehigherleveldiagram.Todothat,Ineedtobeabletoviewbothdiagramsatthesametime.

Inourexample,weexplodedtheENTERORDERSprocessfromthecontextdiagram.IfInowcomparetheexplodedversionwiththecontextversion,logicdictatesthatallflowsgoingintoorcomingoutoftheENTERORDERS

processonthecontextdiagramhavetoshowupontheexplodedversiongoingintoorcomingfromoneofthemoredetailedprocessesatthatlevelandviceversa.

Ifinditsimplesttobalancestartingattheupperlevelandcomparingflowsclockwisefromthatdiagramtomakesuretheyallappearonthelowerlevel.IchecktheflowsoffonbothdiagramsasIgo

tohaveavisibletrailandensurethatIamnotmissinganything.Lookingatthecontextdiagram,IseeOrders,Payments,ComplaintscomingfromcustomerintoENTERORDERS.IseethesameflowonthedetailedviewcomingfromCUSTOMERintoSORTMAIL.Theseflowsarethesame;therefore,Iputacheckmarkonthemoneachdiagram.

ContinuingclockwisearoundENTERORDERSontheContextLeveldiagram,IseeaNewCustomerOrdergoingtotheCREDIT

DEPARTMENT.Iseethesameflowinthesamedirectiononthelowerleveldiagram,soIcheckthoseoff.IalsoseematchingCreditOKOrderscomingbackfromtheCREDITDEPARTMENTandcancheckthemoffaswell.

NextIseeValidOrdersgoingfromENTERORDERStotheWAREHOUSE.Onthedetaileddiagram,IseeGroupsofValidOrdersgoingtotheWAREHOUSE.AfterconfirmingwithPaulthatthatistheonlydataflowtothewarehouse,Iwouldliketoremovethediscrepancytoavoidmisinterpretation.Sincethedetailedlevelismorespecific,Ichangethecontext

diagramtoreadGroupsofValidOrdersandcheckbothflowsoff.

Onthecontextdiagram,thenextflowoutofENTER

ORDERSistheCopyofOrderwithPayment,PaymentsbeingsenttoACCOUNTING.OnthedetaillevelIseePaymentsgoingfromSORTMAILtoACCOUNTING,soIcancheckoffthatpartoftheflow,butwhatabouttheotherhalf?Itappearsthatwemissedsomething.

IaskPaulwheretheCopyofOrderwithPaymentcomesfromandheexplainsthatACCOUNTINGrequestedacopyofanyorderthathasanattachedpayment.Asaresult,

whiletheysortthemail,theyseparateorderswithpaymentfromorderswithoutpayment.Oncetheyaredonesorting,theygothroughthestackwithattachedpayments,removeattachedchecksfromorders,makeaphysicalcopyofthatorder,attachthechecktothecopy,andputthecopyoftheorderwiththeattachedcheckonthestackofpaymentsdestinedforACCOUNTING.Ifthe

attachedpaymentisatleasthalfofthetotalorderprice,theoriginalorderisstamped“CreditOK”andsentdirectlytotheVALIDATEITEMSprocess,bypassingtheVERIFYCREDITprocess.

Thisadditionalinformationcreatesaproblem.Obviously,wemissedthislittlenuanceinouroriginalanalysis,sowehavenochoicebuttocorrectthelowerleveldiagramto

reflectthenewlydiscoveredfacts.WeaddaprocessCOPYORDERSw/$betweenSORTMAILandACCOUNTING.WeaddaflowOrdersw/$fromSORTMAILtoCOPYORDERSw/$andthenaddtheoutgoingflowsCopiedOrdersw/$toACCOUNTING,OriginalOrdertoVERIFYCREDIT,andCreditOKORDERSflowtotheVALIDATEITEMSprocess.Ihavetochangethe

OrderflowbetweenSORTMAILandVERIFYCREDITtoreadOrdersw/o$.Inaddition,IchangethecontextdiagramflowCopyofOrderwithPayment,PaymentstoreadCopiedOrdersW/$,Paymentsandcheckmatchingflowsoffonbothdiagrams.

Thatisagreatexampleofhowexplodingandlevelingadataflowdiagramcanidentifyamissingprocess.

Backtothecontextdiagram,IseeaNewOrdercomingin

fromCUSTOMERSERVICE.Onthedetailview,IhaveaValidOrderandaCreditOKOrderbothcomingfromCUSTOMERSERVICE.WhichistheNewOrder?PaulexplainsthattheNewOrderisonethatCUSTOMERSERVICEcreatesinresponsetoacomplaint.ItisconsideredaCreditOKOrderbytheOrderEntryDepartmentandtheyjustchecktheitem

numbers,soIchangetheNewOrderflowonthecontextdiagramtoreadCreditOKOrderandmarkthosetwoflowsoff.Note,IcanonlymarktheCreditOKOrderfromCUSTOMERSERVICEoffonthedetaileddiagramalthoughIhavethreeotherflowsonthatdiagramthatareallnamedCreditOKOrders.IalsomarkthematchingflowsComplaintsgoingfromENTERORDERSto

CUSTOMERSERVICEonbothdiagrams.

Havingcompletedthatstep,IamsatisfiedthatallflowsthatareonthecontextdiagraminvolvingENTERORDERS

aretakencareof.Whatabouttheopposite,haveIcheckedoffalloftheflowscomingintoorleavingthedetaileddiagram?HereIamonlyinterestedinflowsthatarebetweenthedetailedprocessesandexternalentitiesandcanignoretheinternalflowsbetweenprocesses.

StartingwiththedataflowOrders,Payments,ComplaintscomingfromtheCUSTOMER,Iproceedclockwisearoundthelower-leveldiagramtoseeifthere

areanyunmatchedflows.InoteanInvalidItemsdataflowgoingtoCUSTOMERSERVICEthathasnomatchatthecontextlevel.ConfirmingwithPaulthatthedetailedviewiscorrect,IsimplyhavetoaddthatflowtothecontextdiagramflowingfromORDERENTRYtoCUSTOMERSERVICE.Icanthenmarkbothflowsasmatching.

Continuing,IdiscoverthatthedetaileddiagramalsoshowsCUSTOMERSERVICEsendingValidOrdersdirectlyintotheinternaldatastorewiththat

name.Onthecontextleveldiagram,theyonlysendCreditOKOrders.CheckingwithPaul,IdiscoverthatValidOrdersfromCustomerServicearethecorrectedInvalidOrderstheyreceivedfromVALIDATEITEMS.Asaresult,IaddaseparateflowValidOrdersfromCUSTOMERSERVICEtoENTERORDERSonthehigherleveldiagram.

Finally,IfindaCreditNOKOrdergoingtotheCREDITDEPARTMENTonthelowerlevelthatisalsounmatched.Again,sincetheflowiscorrect,Isimplyaddittothecontextdiagramandmarkitoffonbothdiagrams.

Inowhaveawonderfullybalancedsetoftwodiagrams,oneshowingthecontextoftheprojectandtheseconddetailingtheENTERORDERSprocess.Obviously,

ifmyprojecthadincludedtheWAREHOUSEorCREDITDEPARTMENT,Iwouldrepeattheprocessforeachrespectivelyandwouldprobablyidentifyadditionaldisconnectsthere.Giventhescopeofthisproject,Icouldbedoneatthistime.IfIfeelthatallprojectstakeholdersunderstandeveryprocessonmylowerleveldiagramatthelevelofdetailtheyneedtomaketheircontributions,I

wouldconsiderthediagrammingstepcomplete.Otherwise,thereisstillworktobedone.

DetailedProcessandDataSpecifications

Questionsansweredinthischapter:

Whatbusinessvaluedodetailedprocessspecificationsoffer?HowcanIexpressdetailed

specificationsforprocessesanddata?Whatis“metadata”andwhydoyouneedit?

OptionalProcessMini-Specs

Ifwefeelthataprocessonthedetaildiagram,e.g.,theVERIFYCREDITprocess,isstilltoovagueandweneedmoredetail,wecouldexplodethatprocessfollowingthe

stepsIjustoutlined.Indataflowdiagramminglanguage,anyprocessthatyoudonotexplodetoalowerlevelofdetailiscalleda‘FunctionalPrimitive’.FunctionalPrimitivesarenotgoodcandidatesforfurtherexplosionbecauseanalyzingthedataflowswithinthemwouldrevealnothingofvalue.

Nonetheless,youmayneedtodescribewhathappensinsideaFunctionalPrimitiveusingadifferenttooltoenableathoroughanalysisorto

informthedownstreamdeveloperswhattheprocessreallydoes.AdescriptionofaFunctionalPrimitiveiscalleda‘Mini-Spec’ora‘ProcessSpecification’.YouhaveawiderangeofpossibletoolsfordocumentingtheseSpecifications.

Youcoulduseplain,simpleEnglishbywritingabriefdescriptionofhowweSORTMAIL.Inourexample,I

couldwrite:

Themailarrivesbetween8amand10amMondaythroughFriday.TheMailClerkopenseachenvelopeandseparatesthecontentsintofourstacks:OrderswithPayments,OrderswithoutPayments,Payments,andComplaints.Oncethatiscomplete,theMailClerkprocessesthestackofOrderswith

Payments.

Foreachorder,hecarefullyseparatesthecheckfromtheorderwithoutdamagingeither,makesacopyoftheorder,staplesthechecktothecopy,andaddsthecopywithcheckattachedtothestackofPaymentsdestinedforACCOUNTING.Iftheamountofpaymentexceeds50%ofthetotalprice,hestampstheorder“Credit

OK”andputsitonastacklabeledPrepaidOrders;otherwise,heplacestheoriginalorderontheOrderswithoutPaymentstacks.

OncehehasprocessedallOrderswithPayment,theMailClerkdistributesthestackstotheappropriatedepartment:

OriginalOrdersstay

intheOrderEntryDepartmentPaymentsandCopiesofOrderswithPaymentgottoAccountingComplaintsgotoCustomerService

IfyouandyourtargetaudiencearecomfortablewithconceptssuchasPseudoCodeorStructuredEnglish,

youcouldalsowritethespecificationthusly:

Iftheprocessisprimarilyadecision-makingprocessand

yourtargetaudienceiscomfortablewiththem,youcanalsouseadecisiontable(alsocalled‘TruthTables’).Tocreateadecisiontable,openaspreadsheet,andwritedowneachpotentialactionasacolumnheaderstartingwiththesecondcolumn.Ourcolumnheadersforthisexamplewillbe:

Iftheprocessinvolvesalotoflogicalbranching,youmightconsideranActivityDiagram,anEvent-ResponseDiagram,aSystemFlowChart,oranyothertoolsuitedfordepictingconditional

sequencesofactions.

IftheFunctionalPrimitiveisalreadyautomated,considerreferencingexistingdocumentationfromthatapplication.Ifitisnotautomated,checkforaproceduremanualdescribinghowtodoit.

Often,processesarecontrolledbybusinessrules.Youmightconsidersimply

listingtherelevantbusinessrulesasprocessspecifications:

SortMailRules:

1. Orderswithmorethan½paymentarecreditOKorders.

2. Checkswillbeforwardedtoaccountingforimmediatedeposit.

3. Complaintswillbe

forwardedtoCustomerService.

Giventhestateoftechnologytoday,youcanuseyoursmartphonetomakeavideoshowingthepeopleperformingtheprocess.ThekeyhereisthatyouhavemanyoptionsforcapturingandexpressingwhataFunctionalPrimitivedoesandtheseoptionsfarexceedthescopeofthispublication.

EachofthepresentedexamplescontainthesameinformationabouttheSORTMAILprocess.AstheonewearingtheBAhat,youhavetopickthemodeofpresentationthatissuitablefortheprocessitdefinesandthatyouandyourtargetaudiencebothunderstand.

CapturingDataElements

Theothersideofadataflowdiagramisthedata.Recognizethateveryarrowonthediagramrepresentsdataflowingfromsomewheretosomewhereandeverydatastorerepresentsdataatrest.Atthelowestlevelofdetail,

youneedtounderstandexactlywhatdataiscontainedwithineachdataflowandineachdatastore.

Veryoften,problemsina

processarecausedbymissing,incomplete,inaccurate,oruntimelydata.Tobeabletoisolatedataissuesandtodefinetherequirementsforhowafutureapplicationcanavoidthem,youneedtoknowthedataelements.Youcouldconsiderthistheequivalentofexplodingaprocess.Ifyouexplodeadatafloworadatastoretoitslowestlevelofdetail,youfindabunchof

DataElements.

ADataElementisatomicdata,meaningapieceofdatathatonlyhasvalueasawhole.Forexample,thedataflowCreditOKOrdercontainsallofthedatadescribingtheorder(customernameandaddress,itemsordered,orderdate,etc.)andsomeindicatorthatthiscustomerhasgoodcredit.Toshowthedataonyour

dataflowdiagram,youcanlistallofthedataelementsoneverydataflowandeverydatastore.Whereasthislevelofdetailisoverkillformostprojects,itmightbeveryvaluabletoexplodeoneortwodataflowsordatastoresdowntotheelementaryleveltouncoverhiddenproblemsorensureunderstandablerequirements.Youmightalsoconsiderhyperlinkingthedataflowordatastoretoa

worddocumentlistingtherelevantdataelements.

Letuslookataconcreteexample.ThisistheOrderFormthatourexampleuses:

IfIignorethephysicallayoutandlookonlyattheindividualdataelementsontheform,Igetthislist:

OrderDateOrderNumberCustomerPO#CustomerIDCustomerNameShip-ToAddressBill-ToAddressItem#ItemDescriptionUnitPriceQuantityOrderedExtendedPriceDesiredShippingMethodTotalPrice

ThislistrepresentstheminimumdatacontentforeverydataflowonmydiagramthatcontainsthewordOrder(e.g.,Ordersw/$,Ordersw/o$,NewCustomerOrder,etc.).ItisalsothedatacontentforthedatastoreValidOrders.Ofcourse,thatisprimarilybecausethediagramrepresentsamanualprocessinvolvingphysicalorderformsbeingmovedfromoneprocesstoanother.

Therewillbeadditional,flow-specificdataelementsassociatedwiththestatetheorderisin(withpayment,withoutpayment,newcustomer,etc.)butthislistismystartingpoint.

WhatdoestheonewearingtheBAhatneedtocommunicateabouteachofthesedataelementstothesolutionproviderssotheycandotheirjob?Typically,they

needtoknowwhattheelementcontains(itsdescription),wheredoesitcomefrom(itssource),whohastheauthoritytochangeit(itsowner),whatkindofdatadoesitcontain(itstype),howtovalidateitscontents(datarange,validationrules),etc.Collectively,thisdataabouteachdataelementiscalled‘Metadata’.DependingontheroleyouastheonewearingtheBAhathaveonthe

project,capturingandcommunicatingtheMetadatamayormaynotfallintoyourareaofresponsibility.

Ifyoudohavetocapturethis,Irecommendcreatingasimplespreadsheetcontainingallrelevantmetadataabouteachdataelement,forexample:

Obviously,thecolumnsinthespreadsheetcanbedifferentbasedonyourorganization’sneedsandtheproject.Thekeytakeawayhereisthatsolutionprovidersneedto

knowatonofdetailsaboutthedatathatthesolutionwillmanipulate.WhethertheresponsibilityoftheonewearingtheBAhatoranotherrole(i.e.,theonewearingthedataanalysthat)doesthis,itshouldbebusinessdecisionsmadebytheappropriatedecisionmakerswithinthebusinesscommunityandnotlefttotheimaginationofthosetaskedwithdevelopingthesolution

oreventheonewearingtheBAhat.

HorizontalBalancingRevealsMissingDataElements

Ifyouinvestthetimetocreateadataflowdiagram(DFD),makesurethatyouaregettingthemostoutofit.

Youcanusethediagramtoidentifypotentiallymissingdata,redundantdata,andpossibledataconflicts.Wewouldliketointroduceatechniquecalled‘HorizontalBalancing’orthe‘PreservationofData’law.Thetechniquecanbeveryusefulforidentifyingdatadiscrepancies,inconsistencies,andconflictswhicharethreemajorcontributorstoITproject

overrunsandfailures.

BasedontherulesgoverningDFDs,aprocesshastotransformdata,meaningthedataitproduceshastobedifferentthanthedataitconsumes.Logicdictatesthatthedatacomingoutofaprocesscanonlycomefromtwopossiblesources:eitheritcomesdirectlyviaanincomingdataflowORtheprocesscreatesitusingthe

dataitreceives.

Adataflowcancomefromadatastore,anotherprocess,oranexternalentity.Processesneedalgorithmsorbusinessrulestocreatedata.Forexample,thesimpleprocessDetermineAgecontainsthealgorithmAge=CurrentYear(fromtoday’sdate)–BirthYear(fromtheEmployee’sDateofBirth).Algorithmsandbusinessrules

inturnneeddata(gettingtheBirthYearrequiresanEmployeeIDtoselecttheappropriateemployee)whichhastoeithercomeintotheprocessfromanincomingdatafloworitselfbecreatedbyadifferentalgorithmorbusinessrule.Intheend,youshouldaccountforeverydataelementtheprocesscreatesandeverydataelementitneedstocreatetheoutput.

Tosimplifyhorizontalbalancing,focusondatafromtheincomingdataflowthateachprocessneedstocreate

therelevantoutput.Forexample,thephysicalorderformissentfromoneprocesstothenextinourexample,buteachprocessonlyneedsspecificdataelements.Forexample,theVERIFYCREDITprocessonlyneedstheCustomerIDand/orCustomerNametoaccesstheCUSTOMERSdatastore.CustomerIDandCustomerNameareessential;alloftheotherdataelementsonthe

orderformareirrelevanttoaccessingthecustomerdata.

IwilldemonstratethisconceptusingtheVERIFYCREDITprocessfromourretailstoreorderentryexample.

Allthreeoutgoingdataflowshavetheword‘Orders’intheirnamebecausetheydealwithphysicalorderforms.

InmyanalysisoftheOrderFormshowninthelastchapter,Idiscovereditcontainsthedataelements:

OrderDateOrderNumberCustomerPO#CustomerIDCustomerNameShip-ToAddressBill-ToAddressItem#ItemDescription

UnitPriceQuantityOrderedExtendedPriceDesiredShippingMethodTotalPrice

FromthesampleordersPaul,anOrderEntryClerk,provided,Ialsonotethatsomehaveastamp‘AttachedPayment’withadollaramounthandwrittenbelowit.Somealsohavea‘CreditOK’stampandothershaveone

stating‘CreditCheckRequested’.Inriflingthroughthosestamped‘CreditCheckRequested’,IalsofindseveralordersinwhichtheCustomerIDfieldisblank.

Iinitiatehorizontalbalancingstartingwiththe‘norm’ormostcommonflowcreatedbytheprocess.Accordingto

Paul,thatistheCreditOKOrdersdataflowgoingtotheVALIDATEITEMSprocess.WhenIaskPaultoidentifytheEssentialDataElementsonthatflow,hereplies,“TheonlyEssentialDataElementinthiscasewouldbetheCreditOKIndicatorontheorder.Itjustshowsthattheorderisapprovedforfurtherprocessing.”

“Iunderstand.ButIalso

thinkyouwouldneedtoknowwhichorderthat‘CreditOKStamp’ison,wouldn’tyou?”

Paulreplies,“Thatmakessense.IguesswealsoneedtheOrderNumber,whichisassignedwhenwesortthemail.Itisaddedtoeachorderbywhicheverofusissortingthemail.Itsimplyconsistsofthecurrentdateplusa4-digitrunningnumber.The

exampleIhaveherehasordernumber141103_1966writtenonitbywhoeversortedthemailonNovember3,2014.”

Basedonthatinformation,IaddOrder#,CreditOKIndicatorbeneaththelinelabeledCreditOKOrdersinparenthesistoindicatethesearedataelements.

“OK,thenextflowistheCreditNOKOrdersbeingsenttotheCREDITDEPARTMENT.Whatisthe

essentialinformationonthatflow?IassumetheOrderNumberandsomekindofastampindicatingthecreditisnotOK?”

Paul:“Thosewouldbetheoneswith‘CreditCheckRequested’stampedonthem.Thatindicatesitiseitheranewcustomerwhichweindicatebyleavingthe‘CustomerID’blankoranexistingcustomerwhoowes

usfrompreviousorders.”

“Makessense.SoEssentialDatafortheCreditNOKOrdersdataflowwouldbethe‘OrderNumber’andthe‘CheckCreditRequestStamp’,right?DoestheCREDITDEPARTMENTneedanyotherinformationtodealwiththeseorders?”

“Sure,theyneedtoknowthe‘TotalPrice’ontheorderso

theycandeterminewhethertheyshouldOKtheorderandsenditbacktouswiththe‘CreditOKStamp’onitornot.”

“WhatdotheydowithCreditNOKOrdersthatyousendthemthattheydonotapprove?”

“YouwouldhavetoasksomeoneintheCREDITDEPARTMENTthat.Ithink

theysendthemovertoCustomerServicetocontactthecustomersincetheyaretheonlyonesinthecompanywhoarealloweddirectcustomercontact.”

“Ifthatistrue,thatwouldbebetweentheCREDITDEPARTMENTandCUSTOMERSERVICE,bothofwhomareoutofscopeforourprojectsowewon’tworryaboutthose

orders.”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.Ifwehaveacustomerwithamatching

name,wecomparethe‘Bill-ToAddress’ontheformwiththeoneinourCUSTOMERSfile.Iftheymatch,wefillinthe‘CustomerID’onthe‘Order’andagain,addtherespective‘CreditStatusStamp’.Ifwecan’tfindthecustomereitherbythe‘CustomerID’orbythe‘CustomerName’,westampthe‘OrderCreditCheckRequested’andputitonthepilegoingtotheCREDIT

DEPARTMENT.”

IaddthedataelementsCustomerID,CustomerName,Bill-ToAddress,andCreditStatustothedataflowcomingfromtheCUSTOMERSdatastoreintotheVERIFYCREDITprocess.Inaddition,IaddtheCustomerName,Bill-ToAddress,CheckCreditRequestIndicator,andTotalPrice

belowtheNewCustomerOrderslabelandask,“Doesthataccuratelyrepresentwhatyoujusttoldme?”

Paulreplies,“Ithinkso.Idon’tknowwhethertheCREDITDEPARTMENTneedsanythingelsefromusforaNewCustomerOrder,butwhatyouwrotedownmakessensetome.Iamnotsuretheydon’tneedtheShip-ToAddressforthecustomeraswell.Youmightwanttocheckwiththemtoconfirmthattheydonotneedanythingelse,though.”

“IwillcertainlyrunthisbythemtoseeifthisisallthedatatheyneedtoprocesseitheraNewCustomerOrderoronefromacustomerwithbadcredit.Fornow,wewillassumethattheDataElementsIlistedonthediagramaretheessentialDataElementsoneachflowcomingoutoftheVERIFYCREDITprocess.AsIexplainedearlier,eachofthesedataelementshasto

comeintotheprocessononeoftheincomingdataflowsorbecreatedintheprocess.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.“Itappearsthattheonly

dataVERIFYCREDITcreatesistheCreditOKIndicatorortheCheckCreditRequestIndicator.BothofthemarecreatedbasedonthecontentsoftheCustomer’sCreditStatus,whichiscomingoutoftheCUSTOMERSFile.YoufindthecustomerbasedoneithertheCustomerIDorbothCustomerNameandBill-ToAddress.Bothofthemarecominginononeofthetwoorderdataflows.Is

thatallcorrect?”

Paulagrees.

ThePowerofDataFlowDiagrams

Questionsansweredinthischapter:

WhyshouldIdrawaDataFlowDiagram?WhatdoesafullybalancedDFDlooklike?Whatvalue

doesaDFDfragmentprovide?

WhatDoestheDataFlowDiagramDoforYou?

FromtheperspectiveoftheonewearingtheBAhat,theactofcreatingadataflowdiagramisanawakening.

Drawingthediagramforcesyoutoaskquestionsthatyoumightotherwiseoverlook.Itisalsoanawakeningformembersofthebusinesscommunitywhoseprocessyouaredepicting.Thepeopleinthetrenchesandthosemanagingthemquiteoftenhaveneverseenapictureoftheirprocessandapictureactivatespartsofthehumanbrainthatwordscannot.Asaresult,thephrase,“Isee”

takesonawholedifferentmeaningwhenyouarepresentedwithapictureofyourprocess.Forthatreason,IrecommenddrawingaDFDjusttogeteveryoneinvolvedonthesamepage.

OnceyouhaveaDFD,explodingaprocessandbalancingthedatainputsandoutputsbetweenthelevelsoftenrevealsmissingdataflows.

Afterall,noonecanthinkofeverythingatonce.Ifthetoolfindsasinglemisseddataflow,itisprobablywell

worththetimeittooktodrawthediagramandapplythetechnique.Thesameistrueofhorizontalbalancingtorevealmissingdataelements.IfweaskedITtoautomateaprocesswithamissingdataflow,wemostlikelywillendupwithanapplicationthatdoesnotmeetthebusinessneeds.

ITprofessionalsaregenerallyextremelygoodattheirjob

andtheywillmostlikelyrecognizethattheyaremissingsomethingatsomepointinthedevelopmentprocess.Theproblemisthetimingofthediscoveryandtherelatedcostwhentheomissionisdiscovered.Addingamissingprocesslateintheprojectisarelativelysimplestep,butmissingdataoftenaffectsamultitudeofprocesses,makingitoneofthemostexpensiveerrorsfor

ITprojects.Thesimpleactofidentifyingdataelementsandensuringtheircompletenessallowsyoutorecognizeandresolvetheseissuesbeforeyouinvolvedevelopers.Inmyexperience,thatisoneofthemostpowerfulargumentsforspendingtimetodevelopandanalyzeadataflowdiagram.

AFullyBalancedDFD

Torecap,acompletelybalanced(levelled)dataflowdiagramstartsatthetopwithacontextdiagramconsistingofoneormoreprocessesthatareinscopeforyourprojectandallexternalentitieswithwhichthoseprocesses

exchangedata.

EachofthoseLevel1processesexplodestoaLevel2dataflowdiagramdepictingthedetailedprocessesinsidetheLevel1processwithalldataflowsanddatastoresthatareinternaltotheexplodedprocess.EachprocessontheLevel2diagramwouldeitherexplodefurthertoaLevel3DFD(andfromLevel3toLevel4,etc.)orbedescribed

indetailedprocessspecifications.EachdataflowandeachdatastoreonthelowestlevelDFDwouldexplodetoalistofthecontaineddataelements.

CreatingaDFDFragment

AlthoughbalancingacompletelylevelledDFDrevealsdatadiscrepanciesanddisconnects,itmaynotbenecessaryforyourproject.Manypeople(inparticularonprojectsfollowinganAgileapproachtodelivering

technology)onlyneedasmallfragmentofaDFDtounderstandtheinnerworkingsofaspecificprocess.ThetimerequiredtocreateacompletelybalanceddiagramisnotjustifiedifadeveloperonlyneedstoknowhowtheCREDITDEPARTMENTestablishesthecreditlimitforanewcustomer.Inthatcase,aDFDfragmentmightsuffice.

ThefollowingisanexampleofaDFDfragmentbasedonanexercisethatweuseinourinstructor-ledclasses.Totestyourunderstandingoftheconceptspresented,youmightwanttotakethisopportunitytodrawaDFDfragmentusingtheprojectScopeStatementandtheInterviewNotesthatfollowbeforepeekingatoursolution.

ScopeStatement:Thisprojectwillenhanceourweb-basedPolicyMaintenanceSystembyallowingpolicyholderstointeractdirectlywiththeirinsurancepoliciesorclaims.Thesystemwillsupportweb-basedpolicypaymentsandallowprospectstoapplyfortemporarycoveragependingunderwritingrateapproval.Oncethe

applicationisreceivedbyUnderwriting,itwillfollowstandardUnderwritingprocedures.

InterviewNotes:Inthefuture,aprospectwillsubmithis/herapplicationviaourwebsite.Iftheprospectdoesnotyethaveapolicywithus,thesitewillrequestacreditcheckwebserviceandeitherrejectorapprovethe

applicationdirectly.Iftherequestisfromoneofourcurrentcustomersingoodstandingorapprovedviathecreditcheck,thesitewillprovideatemporaryproofofinsurancecertificatethattheprospectcanprintoutandusetoregisterhis/hervehicle.Inanycase,therequestwillthenbeforwardedtounderwritingfornormalprocessing,whichwill

eitherleadtoacceptance(thenorm),modification(overridingawebrejection)orrejection(badrisk).Iftherequestisapproved,apolicywillbeissuedandsenttothecustomerviastandardmail.

Hereisanexampleofthediagramthatmanyofourstudentshaveproducedforthisscenario.

Notethatthisdataflowdiagramshowsabusinessprocessatsomeindeterminatelevelofdetail.Someoftheprocessesmightbeveryhigh-levelwhereasothersareveryspecific.Ifyouneedtounderstandhowanyoftheseprocessesworksindetail,youcould“explode”ittoseeitsinternalprocesses.

Summary

CreatingaDataFlowDiagramisanextremelyrevealingandrewardingstepintheanalysisofabusinessprocess.Ihaveneverusedanyothertoolthatisaseffectiveattriggeringanimateddiscussionsamongstthestakeholders

abouthowabusinessprocessworksandhowitcouldbeimproved.Obviously,creatingthediagramisjustthefirststep.Thediagramopensthedoortoaseriesofspecificbusinessanalysistechniquesthatwillhelpthebusinesscommunityrecognizehowtheiractionsimpactotherdownstreamprocesses.Youcanalsoidentifyproblemareas,timinganomalies,anderror

handlingissuesthatcanleadtomissingrequirements.

Itisimportanttonotethatthediagramisasnapshotintime.Onceyoupresentthebusinesscommunitywiththisversatilevisualaid,theymayimmediatelystarttomakechanges.Becauseofthecumulativeeffectofthosechanges,youshouldneverassumethatthediagramyoucreatedafewmonthsoreven

yearsagoisvalid.Ifyoureallyneedtounderstandthecurrentbusinessprocess,youarebestservedbystartingfromscratchaswedemonstrated.Theproblemyoufaceis,ofcourse,theeffortrequiredtoflushoutallofthedetailspresentedinthebalancingsection.Isitreallyworththetime?

Adataflowdiagramasatoolthatbenefitstheprojector

reducestheriskofpotentialprojectfailurecanbeworthitsweightingold.Werecommendagainstspendingprojectresourcesdevelopingonejustforthesakeofhavingapicture.

“Ithinkbydrawing,soI'lldrawordiagrameverythingfromapieceoffurnituretoastagegesture.Iunderstandthingsbestwhenthey'rein

graphics,notwords.”-RobertWilson

Tableof

ContentsPreface

AbouttheAuthors

TableofContents

IntroductiontoDataFlowDiagrams(DFDs)fortheBusiness

BusinessProcesses,DataFlows,andValueChainsWhyCreateaDataFlowDiagram?

ModelingtheFlowofMaterialandData

VisualizingProjectScope

HowtoIdentifyInternalProcessesonaDFDGettingtotheNextLevel

MiningforProcesses

DrawingaDetailLevelDFD

DiscoveringMissingProcessesandData

DetailedProcessandDataSpecificationsOptionalProcessMini-SpecsCapturingDataElements

HorizontalBalancingRevealsMissingDataElements

ThePowerofDataFlowDiagramsWhatDoestheDataFlowDiagramDoforYou?AFullyBalancedDFDCreatingaDFDFragment

Summary