Documenting Systems Using Dataflow Diagrams

Documenting Systems Using Dataflow Diagrams

<p>Dataflow Diagrams – Documentation Guide</p><p>General Rules:</p><p>Professional Teams developing systems produce details and complete document in all areas covered.</p><p>The period involved in SAD means that you may not be able to document in the details required. In particular the detail required for the data dictionary. It is important to convey all the important datastores and process descriptors. </p><p>Try to provide the important parts of the DFD components.</p><p>View the different styles portrayed in the guides and samples. Try and pick out areas that enhance your report.</p><p>Ultimately it takes several years to produce a sufficient DFD library which can be utilized whenever building new systems.</p><p>Technical or bulky material should be moved to the appendix.</p><p>Web based or small scale systems may not need the level of details in the data dictionary section. </p><p>Larger systems - most of the detailed material should be moved to the appendix so as not to divert the reader from the general theme of your system report. </p><p>Make a professional judgment.</p><p>Documenting in details helps maintain standards and procedures particularly when there are a number of people working on developing the system.</p><p>Section indicated in red need to be added. Example: A Toy Sales Order Entry & Processing System</p><p>Below is the typical documentation (requirements specifications) for a toy sales order entry processing system and are not based this toy system on any real-world accounting system. The specification provided is only a sub-section of a complete system and therefore are incomplete. They are given as illustrations only. They consist of: </p><p> Context diagram  Levelled logical dataflow diagrams  Relation specifications for a Relational Database  Specifications for the dataflows  Process descriptions in raw prolog code. (Prolog is a relational language. The code is given here, since prolog code is generally easily grasped). The code given here, with very minor changes, should be executable. </p><p>“We are talking about a very small firm that considers orders from customers for one item. You should be able to add a lot more to the model provided as you wish. The situation considered is rather unrealistic, but it makes important points about specifications for an accounting system and its documentation. </p><p>NOTE : Sample Style Content Page</p><p>Section Description Page 1 Dataflow Diagrams: 1.1 Context Diagram: (Sales Order Entry & Processing System) 1.2 Events List: (Sales Order Entry & Processing System) 1.3 Level 0 Logical Dataflow Diagram: 1.3.1 Sales Order Entry & Processing System 1.4 Level 1 Logical Dataflow Diagram: 1.4.1 Sales Order Entry Sub-system 1.4.2 Sales Order Processing Sub-system 2. DATA DICTIONARY 2.1 Datastore List: 2.2 Dataflow Specifications 2.3 Process Specifications: 2.4 Example of Mini Spec (related code). 1 Dataflow Diagrams: </p><p><Introduce the reader to DFD modelling></p><p>1.1 Context Diagram: (Sales Order Entry & Processing System) </p><p><text describing context diagram></p><p>Figure: Context Diagram</p><p>1.2 Events List: (Sales Order Entry & Processing System) </p><p><Event List></p><p>1.3 Level 0 Logical Dataflow Diagram: </p><p>1.3.1 Sales Order Entry & Processing System</p><p><text describing level 0> Figure: Level 0 Dataflow Diagram</p><p>1.4 Level 1 Logical Dataflow Diagram: </p><p>1.4.1 Sales Order Entry Sub-system</p><p><text describing level 1> Figure: Level 1 Dataflow Diagram (Sales Order Entry Subsystem)</p><p>1.4.2 Sales Order Processing Sub-system</p><p><text describing level 1></p><p>Figure: Level 1 Dataflow Diagram (Sales Order Processing Subsystem) 2. DATA DICTIONARY (part 1)</p><p><Introduction to data dictionary></p><p>2.1 Datastore List:</p><p><Introduction to datastore specification></p><p>Syntax: tableName(attribute1, attribute2,...... ) </p><p>2.1.1</p><p> salesorder(CustomerName, CustomerAddress, Item, Quantity, ….) </p><p><Follow suit with remaining datastores></p><p> priceList(Item, Price) </p><p> customerMaster(CustomerName, CustomerAddress, Balance, CreditLimit) </p><p> inventoryMaster(Item, QuantityOnHand) </p><p> salesOrderMaster(CustomerName, Item, Quantity, OrderPrice) </p><p> billOfLading(CustomerName, Item, Quantity) </p><p> openInvoices(CustomerName, Item, Quantity, OrderPrice) </p><p> customer(CustomerName, CustomerAddress) </p><p>Optional - Datastore Specifications found in Appendix X1: </p><p>NOTE : Datastores are used to develop the table requirements of the system. Each datastore may generate several related tables. 2.2 Dataflow Specifications </p><p><Introduction to dataflow specification></p><p>Syntax: dataflowName(attribute1, attribute2,.....) </p><p>2.2.1</p><p> order(CustomerName, CustomerAddress, Item, Quantity) </p><p><Follow suit with remaining dataflows></p><p> pricedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) </p><p> weDontSell(CustomerName, CustomerAddress, Item) </p><p> sorryBadCredit(CustomerName, CustomerAddress) </p><p> approvedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) </p><p> sorryNotInStock(CustomerName, CustomerAddress, Item) </p><p> acceptedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) </p><p> salesOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) </p><p> billOfLading(CustomerName, CustomerAddress, Item, Quantity) </p><p> invoice(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) </p><p>Optional - Dataflow Specifications found in Appendix X2: </p><p>NOTE : Dataflows are used to develop the data entry forms and output forms required by the system. Each dataflow will require its own form view. 2.3 Process Specifications: </p><p><Introduction to process specification></p><p>2.3.1</p><p><Follow suit with remaining processes></p><p>Process Specifications found in Appendix X3: </p><p>NOTE : Process descriptions are used to develop validation rules, macros, functions or code required by the system. Each process will require its own description.</p><p>2.4 Data Structure and Elements: </p><p>Example of Mini Spec (related code).</p><p>MINI SPEC – PRICE ORDER</p><p>2.3.1</p><p> priceOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) </p><p>/* Orders are priced by multiplying the quantity ordered by the price for the item on the price list */ if order(CustomerName, CustomerAddress, Item, Quantity), priceList(Item, Price), orderPrice is Price * Quantity. </p><p>/* We don't sell the item ordered by the customer if such item is not on the price list */ weDontSell(CustomerName, CustomerAddress, Item) if order(CustomerName, CustomerAddress, Item, Quantity), not priceList(Item, - ). /* A customer order for an item is approved if the order is priced and the account balance after the order is less than the credit limit */ approvedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) if pricedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice), customerMaster(CustomerName, CustomerAddress, Balance, CreditLimit), NewBalance is Balance + OrderPrice, NewBalance < CreditLimit. </p><p>/* A customer order is rejected on account of bad credit if the order is priced and the account balance after the order exceeds the credit limit for the customer */ sorryBadCredit(CustomerName, CustomerAddress) if pricedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice), customerMaster(CustomerName, CustomerAddress, Balance, CreditLimit), NewBalance is Balance + OrderPrice, NewBalance >= CreditLimit. </p><p>/* A customer order is accepted if it is approved and the quantity on hand of the item ordered is at least as much as the quantity ordered */ acceptedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) if approvedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice), inventoryMaster(Item, QuantityOnHand), QuantityOnHand >= Quantity. </p><p>/* A sales order is prepared if a customer order is accepted */ salesOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice) if acceptedOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice), </p><p>/* A bill of lading is prepared if a sales order is prepared */ billOfLading(CustomerName, CustomerAddress, Item, Quantity) if salesOrder(CustomerName, CustomerAddress, Item, Quantity, OrderPrice). </p><p>/* An open invoice is prepared if a bill of lading is prepared */ openInvoices(CustomerName, Item, Quantity, OrderPrice) if billOfLading(CustomerName, CustomerAddress, Item, Quantity). </p><p>/* A customer's account is updated by adding the order price to the current balance in the account if open invoice is prepared */ updateCustomerAccountsForInvoices if openInvoices(CustomerName, Item, Quantity, OrderPrice), retract(customerMaster(CustomerName, CustomerAddress, Balance, CreditLimit)), NewBalance is Balance + OrderPrice, assert(customerMaster(CustomerName, CustomerAddress, NewBalance, CreditLimit)). DOCUMENTING DATA DICTIONARY (part 2)</p><p>When documenting the Data Dictionary Structures and Elements try to utilize some of the following style.</p><p>1. DATA DICTIONARY</p><p>Provide an overview or a lookup table for datastore, dataflow and process descriptors.</p><p>1.1. Data Store Descriptors</p><p>1.1.1. orders</p><p>2</p><p>Content: ORDERS = {ORDER} Description: **the orders for books placed by customers Inputs: 1.1 Log Order Outputs: 1.2 Check Stock Read: Live / daily / weekly / monthly Write: Live / daily / weekly / monthly status: Disk / Paper ledger / Written Report</p><p>1.1.2. stocks</p><p>3</p><p>Content: STOCKS = {STOCK} Description: **the books the company retails 1.2 Check Stock Inputs: 1.4 Update Stock 1.2 Check Stock Outputs: 1.5 Check Pending Orders Read: Live / daily / weekly / monthly Write: Live / daily / weekly / monthly status: Disk / Paper ledger / Written Report Follow suit with all remaining datastores. Hyperlink the data store structures to the entry in 1.3 Data Structures for the list of data attributes.</p><p>1.2. Data Flow Descriptors</p><p>1.2.1. order</p><p>Name:</p><p>Content: date+@order#+CUSTOMERDETAIL+1{OITEM} Description: an order placed by a customer Source: Process Data Store 1.1 Log Order 1 Orders</p><p>Destination: Process Data Store 1.2 Check Stock 1 Orders</p><p>Read: Live / daily / weekly / monthly Write: Live / daily / weekly / monthly status: Disk / Paper ledger / Written Report</p><p>1.2.2. stock</p><p>Name:</p><p>Content: @isbn+title+AUTHOR+cost+sale+SUPPLIER+level Description: Source: Process Data Store incomplete incomplete</p><p>Destination: Process Data Store incomplete incomplete</p><p>Read: Live / daily / weekly / monthly Write: Live / daily / weekly / monthly status: Disk / Paper ledger / Written Report 1.2.3. customer</p><p>Name:</p><p>Content: @customer#+CUSTOMERDETAIL+creditlevel Description: Source: Process Data Store Incomplete incomplete</p><p>Destination: Process Data Store incomplete incomplete</p><p>Read: Live / daily / weekly / monthly Write: Live / daily / weekly / monthly status: Disk / Paper ledger / Written Report</p><p>Follow suit with all remaining dataflows. </p><p>1.3. Data Structures: </p><p>Data Structures: General Description ADDRESS house#+street+town+county+postcode AUTHOR fname+sname CUSTOMERDETAIL nametitle+sname+fname+ADDRESS+tel+fax+email OITEM title+qty SUPPLIER sname+ADDRESS</p><p>Follow suit with all remaining data structures. </p><p>1.4. Data Elements</p><p>Data Elements: Cost currency £ County 1{char}20 usually from [A..Z|a..z|0..9| ,-] Cate date dd/mm/yy Fname 1{char}20 house# 1{char}3 usually numeric but can from from subset [0..9|A..Z|a..z] Isbn 10{char}10 format #-######-##-# where each # = [0..9] level integer minimum value 0 Nametitle 2{char}4 [Mr|Mrs|Ms|Miss|Dr|Prof] order# 1{char}4 numeric characters each [0...9] Postcode 7{char}7 format $$# %$$ where $=[A..Z] #=[1..99] and %=[0..9] Qty integer minimum value 1 sale currency £ Sname 1{char}30 Street 1{char}20 usually from [A..Z|a..z|0..9| ,-] Title 1{char}20 usually from [A..Z|a..z|0..9| ,-] Town 1{char}20 usually from [A..Z|a..z|0..9| ,-]</p><p>Follow suit with all remaining data elements. </p><p>1.5. Process Descriptors</p><p>Provide all process descriptors as follows.</p><p>DATA DICTIONARY: PROCESS DESCRIPTORS</p><p>2.1 match stock and order item</p><p>Name:</p><p>Description: validating that order lines can be met from present stock dataflow new order from data store 1. new orders. Data Inputs: dataflow stock order from data store 2. stocks. dataflow complete order to process 2.2 record sale dataflow noofitems to process 2.3 deduct stock Data Outputs: dataflow incompleteorder to process 2.4 create pending order dataflow itemdetails to process 2.5 create purchase order Variables: Mini-Spec: REPEAT GET next ORDERITEM IF MATCH ORDERITEM.title with any STOCKCARD.title IF STOCKCARD.level <ORDERITEM.qty DO ‘create purchase order’ DO ‘create pending order’ ELSE (STOCKCARD.level >=ORDERITEM.qty) DO ‘deduct stock’ DO ‘record sale’ ENDIF ELSE (NO MATCH ORDERITEM.title with any STOCKCARD.title) **continue ENDIF UNTIL no more ORDERITEM</p>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us