徐杏芳
摘要:軟件項目風險具有不確定性和損失兩個特點,一旦風險發(fā)生會給項目帶來不可估量的損失甚至導致整個項目的失敗。在軟件開發(fā)的生命周期中,對風險的管理是必要的。在本文中論述了風險的產生,常見風險的類型,以實例說明了在軟件開發(fā)時,如何對風險進行分析和應對的措施。
關鍵詞:風險;生命周期;風險識別;風險分析;技術風險
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)05-0089-02
在軟件項目開發(fā)的過程中,不能預測將來發(fā)生的事情。這就確定了軟件開發(fā)是一項創(chuàng)造性的活動。這就決定了一些不確定的事件發(fā)生,一旦發(fā)生,會對軟件項目產生某種正面或者負面的影響,這樣就產生了風險,有些風險會給軟件帶來災難性的后果,甚至會導致整個項目的失敗,項目帶來的失敗帶來的影響是不可估量的。
1 風險產生
IEEE(Institute of Electrical and Electronics Engineers)是全球最大的非盈利性的學術委員會,它給出了風險標準的定義:一種事件、狀態(tài)發(fā)生的可能性,這種可能性會帶來嚴重的后果或者潛在的問題。風險是一種客觀存在,風險與效益同存,只有正視風險才能有效地規(guī)避風險。軟件風險在軟件開發(fā)的各個階段的過程中都有可能產生,根據IEEE的標準,軟件風險分為以下幾種類型,如圖1所示。
1.1產品規(guī)模風險
一般而言,軟件項目的風險與開發(fā)產品的規(guī)模是成正比的關系。引起產品規(guī)模風險常見的因素有:
1)軟件產品所使用的用戶數過多;2)設計階段對產品規(guī)模估計的偏差;3)將已經存在軟件的有用的部分用在新軟件數目;4)軟件產品規(guī)模與以前產品規(guī)模平均值的偏差量。
1.2需求風險
絕大多數的軟件項目在需求階段都面臨著許多不確定性和未知性,甚至會造成混亂。如果在軟件項目開發(fā)的早期輕視了軟件項目多方面的不確定性,在項目開發(fā)過程中得不到解決,這些問題就會對軟件項目的結果產生巨大的危害,甚至會造成整個項目的失敗。如果在需求分析階段不控制與需求相關的風險因素,那么就極有可能性產生不合格軟件產品,甚至可能產生錯誤的產品。
在軟件開發(fā)階段,與需求相關引起風險的原因:①在需求分析過程中用戶參與需求分析的力度不夠;②對軟件的需求缺少認同;③由于各方面的不確定的需要導致產生新的市場;④對客戶需求的不斷變化缺少相關分析和認識;⑤在需求分析的過程中,缺乏有效的對需求不斷變化管理過程。
1.3相關性風險
在軟件開發(fā)的過程中,很多軟件項目的風險都是與外部環(huán)境的相關。在項目開發(fā)的過程中,這種與環(huán)境的關聯(lián)性一般都不能夠得到有效的控制。軟件項目與外部環(huán)境相關的主要因素如下:
l 項目的復用性
l 成員或團體之間的依賴性
l 經驗豐富軟件設計和開發(fā)人員的擁有
l 軟件系統(tǒng)客戶公用的信息
1.4技術風險
目前,計算機軟件技術的發(fā)展是日新月異,在項目的開發(fā)過程中,可能會由于開發(fā)成員缺乏對所使用的軟件技術深入的了解和使用,可能會導致整個項目的失敗。引起軟件技術風險的主要原因如下:
l 缺乏對成員的新技術的培訓
l 對方法,工具和技術理解不夠
l 在該領域經驗的缺乏
1.5管理風險
軟件項目管理的任務是在整個軟件設計和實現的過程中都能夠在軟件項目管理者的控制之下,使軟件能夠按照所預定的成本、在規(guī)定的時間內交付給用戶使用。在軟件項目開發(fā)的過程中最難預料和控制的是“人”的因素,包括開發(fā)人員和客戶,與項目管理相關的風險因素有:
l 客戶的需求經常發(fā)生變化
l 開發(fā)人員的技術不過關
l 成員之間欠缺溝通
l 項目成員的責任心不強
2 風險分析與解決
在軟件項目的整個生命周期中,任何階段都可能有風險的存在,風險具有不確定性和損失兩個特征,風險的發(fā)生時不確定的,一旦風險產生了,對整個項目帶來不可估計的損失甚至導致整個項目的失敗,在軟件項目管理中,進行風險管理是必要的。
在項目啟動階段,對項目進行清晰的定義,對項目所涉及的活動進行盡可能詳細的計劃,與客戶多交流,盡可能的明確用戶的需求,項目管理者對團隊每個成員的技術和能力要有所了解,確定項目團隊每個成員的責任和義務,并以文字的形式歸檔。開發(fā)前的詳細的準備可以減少風險的產生。風險管理的流程如圖2所示。
下面以某高校的教務管理系統(tǒng)為例,說明各個階段的風險分析和解決。
2.1需求分析階段
2.1.1 風險識別
絕大多數軟件項目在需求階段都面臨不少的不確定性,教務管理系統(tǒng)也是如此。如果在項目開發(fā)的早期容忍了這些不確定性,在項目的開發(fā)的過程中也不會得到解決,回給項目帶來很大的危害。在需求分析階段的主要的風險。1)用戶包括這個系統(tǒng)管理員,教師和學生不能很好地表達自己的要求,并且需求不斷的發(fā)生變化。2)業(yè)務員配合的力度不夠,需求描述存在多義性。
2.1.2 風險分析與應對
要以書面的形式形成“軟件需求”這一重要的文檔,在這個階段設計者要和用戶進行廣泛的交流,在初期階段進行多方的論證。對不明確存在二義性的需求,派有經驗的設計人員去了解,對于不能被識別的需求,讓有經驗的開發(fā)人員去調研。
2.2 設計階段
在設計階段產生的風險,主要與系統(tǒng)分析者相關。在設計的過程中要形成詳細的“設計報告”文檔。
2.2.1 風險識別
教務管理系統(tǒng)前臺使用是ASP.NET ,后臺使用ORCAL數據庫,使用的技術相對比較成熟,不存在技術方面的風險。主要存在的風險如下幾個方面:
1)網絡方面
教務管理系統(tǒng)使用的用戶多,用戶分布在不同的校園局域網中,服務器的任務繁重。比如服務器網絡缺乏對數據的有效的過濾,會導致學生選課的失敗,并且可能會引起各種網絡的阻塞,從而影響整個系統(tǒng)的正常運行。
2)管理方面
教務管理系統(tǒng)涉及不同層次,不同身份的用戶,每類用戶的權限不同。由于管理權限劃分不清,可能會導致整個系統(tǒng)的數據的不安全。在項目的設計階段,主要存在的風險如表1所示。
2.2.2風險分析與應對
1)網絡方面
開發(fā)時,詳細規(guī)劃整個系統(tǒng)的架構,對架構的合理性進行評估,要對網段進行正確的劃分,路由設置合理,做好充分的網絡安全措施。對數據進行多樣性的備份。
2)管理方面
在設計階段,詳細的劃分對用戶的類型進行劃分,明確每類用戶的責任和權力分明。設計者多和不同類型的用戶進行交流,使用戶的權限具有合理性。
3)設計方面
在設計階段面臨的風險較多,不同的風險應有不同的應對方法。在軟件設計階段,如果出現的風險如錯誤的理解設計,開發(fā)不符合用戶需求的軟件,那么下一步的設計工作無法開展,這些風險都是由于文檔不規(guī)范引起的。規(guī)范化文檔和文字的表達,在設計文檔中,對教務管理系統(tǒng)的功能進行詳細的規(guī)定,按照功能模塊分成不同的小組,對函數的接口,采用易于理解的代碼進行描述,小組的組成和成員之間經常進行溝通。
在項目的開發(fā)的過程中,盡可能的選用經驗豐富,技術水平高的人員承擔設計任務,鼓勵各小組成員之間的交流,對內部員工的培訓,有利于減少項目中所出現的各種風險。另外,采用增量的開發(fā)模式,可以保證各個小組之間的并發(fā)工作,有利于提供開發(fā)的效率。
3 結束語
在軟件項目的管理中,建立一套完整的軟件風險管理機制,可以防止一些風險的產生。在程序設計的過程中,如果采用標準的結構化的管理方法,可以使軟件設計者和開發(fā)者發(fā)現在軟件設計和開發(fā)各個過程中的不足,并且根據這些不足,及時地采取相應的措施,可以大大地減少潛在軟件風險發(fā)生的可能性,這樣既提高了軟件項目成功的機會,同時避免了各種軟件風險產生的后果。
參考文獻:
[1] 覃征,楊利英,高勇民,等.軟件項目管理[M].北京:清華大學出版社,2004.
[2] 陽王東,曾強聰,吳宏斌.軟件項目管理方法和實踐[M]. 北京:中國水利水電出版社,2009.
[3] 張家浩.軟件項目管理[M]. 北京:機械工業(yè)出版社,2005.
[4] Bob Hughes ,Mike Cotterell. 廖彬山,周衛(wèi)華,譯.軟件項目管理[M]. 北京:機械出版社,2010.