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