軟件需求分析--結構化分析(SA)方法

結構化開發方法(Structured Developing Method)是現有的軟件開發方法中最成熟,應用最廣泛的方法,主要特點是快速、自然和方便。結構化開發方法由結構化分析方法(SA法)、結構化設計方法(SD 法)及結構化程序設計方法(SP 法)構成的。

結構化分析(Structured Analysis,簡稱SA 法)方法是面向數據流的需求分析方法,是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出和發展,並得到廣泛的應用。它適合於分析大型的數據處理系統,特別是企事業管理系統。

SA 法也是一種建模的活動,主要是根據軟件內部的數據傳遞、變換關係,自頂向下逐層分解,描繪出滿足功能要求的軟件模型。

1 SA 法概述

1.SA 法的基本思想

結構化分析(Structured Analysis,簡稱SA 法)是面向數據流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和發展,並得到廣泛的應用。

結構化分析方法的基本思想是“分解”和“抽象”。

分解:是指對於一個複雜的系統,爲了將複雜性降低到可以掌握的程度,可以把大問題分解成若干小問題,然後分別解決。

圖4 是自頂向下逐層分解的示意圖。頂層抽象地描述了整個系統,底層具體地畫出了系統的每一個細節,而中間層是從抽象到具體的逐層過渡。

抽象:分解可以分層進行,即先考慮問題最本質的屬性,暫把細節略去,以後再逐層添加細節,直至涉及到最詳細的內容,這種用最本質的屬性表示一個自系統的方法就是“抽象”。

2.SA 法的步驟

⑴建立當前系統的“具體模型”;

系統的“具體模型”就是現實環境的忠實寫照,即將當前系統用DFD 圖描述出來。這樣的表達與當前系統完全對應,因此用戶容易理解。

⑵抽象出當前系統的邏輯模型;

分析系統的“具體模型”,抽象出其本質的因素,排除次要因素,獲得用DFD 圖描述的當前系統的“邏輯模型”。

⑶建立目標系統的邏輯模型;

分析目標系統與當前系統邏輯上的差別,從而進一步明確目標系統“做什麼”,建立目標系統的“邏輯模型”(修改後的DFD 圖)。

⑷爲了對目標系統作完整的描述,還需要考慮人機界面和其它一些問題。

3.SA 法的描述工具

⑴ 分層的數據流圖

⑵ 數據詞典

⑶ 描述加工邏輯的結構化語言、判定表或判定樹。

2 數據流圖

數據流圖(Data Flow Diagram,簡稱DFD)是描述系統中數據流程的圖形工具,它標識了一個系統的邏輯輸入和邏輯輸出,以及把邏輯輸入轉換邏輯輸出所需的加工處理。

1.數據流圖的圖符數據流圖有以下4 種基本圖形符號:

箭頭表示數據流,圓或橢圓表示加工。雙槓或者單槓表示數據存儲,矩形框表示數據的源點或終點,即外部實體。

數據流 是數據在系統內傳播的路徑,由一組成固定的數據項組成。除了與數據存儲(文件)之間的數據流不用命名外,其餘數據流都應該用名詞或名詞短語命名。數據流可以從加工流向加工,也可以從加工流向文件或從文件流向加工,也可以從源點流向加工或從加工流向終點。

加工 也稱爲數據處理,它對數據流進行某些操作或變換。每個加工也要有名字,通常是動詞短語,簡明地描述完成什麼加工。在分層的數據流圖中,加工還應有編號。

數據存儲 指暫時保存的數據,它可以是數據庫文件或任何形式的數據組織。流向數據存儲的數據流可理解爲寫入文件,或查詢文件,從數據存儲流出的數據可理解爲從文件讀數據或得到查詢結果。

數據源點和終點 是軟件系統外部環境中的實體(包括人員、組織或其他軟件系統),統稱爲外部實體。一般只出現在數據流圖的頂層圖中。

還有一些輔助的圖例:

例1:畫出圖書預定系統的DFD 圖。現有一圖書預定系統,接收由顧客發來的訂單,並對訂單進行驗證,驗證過程是根據圖書目錄檢查訂單的正確性,同時根據顧客檔案確定是新顧客還是老顧客,是否有信譽。經過驗證的正確訂單,暫存放在待處理的訂單文件中。對訂單進行成批處理,根據出版社檔案,將訂單按照出版社進行分類彙總,並保存訂單存根,然後將彙總訂單發往各出版社。

畫圖步驟是:

 ⑴ 首先確定外部實體(顧客、出版社)及輸入、輸出數據流(訂單、出版社訂單)。
 ⑵ 再分解頂層的加工(驗證訂單、彙總訂單)。
 ⑶ 確定所使用的文件(圖書目錄文件、顧客檔案等5 個文件)。
 ⑷ 用數據流將各部分連接起來,形成數據封閉。

特別要注意的是:數據流圖不是傳統的流程圖或框圖,數據流也不是控制流。數據流圖是從數據的角度來描述一個系統,而框圖則是從對數據進行加工的工作人員的角度來描述系統。數據流圖中的箭頭是數據流,而框圖中的箭頭則是控制流,控制流表達的是程序執行的次序。

下圖是培訓中心管理系統的數據流圖,由於只有一層,因此分解的加工較多不易理解,而且如果其中某個加工較複雜,例如編號爲3 的加工“付款”和編號爲7 的加工“複審”仍很複雜,一時難以理解,如果不繼續分解下去,直到每個加工都足夠簡單易於理解爲止,則會影響需求分析結果的可讀性。

1.畫分層DFD 圖的方法

如圖2.8 所示,如果系統規模較大,僅用一個DFD 圖難以描述,會使得系統變得複雜,且難以理解。爲了降低系統的複雜性,採取“逐層分解”的技術,畫分層的DFD 圖。

畫分層DFD 圖的一般原則是:“先全局後局部,先整體後細節,先抽象後具體”。通常將這種分層的DFD 圖,分爲頂層、中間層、底層。頂層圖說明了系統的邊界,即系統的輸入和輸出數據流,頂層圖只有一張。底層圖由一些不能再分解的加工組成,這些加工都已足夠簡單,稱爲基本加工。在頂層和底層之間的是中間層。中間層的數據流圖描述了某個加工的分解,而它的組成部分又要進一步分解。 畫各層DFD 圖時,應“由外向內”。

畫分層DFD 圖的具體步驟:
 ⑴ 先確定系統範圍,畫出頂層的DFD 圖。
 ⑵ 逐層分解頂層DFD 圖,獲得若干中間層DFD 圖。
 ⑶ 畫出底層的DFD 圖。

在畫分層數據流圖時,首先遇到的問題就是應該如何分解?不能夠一下子把一個加工分解成它所有的基本加工,一張圖中畫出過多的加工是使人難以理解的,但是如果每次只是將一個加工分解成兩個或三個加工,又可能需要分解過多的層次,也會影響系統的可理解性。

一個加工每次分解成多少個子加工才合適呢?

根據經驗“最多不要超過7 個”。統計結果證明,人們能有效地同時處理7 個或7 個以下的問題,但當問題多於7 個時,處理效果就會下降。當然也不能機械地應用,關鍵是要使數據流圖易於理解。

同時還有幾條原則可供參考:

  • 分解應自然,概念上要合理、清晰。
  • 只要不影響數據流圖的“易理解性”,可以適當地多分解成幾部分,這樣分層圖的層數就可少些。

一般來說,在上層可以分解得快些,而在中、下層則應分解得慢些,因爲上層是一些綜合性的描述,“易理解性”相對地說不太重要。

下節我們以一個實例來說明畫分層DFD 圖的方法。

2 分層DFD 圖的改進

分層數據流圖是一種比較嚴格又易於理解的描述方式,它的頂層描繪了系統的總貌,底層畫出了系統所有的細部,而中間層則給出了從抽象到具體的逐步過渡。

1.畫分層DFD 圖的基本原則

⑴.數據守恆與數據封閉原則

所謂數據守恆是指加工的輸入輸出數據流是否匹配,即每一個加工既有輸入數據流又有輸出數據流。或者說一個加工至少有一個輸入數據流,一個輸出數據流。

⑵加工分解的原則

    自然性:概念上合理、清晰;
 均勻性:理想的分解是將一個問題分解成大小均勻的幾個部分;
 分解度:一般每一個加工每次分解最多不要超過7個子加工,應分解到基本加工爲止。

⑶子圖與父圖的“平衡”父圖中某個加工的輸入輸出數據流應該同相應的子圖的輸入輸出相同(相對應),分層數據流圖的這種特點稱爲子圖與父圖“平衡”。

例1 考察下圖中子父圖的平衡

