軟件開發(fā)工作是IT行業(yè)中的重頭戲,軟件需求分析是軟件開發(fā)的出發(fā)點(diǎn),為有效的需求管理提供了必要的前提,為設(shè)計(jì)起到指導(dǎo)性作用,同時(shí)還有助于預(yù)測(cè)銷售和收益,所以軟件需求分析在軟件開發(fā)過程中起著非常重要的作用。
一、需求分析的要求
需求分析必須能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。數(shù)據(jù)域應(yīng)包括數(shù)據(jù)流、數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)流式數(shù)據(jù)通過系統(tǒng)時(shí)的變化方式,對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換就是程序的功能或子功能,兩個(gè)轉(zhuǎn)換之間的數(shù)據(jù)傳遞確定了功能間的接口;數(shù)據(jù)內(nèi)容就是數(shù)據(jù)元素,數(shù)據(jù)元素由多個(gè)數(shù)據(jù)項(xiàng)組成,如在學(xué)校的學(xué)生管理信息系統(tǒng)中,“學(xué)生”字段有多個(gè)數(shù)據(jù)項(xiàng),包括學(xué)號(hào)、姓名、性別、出生日期、成績(jī)等。數(shù)據(jù)結(jié)構(gòu)是帶一種或多種關(guān)系的數(shù)據(jù)元素的集合。
需求分析必須按自頂向下、逐層分解的方式對(duì)問題進(jìn)行分解和不斷細(xì)化。軟件的功能域和信息域都能做進(jìn)一步的分解,可以是同一層次上的橫向分解,也可以是多層次上的縱向分解。
需求分析給出系統(tǒng)的邏輯模型和物理模型。邏輯模型給出軟件要達(dá)到的功能和要處理的數(shù)據(jù)之間的關(guān)系;物理模型給出處理功能和數(shù)據(jù)結(jié)構(gòu)的實(shí)際表示形式。
二、需求調(diào)研
在做需求時(shí),分析人員和客戶必須達(dá)到和諧的交流,融洽的溝通。通常采用以下幾種調(diào)研方法:
1.會(huì)談、詢問:圍繞軟件目標(biāo)提出具體問題;
2.發(fā)放調(diào)查表;
3.收集分析客戶使用的各種表格、有關(guān)工作責(zé)任、工作流程、工作規(guī)范、相關(guān)數(shù)據(jù)標(biāo)準(zhǔn)、業(yè)務(wù)標(biāo)準(zhǔn)的各種文字資料;
4.收集同類相關(guān)產(chǎn)品的宣傳資料、技術(shù)資料、演示程序或軟件程序;
5.情景分析:利用情景分析誘導(dǎo)用戶能夠把需求告知分析員;
6.可視化方法:結(jié)合情景分析,利用畫用戶界面圖、業(yè)務(wù)流程圖、功能結(jié)構(gòu)圖、時(shí)序圖等圖形與客戶進(jìn)行討論。
一般分為規(guī)劃階段和業(yè)務(wù)領(lǐng)域分析階段:
在規(guī)劃階段,第一步要構(gòu)建高層次的企業(yè)模型,包括:調(diào)查組織結(jié)構(gòu)、建立組織關(guān)系層次圖;調(diào)查企業(yè)的任務(wù)、目標(biāo)、戰(zhàn)略重點(diǎn)和關(guān)鍵成功因素并予以分類;識(shí)別每個(gè)目標(biāo)和關(guān)鍵成功因素所需的信息;給出每個(gè)目標(biāo)完成的度量標(biāo)準(zhǔn);分析信息技術(shù)對(duì)企業(yè)業(yè)務(wù)的潛在影響;建立高層次企業(yè)模型;與企業(yè)中高層管理人員討論,對(duì)所得信息和分析進(jìn)行補(bǔ)充和確認(rèn)。第二步對(duì)功能進(jìn)行分解,具體是輸出功能層次圖、功能關(guān)系圖、功能/組織矩陣;第三步進(jìn)行實(shí)體分析,主要是輸出高層實(shí)體關(guān)系圖、實(shí)體類/信息需求矩陣、業(yè)務(wù)功能/實(shí)體類矩陣。第四步評(píng)估企業(yè)當(dāng)前環(huán)境。第五步識(shí)別和確定預(yù)期的數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)系統(tǒng),建立業(yè)務(wù)系統(tǒng)的結(jié)構(gòu)圖,確定和記錄業(yè)務(wù)領(lǐng)域。
在業(yè)務(wù)領(lǐng)域分析階段,第一步確定業(yè)務(wù)范圍、建立組織、制訂計(jì)劃;第二步進(jìn)行數(shù)據(jù)分析、建立詳細(xì)的數(shù)據(jù)模型,即詳細(xì)的實(shí)體關(guān)系圖;第三步業(yè)務(wù)活動(dòng)分析,包括分析業(yè)務(wù)過程細(xì)節(jié)、分解業(yè)務(wù)過程、分析過程間的依賴關(guān)系、分析業(yè)務(wù)交互作用、建立業(yè)務(wù)活動(dòng)模型;第四步現(xiàn)有系統(tǒng)分析,具體指操作程序分解表、數(shù)據(jù)流圖、用戶感興趣的字段集;第五步業(yè)務(wù)領(lǐng)域模型的確認(rèn),包括完整性、正確性、長(zhǎng)效性。
在做需求時(shí)不僅要求分析人員要有很強(qiáng)的溝通能力、語言表達(dá)能力,還要有相應(yīng)的調(diào)研策略。首先確定用戶的軟件開發(fā)目標(biāo),確定系統(tǒng)基本范圍,然后圍繞這一目標(biāo),確定要訪問的部門和人員,要了解的業(yè)務(wù),以業(yè)務(wù)為主線,搞清每個(gè)業(yè)務(wù)的每個(gè)環(huán)節(jié)的流程關(guān)系、涉及部門、輸入輸出項(xiàng);以數(shù)據(jù)為主線,搞清數(shù)據(jù)采集方式、數(shù)據(jù)流向、數(shù)據(jù)之間的內(nèi)在聯(lián)系;搞清哪些業(yè)務(wù)或數(shù)據(jù)是已建系統(tǒng)的,它們和新系統(tǒng)的關(guān)系是銜接還是替換;應(yīng)思考是否有新技術(shù)可以改進(jìn)現(xiàn)有工作,用戶提出的需求用現(xiàn)有技術(shù)能否實(shí)現(xiàn)。
三、需求分析過程
取得了需求之后,要對(duì)需求進(jìn)行分析,分析過程是:
第一,問題識(shí)別。
解決目標(biāo)系統(tǒng)做什么,做到什么程度。需求包括:功能、性能、環(huán)境、可靠性、安全性、保密性、用戶界面、資源使用、成本、進(jìn)度。同時(shí)建立需求調(diào)查分析所需的通信途徑。
第二,分析與綜合。
從數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)出發(fā),逐步細(xì)化所有的軟件功能,找出各元素之間的聯(lián)系、接口特性和設(shè)計(jì)上的限制,分析它們是否滿足功能要求并剔除不合理部分,綜合成系統(tǒng)解決方案,給出目標(biāo)系統(tǒng)的詳細(xì)邏輯模型。
常用的分析方法有面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法SA、描繪系統(tǒng)數(shù)據(jù)關(guān)系的實(shí)體關(guān)系圖E-R圖、面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法JSD、面向?qū)ο蠓治龅姆椒∣OA(主要用UML)。對(duì)于有動(dòng)態(tài)時(shí)序問題的軟件可以用形式化技術(shù),包括有窮狀態(tài)機(jī)FSM的狀態(tài)遷移(轉(zhuǎn)換)圖STD、時(shí)序圖、Petfi網(wǎng)。
上述每—種分析建模方法都有其優(yōu)勢(shì)和局限性,可以兼而有之。以不同角度分析,應(yīng)該避免陷入在軟件需求方法和模型中發(fā)生教條的思維模式和派系斗爭(zhēng)。一般來說結(jié)構(gòu)化方法用于中小規(guī)模軟件、面向?qū)ο蠓椒ㄓ糜诖笮蛙浖?/p>
結(jié)構(gòu)化方法分析步驟是:畫出數(shù)據(jù)流圖;設(shè)計(jì)數(shù)據(jù)流圖必須逐步求精;決定哪些部分需要計(jì)算機(jī)化和怎樣計(jì)算機(jī)化;描述數(shù)據(jù)流細(xì)節(jié),大型軟件可以使用數(shù)據(jù)字典描述所有數(shù)據(jù)元素;定義處理邏輯;定義數(shù)據(jù)存儲(chǔ),即定義每個(gè)存儲(chǔ)的確切內(nèi)容及其表示法;定義物理資源;確定輸入輸出規(guī)格說明;確定硬件所需有關(guān)數(shù)值;確定軟硬件接口和環(huán)境需求。
UML方法分析步驟是:調(diào)研、識(shí)別系統(tǒng)需求;分析問題領(lǐng)域:確定系統(tǒng)范圍和系統(tǒng)邊界、確定系統(tǒng)的約束、定義活動(dòng)者、確定系統(tǒng)的綜合要求、確定系統(tǒng)的數(shù)據(jù)要求、建立USE CASE模型并繪制、繪制主要交互圖等;建立靜態(tài)結(jié)構(gòu)模型:對(duì)象類圖、數(shù)據(jù)庫模型、包圖;建立動(dòng)態(tài)行為模型:順序圖、協(xié)同圖、狀態(tài)圖、活動(dòng)圖;建立系統(tǒng)物理模型:組件圖、配置圖;
第三,編制需求分析文檔。
需求分析文檔便于用戶、分析人員和設(shè)計(jì)人員進(jìn)行理解和交流。用戶通過它可在分析階段即可初步判定目標(biāo)軟件能否滿足其原來的期望,設(shè)計(jì)人員將它作為設(shè)計(jì)的出發(fā)點(diǎn)。
第四,需求評(píng)審。
在將需求分析文檔提交給設(shè)計(jì)之前,必須進(jìn)行需求評(píng)審。一般以用戶、分析人員和設(shè)計(jì)人員共同參與的會(huì)議形式進(jìn)行,包括以下評(píng)審標(biāo)準(zhǔn):正確性、無歧異性、完全性、可驗(yàn)證性、一致性、可理解性、可修改性和可追蹤性。
四、需求管理
需求分析過程是一個(gè)由粗到細(xì)、漸進(jìn)明晰、持續(xù)完善的過程。在指導(dǎo)后面系統(tǒng)設(shè)計(jì)和編碼階段時(shí)都應(yīng)當(dāng)不斷完善修改需求文檔,因此需求管理非常重要。
需求管理包括在工程進(jìn)展過程中維持需求約定集成型和精確性的所有活動(dòng),它是CMM模型二級(jí)中的首要KPA(關(guān)鍵過程域)。這些活動(dòng)包括:定義需求基線(需求文檔的主體);評(píng)審提出的需求變更申請(qǐng)、評(píng)估每項(xiàng)變更可能的影響,從而決定是否實(shí)施變更;以一種可控的方式將需求變更融入到項(xiàng)目中;使當(dāng)前的項(xiàng)目計(jì)劃與需求保持一致;分析變更所產(chǎn)生的影響并在此基礎(chǔ)上協(xié)商出新的約定;使每項(xiàng)需求都能與其對(duì)應(yīng)的設(shè)計(jì)、源代碼和測(cè)試用例聯(lián)系起來以實(shí)現(xiàn)跟蹤;在整個(gè)項(xiàng)目過程中跟蹤需求狀態(tài)及其變更情況。
五、總結(jié)
只有需求分析做好了,才對(duì)下一步的設(shè)計(jì)階段工作真正起到指導(dǎo)性作用,只有對(duì)需求管理好了,才能增強(qiáng)軟件的維護(hù)性等。
(作者單位:臨沂師范學(xué)院信息學(xué)院)