淺談軟件項目開發過程中的主要項目風險及對策

淺談軟件項目開發過程中的主要項目風險及對策

軟件項目成果的需求分析方和軟件項目的承擔者都十分關心這樣的一個問題:什麼樣的因素會導致軟件項目的失敗?與項目有關的因素的改變將對按時、按經費預算交付符合預定質量要求的軟件成果產生什麼樣的影響?這些都屬於軟件項目開發過程中考慮的風險問題。


  軟件項目的風險是指在軟件開發過程中可能出現的不確定因而造成損失或者影響,如資金短缺、項目進度延誤、人員變更以及預算和進度等方面的問題。風險關注未來的事情,這意味着,軟件風險涉及選擇及選擇本身包含的不確定性,軟件開發過程及軟件產品都要面臨各種決策的選擇。風險是介於確定性和不確定性之間的狀態,是處於無知和完整知識之間的狀態。另一方面,風險將涉及思想、觀念、行爲、地點等因素的改變。

  軟件項目風險會影響項目計劃的實現,如果項目風險變成現實,就有可能影響項目的進度,增加項目的成本,甚至使軟件項目不能實現。因此有必要對軟件項目中的風險進行分析並採取相應的措施加以管理,儘可能減少風險造成的損失。風險是在項目開始之後纔對項目的執行過程其負面的影響,所以軟件項目開始之前風險分析的不足,或者是軟件項目實施過程中風險應對措施不得力,都有可能造成軟件失敗。

  如果對項目進行風險管理,就可以最大限度的減少風險的發生。它是爲了將不確定因素出現的概率控制到最低,將不確定性所造成的損失減少到最低限度,對軟件項目全過程中的風險識別、分析和應對的過程。在整個軟件項目的實施過程中,可能形成項目風險的因素有很多,如在項目啓動階段可能存在項目目標不明確,與用戶溝通少導致項目範圍不明確等分先因素;在系統設計階段可能因爲缺乏有經驗的分析人員、設計人員導致和設計的結果不能直接用於程序員的開發;在項目實施階段可能因爲開發環境沒有準備好,程序員開發能力差,或者因爲用戶提出新的功能需求導致原有設計實效、開發費用超支,還有可能因爲開發人員的流動導致項目延期,客戶不滿意等情況。

  軟件項目運用專家調查法和頭腦風暴法分析軟件開發項目中,並將其進行整理分類。

  由於與客戶溝通不暢對客戶的需求瞭解不足造成的風險在軟件開發項目整個生命週期的中都存在的風險,主要包括需求變更風險,涉及風險,過程風險,安裝及維護風險。

  由於管理人員素質不夠,經驗不足,溝通不暢,任務或其分配不合理,對項目的控制力度不夠造成的各種風險,主要包括進度風險,預算風險,管理能力風險,信息安全風險。

  由於技術力量不足,開發環境工具不足造成的。主要包括技術風險,質量風險,軟件設計工具風險,軟件開發工具風險,員工技能風險。

  由於公司或項目組內外部環境變化所導致的風險,主要包括人力資源風險,政策風險,市場風險,營銷風險。

  軟件項目中的風險永遠不能全部消除,而只能採用避免、減輕、和接受三種因對策略。

  避免:通過分析找出發生風險事件的原因,消除這些原因來避免一些特定風險事件的發生。

  減輕:通過降低風險事件發生的概率或得失衡量來減輕風險對項目的影響,也可採用風險轉移的方法來減輕風險對項目的影響。

  接受:對於一些無法避免的風險,應當接收風險造成的後果或者提前設計相應的應對措施,但這需要一定的資金做後盾。

  下面我們就以上四大類別中的一些主要風險進行具體分析以及提出應對策略。

  需求變更風險

  需求變更風險是指需求已經成爲項目基準,但需求還在繼續變化;需求定義欠佳,而進一步的定義會擴展項目範疇;添加額外的需求;產品定義含混的部分比預期需要更多的時間;在做需求中客戶參與不夠;缺少有效的需求變化管理過程。一個看似很有“錢途”的軟件項目,往往由於無限度的需求變更而讓項目承建方苦不堪言,甚至最終虧損(實際上項目建設方也面臨巨大的風險)。

  預防這種風險的辦法是需要團隊成員的高度配合和密切協作的階段,在進行需求分析的時候要仔細分配團隊成員的工作,具體分配如下:如項目經理負責需求分析階段項目進度的安排和控制;參與項目的各種資源調度;負責項目的總體協調工作,人員組成爲雙方項目負責人。再如系統分析人員要通過與用戶方的技術人員和業務人員進行良好的溝通,瞭解業務流程、功能需求、系統構想和項目目標,完成軟件需求說明書的編制任務,等等。要求需求分析階段的團隊按照項目管理中典型的矩陣式結構來開展,這種結構能夠有效的利用項目資源,減少條塊分割的衝突,增加了溝通和協調的機會,降低了項目的執行成本,能夠充分發揮項目經理和個分組人員的積極性,並通過採用一些激勵機制,保證項目成員有充分的責任感和成就感。並且要有效的遏制需求變更,軟件的需求變更時軟件項目開發和實施的最大敵人,在軟件項目的各個階段都可能出現。需求變更的越晚,對項目造成的危害就越大。所以對軟件的需求變更控制貫穿與軟件實施的各個階段。在需求分析階段用戶需求變更主要表現爲用戶需求的反覆,容易使需求分析工作原地轉圈,無法按計劃完成需求分析工作。要遏制分析階段的變更風險,採用以下幾種方法:1、充分到位的需求調研。2、用戶簽字制度。簽字的方法可以是用戶在需求調研中積極負責的態度,認真對待每個需求分析項。在實際分析中,分析人員要善於與用戶溝通,通過系統原型或相似系統演示等手段,消除用戶的顧慮;另外,如果用戶方代表個人難以決定,可通過召開項目協調會議,由用戶的項目有關人員集體決定。3、定期的工作通報制度。即開發項目經理要定期將需求分析階段的工作進展情況、存在的問題進行彙總,向項目雙方的高層領導、項目管理委員會進行工作彙報。促使項目雙方人員以積極協作的心態開展需求調研工作,減少變更,確定進度。4、對簽字認可的需求納入需求管理,對發生的需求變更,執行需求變更處理流程。另外,在該過程中,分析人員需要對所有需求項目分析項目進行分類管理,按照其重要程度及發現變更後造成的影響範圍大小,將不同的需求項分別設置不同的優先級。在需求分析工作中,重點要解決好優先級別更高的需求項的調研及確認工作。可最大限度地降低需求變更發生的可能性,將變更造成的影響減小到最小。

  進度風險

  有些項目對進度要求非常苛刻(進度要求不高的項目,我們同樣要考慮該風險),項目進度的延遲意味着違約或市場機會的錯失。軟件的工期常常是制約軟件項目的主要因素。軟件項目工期估算是軟件項目初期最困難的工作之一。很多情況下,軟件用戶對軟件的需求是出於實際情況的壓力,希望項目承擔方儘快開發出軟件來。在軟件招標時,開發方爲了儘可能爭取到項目,對項目的進度承諾出已遠遠超出實際能做到的項目進度,使項目在開始時就存在嚴重的時間問題。軟件開發組織在工期的壓力下,往往放棄文檔的編寫與更新,結果在軟件項目的晚期大量需要通過文檔進行協調時,卻拖累軟件進度越來越慢。此外,由於用戶配合問題、資源調配等問題也可能使軟件項目不能在預定的時間內完成任務。軟件項目過程中有自身的客觀規律性,用戶對軟件項目的進度要求不能與軟件開發過程的時間需要相矛盾。

  因此,對於這種風險解決方案一般是分階段交付產品、增加項目監控的頻度和力度、多運用可行的辦法保證工作質量避免返工。在項目實施的時間進度管理上,需要充分考慮各種潛在因素,適當留有餘地;任務分解要詳細,便於考覈;在執行過程中,應該強調項目按照進度執行的重要項,再考慮任何問題時,都要經保持進度作爲先決條件;同時,合理利用趕工期及快速跟進等方法,充分利用資源。樂觀主義應受到慎重分析。在進度安排上適度悲觀,在項目的實施中適度樂觀,做到悲觀並不消極,樂觀並不大意。項目進行中盲目增加人員可能造成事倍功半的效果,所以任務、人力、時間三者之間存在最佳組合,值得項目負責人引起足夠重視。應該避免:某方面的人員沒有到位,或者在多個項目的情況下某方面的人員中途被抽到其他項目,或身兼多個項目,或在別的項目中無法抽身投入本項目。爲系統測試安排足夠的時間,能使項目進度在改變之初就被發現,這對及時調整項目進度至關重要。漸近明細是項目的特點,特別是對於軟件開發項目,並不是一個一成不變的過程。開始時的項目計劃可以先制定得比較粗一些,隨着項目的進展,特別是需求明確以後,項目的計劃就可以進一步的明確,這時候應該對項目計劃進行調整修訂,通過變更手續取得項目干係人的共識,在這個過程中發生錯誤是在所難免的,因此必要的測試是項目漸近明細的方式之一,隨着項目的推進再進一步細化、調整、修正和完善。持續地監控,項目進度控制是隨着項目的進行而不斷進行的,是一個動態過程,也是一個循環進行的過程。從項目開始,實際進度就進入了進行軌跡,直到項目結束,這個過程的每一個環節都必須完全在監控之中。在計劃制定時就要確定項目總進度目標與分進度目標;在項目進展的全過程中,進行計劃進度與實際進度的比較,及時發現偏離,及時採取措施糾正或者預防,協調項目參與人員之間的進度關係。

  預算風險

  技術風險


  在軟件項目開發和建設的過程中,戰略管理技術因素是一個非常重要的因素。項目組一定要本着項目的實際要求,選用合適、成熟的技術,千萬不要無視項目的實際情況而選用一些雖然先進但並非項目所必須且自己又不熟悉的技術。如果項目所要求的技術項目成員不具備或掌握不夠,則需要重點關注該風險因素。重大的技術風險包括:軟件結構體系存在問題,使完成的軟件產品未能實現項目預定目標;項目實施過程中才用全新技術,由於技術本身存在缺陷或對技術的在掌握不夠深入,造成開發出的產品性能以及質量低劣。

  預防這種風險的辦法是選用項目所必須的技術、在技術應用之前,針對相關人員開展好技術培訓工作。首先,做好各階段的技術評審工作,通過集體智慧確保項目所採用技術的可行性以及技術方案的正確性。其次,對新技術的使用要謹慎,要循序漸進,儘量採用成熟的技術方案完成軟件開發工作。再次,在技術創新與技術風險之間進行平衡,並做好創新技術的研究和試驗工作。需要對軟件項目過程中使用的各種技術進行評估,軟件項目管理在制定軟件開發計劃時必須考慮這些因素,並作出合理的權衡決策。

  質量風險

  任何軟件項目實施過程中缺乏質量標準,或者忽略軟件質量監督環節都將對軟件的開發構成巨大的風險。有些項目,用戶對軟件質量有很高的要求,如果項目組成員同類型項目的開發經驗不足,則需要密切關注項目的質量風險。矯正質量低下的不可接受的產品,需要比預期更多的測試、設計和實現工作;開發額外的不需要的功能(鍍金),延長了計劃進度;嚴格要求與現有系統兼容,需要進行比預期更多的測試、設計和實現工作;要求與其他系統或不受本項目組控制的系統相連,導致無法預料的設計、實現和測試工作;在不熟悉或未經檢驗的軟件和硬件環境中運行所產生的未預料到的問題;開發一種全新的模塊將比預期花費更長的時間;依賴正在開發中的技術將延長計劃進度。

  預防這種風險的辦法一般是經常和用戶交流工作成果、品牌管理採用符合要求的開發流程、認真組織對產出物的檢查和評審、計劃和組織嚴格的獨立測試等。軟件質量的保證體系是軟件開發成爲可控制過程的基礎,也是開發商和用戶進行交流的基礎和依據。所以制定卓有成效的軟件質量監督體系,是任何軟件開發組織必不可少的。

  工具風險

  軟件項目開發和實施過程,所必須用到的管理工具、開發工具、測試工具等是否能及時到位、到位的工具版本是否符合項目要求等,是項目組需要考慮的風險因素。有些軟件項目屬於多用戶併發的應用系統,系統對性能要求很高,這時項目組就需要關注項目的性能風險。

  預防這種風險的辦法一般是在項目的啓動階段就落實好各項工具的來源或可能的替代工具,在這些工具需要使用之前(一般需要提前一個月左右)跟蹤並落實工具的到位事宜。在進行項目開發之前先設計和搭建出系統的基礎架構並進行性能測試,確保架構符合性能指標後再進行後續工作。並且團隊成員的技術是偏向該種工具的。

  人力資源風險

  軟件的開發不同於其他的工程,它是智力密集型、勞動密集型、項目,受人員資源的影響很大。軟件的開發在不同的工程階段,需要的人員不同,同樣需要團隊成員之間的密切配合。在人力資源使用過程中,人員能力的表現往往體現在軟件成果監控的困難導致對人員能力觀察的困難。人員流失、人員不能適合軟件項目的要求,都可造成人力資源上的風險。人力資源的能力(包括業務能力和技術能力)和素質,對項目的進展、項目的質量具有很大的影響,項目經理在項目的建設過程需要實時關注該因素。

  預防這種風險的辦法是在用人之前先選對人、開展有針對性的培訓、將合適的人安排到合適的崗位上。要降低項目的人力資源風險,就要保證參加項目的各類人員能夠勝任項目中所承擔的工作。因此,實施雙方應對參與人員進行認真地評估。這種評估是兩個方面的,不僅是用戶對開發方人員的評估,也包括開發方對參與項目的用戶方成員的評估。同時,應保證項目人員對項目的投入程度。另外,項目經理要採取相應的措施維持開發隊伍的穩定,將參與項目人員的業績評估與項目實施的狀況相聯繫,制定適當的獎懲措施。同時,項目經理也需要做好項目組人員變動的應對措施。開發人員的水平應該符合項目開發要求。技術上是應該和算選取的開發工具相配套。是能夠自始至終地參加軟件開發工作。是能夠集中全部精力投入軟件開發工作。並且員工對自己的工作有正確的期望。要接受過必要的培訓。保證開發人員的流動保證工作的連續性。儘可能將項目的核心工作分派給多人(而不要集中在個別人身上)、加強同類型人才的培養和儲備。

  結論:

  軟件項目開發過程中面臨的風險是多種多樣的,風險的大小以及重點各不相同,項目管理人員應當充分考慮,認真分析,在考慮風險損失和合理的風險應對成本之後,選擇採用合適的風險應對計劃,避免因風險造成各方面的重大損失。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章