需求開發(fā)與管理是軟件項目中一項十分重要的工作,據(jù)調查顯示在眾多失敗的軟件項目中,由于需求原因導致的約占到45%,因此,需求工作將對軟件項目能否最終實現(xiàn)產生至關重要的影響。雖然如此,在項目開發(fā)工作中,很多人對需求的認識還遠遠不夠,從本人參與或接觸到的一些項目來看,小到幾十萬元,大到上億元的軟件項目的需求都或多多少的存在問題,有的是開發(fā)者本身不重視原因、有的是技術原因、有的是人員組織原因、有的是溝通原因、有的是機制原因,以上種種原因都表明做好軟件需求開發(fā)是一項系統(tǒng)工作,而不是簡單的技術工作,只有系統(tǒng)的了解和掌握需求的基本概念、方法、手段、評估標準、風險等相關知識,并在實踐中加以應用,才能真正做好需求的開發(fā)和管理工作。
本文將通過介紹關于軟件需求的基本知識和個人在實際工作中總結的一些經驗,幫助讀者了解軟件需求,學習需求開發(fā)的一些基本方法,避免因需求原因而導致的項目失敗。
1 什么是軟件需求和需求工程
1.1 軟件需求的定義
在IEEE軟件工程標準詞匯表(1997年)中定義軟件需求為:
(1)用戶解決問題或達到目標所需的條件或能力。
(2)系統(tǒng)或系統(tǒng)部件要滿足合同、標準、規(guī)范或其它正式規(guī)定文檔所需具有的條件或能力。
(3)一種反映上面(1)或(2)所描述的條件或權能的文檔說明。 實通俗的講,“需求”就是用戶的需要,它包括用戶要解決的問題、達到的目標、以及實現(xiàn)這些目標所需要的條件,它是一個程序或系統(tǒng)開發(fā)工作的說明,表現(xiàn)形式一般為文檔形式。
1.2 需求工程的定義
需求分析的過程,也叫做需求工程和需求階段,它包括了需求開發(fā)和需求管理兩個部分。需求開發(fā)是指從情況收集、分析和評價到編寫文檔、評審等一系列產生需求的活動,分為四個階段:情況獲取、分析、制訂規(guī)格說明和評審。這四個階段不一定是遵循線性順序的,他們的活動是相互獨立和反復的。需求管理是軟件項目開發(fā)過程中控制和維持需求約定的活動,它包括:變更控制、版本控制、需求跟蹤、需求狀態(tài)跟蹤等工作。
2 需求分析的風險
由于需求分析的參與人員、業(yè)務模式、投資、時間等客觀因素的影響和需求本身具有主觀性和可描述性差的特點,因此,需求分析工作往往面臨著一些潛在的風險。這些風險主要表現(xiàn)在:
(1)用戶不能正確表達自身的需求。在實際開發(fā)過程中,常常碰到用戶對自己真正的需求并不是十分明確的情況,他們認為計算機是萬能的,只要簡單的說說自己想干什么就是把需求說明白了,而對業(yè)務的規(guī)則、工作流程卻不愿多談,也講不清楚。這種情況往往會增加需求分析工作難度,分析人員需要花費更多的時間和精力與用戶交流,幫助他們梳理思路,搞清用戶的真實需求。
(2)業(yè)務人員配合力度不夠。有的用戶日常工作繁忙,他們不愿意付出更多的時間和精力向分析人員講解業(yè)務,這樣會加大分析人員的工作難度和工作量,也可能導致因業(yè)務需求不足而使系統(tǒng)無法使用。
(3)用戶需求的不斷變更。由于需求識別不全、業(yè)務發(fā)生變化、需求本身錯誤、需求不清楚等原因,需求在項目的整個生命周期都可能發(fā)生變化,因此,我們要認識到,軟件開發(fā)的過程實際上是同變化做斗爭的過程,需求變化是每個開發(fā)人員、項目管理人員都會遇到的問題,也是最頭痛的問題,一旦發(fā)生了需求變化,就不得不修改設計、重寫代碼、修改測試用例、調整項目計劃等等,需求的變化就像是萬惡之源,為項目的正常的進展帶來不盡的麻煩。
(4)需求的完整程度。需求如何做到沒有遺漏?這是一個大問題,大的系統(tǒng)要想窮舉需求幾乎是不可能的,即使小的系統(tǒng),新的需求也總會不時地冒出來。一個