試論中小軟體企業專案開發中的風險管理

sissili發表於2008-06-25

作者:萬亞東

摘要:從風險管理的角度,對國內中小軟體企業在軟體專案開發中存在的問題進行了分析和總結,提出中小軟體企業應明確認識自身的不足,結合自身的特點,建立風險管理機制;遵循風險管理要求的“風險識別”、“風險分析”、“風險應對”的步驟,時潛在和已經發生的專案風險進行有效管理和控制。

  1 風險管理在軟體開發中的引入
  
  1.1專案風險管理
  專案風險可能出自技術、政治、經濟、資源等各個方面,對專案開發本身或是專案目標的實現產生重大影響,有些風險甚至可能是致命的,使專案嚴重滯後或直接廢棄。專案風險管理是為了最好地達到專案的目標,識別、評估、應對專案生命週期內風險的科學與藝術。專案風險管理的目標是使專案本身潛在的機會或回報最大化,使潛在的風險最小化。
  
  1.2風險管理活動
  專案風險管理應貫徹在專案的整個生命週期內,是一個連續不斷的過程。風險管理涉及的主要活動包括:風險識別,風險量化,風險應對計劃制定和風險監控。
  
  1.3軟體專案的風險管理
  軟體專案由於其本身的創造性,註定了其風險的複雜性。一個完整的軟體專案週期包含專案計劃、需求分析、概要設計、詳細設計、編碼實現、軟體測試、軟體釋出和維護等多個相互交織、互相影響的過程。這就註定軟體專案管理是一項複雜的活動,涉及到計劃、度量、組織、實現、時間、成本、進度、質量等方方面面的問題。這些問題相互糾纏、累積在一起,會產生各種不確定的因素,影響專案的進行。
  軟體專案中的風險表現在:需求風險、計劃編制風險、設計實現風險、組織和管理風險、人員風險、客戶風險、產品風險、過程風險。
  這就需要我們在進行軟體開發專案時更加註重風險管理,注重風險分析,做好風險管理計劃,積極尋求風險應對方法,尋找切實可行的解決方案。
  
  2 中小軟體企業專案開發的特點和麵臨的風險
  
  2.1中小軟體企業的特點
  目前,國內大多數中小軟體企業雖然人力成本很低,但是在許多方面都處於劣勢。如:軟體企業普遍規模偏小,實力相對較弱;企業自身的技術實力低,技術單薄,積累少;專案缺乏統籌規劃,生產方式是小作坊式,程式設計方式是個人英雄式;軟體開發流程不規範,產品標準化程度差;專案管理知識和管理經驗欠缺,缺乏嚴格的專案管理和質量保證體系;人員流動率高,缺少充足的人才儲備。公司林立,專案競爭多,對很多軟體企業來說,最重要的是維持生存,在合同的實施中,處於弱勢地位。這些都是阻礙企業順利完成軟體專案的不利因素。
  
  2.2 中小軟體企業專案管理的不足
  中小軟體企業自身固有的不利因素,使得他們在專案管理中存在諸多不足:缺乏合理的進度安排、開發流程不完善、不重視測試、缺乏缺陷管理機制。
  
  2.3中小軟體企業軟體專案面臨的主要風險
  客戶需求不確定中小軟體企業在專案中的弱勢地位,造成客戶可能隨意變更需求,使開發無明確的方向。不完善的系統分析和設計又使得類似情況出現時,開發人員不知所終,造成混亂。
  進度安排過緊進度計劃往往脫離實際,多數無法按時完成。
  技術風險中小軟體企業的技術積累和技術儲備往往不足,這在軟體產品的設計、實現、介面、檢驗和維護等方面都有體現。此外,技術陳舊、不確定、不成熟,以及採用非主流的第三方裝置或元件,都會給產品開發帶來重大影響。
  人員風險中小軟體企業人員流動性大,而最終產品對專案組中某一個或幾個開發人員依賴大,這些關鍵人員的流動,會使開發工作受到影響,甚至陷於停頓。
  專案組成員不固定,增加交流成本中小軟體企業常忽略專案組成員的交流成本。如,在專案進行中,加入新的開發人員,需進行培訓並逐漸與現有成員溝通,從而使現有成員的工作效率降低。此外,還有任務重新分配所造成的工作中斷帶來的負擔。要知道,軟體專案的人員數量和開發時間並不是可以互換的,向進度落後的專案中增加人手,只會使進度更加落後。
  
  3 中小軟體企業專案的風險管理如何進行
  
  在中小軟體企業軟體專案的風險管理中,也要按照“識別”、“分析”、“計劃”、“應對”的步驟,對潛在和發生的風險進行有效管理和控制。
  
  3.1風險識別
  在風險識別中,我們應重點注意以下風險:
  需求風險主要指需求不確定的風險,如,具體功能不能詳盡描述,在系統範圍和效能方面也存在著很多不確定性因素;另外,使用者不斷進行的業務流程調整,也會給系統帶來較大的需求不確定性風險,甚至陷入需求膨脹的狀態,最終難以滿足使用者的需求。
  管理風險軟體專案管理本身就是一項具有風險性的工作,對專案的協調管理工作要求更高。管理風險主要表現在:工作缺乏計劃性或是有計劃而不能嚴格執行;管理工作的隨意性、盲目性比較大;沒有充分意識到風險管理的重要性,因而沒有充分分析可能存在的風險和應該採取的風險應對策略;專案團隊內部溝通不夠,導致開發人員對系統設計的理解存在偏差等等。
  技術風險軟體技術飛速發展,新技術、新應用層出不窮。這就要求系統分析、設計人員要具有較好的技術能力,同時還要對使用者的行業業務非常瞭解。因此,專案組個人以及團隊的整體素質將會影響到專案實施的成敗。
  人員風險對中小軟體企業來說,人員風險始終是一個非常值得關注的因素。
  
  3.2風險分析
  需求風險需求風險的形成,首先,是由於客戶的介入與參與程度不深,考慮需求往往從部門或區域性的視角出發;其次,分析人員忽視了對業務知識的深入瞭解,不能很好地理解甚至是誤解客戶的需求,使得需求調研的目標不明晰,分析不透徹;第三,缺乏與客戶決策層進行深層次的交流,難以掌握客戶企業的發展趨勢,對需求的延伸性不明確;最後,缺乏有效的需求變化管理。
  管理風險專案管理人員缺乏專案管理知識,工作目標不明確,對總體計劃、階段計劃的作用認識不足,對專案的風險估計不足,從而造成計劃與控制脫節,無法進行有效的專案管理;而且,由於管理人員的協調管理能力不足,執行力度不夠,使得專案協調成本、時間成本大大增加,造成工作延誤等。
  技術風險技術風險可以直接導致專案失敗。技術能力不足、涉足不熟悉的行業業務,使專案的預期目標超過了專案組的實現能力;此外,採用不熟悉或是欠成熟的開發工具、第三方產品等,都會使專案處於災難性的風險之中。
  人員風險產生人員風險的原因多種多樣,要結合企業自身和具體員工的情況,綜合加以分析。
  
  3.3風險應對
  風險規避的最好方法是把風險控制在專案啟動階段。可以採用以下措施來規避或減小風險。
  建立暢通的對外溝通渠道,制訂溝通策略需求
