軟件項(xiàng)目管理中需求分析的研究
發(fā)布時(shí)間:2010/9/9 13:54:00
1、軟件項(xiàng)目需求分析的重要性
當(dāng)前,軟件開(kāi)發(fā)往往存在著三大主要問(wèn)題:預(yù)算超支、進(jìn)度延誤、質(zhì)量糟糕而且很難控制在預(yù)算之內(nèi)———尤其是要高質(zhì)量地實(shí)現(xiàn)用戶的期望。相關(guān)的業(yè)界報(bào)告與分析對(duì)信息系統(tǒng)行業(yè)中不能滿足客戶需求、與用戶預(yù)期不符合以及資源嚴(yán)重浪費(fèi)等現(xiàn)象和問(wèn)題進(jìn)行了詳細(xì)描述。
隨著信息時(shí)代的發(fā)展,計(jì)算機(jī)軟件的需求愈來(lái)愈復(fù)雜,規(guī)模愈來(lái)愈大,而且隨著企業(yè)的發(fā)展,工作過(guò)程重組,需求變更已愈來(lái)愈成為必然。軟件危機(jī)持續(xù)了30年之久,至今仍無(wú)法得以很好地解決。究其原因,軟件本身具有的特點(diǎn)固然有關(guān),但長(zhǎng)期以來(lái),缺乏軟件開(kāi)發(fā)和維護(hù)的正確方法以及忽視軟件開(kāi)發(fā)過(guò)程的質(zhì)量控制乃是最為關(guān)鍵的原因。
其中軟件開(kāi)發(fā)和維護(hù)方法的不正確性主要體現(xiàn)在:忽視軟件開(kāi)發(fā)前期的需求分析;開(kāi)發(fā)過(guò)程缺乏統(tǒng)一的、規(guī)范化的方法論的指導(dǎo);文檔資料不齊全或不準(zhǔn)確;忽視與用戶之間、開(kāi)發(fā)組員之間的交流。
這樣,就經(jīng)常出現(xiàn)用戶對(duì)“已完成”系統(tǒng)不滿意,軟件產(chǎn)品的質(zhì)量經(jīng)常出現(xiàn)漏洞,補(bǔ)丁一大堆。自從20世紀(jì)60年代出現(xiàn)軟件危機(jī)以來(lái),越來(lái)越多的人已開(kāi)始更多地關(guān)注于軟件,思考更好地保證軟件開(kāi)發(fā)的質(zhì)量,與軟件危機(jī)一起誕生的軟件工程方法和建模理論已經(jīng)發(fā)展了幾十年。
然而事實(shí)卻是,軟件項(xiàng)目存在的質(zhì)量問(wèn)題仍然很嚴(yán)重。1969年,北約提交了一份報(bào)告,列舉了軟件所面臨問(wèn)題的原因,其中的原因在今天仍然存在:在Rajesh Naik等人近年來(lái)合著的《軟件需求與估算》中提到,我們經(jīng)常會(huì)看到有頭無(wú)尾的工程,用戶不滿意的工程,難以投入實(shí)際使用的工程,或者嚴(yán)重超支和拖延進(jìn)度的工程。而導(dǎo)致這些現(xiàn)象的重要原因之一,往往是由需求問(wèn)題引起的,如客戶和開(kāi)發(fā)者對(duì)系統(tǒng)的需求缺乏了解;搜集和分析需求的非結(jié)構(gòu)化方法;沒(méi)有支持的工具或支持工具價(jià)格昂貴。
1994年《科學(xué)美國(guó)人》曾經(jīng)報(bào)道,盡管經(jīng)過(guò)50年的“進(jìn)步”,仍然存在著一種慢性危機(jī)。這就是缺少能夠滿足信息時(shí)代要求的成熟工程科學(xué)的狀況已經(jīng)持續(xù)幾十年了。以上這些令人驚訝的數(shù)字和分析同樣包括了對(duì)于軟件(信息系統(tǒng))產(chǎn)品開(kāi)發(fā)狀況的統(tǒng)計(jì)與描述。
在軟件產(chǎn)業(yè)最為發(fā)達(dá)的歐美國(guó)家尚且存在如此嚴(yán)重的需求問(wèn)題,更不用說(shuō)是近20年來(lái)剛剛掀起IT熱潮的中國(guó)了。由此可見(jiàn),軟件危機(jī)自20世紀(jì)60年代起已經(jīng)持續(xù)了近40年之久,至今在全世界范圍內(nèi)仍無(wú)法得以很好地解決。
如何著手解決這個(gè)危機(jī),首先要從原因入手,在明確根源之后,再研究制定相應(yīng)的對(duì)策。根據(jù)IDC的統(tǒng)計(jì),80%的失敗IT項(xiàng)目是由于需求分析做的不好,沒(méi)有真正反映出用戶的需求而導(dǎo)致的。同樣對(duì)于出現(xiàn)這種情況的原因,根據(jù)Standish集團(tuán)公司的分析,項(xiàng)目失敗最重要的8個(gè)原因中的5個(gè)都與需求有關(guān):
、俨煌暾男枨螅
、跊](méi)有用戶的介入;
、鄄粚(shí)際的客戶期望;
④需求和規(guī)范的變更;
⑤提供不再需要了的能力。
此外,CHAOS大學(xué)工作人員Sanjiv指出:“如果沒(méi)有搞定需求,則項(xiàng)目一定會(huì)失敗;如果搞定需求,則項(xiàng)目一定會(huì)交付!痹谶@樣的環(huán)境下,業(yè)界人士從長(zhǎng)期的實(shí)踐中逐步意識(shí)到以工程化的原則和方法組織信息系統(tǒng)開(kāi)發(fā)工作是解決危機(jī)的一條主要出路,其中相對(duì)而言編碼不是“問(wèn)題”,問(wèn)題在于需求階段,需求分析無(wú)疑是軟件工程中的關(guān)鍵問(wèn)題。正因如此,軟件需求的重要性正在不斷提高,因?yàn)樗怯脩糍囈灶A(yù)先知道將獲得什么樣的系統(tǒng)以及投入多少經(jīng)費(fèi)的途徑。
因此人們意識(shí)到以工程化的原則和方法組織軟件開(kāi)發(fā)工作是解決軟件危機(jī)的一個(gè)主要出路。軟件工程中包含需求、設(shè)計(jì)、編碼和測(cè)試四個(gè)階段。
需求分析作為軟件生命周期的第一個(gè)階段,并貫穿于整個(gè)軟件生命周期,其重要性越來(lái)越突出,到80年代中期,逐步形成了軟件工程的子領(lǐng)域———需求工程。軟件工程的子領(lǐng)域需求工程的出現(xiàn),體現(xiàn)了其在軟件質(zhì)量保證中的重要意義。進(jìn)入20世紀(jì)90年代后,需求工程成為軟件界研究的重點(diǎn)之一。
在國(guó)內(nèi)則興起于20世紀(jì)90年代后期,其研究方法和研究方向基本上參照國(guó)外的相關(guān)方法和理念,而研究成果的創(chuàng)新度和實(shí)用意義與國(guó)外尚有差距。當(dāng)前對(duì)于需求工程的研究已經(jīng)成為軟件工程中的重要環(huán)節(jié),但正如AlanM. Davis所說(shuō)的那樣:需求工程的進(jìn)展相當(dāng)緩慢。
我國(guó)已進(jìn)入WTO,因此軟件開(kāi)發(fā)也要與國(guó)際接軌,只有這樣才能提高我們?cè)陧?xiàng)目管理水平,最終開(kāi)發(fā)出高質(zhì)量的軟件。
2、需求分析的相關(guān)問(wèn)題及過(guò)程
需求分析是軟件工程中最復(fù)雜和最難處理的過(guò)程。歸結(jié)起來(lái),需求分析的問(wèn)題主要體現(xiàn)在以下4個(gè)方面:
(1)需求的復(fù)雜性。由于用戶需求所涉及的因素繁多,如運(yùn)行環(huán)境和系統(tǒng)功能等,而導(dǎo)致了需求分析的復(fù)雜化。積極與用戶交流,捕捉、分析和修訂用戶對(duì)目標(biāo)系統(tǒng)的需求,并提煉出符合問(wèn)題解決領(lǐng)域的用戶需求。
(2)分析人員或客戶理解有誤。系統(tǒng)需求涉及人員較多,如軟件系統(tǒng)用戶、問(wèn)題領(lǐng)域?qū)<、需求工程師和?xiàng)目管理員等,這些人員往往具有不同的背景知識(shí),且處在不同角度,扮演不同角色,從而不可避免地造成了他們之間相互交流的困難。
例如軟件系統(tǒng)分析人員不可能都是全才,客戶表達(dá)的需求,不同的分析人員可能有不同的理解;客戶大多不懂軟件,他們可能覺(jué)得軟件是萬(wàn)能的,會(huì)提出一些無(wú)法實(shí)現(xiàn)的需求。
(3)不完整性和不一致性。每一項(xiàng)需求都必須將所要實(shí)現(xiàn)的功能描述清楚,以使開(kāi)發(fā)人員獲得設(shè)計(jì)和實(shí)現(xiàn)這些功能所需的所有必要信息。但由于種種原因,用戶對(duì)問(wèn)題的陳述往往是不完整的,其各方面的需求還不可避免地存在著矛盾。
此外用戶需求必須和業(yè)務(wù)需求一致,功能需求必須和用戶需求一致。嚴(yán)格的遵守不同層次間的一致性關(guān)系,才可以保證最后開(kāi)發(fā)出來(lái)的軟件系統(tǒng)不會(huì)偏離最初的實(shí)現(xiàn)目標(biāo)。
(4)需求易變性。隨著客戶對(duì)這個(gè)項(xiàng)目越來(lái)越深刻的理解,那么可能他的需求也會(huì)隨之改變,這些變化的可能性越大項(xiàng)目風(fēng)險(xiǎn)就會(huì)越大,我們?cè)谛枨蠓治龅臅r(shí)候就要充分考慮到哪些需求是相對(duì)固定的需求,哪些可能會(huì)是產(chǎn)生變動(dòng)的需求,考慮到他的可變性,這樣設(shè)計(jì)功能和數(shù)據(jù)庫(kù)的時(shí)候不致因?yàn)楹竺娴淖儎?dòng)而影響整個(gè)工程。
需求分析的步驟可歸納為四個(gè):
(1)需求獲取。需求獲取通常從分析當(dāng)前系統(tǒng)包含的數(shù)據(jù)開(kāi)始,建立當(dāng)前系統(tǒng)的物理模型。
(2)分析建模。分析模型的建立過(guò)程是對(duì)目標(biāo)系統(tǒng)的綜合要求及數(shù)據(jù)要求的分析綜合的過(guò)程。
(3)文檔編寫。軟件需求分析說(shuō)明書是軟件需求分析階段最主要的文檔。
(4)需求驗(yàn)證。軟件需求說(shuō)明需求不一致的問(wèn)題、二義性問(wèn)題等,這些都必須通過(guò)需求分析的驗(yàn)證復(fù)審來(lái)發(fā)送,確保需求說(shuō)明可作為軟件設(shè)計(jì)和最終系統(tǒng)驗(yàn)收的依據(jù)。
結(jié)構(gòu)化分析方法(Struetured Analysis,SA),該方法比較常用,不再贅述。
軟系統(tǒng)方法:這只是過(guò)度性的方法論他的出現(xiàn)只是證明結(jié)構(gòu)化分析方法的一些不足。因?yàn)榻Y(jié)構(gòu)化分析方法采用的相對(duì)形式化的模型不僅與社會(huì)觀格格不入,而且在解決“不確定性”時(shí)顯得十分無(wú)力。
面向?qū)ο蠓治龇椒?Object Oriented Analysis,OOA):這一方法也較為常用。
面向問(wèn)題域的分析(Problem Domain OrientedAnalysis,PDOA):OOA也存在著很多不足,但PDOA現(xiàn)在正在研究中所以未被廣泛應(yīng)用。這里需要注意的是:在軟件開(kāi)發(fā)中有很多需求分析方法他們沒(méi)有好壞之分只要你運(yùn)用得當(dāng)照樣可以做出一個(gè)很好的系統(tǒng),依據(jù)個(gè)人對(duì)某個(gè)方法的理解用自己最擅長(zhǎng)的方法是最明智的選擇。目前,軟件需求還是企業(yè)信息化過(guò)程中的一個(gè)難點(diǎn),尤其是應(yīng)用于企業(yè)運(yùn)營(yíng)、管理及決策活動(dòng)的管理信息系統(tǒng)(Management Information System,MIS)擁有復(fù)雜多變的業(yè)務(wù)需求和相當(dāng)難度的技術(shù)要求,這些都使得MIS的需求無(wú)法被高質(zhì)量地獲取、分析和實(shí)現(xiàn)。輕視用戶需求和需求分析并給后期開(kāi)發(fā)帶來(lái)重大損失的情況在當(dāng)今MIS開(kāi)發(fā)實(shí)踐中依然比較普遍。傳統(tǒng)的MIS開(kāi)發(fā)方法主要有兩個(gè)重大的缺陷:一是雖然相較于其他軟件更加重視系統(tǒng)需求,但仍然存在忽略用戶需求本體,往往沒(méi)有考慮“為什么”需要這樣的系統(tǒng)需求;二是過(guò)于形式化的需求用例建模常常導(dǎo)致需求的歧義性和不一致性,因而難以確認(rèn)和驗(yàn)證。對(duì)于這些問(wèn)題,傳統(tǒng)的方法缺乏有效的需求捕獲、分析及驗(yàn)證機(jī)制和模型,因此需要尋求新的需求工程方法。
首先,在現(xiàn)有的軟件工程理論基礎(chǔ)上,結(jié)合MIS開(kāi)發(fā)過(guò)程,明確其特殊性,及其需求分析的特殊性。然后,在需求工程理論的研究基礎(chǔ)上,找到需求階段存在的典型問(wèn)題及其表現(xiàn)形式,在研究理論的基礎(chǔ)上歸納需求定義度量指標(biāo),以及需求階段各時(shí)期的劃分。
3、結(jié)語(yǔ)
項(xiàng)目需求分析是一個(gè)項(xiàng)目的開(kāi)端,也是項(xiàng)目建設(shè)的基石。在以往建設(shè)失敗的項(xiàng)目中,80%是由于需求分析的不明確而造成的。因此一個(gè)項(xiàng)目成功的關(guān)鍵因素之一,就是對(duì)需求分析的把握程度。
2010-6-26