顯然,圖2.13 中子圖與父圖不平衡。子圖是父圖中加工2 的分解,加工2 有輸入數據流R 和M,輸出數據流T,而子圖則只有一個輸入數據流N,卻有兩個輸出數據流T 與S。圖2.14 中,子圖是父圖中加工4 的分解,雖然表面上加工4 只有一個輸入數據流“訂貨單”,而子圖卻有三個輸入數據流,但是如果“訂貨單”是由“客戶”、“帳號”和“數量”三部分組成,即有如下數據條目:訂貨單 =客戶+帳號+數量(2.2.5 數據詞典),則子、父圖平衡。

⑷合理使用文件

當文件作爲某些加工之間的交界面時,文件必須畫出來,一旦文件作爲數據流圖中的一個獨立成份畫出來了,那麼它同其它成份之間的聯繫也應同時表達出來。

理解一個問題總要經過從不正確到正確,從不確切到確切的過程,需求分析的過程總是要不斷反覆的,一次就成功的可能性是很小的,對複雜的系統尤其如此,因此,系統分析員應隨時準備對數據流圖進行修改和完善,與用戶取得共識,獲得無二義性的需求,才能獲得更正確清晰的需求說明,使得設計、編程等階段能夠順利進行,這樣做是必須和值得的。

3.分層DFD 圖的改進

DFD 圖必須經過反覆修改,才能獲得最終的目標系統的邏輯(目標系統的DFD 圖)。改進的原則與畫分層DFD 圖的基本原則是一致的,可從以下方面考慮DFD 圖的改進:

⑴ 檢查數據流的正確性
 ① 數據守恆
 ② 子圖、父圖的平衡
 ③ 文件使用是否合理。特別注意輸入/出文件的數據流。

⑵ 改進DFD 圖的易理解性
 ① 簡化加工之間的聯繫(加工間的數據流越少,獨立性越強,易理解性越好)。
 ② 改進分解的均勻性。
 ③ 適當命名(各成分名稱無二義性,準確、具體)。

4.數據詞典

分層數據流圖只是表達了系統的“分解”,爲了完整地描述這個系統,還需藉助“數據詞典”(data dictionary)和“小說明”對圖中的每個數據和加工給出解釋。

對數據流圖中包含的所有元素的定義的集合構成了數據詞典。它有四類條目:數據流、數據項、文件及基本加工。在定義數據流或文件時,使用表2-1 給出的符號。將這些條目按照一定的規則組織起來,構成數據詞典。

1.數據流條目

給出了DFD 中數據流的定義,通常對數據流的簡單描述爲列出該數據流的各組成數據項。

例:數據流“乘客名單”由若干“乘客姓名”、“單位名”和“等級”組成,則詞典中的“乘客名單”條目是:
 乘客名單={乘客姓名+單位名+等級}
 又如:報名單=姓名+單位名+年齡+性別+課程名
 也可以對數據流進行較詳細的描述,如下例:
 例:某查詢系統中,有個名爲“查詢”的數據流,目前“查詢”有三種類型,即“顧客狀況查詢”、“存貨查詢”和“發票存根查詢”,預計至 1990 年底還將增加 3 至 4 種其他類型的查詢。系統每天約需處理 2 000 次查詢,每天上午 9:00—10:00 是查詢的高峯,此時約有1 000 次查詢。上述信息都是“用戶要求”的一部分,在分析階段應該認真收集,並記錄在詞典的有關條目中,所以“查詢”條目描述如下。

數據流名:查詢
 簡 述:系統處理的一個命令
 別 名:無
 組 成:[顧客狀況查詢|存貨查詢|發票存根查詢]
 數據量:2000 次/天
 峯 值:每天上午9:00—l0:00 有l000 次
 注 釋 : 至1990 年底還將增加3 至4 種查詢

2.文件條目

給出某個文件的定義,文件的定義通常是列出文件記錄的組成數據流,還可指出文件的組織方式。
 例:某銷售系統的訂單文件:
 訂單文件=訂單編號+顧客名稱+產品名稱+訂貨數量+交貨日期

3.數據項條目

給出某個數據單項的定義,通常是該數據項的值類型、允許值等。

例如:帳號= 00000 ~ 99999 ; 存款期=[ 1 | 3 | 5 ] (單位:年)4.加工條目加工條目就是“加工小說明”。由於“加工”是DFD 圖的重要組成部分,一般應單獨進行說明。

因此,數據詞典是對數據流圖中所包含的各種元素定義的集合。它對的4 類條目:數據流、數據項、文件及基本加工進行了描述,是對DFD 圖的補充。

 
發佈了30 篇原創文章 · 獲贊 1 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章