風險很大程度上是由溝通不暢引起的。在需求調研階段,要多和客戶應用部門溝通,瞭解他們真正的需求,最好能將系統的目標模型嚮應用部門演示,並得到反饋意見'、直到雙方都達成共識;形成雙方認可的驗收方案和驗收標準;做好需求變更控制和管理,儘量降低需求的不確定性風險。
  配備高素質的專案管理人員要由具有豐富的專案管理經驗,或是具有系統的專案管理知識的人來擔任專案經理,制定有效的專案管理計劃,並執行落實,提高專案的可控性。
  建立協作高效的專案團隊專案組中既要有技術部門的參與,更要有應用部門的參與,形成一個合作的專案團隊,共同理解需求和業務發展。共同研討專案進展中出現的問題,共同控制專案進度,共同為專案質量把關。
  制定科學的風險管理計劃風險管理必須被作為日常的正式活動列入專案工作計劃,成為專案管理的一部分。從風險管理的角度對專案計劃進行稽核,建立風險清單,對每個可能存在的風險做出儘量準確的判斷並對之進行監控,提前做好應對準備。如針對需求風險,要制定相應的需求變更控制;針對技術風險,要安排核心技術人員全程參與開發等等。
  鼓勵內部交流專案經理應積極與開發組成員進行交流,掌握他們的思想動態,及時解決出現苗頭的問題;在開發團隊創造信任、公開、積極交流的環境,有效地消除團隊成員之間的隔閡和衝突,使專案開發保持一定的效率。人力資源部門也應該密切注視專案組成員的士氣,通過積極溝通,或採用適當的激勵機制,使專案能正常進行。
  選擇合適的開發技術最合適的才是最好的,雖然在系統設計時要考慮技術的先進性,但如果對所要採用的新技術不熟悉,在滿足業務需求的前提下,應儘可能採用熟悉的技術,以避免因技術瓶頸導致的專案失敗。
  採用適合的開發模型為適應業務需求隨時間發展而變化,要強調敏捷開發,縮短軟體釋出週期,儘快給使用者一個快速原型,並對各個功能逐步完善,可以降低不確定因素帶來的實現風險。
  
  4 中小軟體企業應建立風險管理機制
  
  4.1 中小軟體企業自身的應對風險的積極因素
  “船小”規避快中小軟體企業具有規模小、機制靈活的特點,便於決定取捨,有時有舍才有得。
  用人制度沒有條框的規定中小軟體企業用人制度靈活,有利於管理者採用獎勵、情感投資等有形和無形的激勵手段。
  企業結構有利於執行力的實現中小軟體企業的企業結構相對簡單,層次構成淺,內部溝通屏障少,有利於提高企業的執行能力。
  
  4.2結合自身的因素進行軟體過程的改進
  量力而行作為專案實施的決策者,要知道有所為有所不為。不要好高騖遠,目標定得太高,脫離自身實際,往往使企業陷於被動。
  強化系統分析設計先謀而後動,系統分析和設計作為軟體專案最重要的開始階段,是不可缺少的。運用統一建模語言進行分析設計,或開發實現時採用相對成熟的設計模式,可以有效地提高專案組成員在分析和設計階段的交流能力和工作效率。
  發揮人的能動性,通過對員工的有效管理積極應對專案風險對中小軟體企業來說,最寶貴的是員工。以人為本的社會文化,要求實現員工與企業的雙贏,既可以滿足員工建功立業的個人追求,又能實現企業的戰略規劃。要選擇正確的人,為他們分配正確的工作;及時處理員工的負面情緒;建立有凝聚力的團隊。確定人員流動的原因,重視後備人員的培養。
  有效管理程式碼程式碼是軟體的生命,要採用適當的管理方法(如統一編碼規範)和工具(如版本控制工具)管理程式碼(包括文件),使軟體開發作為一個過程處於管理之下,既可以規範開發行為,又可以為類似的行為提供依據和可借鑑的資料。
  建立測試和缺陷管理機制這對於軟體質量評估具有很高的價值。
  掌握合適的開發方法如現代敏捷方法論既非常注重人的能力,強調調動每一位專案參與者適應變化,又基於非常嚴謹的過程。這對於中小軟體企業具有重要的借鑑意義。
  對專案進行總結,形成知識管理制度不斷總結成功的經驗和失敗的教訓,在工作中不斷積累對抗風險的能力。
  
  5 結語
  
  軟體專案管理從某種意義上講,就是風險管理。軟體企業在軟體專案開發過程中,必須採用適合自己的風險管理方法進行軟體專案的風險管理,以確保專案在規定的預算和期限內完成。同時,風險也是新的機遇,在專案開發中積極地對風險進行識別、分析,採用適合自身的策略積極應對風險,也許會贏得新的前景。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12231076/viewspace-364831/,如需轉載,請註明出處,否則將追究法律責任。

相關文章