摘 要:軟件項目風險管理從原先被人忽視到目前的熱捧,人們也從原來對它毫無作用到現(xiàn)在對軟件的編譯成功起著不容忽視的作用。為了防止騷擾軟件項目以及調試的過程和產(chǎn)品制定的一系列規(guī)則,同時也是對軟件項目、調試過程和產(chǎn)品有影響的風險進行評估和控制的過程。隨著軟件業(yè)的興起,對軟件項目風險管理研究的人也越來越多,因此關于這方面的理論也層出不窮,因此本文根據(jù)軟件項目風險管理的相關理論,建立了本論文研究思路。
關鍵詞:軟件風險;風險管理;風險識別;風險分析;風險跟蹤
1 風險管理的背景
1.1 風險的定義
風險定義有好幾種,一是不希望事物發(fā)生變化,二是事物存在很多的,三是事件產(chǎn)生的影響。可以概括為“人們因對未來行為的決策及客觀條件的不確定性而可能引起的后果與預定目標發(fā)生多種負偏離的綜合?!惫奖憩F(xiàn)為:風險f(事件,不確定性,后果)。用數(shù)學表達式則為:R=f(s,P,X),其中R表示風險,S表示時間,P表示不利事件發(fā)生的概率,X表示該事件發(fā)生的后果。
1.2 風險管理的背景
隨著社會對軟甲的需求增大,軟件的開發(fā)技術不斷更新,難度不斷增大,但軟件的數(shù)量卻依然增加很多,同時隨著社會節(jié)奏加快,軟件的供應商需要提供不間斷的軟件更新服務。但與此同時,各種難度的上升,給企業(yè)在開發(fā)軟件的過程中加大了風險。軟件項目能否開發(fā)成功,關系著一個企業(yè)的生死存亡。但矛盾的是,隨著開發(fā)軟件的業(yè)務增大,但對軟件的質量和用途也隨之提高,這對軟件開發(fā)商造成了巨大的壓力,在這種情況下,軟件風險管理和控制成為軟件開發(fā)成敗的關鍵點。
根據(jù)有關資料調查顯示,有百分之十五到百分之三十五的軟件項目在開發(fā)的過程中被取消,剩下的軟件項目有的是沒有在預期內(nèi)完成而夭折,或者又是軟件開發(fā)的過程中超出了經(jīng)費的預算。除此之外還有軟件項目因為風險管理和控制失敗的大約占百分之九十。目前國內(nèi)的大多數(shù)軟件開發(fā)企業(yè)還缺乏對軟件開發(fā)項目的風險認識,缺少進行系統(tǒng)、有效的度量和評價的手段。所以能建立有效的風險識別、風險分析、風險計劃、風險跟蹤和風險對策的機制,是有效提高軟件開發(fā)成功率的方法之一。
2 風險管理的內(nèi)容
為了最大化的減少軟件風險的發(fā)生,可對軟件項目進行風險管理。而軟件項目風險管理過程是指軟件風險從認識到采取措施的過程包括風險識別、風險分析、風險計劃、風險跟蹤和風險對策等,從而將可控因素最大化,將不可控因素到最小,從而對未知的風險消滅,從而對風險進行回避或者緩解。
2.1 風險識別
風險識別的常用方法通常有現(xiàn)場觀察法,財務報表法、環(huán)境分析法、流程圖法、座談法、相關部門配合法等。風險識別要確定影響本項目的潛在威脅的來源以及在何種條件有影響,怎么產(chǎn)生并有什么特性等,風險識別并不是一次就可以后顧無憂的,需要貫徹到整個軟件的生命周期中。
2.2 風險評估
風險評估時對風險影響力進行衡量的活動,即衡量風險發(fā)生的概率和風險發(fā)生后對項目目標的影響程度,從而為后面制定風險對策提供依據(jù)。對已識別的風險要進行估計和評價,常用的方法有:概率分布、外推法、多目標分析法等。
2.3 風險計劃
風險計劃:風險計劃是通過技術手段或者其他方法來降低風險的發(fā)生,將風險評估后的結果進行處理。風險計劃就是在軟件開發(fā)的過程中起指導作用,如先處理那個風險,怎么消除風險,如何避免風險等。
2.4 風險應對
風險應對就是對風險計劃的執(zhí)行,共有三種方向來進行風險應對。一是風險控制法,對存在風險進行主動出擊進行消滅或許能避免風險:二是轉移風險,將存在的風險進行轉移:三是風險存留,就是風險威脅不大時,可以對風險不采取任何措施。當然在軟件的開發(fā)過程中,要想有效的消滅風險,就得讓風險還在初級階段的時候消滅。再者就是風險發(fā)生時,要考慮后果再最大化的緩解風險。
3 風險的分類及各類風險產(chǎn)生的影響
3.1 組織和管理風險
一是管理層做出了錯誤決定,技術決策導致計劃進度緩慢, 延長計劃時間;二是低效的項目組結構降低生產(chǎn)率;三是管理層審查決策的周期比預期的時間長;四是預算削減,打亂項目計劃;五是工作失誤與重復工作;六是非技術的第三方的工作時間比預期的延長。
3.2 需求風險
在軟件開發(fā)的過程中,如果不能控制和需求有關的風險因素,那么將會產(chǎn)生不好的結果,如軟件有可能是錯誤的軟件或者質量不合格的軟件。當然很多軟件開發(fā)項目都會面對這些不確定的威脅,如果早期對于這些不確定的風險置之不理,那么在項目過程中也得不到解決,那么“千里之堤,潰于蟻穴”,這些不能控制的威脅將對軟件成功的開發(fā)造成巨大的威脅。
與客戶相關的風險因素有,第一客戶對軟件缺少清晰的認識,沒有對開發(fā)的軟件各方面的特性以及功能有個全面了解。第二對產(chǎn)品需求缺少認同,當軟件成功開發(fā)時,但對軟件由于認識度不夠或者別的原因導致對開發(fā)出來的軟件缺少認同感。同時還存在一些需求風險因素如在做需求中客戶參與不夠,又或者是沒有優(yōu)先需求,再就是由于不確定的需要導致新的市場,其次是不斷變化需求和缺少有效的需求變化管理過程以及對需求的變化缺少相關分析等。
3.3 合同風險
風險存在的概率很大,大多是因為合同里的條款比較多引起的。比如如果在軟件開發(fā)的過程中,沒有對開發(fā)軟件的范圍有準確的定義,并且成為合同中一部分時,此項目即便成功了,也很難驗收,并且項目開發(fā)的時間加長了,極大的加大了開發(fā)的成本。這就符合了軟件項目經(jīng)常以一定的價格簽訂合同,但簽約方卻希望更多的功能。
3.4 設計和實施的風險
在軟件開發(fā)的準備工作,因為設計不滿足要求,導致軟件重復設計。在無法使用已有的代碼或者庫實現(xiàn)新開發(fā)軟件,導致軟件的必要功能有問題,因此軟件開發(fā)人員需要重新設計代碼或庫現(xiàn)實又或者重新開發(fā)軟件的功能。其次認為增強工具能節(jié)省很多時間,但卻沒達到應有的預期效果。最后,不能有效的連接整合開發(fā)的模塊,需要重新設計和開發(fā)。
3.5 人員風險
軟件開發(fā)需要大量的人才,所以人員也是風險的一個因素,如果軟件開發(fā)前,不能對員工進行有效的培訓,那么軟件開發(fā)必然受到一定的影響。再就是開發(fā)員工們和領導的關系不好,那么必然導致領導的決策執(zhí)行緩慢,且效率不高,工作積極性不佳,必然影響全局。領導層不僅要和開發(fā)人員交流溝通,塑造一種團結合作的氣氛,同時必須鼓勵員工可以是口頭贊許或者是物質獎勵激發(fā)開發(fā)人員的工作積極性。對于員工有可能不熟悉公司的開發(fā)環(huán)境和開發(fā)工具,其次是在軟件開發(fā)過程中,有可能后來加入的開發(fā)員工,不熟悉開發(fā)軟件的現(xiàn)狀,所以就需要加大開發(fā)員工之間的溝通。對于一些評估不好的開發(fā)人員,在軟件開發(fā)的過程,由于自身的缺點而影響到其他開發(fā)人員的積極性又或者同個組里的人員因為某些事情而發(fā)生爭吵,導致溝通不利,所以導致設計不妥或者其他一些小錯誤出現(xiàn)。最后就是企業(yè)沒有招到擁有特定的人才來開發(fā)一些特別的軟件。
3.6 過程風險
在軟件開發(fā)的過程中,過程因素也是一個不容忽視的風險,在開發(fā)過程中,如果紙面上的設計跟不上該項目工程的實施,那么將會導致進程的計劃嚴重推遲。如果軟件開發(fā)的前期,沒有做好充分的準備工作,那么將會導致后期工程的風險大大增加,基礎沒打牢,將會導致后期需要重復的做基礎工作。其次是,編程人員與設計人員沒有良好的溝通交流,導致軟件的出爐不能符合設計員的想法,導致質量不達標,嚴重時需要重新開發(fā)軟件。有時候過于守舊即就是對軟件的規(guī)則反反復復的提及,這將會導致無用功做的過多,而實際工作少,這也會推薦軟件完成計劃推遲。其次是軟件開放程序員大部分時間用于軟件開發(fā)的實時過程報告而占用過多的時間,這也會將原定計劃打亂。最后,由于風險管理不細心,沒有發(fā)現(xiàn)軟件存在的風險。
3.7 質量風險
質量風險通俗來說就是質量沒達到客戶的期望,但產(chǎn)品質量如何好,其風險總是存在的。在軟件測試時,即便開發(fā)商在模擬用戶的各種場景及用途,但也不能保證萬無一失,因為無法覆蓋全部的操作路徑,總會存在一定的差異,所以無法使客戶百分百的滿意。但是糾結如何消滅質量風險是毫無意義的,關鍵是如何降低質量風險,提高顧客的滿意度,因為提高了軟件的質量,客戶的滿意度也會隨之上升,這也就是控制質量風險。導致軟件質量低下的原因是在原則上對軟件的質量實行了保證,但在實際過程中對軟件測試的忽略或不看重;軟件的復雜性導致水平要求較高以致很難實現(xiàn);沒能全面理解客戶的需求,導致客戶對產(chǎn)品不滿意甚至拒收;需求變更導致測試不足,新產(chǎn)生的嚴重缺陷沒能被發(fā)現(xiàn);設計評審、代碼評審不足都可能錯過某些嚴重的問題。
4 風險分析和控制
4.1 風險分析
軟件項目風險經(jīng)常會包括許多方面,是指軟件項目開發(fā)風險在其包括開發(fā)過程、運作過程、維護過程幾個階段,它們覆蓋了需求、設計、實現(xiàn)、確認以及維護等活動所遇到的所有預算、進度和控制等各方面的問題,或者是由這些問題而產(chǎn)生對軟件項目的影響。如:軟件缺乏用戶的測試、軟件開發(fā)沒有領導層的支持,模糊要求,沒有計劃和管理等。
為了對風險分析從而進行控制以及管理又或者將風險降到最小,而這些對軟件項目開放的成敗具有巨大的影響,尤其是上述都是軟件項目成敗的隱患,所以常常利用風險分析軟件對風險進行分析。常用方法有風險條目檢查表,它是利用一組提問來幫助項目風險管理者了解在項目和技術方面有哪些風險。在風險條目檢查表中,列出了所有可能的與每一個風險因素有關的提問,使得風險管理者集中來識別常見的、已知的和可預測的風險,如產(chǎn)品規(guī)模風險、依賴性風險、需求風險、管理風險及技術風險等。風險條目檢查表可以不同的方式組織,通過假設分析、成本效益分析、風險剖面分析、判定樹等,給出這些提問確定的回答,就可以幫助項目管理人員估算風險的影響。
為了讓軟件管理人員和開發(fā)人員能夠直觀的看到在軟件開放的各個階段存在的風險的狀況以及每個風險危險的大小,通常我們可以憑借風險條目檢查表來做到。當一個團隊接到軟件開發(fā)的項目時,通常都是按照自己已有的習慣來開發(fā)軟件,但這其中存在風險發(fā)生概率比較大,尤其是在需求風險方面和管理風險方面,往往決定軟件開發(fā)的成敗。在軟件開發(fā)完成時存在很多必要的內(nèi)容缺失,是因為在軟件的分析階段不夠細致,需求風險意識淡薄所致。在整個軟件的開發(fā)過程,如果需求風險控制不好,那么對軟件開發(fā)的不利影響是巨大的或者是直接導致軟件開發(fā)失敗。管理風險是軟件開發(fā)的管理層對與軟件開放的風險意識的預見和解決的綜合反映。
4.2 風險識別
在軟件項目的開發(fā)過程中,風險無處不在。如果不能正確的識別和控制風險,那么點滴的疏漏就有可能把項目推向崩潰的邊緣。
首先,軟件項目風險具有繁殖能力。如果不能識別初級風險,那么這個風險很可能在項目推進過程中衍生出其他風險
其次,軟件項目風險具有變異能力。如用戶需求的定義,不同設計人員,定義的結果就會發(fā)生差異。
最后,軟件項目風險具有依賴性。風險們互相依賴,互為因果。它們就像一張無形的網(wǎng),如果找不到正確的節(jié)點,那么它們會越攪越亂。
4.3 風險控制
為了轉移或避免風險而利用一些技術,如原型化、軟件自動化、軟件心理學、可靠性工程學以及某些項目管理方法等叫風險控制。發(fā)現(xiàn)問題要立即上報,盡快解決。并建立風險監(jiān)管日志,實行“崗位負責制”,將軟件開發(fā)項目的風險降到最低。
[參考文獻]
[1]俞立偉,薛勝軍.軟件風險管理[J].電腦知識與技術,2006(35).
[2]梁濤,歐立雄,黃柯鑫.基于聚類分析的軟件項目風險趨勢研究[J].信息工程大學學報,2006(01).
[3]曹光忠.軟件項目的風險管理[J].計算機時代,2005(06).
[4]付玉,邱冠周,馮其明,高陽.應用軟件開發(fā)的需求風險及控制[J].計算機工程與應用,2005(13).
[5]]孟祥睿.軟件項目風險管理研究[J].經(jīng)濟論壇,2005(07).
[6]郭研.軟件項目管理[J].物流科技,2005(02).
[7]蔣國萍,陳英武.基于面向對象貝葉斯網(wǎng)絡的軟件項目風險評估[J].系統(tǒng)工程與電子技術,2005(02).
[8]蔣國萍,陳英武.基于關鍵鏈的軟件項目進度風險管理[J].計算機應用,2005(01).
[9]陳忠.軟件項目的風險管理[J].經(jīng)濟與社會發(fā)展,2004(12).
[10]王敏晰.軟件項目管理中人員流動風險的管理[J].商業(yè)研究,2004(17).
[11]方德英,李敏強,寇紀淞.軟件項目風險管理方法的比較與分析[J].運籌與管理,2004(03).