數據流:數據流是系統中數據的流動,它可以是輸入、輸出或存儲在系統中的數據。
數據處理過程:數據處理過程是對數據進行處理的單元,可以是一個物理設備或軟件模塊。
數據存儲:數據存儲是系統中存儲數據的單元,可以是一個文件、數據庫或內存中的變量。
外部實體:外部實體是與系統進行信息交流的外部機構或個人,它可以是一個用戶、另一個系統或傳感器等。
某公司擬開發一個商業情報處理系統,使公司能夠及時針對市場環境的變化及時調整發展戰略,以獲取最大的商業利益。項目組經過討論,決定采用結構化分析和設計方法。在系統分析階段,為了更好地對情報數據處理流程及其與外部角色的關聯進行建模,項目組成員分別給出了自己的設計思路:
(1) 小張提出先構建系統流程圖(System Flowcharts),以便更精確地反映系統的業務處理過程及數據的輸入和輸出。
(2) 小李提出先構建系統數據流圖(Data Flow Diagrams),來展現系統的處理過程和定義業務功能邊界,并給出了情報分類子系統的0層和1層數據流圖,后者如下圖所示。
項目組經討論確定以數據流圖作為本階段的建模手段。工程師老王詳細說明了流程圖和數據流圖之間的區別與聯系,并指出了上圖所示數據流圖中存在的錯誤。
問題1:
流程圖和數據流圖是軟件系統分析設計中常用的兩種手段,請用300字以內文字簡要說明流程圖與數據流圖的含義及其區別,并說明項目組為何確定采用數據流圖作為建模手段。
數據流圖作為一種圖形化工具,用來說明業務處理過程、系統邊界內所包含的功能和系統中的數據流。
流程圖以圖形化的方式展示應用程序從數據輸入開始到獲得輸出為止的邏輯過程,描述處理過程的控制流。
兩者的區別主要包括:
(1) 數據流圖中的處理過程可并行;流程圖在某個時間點只能處于一個處理過程。
(2) 數據流圖展現系統的數據流;流程圖展現系統的控制流。
(3) 數據流圖展現全局的處理過程,過程之間遵循不同的計時標準;流程圖中處理過程遵循一致的計時標準。
(4) 數據流圖適用于系統分析中的邏輯建模階段;流程圖適用于系統設計中的物理建模階段。
本題項目組為了更好地對情報數據處理流程及其與外部角色的關聯進行建模,符合數據流圖的應用場景要求,因此,首先構建數據流圖以反映數據流向和系統邊界。
[問題2]
請分析指出上圖所示的數據流圖中存在的錯誤及其原因。
(1) “分類訓練”加工:只有輸入沒有輸出,產生數據黑洞;
(2) “分類處理”加工:只有輸出沒有輸入,無中生有;
(3) “規則文件”數據流:外部實體沒有經過加工處理,直接到數據存儲;
(4) “配置信息”數據流:外部實體之間沒有加工處理,存在直接數據流。
數據流圖中常見的錯誤分為兩種類型:
一類是語法錯誤,包括外部實體之間、數據存儲之間或外部實體與數據存儲之間不經過加工而存在直接數據流;
另一類是邏輯錯誤,包括數據黑洞(只有輸入沒有產生輸出)、灰洞(輸入不足以產生輸出)和無輸入。
對于復雜系統,一般采用分層數據流圖逐步細化系統的內部處理邏輯。0層數據流圖是1層數據流圖更高級別的抽象。
“分類訓練”和“分類處理”加工屬于內部加工,
“分類規則”數據流屬于內部數據流,抽象為“情報分類子系統”加工。
“樣本數據”、“規則文件”和“配置信息”為輸入數據流;
“分類結果”為輸出數據流。
[問題3]
高質量的數據流圖是可讀的、內部一致的并能夠準確表示系統需求。請用300字以內文字說明在設計高質量的數據流圖時應考慮的三個原則。
(1) 復雜性最小化原則。DFD分層結構就是把信息劃分為小的且相對獨立的一大批子集例子,這樣就可以單獨考查每一個DFD。如果要了解某個過程更加詳細的信息,可以跳轉到該過程的下一層;如果要知道一個DFD如何與其他DFD相關聯,跳轉到上一層的DFD進行考查。
(2) 接口最小化原則。接口最小化是復雜性最小化的一種具體規則,在設計模型時,應使得模型中各個元素之間的接口數或連接數最小化。
(3) 數據流一致性原則。一個過程和它的過程分解在數據流內容中是否有差別 是否存在有數據流出但沒有相應的數據流入的加工 是否存在有數據流入但沒有相應的數據流出的加工。