㈠ 軟體項目管理及風險分析
關於軟體項目管理及風險分析
摘要: 軟體項H的有效管理,對項目的成敗具有至關重要的作用。軟體項目的風險體現存些方血,如何迴避這些風險,存本文中進行了探討,最後指出建立合理的管理流程,對軟體項目的管理來說,是非常重要的。
關鍵詞: 軟體項目:管流程;風險分析
軟體項目管理的提出是在2O世紀70年代中期的美國,當時美國國防部專研究了軟體開發不能按時提交,預算超支和質量達到用戶要求的原因,結果發現70%的項目是因為管理不善引起的,而非技術原因。於是軟體開發者開始逐漸重視起軟體開發中的各項管理。到了20世紀90年代中期,軟體研發項日管理不善的問題仍然存在。據美國軟體工程實施現狀的調查,軟體研發的情況仍然很難預測,大約只有10%的項目能夠在預定的費用和進度下交付。
究竟怎麼樣才能做好軟體項目的管理及風險分析,保證項目順利實施呢?這是個比較復雜的問題,下面就軟體項目的特點,縮合大家的經驗總結,談一點看法。
1、軟體項目管理風險分析
軟體項目管是為了使軟體項目能夠按照預定的成本、進度、質量順利完成,而對人員、產品、過程和項目進行分析和管理的活動。目的是為了讓軟體項目尤其是大型項目的整個軟體生命周期(從分析、設計、編碼、測試、到維護全過程)都能在管理者的控制之下,以預定成本按期,按質的完成軟體交付用戶使用。
怎樣進行有效的項目管理呢?首先我們來分析下影響軟體項目的質量因素。
軟體項目,尤其是大型項目有二項非常重要的因素,會影響整個項目的進度與質量,它們分別是:“人”、“流程” 與“技術”。
“人”是項目中最難預料與掌控的一項要素,人可分成兩部份,一是客戶,二是開發團隊。
“技術”是指軟體項目所使用的開發半台,主要指開發環境及開發語言。是最容易掌握的部份。
“流程”是指軟體開發流程或是項目流程,定義流程的目的是要掌控所有的情況。項目的最大敵人是時間及預算,這兩者都是有限的,如何在有限預算內准時完成項目,可說是一項藝術。
1.1“人”因素分析
“人”是指客戶和開發團隊,其中開發團隊的因素對項目影響很大,對於這方面影響因素主要分析如下:
人員技能未達到要求
在項目開始之初,我們假設項目成員都能夠達到組織級的要求,但往往並不是每個成員都能夠達到要求。而且項目中每個成員的生產率差異可能很大,也給項目進度安排造成影響。所以在項目始之初,應該對項目成員的技能進行一次總體的評估,對於大家都欠缺的技能,應該安排統一的培訓,後續需要對培訓的效果進行跟蹤;對於個別人員技能欠缺的,應該單獨預留自我學習時間或通過以師帶徒的方式進行培養,使其技能能夠盡快達到要求:對於項目新員的工作和任務,應該加強評審和檢查,保證輸出不出現大的偏差而導致後續大量的返工。對於這方影響因素主要分析如下:
項目成員責任心不強
態度決定一切,細節決定成敗。對於項目過程中的各項任務,經常出現由於項目成員責任心不強敷衍了事,導致產出的工件質量較差,引起大量返工的情況。在這種情況下,項目更應該加強項目規范的建設,項目經理應加強同這些成員的單獨溝通,加強項目的團隊建設和集體榮譽感。讓項目成員感覺到做的系統是他們自己的產品,而不是公司的項目,項目經理的項目。
項目溝通問題
在軟體項目中,保證項目各種角色和成員中的高效溝通是很重要的,如何建立起快捷順暢的溝通渠道,採用最佳的溝通方式來解決問題,必須在項目中經常強調。如果一周的項目任務花存實際做事情上有2天,而花在溝通上卻佔用了3天,這時必須及時分析和總結原因。溝通最重要的`就是要在最短的時間裡面,採用各種方法或工具,使交流雙方或多方達成一致。
項目人員流失
項目人員特別是項目關鍵成員在項目進行過程中的流失,對項目影響很大,對於這種情況,應該在項目開始之初,就作為專門的風險進行跟蹤,並考慮具體的應對措施。
1.2“流程”因素分析
軟體的開發流程般定義為:
需求分析一可行性分析一概要設計一結構化設計一詳細設計一編碼一軟體測試一軟體維護。
“流程”中軟體項目的風險,主要體現存4個階段:軟體需求階段、軟體設計階段、軟體實現階段和軟體維護階段
軟體需求階段
軟體的開發是以用戶的需求開始,在大多數情況下,用戶需求要靠軟體開發方誘導,才能保證需求的完整,再以的形式形成《用戶需求》這一重要的文檔。需求分析更多的是開發方確認需求的可行性和一致性的過程,在此階段需要和用戶進行廣泛的交流和確認。需求和需求分析的任何疏漏造成的損失,會在軟體系統的後續階段被一級級地放大,因此本階段的風險最大。
軟體設計階段
設計的主要目的在於軟體功能正確地反映了需求,需求的不完整和對需求分析的不完整或者錯誤,在設計階段將被成倍地放大。設計階段的主要任務是完成系統體系結構的定義,使之能夠完成需求階段的即定目標;另一方面也是檢驗需求的致性和需求分析的完整性和正確性。
設計階段的風險主要來自於系統分析人員。分析人員存設計系統結構時過於定製,系統的可擴展性較弱,會給後期維護帶來巨大的負擔和維護成本的激增。對用戶來說系統的使用比例會有明顯的折扣,甚至會造成軟體壽命過短。反之,軟體結構的過於靈活和通用,必然引起軟體實現的難度增加,系統的復雜度上升,可靠性降低,給實現和測試階段帶來風險,系統的穩定性也會受到影響。從另一個角度上看,用戶需求和將來軟體運行環境的變化都是必然的,目前軟體設計的所渭的“通用性”是否就能很好的適應將來需求和運行環境的變化,都是需要認真折衷的,而這種折中也蘊涵著很大的風險。
設計階段蘊涵的另一種風險來自於設計文檔。文檔的不健全不僅會造成實現階段的困難,更會在後期的測試和維護造成災難性的後果,例如根本無法對軟體系統進行版本級,甚至是發現的簡單錯誤都無從更正。