安徽財經(jīng)大學管理科學與工程學院 汪 瑩 孫玉濤
軟件需求是指用戶在功能實現(xiàn)等方面的期望,開發(fā)人員根據(jù)用戶需求規(guī)劃系統(tǒng)功能模塊,從而進行可行性分析等后續(xù)工作。通俗地說,就是明確開發(fā)什么,了解所開發(fā)軟件需要做到哪些以滿足用戶需求。優(yōu)秀的需求分析應當具有完整性、一致性以及可追溯性的特點。完整性是指該分析幾乎完全概括了客戶所需的功能需求、客戶需求和業(yè)務(wù)需求,把各方面因素都考慮到需求分析中;一致性是指業(yè)務(wù)需求與功能需求相一致,客戶需求與業(yè)務(wù)需求相一致;可追溯性則要求所有的需求都是可以追究的,不能憑空設(shè)想,要有據(jù)可依。
需求分析還要應用圖形工具,主要包括數(shù)據(jù)字典、數(shù)據(jù)流圖、層次方框圖和Warnier圖等。
需求分析是軟件工程中的基礎(chǔ)環(huán)節(jié),是用戶與系統(tǒng)開發(fā)人員的交流工具,系統(tǒng)地描述了現(xiàn)實狀況,把現(xiàn)實問題轉(zhuǎn)化得易于管理。所以,需求分析是軟件開發(fā)的重要環(huán)節(jié)。良好的需求分析能夠有條不紊地引導后期開發(fā)工作,明確開發(fā)內(nèi)容;而缺漏的需求分析則會造成返工或重新分析,增加成本。
(1)用戶與系統(tǒng)開發(fā)人員的交流工具。用戶要表達出訴求,開發(fā)者要了解訴求,從而才能開發(fā)出真正滿足用戶需求的軟件系統(tǒng)。用戶通過需求分析向開發(fā)人員陳述所要求實現(xiàn)的諸多功能,開發(fā)人員則通過需求分析了解問題從而規(guī)劃系統(tǒng)。如果開發(fā)者不夠了解用戶需求,或者用戶不能完整表達自己的訴求,開發(fā)出來的系統(tǒng)則不能實現(xiàn)客戶需求,也就是失敗的系統(tǒng)。
(2)開發(fā)系統(tǒng)的基石。只有在獲取了完整詳細的用戶需求后深入了解將要開發(fā)的系統(tǒng)的具體功能,才能進行編碼、測試和維護的一系列工作?;焕蝿t不成樓,在沒有進行詳細的需求分析的情況下,開發(fā)者就相當于走在錯誤的道路上,最終是不能達成實現(xiàn)功能的目的的。只有將需求分析做好,才能進行后續(xù)工作,否則將導致返工或開發(fā)失敗。
完整準確地完成需求分析工作應當從三個層次入手,即業(yè)務(wù)需求、用戶需求和功能需求,同時,。業(yè)務(wù)需求反映了組織機構(gòu)或用戶對軟件系統(tǒng)、軟件產(chǎn)品高層次的目標要求。用戶需求文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù)。功能需求定義了開發(fā)人員必須實現(xiàn)的軟件功能,是的用戶能完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。
需求分析應當考慮到每一位最終軟件的使用者要求,避免各種遺漏造成的修補甚至是重新分析而增大的成本代價,因此每進行一項工作都要保留詳細文檔。
(1)整理問題。從用戶的各個方面考慮,將問題收集整理出來,方便下一步工作;
(2)走訪詢問。根據(jù)所整理出來的問題,和所要開發(fā)軟件涉及的部門、機構(gòu)的人員進行交流溝通,從而更改補充需求;
(3)優(yōu)化需求。根據(jù)詳細的調(diào)查走訪和溝通,整合需要實現(xiàn)的功能,結(jié)合數(shù)據(jù)庫、開發(fā)工具等開發(fā)所需軟件,進一步細化并優(yōu)化所需實現(xiàn)功能,提取出業(yè)務(wù)核心流程;
(4)建立概念模型,編寫詳細的《軟件需求規(guī)格說明書》。規(guī)格說明書一般包括說明書介紹、產(chǎn)品定義、產(chǎn)品的前景和功能描述、用戶類別描述、運行環(huán)境、外部接口描述、系統(tǒng)特征和其他非功能需求描述等。
軟件開發(fā)的每一個過程都會存在相應的風險,需求分析也一樣。這些風險主要表現(xiàn)為:
(1)無法獲取完整準確的信息。在實際開發(fā)過程中,一方面,用戶常常會不知如何表達他們的需求信息,對此我們應當與用戶進行反復溝通,理解用戶需求,更加細化第一步中所整理的問題,引導用戶思考,同時可以根據(jù)大致要求引用現(xiàn)有的類似案例或系統(tǒng),讓用戶在使用過程中發(fā)散思維發(fā)現(xiàn)問題;另一方面,由于日常工作緊湊或其他,被走訪的工作人員常常沒有多少時間或耐心應對我們的調(diào)查溝通,對此我們可以盡量采取調(diào)查問卷的形式,精簡問題以防占用過長時間,而對一些問卷無法展現(xiàn)的問題,我們再進行個別情況的詳細詢問;
(2)客戶要求變更??蛻敉鶗捎诳紤]不當而一再改變需求,或是給出模棱兩可的信息后隨時變更要求。這對于軟件開發(fā)工作是極為不利的,既影響進展又增加了成本。對此,我們應當對客戶的每個要求盡量做到最大程度的細化并進行詳細的審計考察以及確定;
(3)開發(fā)人員分析不夠充分。有些開發(fā)者對于系統(tǒng)不明確,無法挖掘出核心需求,或是時間不足導致分析不夠充分,更有缺乏相關(guān)業(yè)務(wù)知識或沒有耐心不夠重視等因素導致系統(tǒng)的需求分析不完善。對此,我們開發(fā)者要加強專業(yè)知識,提升職業(yè)素養(yǎng),重視需求分析工作。
需求分析是軟件工程的第一步,也是至關(guān)重要的一步。完整準確的需求分析是編碼、測試和維護系統(tǒng)的保證。進行需求分析要從客戶和開發(fā)工具兩個角度出發(fā)。從客戶角度來看,盡量滿足客戶需求并最大程度地挖掘出潛在和長遠需求是開發(fā)者的基本任務(wù)。從開發(fā)工具的角度來看,滿足需求的同時要兼顧開發(fā)工具如何實現(xiàn)功能,以便更好地設(shè)計模塊和界面。需求分析同時也要求開發(fā)人員具有相應的專業(yè)知識和職業(yè)素養(yǎng),在與客戶溝通時能夠保持耐心和細心,從而獲得更為完整準確的信息。
需求分析的重要性可見一斑,風險性也是并存的。降低風險需要開發(fā)人員耐心的溝通和細心的整理審核,只有在客戶與開發(fā)人員共同協(xié)作下,做出合理的可行的需求分析,才有可能開發(fā)出具有價值的系統(tǒng)。
[1]張海藩.軟件工程[M].清華大學出版社.
[2]王立福,孫艷春,劉學洋.軟件工程[M].北京大學出版社,2009:10.
[3]鄭人杰,馬素霞,殷人昆.軟件工程概論[M].機械工業(yè)出版社,2010:3.
[4]Roger S.Pressman.軟件工程:實踐者的研究方法[M].機械工業(yè)出版社,2010:10.