需求分析模型
分類
面向過程分析模型
基本思想是用系統工程的思想和工程化的方法,根據用戶至上的原則,自始自終按照結構化、模塊化,自頂向下地對系統進行分析與設計。
面向對象分析模型
由5個層次(主題層、對象類層、結構層、屬性層和服務層)和5個活動(標識對象類、標識結構、定義主題、定義屬性和定義服務)組成。
分析模型描述工具
面向過程的分析建模工具總覽
- 數據流圖DFD——加工規約
- 實體——關系圖ERD——數據對象描述(PSPEC)
- 狀態變遷圖STD——控制規約(CSPEC)
面向過程分析模型—結構化分析方法
- 面向數據流進行需求分析的方法
- 結構化分析方法適合於數據處理類型軟件的需求分析
- 具體來說,結構化分析方法就是用抽象模型的概念,按照軟件內部數據傳遞、變換的關系,自頂向下逐層分解,直到找到滿足功能要求的所有可實現的軟件為止
功能模型——數據流圖DFD
主要圖形元素:
數據流圖圖示例
數據流圖的層次結構
頂層:就是0層,是開發系統的總覽。
向下一層,就是上一層的細化。
底層流圖就是不能再分解的了。
(1) 加工
表示對數據進行的操作, 如“處理選課單” 、“產生發票”等
加工的編號,說明這個加工在層次分解中的位置 (分層DFD)
頂層是0層,由上向下是依次詳細的解釋。
加工的命名
1)頂層的加工名就是整個系統項目的名字
2)盡量最好使用動賓詞組,也可用主謂詞組
3)不要使用空洞的動詞
(2) 外部實體(數據源點/終點)
-
位於系統之外的信息提供者或使用者,稱為外部實體。即存在於系統之外的人員或組織。如“學務科”等
-
說明數據輸入的源點(數據源)或數據輸出的終點(數據終點)
-
起到更好的理解作用,但不是系統中的事物
(3) 數據流
表示數據和數據流向, 由一組固定成分的數據組成 如“選課單”由“學號、姓名、課程編號、課程名”等成分組成
注意流向
數據流可從加工流向加工,也可在加工與數據存儲或外部項之間流動;兩個加工之間可有多股數據流
數據流的命名原則:
§1)用名詞,不要使用意義空洞的名詞
§2)盡量使用現實系統已有名字
數據流與數據加工之間的關系
有這個小“火”標志的就好似一個“並”,不然就默認的是兩個“或”。“⚪ + ”就是“不可能同時”
畫數據流時需注意的問題
- 不要把控制流作為數據流
如:下圖中讀下張卡屬於控制流,不應畫出。
- 不要標出激發條件
(4) 數據存儲
表示需要保存的數據流向, 如“ 學生檔案”、“課程設置”等
數據存儲與加工的方向一致、
分層數據流程圖中,數據存儲一般局限在某一層或某幾層
命名方法與數據流相似
幾種錯誤
(1)
改正:每個加工至少有一個輸入數據流和一個輸出數據流
(2)
改正:數據流必須要么從某個加工流出、要么流入某個加工,而不能直接從外部項流向數據存儲等等。
數據流圖示例:倉庫管理與訂貨系統
某倉庫業務的工作過程如下:
-
企業職工填寫領料單,經主管審查簽名批准后,職工到倉庫領取零件。
-
倉庫保管員檢查領料單是否符合審批手續,填寫是否正確等,不正確的領料單退還職工,填寫正確的領料單則辦理領料手續,進行登記,修改庫存量並給予零件。
-
當某種零件的庫存量低於事先規定的臨界值時,登記需要采購零件的訂貨信息,為采購部門提供一張訂貨單。要求用計算機輔助領料工作和編制訂貨單。
倉庫業務系統數據流圖
第一步:繪制數據流圖頂層
-
首先確定系統的輸入和輸出,畫出頂層數據流圖。
-
經過分析,主要數據流輸入的源點和輸出終點是職工和倉庫管理員、采購員。
-
之間的數據流:領料單、登記單、訂貨單
這個數據流圖只是一個高層的系統邏輯模型,它反映了目標系統要實現的功能
第二步:繪制數據流圖1層
從輸入端開始,根據倉庫業務工作流程,畫出數據流流經的各加工框,逐步畫到輸出端,得到1層數據流圖。
第三步:繪制數據流圖2層——細化每一個加工框
(1)細化
-->
(2)細化
-->
第四步:合成
第五步:檢查與調整數據流圖
在分析過程中,由於每個人的經驗和思路不盡相同,對數據流圖的分解方案可以有多種形式,不是唯一的。
對每一張數據流圖進行檢查,如果太不均衡,就需要進行調整,盡量使分解后的各個軟件子系統的復雜性得到均衡。
檢查數據流圖的原則
1)數據流圖上所有圖形符號只限於前述四種基本圖形元素
2)數據流圖的主圖必須包括前述四種基本元素,缺一不可
3)數據流圖的主圖上的數據流必須封閉在外部實體之間
4)每個加工至少有一個輸入數據流和一個輸出數據流
5)在數據流圖中,需按層給加工框編號。編號表明該加工所處層次及上下層的親子關系
6)規定任何一個數據流子圖必須與它上一層的一個加工對應,兩者的輸入數據流和輸出數據流必須一致。此即父圖與子圖的平衡
7)圖上每個元素都必須有名字
8)數據流圖中不可夾帶控制流!!!【最重要】
9)初畫時可以忽略瑣碎的細節,以集中精力於主要數據流
數據流圖的改進:
檢查正確性 —— 提高易理解性 —— 重新分解
(1) 檢查DFD的正確性
-
數據守恆
-
數據存儲的使用
-
父圖和子圖的平衡
數據守恆
數據不守恆的情況有兩種:要么多了要么少了。
1)某個加工輸出的數據並無相應的數據來源,可能是某些數據流被遺漏了。
2)一個加工的輸入並沒有用到,這不一定是錯誤。可與用戶進一步討論,是否屬於多余的數據流。
數據存儲的使用
判斷:是否存在“只讀不寫”或“只寫不讀”的數據存儲 (注意在所有的DFD中檢查)
如下,對於YY,只有寫入,沒有流出,這是錯誤的
(2) 提高易理解性
-
簡化加工之間的聯系
-
注意分解的均勻
-
適當地命名
簡化加工之間的聯系
應盡量減少加工之間輸入輸出數據流的數目。因為加工之間的數據流越少,各個加工的功能就越相對獨立。
例: 加工1和2之間的太多數據流。
分解的均勻
一張圖中,如果某些加工已是基本加工(細節),而另一些加工還可進一步分解成三、四層,則應考慮重新分解。
適當命名
如果難以為DFD圖中的成分(數據流、加工等)命名,往往說明分解不當, 可考慮重新分解。
(3) 重新分解
在畫第N層時意識到在第N-1層或第N-2層所犯的錯誤,此時就需要對第N-1層、第N-2層作重新分解。
重新分解的做法
1)把需要重新分解的某張圖的所有子圖連接成一張。
- 重新連接起來