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