UML資料流圖(帶作業)
資料流圖(Data Flow Diagram):簡稱DFD,它從資料傳遞和加工角度,以圖形方式來表達系統的邏輯功能、資料在系統內部的邏輯流向和邏輯變換過程,是結構化系統分析方法的主要表達工具及用於表示軟體模型的一種圖示方法。(百科)
談談我的一點理解
有時候我們要開發或者理解一個系統,總體的系統結構我們弄清楚了,但是細節上需要再深入,而資料流圖“自頂向下,由外到內,逐步細化”的思想就凸顯出很重要的作用,它可以作為我們系統分析的指導方法。
資料流圖分析關注的重點是資料,將面向控制的資訊作為資料進行處理,包括了系統的所有資料,能準確的抽象系統資料的流向和處理過程.概括的描述當資料在系統流程中流動和處理的移動變換過程;資料流圖分層進行分析,對頂層圖的分析可以發現是否有輸入資訊或需要輸出的資訊被遺漏,容易及早發現系統各部分的邏輯錯誤,也容易修正.每一層都明確強調“需要什麼”,“幹了什麼”“給出什麼”
這樣逐層分解下去,系統被嚴密的展開,系統的框架就展現出來了.採用資料流圖進行分析,可以提高分析的可見性和可控性,更容易理解軟體要完成什麼功能,資料來源於哪裡,結果要輸出到哪裡等等,清晰明瞭。
下面我們來看看資料流圖的組成,設計原則和應用
基本圖形符號
加工(資料處理):輸入資料在此進行變換產生輸出資料。加工物件為:資料結構或資料內容。
資料流:箭頭表示資料流向,作為加工之間傳輸資料的命名通道(資料流有名字),或資料儲存檔案與加工之間的非命名通道(資料流沒名字,但其連線的加工和檔案的名字,和流向可以確定其含義)。
同一個資料流圖上不能有同名的資料流,如果兩個以上的資料流指向一個加工,或是從一個加工中輸出兩個以上的資料流,這些資料流往往存在一定關係,如圖:
資料儲存檔案:流向資料儲存的資料流可以理解為寫入檔案或查詢檔案,從資料儲存流出的資料流可以理解為從檔案讀資料或得到查詢結果。
資料來源點或終點:是系統外部環境中的實體,也稱外部實體。它們作為系統與系統外部環境的介面介面,在實際問題中可能是人員、組織、其他硬體系統等。一般出現在頂層資料流圖中。
資料流圖的設計原則
下面我們通過一些示例來說明這些設計原則
示例1:
上圖違反了父圖與子圖的平衡原則。
因為父圖中有提貨單輸出流,但子圖中沒有與這條輸出流相關的輸出流。
我們看兩者的輸入流,父圖的輸入流是訂貨單,而子圖的輸入流是數量,賬號,客戶,這是平衡的,因為子圖的三條輸入流是對父圖輸入流的分解,同樣子圖中的加工4.1,4.2,4.3也可以看成是對父圖加工4的分解,這符合自頂向下,逐層細化原則
示例2:
下面是一張有錯的資料流圖。
(1)根據資料守恆原則,外部實體和外部實體,外部實體和資料儲存之間不能存在資料流,,儲存與儲存之間也不應該有資料流,資料流必須跟加工有關,沒有加工資料流不可能流來流去的。
(2)對於加工,輸入是A,輸出還是A,也違反了資料守恆原則,輸入與輸出一樣,加工沒有作用。
(3)對於加工,只有輸入沒有輸出,違反了資料守恆原則。比如,人不可能只吃飯,不大小便。嘿嘿
(4)對於加工,只有輸出沒有輸入,違反了資料守恆原則。比如,人不可能一直大小便,但不吃飯。嘿嘿
示例3:
加工細節隱蔽原則說的是:在畫父圖時,只需畫出加工和加工之間的關係,而不必畫出各個加工內部的細節,例如上面的父圖中,並沒有畫出加工1的內部細節
再進行對加工1進行細化的時候,我們就應該畫出它的內部細節,如第二個圖。
簡化加工之間的關係:加工間的資料流越少,各個加工就越相對獨立,耦合越低,所以應儘量減少加工間輸入/輸出資料流的數目。
均勻分解:不要出現,一些加工分解了10層,而另一些加工分解了3層這樣的情況
忽略枝節:暫時不要考慮一些例外情況,出錯處理等枝節性問題。
表現的是輸入流而不是控制流:不要和程式流程圖混淆,資料流圖,強調從資料加工的角度來描述系統,自然是資料流。
這些原則中,最重要的當屬:保持父圖與子圖平衡,保持資料平衡,加工細節隱蔽
一般從這三個原則來考查一張資料流圖是否正確。
資料字典
資料字典的就是對資料流圖中出現的所有被命名的圖形元素在資料字典中作為一個詞條加以定義,使每個圖形元素的名稱都有一個確切的解釋。
在對資料流和資料檔案詞條進行描述時可能包含一定的資料結構,對於資料結構的描述常用的是定義是。如下表
在資料字典中有4種類型的條目:
1、資料項條目:通常為資料項的值型別,允許的取值範圍等
2、資料流條目:給出某個資料流的定義,列出該資料流的各組成資料項。
3、檔案條目:對檔案的定義,列出期組成的資料項
4、加工條目:對每個不能再分解的加工做說明,包括加工的激發條件,加工的邏輯,優先順序等等。
示例:
圖書管理系統中
查詢請求資訊=[查詢讀者請求資訊|查詢圖書請求資訊]
讀者情況=讀者號+姓名+所在單位+{借書情況}
根據上面的定義表,我們很容易看出這些條目的意思。
下面我們來看一個數據流圖的綜合應用問題,這樣有助於我們理解資料流圖。
需求:
根據以上資訊提出的幾個問題!希望對這幾個問題的解析,能加深大家對資料流圖的理解
對於問題1:
我們前面提到過,
可以通過資料流圖那三個重要設計原則(保持父圖與子圖平衡,保持資料平衡,加工細節隱蔽)來考查一張資料流圖是否正確。
1、檢視是否平衡,即子圖中的輸入流合輸出流和父圖是否對應;
2、檢視資料守恆,處理查詢請求沒有輸入,登記讀者資訊沒有輸出.
正確應該如紅色箭頭畫法。
對於問題2:
1、首先我們看到對於加工2,父圖和子圖是平衡的,所以,本題只能是2.1和2.2或者他們和檔案之間缺少資料流。
只得根據需求描述去分析到底缺失哪些資料流。
根據在原需求中的
我們可以很輕鬆的判斷出缺少哪些資料流,如下圖紅色箭頭
對於問題3:這是一個數據字典的應用問題。
根據以上我們擷取需求中的資訊,,注意紅色部分,再結合我們開始介紹的資料字典定義符號的使用,即可很輕鬆解決這個問題。
管理工作請求單=[購入新書|讀者借書|讀者還書|圖書登出]
入庫單=分類目錄號+書名+作者+價格+數量+購書日期。
資料流圖就到這了,我是懂了,不知道你懂了沒?