需求分析:開發(fā)人員準(zhǔn)確地理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的需求規(guī)格說明的過程。
它有以下幾難點(diǎn):
、 問題的復(fù)雜性。由用戶需求涉及的因素繁多引起,如運(yùn)行環(huán)境和系統(tǒng)功能
、 交流障礙。需求分析涉及人員較多,這些人具備不同的背景知識,處于不同角度,扮演不同角色,造成相互之間交流困難。
、 不完備性和不一致性。用戶對問題的陳述往往是不完備的,各方面的需求可能還存在矛盾,需求分析要消除矛盾,形成完備及一致的定義。
⑷ 需求易變性。
近幾年來已提出多種分析和說明方法,但都必須適用以下原則:
、 必須能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。數(shù)據(jù)域包括數(shù)據(jù)流(數(shù)據(jù)通過一個(gè)系統(tǒng)時(shí)的變化方式)數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu),功能域反映上述三方面的控制信息。
、 可以把一個(gè)復(fù)雜問題按功能進(jìn)行分解并可逐層細(xì)化。
⒊ 建模。可更好地理解軟件系統(tǒng)的信息,功能,行為。也是軟件設(shè)計(jì)的基礎(chǔ)。
需求分析的任務(wù):
、 問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環(huán)境需求,用戶界面需求。
、 分析與綜合,導(dǎo)出軟件的邏輯模型
、 編寫文檔:包括編寫“需求規(guī)格說明書”“初步用戶使用手冊”“確認(rèn)測試計(jì)劃”“修改完善軟件開發(fā)計(jì)劃”
結(jié)構(gòu)化分析:簡稱SA,面向數(shù)據(jù)流進(jìn)行數(shù)據(jù)分析的方法。采用自頂向下逐層分解的分析策略。頂層抽象地描述整個(gè)系統(tǒng),底層具體地畫出系統(tǒng)工程的每個(gè)細(xì)節(jié)。中間層則是從抽象到具體的過渡。使用數(shù)據(jù)流圖,數(shù)據(jù)字典,作為描述工具,使用結(jié)構(gòu)化語言,判定表,判定樹描述加工邏輯。
結(jié)構(gòu)化(SA)分析步驟:
⑴了解當(dāng)前系統(tǒng)的工作流程,獲得當(dāng)前系統(tǒng)的物理模型。
、瞥橄蟪霎(dāng)前系統(tǒng)的邏輯模型。
、墙⒛繕(biāo)系統(tǒng)的邏輯模型。
、茸鬟M(jìn)一步補(bǔ)充和優(yōu)化。
數(shù)據(jù)流圖(DFD)
以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過程。只反映系統(tǒng)必須完成的邏輯功能,是一種功能模型。
畫數(shù)據(jù)流圖的步驟:
⑴首先畫系統(tǒng)的輸入輸出,即先畫頂層數(shù)據(jù)流圖。頂層圖只包含一個(gè)加工,用以表示被開發(fā)的系統(tǒng)。
⑵畫系統(tǒng)內(nèi)部,即畫下層數(shù)據(jù)流圖。將層號從0號開始編號,采用自頂向下,由外向內(nèi)的原則。畫更下層數(shù)據(jù)流圖時(shí),則分解上層圖中的加工,一般沿著輸出入流的方向,凡數(shù)據(jù)流的組成或值發(fā)生變化的地方則設(shè)置一個(gè)加工,一直進(jìn)行到輸出數(shù)據(jù)流。如果加工的內(nèi)部還有數(shù)據(jù)流,則繼續(xù)分解,直到每個(gè)加工足夠簡單,不能再分解為止。不能分解的加工稱為基本加工。
⑶注意事項(xiàng):
、泵。不能使用缺乏具體含義的名字,加工名應(yīng)能反映出處理的功能。
、伯嫈(shù)據(jù)流而不是控制流。數(shù)據(jù)流名稱只能是名詞或名詞短語,整個(gè)圖中不反映加工的執(zhí)行順序。
、骋话悴划嬑镔|(zhì)流。
、疵總(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流,反映出此加工數(shù)據(jù)的來源與加工的結(jié)果 。
⒌編號。某個(gè)加工分解成加一張數(shù)據(jù)流圖時(shí),上層圖為父圖,下層圖為子圖。子圖應(yīng)編號,子圖上的所有加工也應(yīng)編號,子圖的編號應(yīng)與父圖的編號相對應(yīng)。
、陡笀D與子圖的平衡。子圖的輸入輸出數(shù)據(jù)流同父圖相應(yīng)加工的輸入輸出數(shù)據(jù)流必須一致
⒎局部數(shù)據(jù)存儲(chǔ)。當(dāng)某數(shù)據(jù)流圖書館中的數(shù)據(jù)存儲(chǔ)不是父圖中相外部接口,而只是本圖中某些加工之間的數(shù)據(jù)接口,則稱這些數(shù)據(jù)存儲(chǔ)為局部數(shù)據(jù)存儲(chǔ)。
、柑岣邤(shù)據(jù)流圖的易理解性。
為使數(shù)據(jù)流圖便于在計(jì)算機(jī)上輸入和輸出,給出了描述數(shù)據(jù)流圖的另一套圖形符號表示數(shù)據(jù)流,只能水平或垂直畫
數(shù)據(jù)字典(DD)用來定義數(shù)據(jù)庫流圖中的各個(gè)成分的具體含義。有以下四類條目:數(shù)據(jù)流,數(shù)據(jù)項(xiàng),數(shù)據(jù)存儲(chǔ),基本加工。
、睌(shù)據(jù)流條目,內(nèi)容及舉例如下:
數(shù)據(jù)流名稱:訂單
別名:無
簡述:顧客訂貨時(shí)填寫的項(xiàng)目
來源:顧客
去向:加工1“檢驗(yàn)訂單”
數(shù)據(jù)流量:1000份/每周(單位時(shí)間內(nèi)的傳輸次數(shù))
組成:編號+訂貨日期+顧客編號+地址+電話+銀行帳號+貨物名稱+規(guī)格+數(shù)量
、矓(shù)據(jù)存儲(chǔ)條目,內(nèi)空及舉例
數(shù)據(jù)存儲(chǔ)名稱:庫存記錄
別名:無
簡述:存放庫存所有可供貨物的信息
組成:貨物名稱+編號+生產(chǎn)廠家+單價(jià)+庫存量
組織方式:索引文件,以貨物編號為關(guān)鍵字
查詢要求:要求能立即查詢
、硵(shù)據(jù)條目,內(nèi)容及舉例
數(shù)據(jù)項(xiàng)名稱:貨物編號
別名:G-No,G-num,Goods-No
簡述:本公司所有貨物的編號
類型:字符串
長度:10
取值范圍及含義:
第一位:進(jìn)口/國產(chǎn)
第2-4位:類別
第5-7位:規(guī)格
第8-10位:品名編號
⒋加工條目,內(nèi)容及舉例
加工名:查閱庫存
編號:1﹒2
激發(fā)條件:接收到合格訂單時(shí)
優(yōu)先級:普通
輸入:合格合格訂單
輸出:可供貨訂單,缺貨訂單
加工邏輯:根據(jù)庫存記錄
IF 訂單項(xiàng)目數(shù)量<該項(xiàng)目庫存量臨界值
THEN 可供貨處理
ELSE 此訂單缺貨,登錄,待進(jìn)貨后再處理。
ENDIF
數(shù)據(jù)字典的實(shí)現(xiàn):
、攀止そⅲ簲(shù)據(jù)字典的內(nèi)容用卡片形式存放。
⑵利用計(jì)算機(jī)輔助建立并維護(hù)。
加工邏輯的描述:一般用結(jié)構(gòu)化語言,判定表,判定樹。
結(jié)構(gòu)化語言是介于自然語言和形式語言之間的一種半形式化語言。它的結(jié)構(gòu)可分里層和內(nèi)層。
、磐鈱樱河脕砻枋隹刂平Y(jié)構(gòu),采用順序,選擇,重復(fù)三種基本結(jié)構(gòu)。
、夙樞蚪Y(jié)構(gòu):是一組祈使語句,選擇語句,重復(fù)語句的順序排列
、谶x擇結(jié)構(gòu):一般用IF-THEN-ELASE-ENDIF,CASE-OF-ENDCASE等關(guān)鍵詞。
、壑貜(fù)結(jié)構(gòu):一般用DO-WHILE-ENDDO,REPEAT-UNTIL等關(guān)鍵詞。
、苾(nèi)層:一般采用祈使語句的自然語言短語,使用數(shù)據(jù)字典中的名詞和有限的自定義詞,其動(dòng)詞含義要具體,盡量不使用形容詞和副詞來修飾。
判定表由四個(gè)部分組成:條件定義條件取值的組合
動(dòng)作定義在各種取值的組合下應(yīng)執(zhí)行的動(dòng)作
例:加工邏輯描述為,如果申請者的年齡在21歲以下,要額外收費(fèi);如果申請者是21歲以上并是26歲以下的女性,適用于A類保險(xiǎn);如果申請者是26歲以下的已婚男性,或者是26歲以上的男性,適用于B類保險(xiǎn);如果申請者是21歲以下的女性或是26歲以下的單身C類保險(xiǎn)。附此之外的其他申請者都適用于A類保險(xiǎn)。
條件取值表
判定表能在什么條件下系統(tǒng)應(yīng)做什么動(dòng)作準(zhǔn)確無誤地表示出來,但不能描述循環(huán)的處理特性,循環(huán)處理還需結(jié)構(gòu)化語言。
判定樹,是判定表的變形,比判定表更直觀,更易于理解和使用。
下面的判定樹與所舉例的判定表等價(jià)。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |