DFD图
最近備戰(zhàn)軟考,復(fù)習(xí)到數(shù)據(jù)流圖,學(xué)習(xí)成果與大家分享。
?
數(shù)據(jù)流圖(Data Flow Diagram):簡稱DFD,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。(百科)
?
談?wù)勎业囊稽c理解
有時候我們要開發(fā)或者理解一個系統(tǒng),總體的系統(tǒng)結(jié)構(gòu)我們弄清楚了,但是細節(jié)上需要再深入,而數(shù)據(jù)流圖“自頂向下,由外到內(nèi),逐步細化”的思想就凸顯出很重要的作用,它可以作為我們系統(tǒng)分析的指導(dǎo)方法。
?
數(shù)據(jù)流圖分析關(guān)注的重點是數(shù)據(jù),將面向控制的信息作為數(shù)據(jù)進行處理,包括了系統(tǒng)的所有數(shù)據(jù),能準確的抽象系統(tǒng)數(shù)據(jù)的流向和處理過程.概括的描述當數(shù)據(jù)在系統(tǒng)流程中流動和處理的移動變換過程;數(shù)據(jù)流圖分層進行分析,對頂層圖的分析可以發(fā)現(xiàn)是否有輸入信息或需要輸出的信息被遺漏,容易及早發(fā)現(xiàn)系統(tǒng)各部分的邏輯錯誤,也容易修正.每一層都明確強調(diào)“需要什么”,“干了什么”“給出什么”;
這樣逐層分解下去,系統(tǒng)被嚴密的展開,系統(tǒng)的框架就展現(xiàn)出來了.采用數(shù)據(jù)流圖進行分析,可以提高分析的可見性和可控性,更容易理解軟件要完成什么功能,數(shù)據(jù)來源于哪里,結(jié)果要輸出到哪里等等,清晰明了。
?
下面我們來看看數(shù)據(jù)流圖的組成,設(shè)計原則和應(yīng)用
基本圖形符號
加工(數(shù)據(jù)處理):輸入數(shù)據(jù)在此進行變換產(chǎn)生輸出數(shù)據(jù)。加工對象為:數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)內(nèi)容。
數(shù)據(jù)流:箭頭表示數(shù)據(jù)流向,作為加工之間傳輸數(shù)據(jù)的命名通道(數(shù)據(jù)流有名字),或數(shù)據(jù)存儲文件與加工之間的非命名通道(數(shù)據(jù)流沒名字,但其連接的加工和文件的名字,和流向可以確定其含義)。
?
同一個數(shù)據(jù)流圖上不能有同名的數(shù)據(jù)流,如果兩個以上的數(shù)據(jù)流指向一個加工,或是從一個加工中輸出兩個以上的數(shù)據(jù)流,這些數(shù)據(jù)流往往存在一定關(guān)系,如圖:
?
數(shù)據(jù)存儲文件:流向數(shù)據(jù)存儲的數(shù)據(jù)流可以理解為寫入文件或查詢文件,從數(shù)據(jù)存儲流出的數(shù)據(jù)流可以理解為從文件讀數(shù)據(jù)或得到查詢結(jié)果。
?
數(shù)據(jù)源點或終點:是系統(tǒng)外部環(huán)境中的實體,也稱外部實體。它們作為系統(tǒng)與系統(tǒng)外部環(huán)境的接口界面,在實際問題中可能是人員、組織、其他硬件系統(tǒng)等。一般出現(xiàn)在頂層數(shù)據(jù)流圖中。
?
數(shù)據(jù)流圖的設(shè)計原則
下面我們通過一些示例來說明這些設(shè)計原則
?
示例1:
上圖違反了父圖與子圖的平衡原則。
因為父圖中有提貨單輸出流,但子圖中沒有與這條輸出流相關(guān)的輸出流。
我們看兩者的輸入流,父圖的輸入流是訂貨單,而子圖的輸入流是數(shù)量,賬號,客戶,這是平衡的,因為子圖的三條輸入流是對父圖輸入流的分解,同樣子圖中的加工4.1,4.2,4.3也可以看成是對父圖加工4的分解,這符合自頂向下,逐層細化原則
?
示例2:
下面是一張有錯的數(shù)據(jù)流圖。
(1)根據(jù)數(shù)據(jù)守恒原則,外部實體和外部實體,外部實體和數(shù)據(jù)存儲之間不能存在數(shù)據(jù)流,,存儲與存儲之間也不應(yīng)該有數(shù)據(jù)流,數(shù)據(jù)流必須跟加工有關(guān),沒有加工數(shù)據(jù)流不可能流來流去的。
(2)對于加工,輸入是A,輸出還是A,也違反了數(shù)據(jù)守恒原則,輸入與輸出一樣,加工沒有作用。
(3)對于加工,只有輸入沒有輸出,違反了數(shù)據(jù)守恒原則。比如,人不可能只吃飯,不大小便。嘿嘿
(4)對于加工,只有輸出沒有輸入,違反了數(shù)據(jù)守恒原則。比如,人不可能一直大小便,但不吃飯。嘿嘿
?
?
示例3:
加工細節(jié)隱蔽原則說的是:在畫父圖時,只需畫出加工和加工之間的關(guān)系,而不必畫出各個加工內(nèi)部的細節(jié),例如上面的父圖中,并沒有畫出加工1的內(nèi)部細節(jié)
再進行對加工1進行細化的時候,我們就應(yīng)該畫出它的內(nèi)部細節(jié),如第二個圖。
?
簡化加工之間的關(guān)系:加工間的數(shù)據(jù)流越少,各個加工就越相對獨立,耦合越低,所以應(yīng)盡量減少加工間輸入/輸出數(shù)據(jù)流的數(shù)目。
?
均勻分解:不要出現(xiàn),一些加工分解了10層,而另一些加工分解了3層這樣的情況
?
忽略枝節(jié):暫時不要考慮一些例外情況,出錯處理等枝節(jié)性問題。
?
表現(xiàn)的是輸入流而不是控制流:不要和程序流程圖混淆,數(shù)據(jù)流圖,強調(diào)從數(shù)據(jù)加工的角度來描述系統(tǒng),自然是數(shù)據(jù)流。
這些原則中,最重要的當屬:保持父圖與子圖平衡,保持數(shù)據(jù)平衡,加工細節(jié)隱蔽
?一般從這三個原則來考查一張數(shù)據(jù)流圖是否正確。
??
數(shù)據(jù)字典
?
數(shù)據(jù)字典的就是對數(shù)據(jù)流圖中出現(xiàn)的所有被命名的圖形元素在數(shù)據(jù)字典中作為一個詞條加以定義,使每個圖形元素的名稱都有一個確切的解釋。
?
在對數(shù)據(jù)流和數(shù)據(jù)文件詞條進行描述時可能包含一定的數(shù)據(jù)結(jié)構(gòu),對于數(shù)據(jù)結(jié)構(gòu)的描述常用的是定義是。如下表
?
在數(shù)據(jù)字典中有4種類型的條目:
1、數(shù)據(jù)項條目:通常為數(shù)據(jù)項的值類型,允許的取值范圍等
2、數(shù)據(jù)流條目:給出某個數(shù)據(jù)流的定義,列出該數(shù)據(jù)流的各組成數(shù)據(jù)項。
3、文件條目:對文件的定義,列出期組成的數(shù)據(jù)項
4、加工條目:對每個不能再分解的加工做說明,包括加工的激發(fā)條件,加工的邏輯,優(yōu)先級等等。
?
示例:
圖書管理系統(tǒng)中
查詢請求信息=[查詢讀者請求信息|查詢圖書請求信息]
讀者情況=讀者號+姓名+所在單位+{借書情況}
?
根據(jù)上面的定義表,我們很容易看出這些條目的意思。
?
?
下面我們來看一個數(shù)據(jù)流圖的綜合應(yīng)用問題,這樣有助于我們理解數(shù)據(jù)流圖。
?
需求:
根據(jù)以上信息提出的幾個問題!希望對這幾個問題的解析,能加深大家對數(shù)據(jù)流圖的理解。
對于問題1:
我們前面提到過,
可以通過數(shù)據(jù)流圖那三個重要設(shè)計原則(保持父圖與子圖平衡,保持數(shù)據(jù)平衡,加工細節(jié)隱蔽)來考查一張數(shù)據(jù)流圖是否正確。
1、查看是否平衡,即子圖中的輸入流合輸出流和父圖是否對應(yīng);
2、查看數(shù)據(jù)守恒,處理查詢請求沒有輸入,登記讀者信息沒有輸出.
正確應(yīng)該如紅色箭頭畫法。
對于問題2:
1、首先我們看到對于加工2,父圖和子圖是平衡的,所以,本題只能是2.1和2.2或者他們和文件之間缺少數(shù)據(jù)流。
只得根據(jù)需求描述去分析到底缺失哪些數(shù)據(jù)流。
?
根據(jù)在原需求中的
我們可以很輕松的判斷出缺少哪些數(shù)據(jù)流,如下圖紅色箭頭
對于問題3:這是一個數(shù)據(jù)字典的應(yīng)用問題。
根據(jù)以上我們截取需求中的信息,,注意紅色部分,再結(jié)合我們開始介紹的數(shù)據(jù)字典定義符號的使用,即可很輕松解決這個問題。
管理工作請求單=[購入新書|讀者借書|讀者還書|圖書注銷]
入庫單=分類目錄號+書名+作者+價格+數(shù)量+購書日期。
?
總結(jié)
- 上一篇: Lync2013之配置企业语音
- 下一篇: Unity3D播放器设置(player