敏捷軟體開發風險管理的思路是:首先分析敏捷軟體開發的特點,然後結合風險管理過程進行管理。敏捷軟體開發透過其執行結構規避和減輕了常見的軟體開發風險,但這也引進了開發過程的不確定,因此也蘊含了大量的風險。
敏捷軟體開發的風險分類
軟體開發可分為開發人員、過程、產品和技術四個維度,它們互相聯絡和統一,共同決定了軟體開發的速度和效率。
(1)人員風險。人員風險有溝通不暢,缺乏協作,人員變動,素質低下,矛盾和衝突,缺乏激勵,士氣低下,對業務不理解,缺乏優秀人才,缺乏客戶介入等。
(2)技術風險。技術風險有偽敏捷,架構體系不穩定,設計不佳,缺乏技能,高估新技術等。
(3)產品風險。產品風險有功能不符,需求鍍金,功能蔓延,質量低下,工期延誤,成本超支,客戶滿意度低,低產品價值,低投資回報等。
(4)過程風險。過程風險有缺乏計劃,迭代掌握不佳,評估和規劃不合理,缺乏風險管理,缺乏質量保證措施等。
敏捷軟體開發的風險處理
在敏捷軟體開發過程中從人、過程、產品和技術四個緯度進行的風險處理過程。
(1) 人員風險
敏捷軟體開發透過頻繁溝通、每日站立會議、反饋等方式解決了溝通不暢,缺乏協作的問題;透過領導、結對程式設計、程式碼集體所有權等方式促進團隊協作,提高技能素質,應對人員變動,降低矛盾和衝突;透過頻繁的產品釋出提高人員成就感和士氣;透過現場開發,降低缺乏客戶介入的風險。
(2) 技術風險
敏捷軟體開發透過迭代、測試套件、重構等方式適應變化和演進,避免了傳統的開發方法在一開始就進行架構及設計,從而導致架構體系不穩定和設計不佳的風險。對於敏捷技能險,可以透過引入敏捷教練、結對程式設計、學習環的方式加以應對。
而對於非敏捷軟體開發所特有的普適性技術風險,可以透過組織和加強內部技術人員的培訓和培養,引進能解決專案關鍵問題的優秀人才,防止優秀人才的流失等方式進行規避。
(3) 產品風險
敏捷軟體開發透過迭代、反饋、客戶參與的方式解決了構建錯誤產品、功能蔓延、需求鍍金、質量低下、客戶滿意度低等風險。可以透過綜合考慮功能價值和風險,按照高風險高價值→低風險高價值→低風險低價值→高風險低價值的順序開發產品功能,漸次降低產品的價值風險;透過對淨現值、內部收益率、回收期、貼現回收期等經濟指標的綜合分析,規避專案的投資回報風險。
(4)過程風險。敏捷軟體開發透過產品→釋出規劃→迭代規劃→任務逐漸瞄準的形式,極大地消除了各種不確定風險。
對於軟體開發過程的進度風險,可以透過設定功能緩衝區和進度緩衝區,從功能和進度兩個方面保護專案免受不確定性的衝擊;也可以從以下三個方面對進度風險進行定量分析。
①N=S/V(N:估算的專案總迭代數,S:專案的總故事點數,V:速率,是基於歷史資料計算的每一次迭代所能完成的故事點數)。
②用正態分佈N(μ,σ的平方),得到每一次迭代的平均故事點數X和標準差σ,計算μ=(S/N-X)/σ,並得出項目按時完成的機率。
敏捷軟體開發風險管理的思路是:首先分析敏捷軟體開發的特點,然後結合風險管理過程進行管理。敏捷軟體開發透過其執行結構規避和減輕了常見的軟體開發風險,但這也引進了開發過程的不確定,因此也蘊含了大量的風險。
敏捷軟體開發的風險分類
軟體開發可分為開發人員、過程、產品和技術四個維度,它們互相聯絡和統一,共同決定了軟體開發的速度和效率。
(1)人員風險。人員風險有溝通不暢,缺乏協作,人員變動,素質低下,矛盾和衝突,缺乏激勵,士氣低下,對業務不理解,缺乏優秀人才,缺乏客戶介入等。
(2)技術風險。技術風險有偽敏捷,架構體系不穩定,設計不佳,缺乏技能,高估新技術等。
(3)產品風險。產品風險有功能不符,需求鍍金,功能蔓延,質量低下,工期延誤,成本超支,客戶滿意度低,低產品價值,低投資回報等。
(4)過程風險。過程風險有缺乏計劃,迭代掌握不佳,評估和規劃不合理,缺乏風險管理,缺乏質量保證措施等。
敏捷軟體開發的風險處理
在敏捷軟體開發過程中從人、過程、產品和技術四個緯度進行的風險處理過程。
(1) 人員風險
敏捷軟體開發透過頻繁溝通、每日站立會議、反饋等方式解決了溝通不暢,缺乏協作的問題;透過領導、結對程式設計、程式碼集體所有權等方式促進團隊協作,提高技能素質,應對人員變動,降低矛盾和衝突;透過頻繁的產品釋出提高人員成就感和士氣;透過現場開發,降低缺乏客戶介入的風險。
(2) 技術風險
敏捷軟體開發透過迭代、測試套件、重構等方式適應變化和演進,避免了傳統的開發方法在一開始就進行架構及設計,從而導致架構體系不穩定和設計不佳的風險。對於敏捷技能險,可以透過引入敏捷教練、結對程式設計、學習環的方式加以應對。
而對於非敏捷軟體開發所特有的普適性技術風險,可以透過組織和加強內部技術人員的培訓和培養,引進能解決專案關鍵問題的優秀人才,防止優秀人才的流失等方式進行規避。
(3) 產品風險
敏捷軟體開發透過迭代、反饋、客戶參與的方式解決了構建錯誤產品、功能蔓延、需求鍍金、質量低下、客戶滿意度低等風險。可以透過綜合考慮功能價值和風險,按照高風險高價值→低風險高價值→低風險低價值→高風險低價值的順序開發產品功能,漸次降低產品的價值風險;透過對淨現值、內部收益率、回收期、貼現回收期等經濟指標的綜合分析,規避專案的投資回報風險。
(4)過程風險。敏捷軟體開發透過產品→釋出規劃→迭代規劃→任務逐漸瞄準的形式,極大地消除了各種不確定風險。
對於軟體開發過程的進度風險,可以透過設定功能緩衝區和進度緩衝區,從功能和進度兩個方面保護專案免受不確定性的衝擊;也可以從以下三個方面對進度風險進行定量分析。
①N=S/V(N:估算的專案總迭代數,S:專案的總故事點數,V:速率,是基於歷史資料計算的每一次迭代所能完成的故事點數)。
②用正態分佈N(μ,σ的平方),得到每一次迭代的平均故事點數X和標準差σ,計算μ=(S/N-X)/σ,並得出項目按時完成的機率。