天天看點

續-如何劃分DFD

續前面的問題1。本來應該在上篇文章中繼續,卻發現無法編輯儲存過的文章,隻有另起一篇了。

   現在說正題兒吧。為什麼我所劃分的DFD中加工之間往往不連續?

   不連續,就是說DFD中的各個加工之間往往比較獨立,互相之間沒有資料流直接相連,整個DFD就像是一個個彼此孤立的島嶼。說“不直接相連”也暗指加工之間也并非完全不相幹,比如一個加工可能使用另一個加工産生的“曆史”資料作為輸入。但與《書》中的例子相對比就可以看出,《書》中的例子裡(如第237頁的圖12-21)各個加工之間一般都有資料流相連,可以很明顯的看出各個加工處理的時間上的先後。而我的售票DFD中則沒有,如圖所示。

   比如加工2.1,2.2,2.3,2.4之間就沒有資料流相連。

   彼此之間通過資料流相連的加工,根據變換流或事物流的特征,在設計階段就可以轉化為互相之間有調用關系的子產品。轉換的規則書中也有詳細的介紹(第13,14章)。但如果加工之間沒有關聯,那麼應該怎樣轉化為設計,轉化後的體系結構圖應該是什麼樣子的?或者不應該存在彼此孤立的加工,這本身就是錯誤的分析?

問題2:DFD中的加工要不要明顯地表現在加工成功和失敗不同條件下的處理?還是隐含在加工之中?

比如有這樣一個功能需要執行:

   執行加工A,産生資料dataA ,若加工A執行成功,則執行加工B,否則執行加工A1。

   加工B使用dataA 作為輸入,若加工B執行成功,則執行加工C,否則執行加工B1 。

   加工C需要使用者輸入和存儲資料dataC進行處理,若加工C 執行失敗,則執行加工C1,否則執行加工C2 。

   加工A1,B1,C1,C2都分為兩部分功能:顯示一些資訊,執行一些操作并傳回。

   根據問題2,進行了兩種劃分,如下兩個圖所示。第一個圖是顯示的表現加工執行的成功或失敗,另一個圖則沒有明顯表示加工執行成功或失敗的情況,加工的成功或失敗蘊含在加工自身之中。

思考:哪一種加工的劃分方法更合理?