結構化開發方法是現有軟件開發方法中最成熟、應用最廣泛的方法,其主要特點是快速、自然、方便。結構化開發方法由結構化方法(SA方法)、結構化設計方法(SD方法)和結構化編程方法(SP方法)組成。
結構化分析(Structured Analysis,簡稱SA方法)是壹種面向數據流的需求分析方法,由Yourdon、Constaintine和DeMarco於20世紀70年代末提出並發展,目前已得到廣泛應用。適用於分析大型數據處理系統,尤其是企業管理系統。
SA方法也是壹種建模活動,主要是根據軟件內部的數據傳遞和轉換關系,自頂向下逐層分解,刻畫出滿足功能需求的軟件模型。
1 SA方法概述
1.1 SA方法的基本思想
1.1.結構化分析(簡稱SA方法)是壹種面向數據流的需求分析方法,由Yourdon、Constaintine和DeMarco於20世紀70年代提出並發展,現已得到廣泛應用。
結構化方法的基本思想是“分解”和“抽象”。
分解:是指對於壹個復雜的系統,為了把復雜程度降低到可管理的程度,可以把壹個大問題分解成幾個小問題,然後分別解決。
圖4是自頂向下逐層分解的示意圖。頂層抽象描述整個系統,底層具體繪制系統的每壹個細節,中間層是從抽象到具體的過渡。
抽象:分解可以分層次進行,即先考慮問題最本質的屬性,細節暫時省略,再逐層添加細節,直到涉及到最細節的內容。這種用最本質的屬性來表達壹個自我系統的方法,就是“抽象”。
2.2的步驟。SA方法
(1)建立當前系統的“具體模型”;
系統的“具體模型”是真實環境的忠實寫照,即當前系統由DFD圖描述。這種表達方式完全對應當前系統,所以用戶很容易理解。
⑵抽象出當前系統的邏輯模型;
分析系統的“具體模型”,抽象其本質因素,排除次要因素,得到DFD圖描述的當前系統的“邏輯模型”。
⑶建立目標系統的邏輯模型;
分析目標系統與當前系統的邏輯差異,從而進壹步明確目標系統“做什麽”,建立目標系統的“邏輯模型”(修正的DFD圖)。
⑷為了完整地描述目標系統,需要考慮人機界面等問題。
3.3的描述工具。SA方法
(1)分層數據流圖
⑵數據字典
⑶描述加工邏輯的結構化語言、決策表或決策樹。
2數據流程圖
數據流圖(DFD)是描述系統中數據流的圖形工具,它標識系統的邏輯輸入和輸出以及將邏輯輸入轉換為邏輯輸出所需的處理。
1.數據流圖數據流圖的圖標有以下四個基本圖形符號:
箭頭表示數據流,圓圈或橢圓表示加工。平行條或水平條代表數據存儲,矩形框代表數據的來源或終點,即外部實體。
(1)數據流是數據在系統中傳播的路徑,由壹個固定的數據項組成。除了數據存儲(文件)和數據存儲之間的數據流之外,所有數據流都應該用名詞或名詞短語命名。數據流可以從處理流向處理,從處理流向文件或從文件流向處理,從源流向處理或從處理流向目的地。
⑵處理又稱數據處理,對數據流進行壹些操作或變換。每個過程還應該有壹個名稱,通常是壹個動詞短語,它簡明地描述了完成了什麽過程。在分層數據流圖中,處理過程也應該被編號。
⑶數據存儲是指臨時保存的數據,可以是數據庫文件,也可以是任何形式的數據組織。流向數據存儲的數據可以理解為寫入文件或查詢文件,流出數據存儲的數據可以理解為從文件中讀取數據或獲取查詢結果。
(4)數據源點和端點是軟件系統(包括人員、組織或其他軟件系統)外部環境中的實體,統稱為外部實體。壹般只出現在數據流圖的頂層圖中。
還有壹些輔助圖例:
例1:畫出圖書預訂系統的DFD圖。目前,圖書預訂系統接收來自客戶的訂單並驗證訂單。驗證過程是根據圖書目錄檢查訂單的正確性,同時根據客戶檔案確定是新客戶還是老客戶,是否有可信度。被驗證的正確訂單被臨時存儲在待處理的訂單文件中。批量處理訂單,根據出版社的文件對訂單進行分類匯總,保存訂單存根,然後將匯總後的訂單發送給出版社。
繪制步驟如下:
(1)首先確定外部實體(客戶、發布商)和輸入輸出數據流(訂單、發布商訂單)。
(2)然後分解頂層處理(驗證訂單、匯總訂單)。
⑶確定使用的文件(圖書目錄文件、客戶檔案等五種文件)。
(4)用數據流連接各部分,形成數據閉合。
需要註意的是,數據流圖不是傳統的流程圖或框圖,數據流也不是控制流。數據流圖從數據的角度描述壹個系統,而框圖從處理數據的工作者的角度描述系統。數據流圖中的箭頭是數據流,框圖中的箭頭是控制流,表示程序執行的順序。
下圖是培訓中心管理系統的數據流程圖。因為只有壹層,所以很難理解分解的過程。而且如果其中壹個流程比較復雜,比如用數字3的處理“付款”,用數字7的處理“審核”,還是很復雜的,壹時半會兒很難理解。如果分解沒有持續到每個過程簡單易懂,會影響需求分析結果的可讀性。
1.繪制分層DFD圖的方法
如圖2.8所示,如果系統很大,很難只用壹個DFD圖來描述,這會使系統變得復雜,難以理解。為了降低系統的復雜度,采用了“逐層分解”的技術來繪制分層的DFD圖。
繪制層次DFD圖的總原則是:“全局優先、局部優先、全局優先、細節優先、抽象優先、具體優先”。這種分層的DFD圖通常分為頂層、中間層和底層。頂層圖說明了系統的邊界,也就是系統的輸入輸出數據流,頂層圖只有壹個。下圖由壹些不能再分解的流程組成。這些過程足夠簡單,被稱為基本過程。頂部和底部之間是中間層。中間層的數據流圖描述了壹個流程的分解,其組件需要進壹步分解。畫各層的DFD圖時,應該是“由外向內”。
繪制分層DFD圖的具體步驟:
(1)首先確定系統範圍,畫出頂部DFD圖。
⑵將頂部的DFD圖逐層分解,得到若幹個中間的DFD圖。
⑶畫出底部DFD圖。
壹般來說,在上層可以分解得快壹些,在中下層分解得慢壹些,因為上層是綜合描述,“可懂度”相對不那麽重要。
在下壹節中,我們用壹個例子來說明繪制分層DFD圖的方法。
2分級DFD圖的改進
層次數據流圖是壹種嚴格且易於理解的描述方法。它的頂層描繪了系統的大致外觀,底層繪制了系統的所有細節,中間層給出了從抽象到具體的逐漸過渡。
1.繪制分層DFD圖的基本原則
(1).數據保存和數據封閉的原則
所謂數據守恒,是指加工的輸入和輸出數據流是否匹配,即每次加工既有輸入數據流又有輸出數據流。或者壹個過程具有至少壹個輸入數據流和壹個輸出數據流。
(2)加工分解的原則
自然:合理,概念清晰;
均勻性:理想的分解是將壹個問題分解成大小均勻的幾個部分;
分解程度:壹般每個加工不超過7個子加工,要分解到基本加工。
⑶子圖和父圖之間的平衡在父圖中,某個進程的輸入輸出數據流應該和對應子圖的輸入輸出相同。層次數據流圖的這壹特征被稱為子圖和父圖之間的“平衡”。
(4)合理使用文件
當文件作為某些進程之間的接口時,必須繪制文件。壹旦文件在數據流圖中被畫成壹個獨立的組件,它與其他組件的關系也要同時表達出來。
理解壹個問題總是要經歷從不正確到正確,從精確到精確的過程,需求分析的過程也總是不斷重復,壹次成功的可能性很小,尤其是復雜系統。因此,系統分析師要做好隨時修改和完善數據流圖的準備,從用戶那裏獲取模棱兩可的知識,獲得更加正確清晰的需求,這樣設計、編程等階段才能順利進行。
3.分層DFD圖的改進
DFD圖必須反復修改才能得到目標系統的最終邏輯(目標系統的DFD圖)。改進的原則與繪制分層DFD圖的基本原則是壹致的,DFD圖的改進可以從以下幾個方面考慮:
(1)檢查數據流的正確性。
①數據保存
②子圖和父圖之間的平衡
③文件使用是否合理。請特別註意輸入/輸出文件的數據流。
⑵提高DFD圖的可理解性。
①簡化流程之間的聯系(流程之間數據流越少,獨立性越強,可理解性越好)。
②提高分解的均勻性。
③恰當的命名(各部件的名稱明確、準確、具體)。