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