數據流圖中每個成分的命名是否恰當,直接影響數據流圖的可理解性。因此,給這些成分起名字時應該仔細推敲。
命名
1.為數據流(或數據存儲)命名
(1)名字應代表整個數據流(或數據存儲)的內容,而不是僅僅反映它的某些成分。
(2)不要使用空洞的、缺乏具體含義的名字(如“數據”、“信息”、“輸入”之類)。當標而
(3)如果在為某個數據流(或數據存儲)起名字時遇到了困難,則很可能是因為對數據流圖分解不恰當造成的,應該試試重新分解,看是否能克服這個困難。
2.為處理命名
(1)通常先為數據流命名,然后再為與之相關聯的處理命名。這樣命名比較容易,而且體現了人類習慣的“由表及里"的思考過程。
(2)名字應該反映整個處理的功能,而不是它的一部分功能。
(3)名字最好由一個具體的及物動詞加上一個具體的賓語組成。應該盡量避免使用“加工”、“處理”等空洞籠統的動詞作名字。
(4)通常名字中僅包括一個動詞,如果必須用兩個動詞才能描述整個處理的功能,則把這個處理再分解成兩個處理可能更恰當些。
(5)如果在為某個處理命名時遇到困難,則很可能是發現了分解不當的跡象,應考慮重新分解。
數據源點/終點并不需要在開發目標系統的過程中設計和實現,它并不屬于數據流圖的核心內容,只不過是目標系統的外圍環境部分(可能是人員、計算機外部設備或傳感器裝置)。通常,為數據源點/終點命名時采用它們在問題域中習慣使用的名字(如“采購員”、“倉庫管理員”等)。
用途
畫數據流圖的基本目的是利用它作為交流信息的工具。分析員把他對現有系統的認識或對目標系統的設想用數據流圖描繪出來,供有關人員審查確認。由于在數據流圖中通常僅僅使用4種基本符號,而且不包含任何有關物理實現的細節,因此,絕大多數用戶都可以理解和評價它。
從數據流圖的基本目標出發,可以考慮在一張數據流圖中包含多少個元素合適的問題。一些調查研究表明,如果一張數據流圖中包含的處理多于5~9個,人們就難于領會它的含義了。因此數據流圖應該分層,并且在把功能級數據流圖細化后得到的處理超過9個時,應該采用畫分圖的辦法,也就是把每個主要功能都細化為-張數據流分圖,而原有的功能級數據流圖用來描繪系統的整體邏輯概貌。
數據流圖的另一個 主要用途 是作為分析和設計的工具。 分析員在研究現有 的系統時常用系統流程圖表達他對這個系統的認識,這種描繪方法形象具體,比較容易驗證它的正確性;但是,開發工程的目標往不是完全復制現有的系統,而是創造一個能夠完成相同的或類似的功能的新系統。用系統流程圖描繪一個系統時,系統的功能和實現每個功能的具體方案是混在一起的。 因此,分析員希望以另一種方式進 一 步總結現有的系統,這種方式應該著重描繪系統所完成的功能而不是系統的物理實現方案。數據流圖是實現這個目標的極好手段。
當用數據流圖輔助物理系統的設計時,以圖中不同處理的定時要求為指南,能夠在數據流圖上畫出許多組自動化邊界,每組自動化邊界可能意味著一個不同的物理系統,因此可以根據系統的邏輯模型考慮系統的物理實現。例如,考慮下圖,事務隨時可能發生,因此處理1.1(“接收事務”)必須是聯機的;采購員每天需要一次訂貨報表,因此處理2(“產生報表”)應該以批量方式進行。問題描述并沒有對其他處理施加限制。
例如,可以聯機地接收事務并放人隊列中,然而更新庫存清單、處理訂貨和產生報表以批量方式進行(下圖)。當然,這種方案需要增加一個數據存儲以存放事務數據。
這種劃分自動化邊界的方法暗示以批量方式更新庫存清單
改變自動化邊界,把處理1.1,1.2和1.3放在同一個邊界內,這個系統將聯機地接收事務、 更新庫存清單和處理訂貨及輸出訂貨信息;然而處理2將以批量方式產生訂貨報表。還能設想出建立自動化邊界的其他方案嗎?如果把處理1. 1和處理1.2放在一個自動化邊界內,把處理1.3和處理2放在另一個邊界內,意味著什么樣的物理系統呢?
另一種劃分自動化邊界的方法建議以聯機方式更新庫存清單
數據流圖對更詳細的設計步驟也有幫助,從數據流圖出發映射出軟件結構的方法——面向數據流的設計方法