軟體開發進度管理的四個問題(轉)

ger8發表於2007-08-15
制定軟體專案進度表有兩種途徑:其一是軟體開發小組根據提供軟體產品的最後期限從後往前安排時間;其二是軟體專案開發組織根據專案和資源情況制定軟體專案開發的初步計劃和交付軟體產品的日期。多數軟體開發組織當然希望按照第二種方式安排自己的工作進度。然而遺憾的是,大多數場合遇到的都是比較被動的第一種方式。

在軟體專案管理工作中,對軟體專案的進度安排有時比對軟體成本的估算要求更高。成本的增加可以透過提高產品定價或透過大批次銷售得到補償,而專案進度安排不當會引起顧客不滿,影響市場銷售。軟體專案的進度安排必須妥善處理以下幾個問題:

1、任務分配、人力資源分配、時間分配要與工程進度相協調

在小型軟體開發專案中,一個程式設計師能夠完成從需求分析、設計、編碼,到測試的全部工作。隨著軟體專案規模的擴大,人們無法容忍一個人花十年時間去完成一個需要十幾個人年才能完成的軟體專案。大型軟體的開發方式必然是程式設計師們的集體勞動。由於軟體開發是一項複雜的智力勞動,在軟體開發過程中加入新的程式設計師往往會對專案產生不良影響。因為新手要從瞭解這個系統和以前的工作做起,當前正在從事這項工作的“專家”不得不停下手中的工作,抽出時間對他們進行培訓。於是,在一段時間內,工作進度便拖後了。軟體開發人數的增加將導致資訊交流路徑和複雜性的增加,專案進行中盲目增加人員可能造成事倍功半的效果。適用於大型專案的Rayleigh-Norden曲線[4]表明,完成軟體專案的成本與時間的關係不是線性的,使用較少的人員,在可能的情況下,相對延長一些工作時間可以取得較大的經濟效益。然而值得指出的是,程式設計師小組的正常技術交流能改進軟體質量,提高軟體的可維護性,減少軟體錯誤,降低軟體測試和正確性維護的開銷。任務、人力、時間三者之間存在最佳組合,必須引起專案負責人的足夠重視。    

2、任務分解與並行化

軟體工程專案既然需要軟體開發人員集體的勞動,就需要採取一定的組織形式,將軟體開發人員組織起來。軟體人員的組織與分工是與軟體專案的任務分解分不開的。為了縮短工程進度,充分發揮軟體開發人員的潛力,軟體專案的任務分解應盡力挖掘並行成分,以便軟體施工時採用並行處理方式。

3、工作量分佈

用前幾節介紹的軟體估算技術可以估算出軟體開發各個階段所需要的工作量,通常用人月或人年表示。軟體在需求分析和設計階段佔用的工作量達到總工作量的40%~50%,說明軟體開發前期的活動多麼重要。當然這也包括分階段開發原型的開銷。大家熟悉的編碼工作只佔全部工作量的10%~20%,而軟體測試和除錯的工作量佔到總工作量的30%~40%。這對於保證軟體產品質量是十分必要的,實時嵌入式系統軟體的測試和除錯工作量所佔的比例還要大些。

4、工程進度安排

軟體專案的工作安排與其他工程專案的進度安排十分相似,通常的專案進度安排方法和工具稍加改造就可以用於軟體專案的進度安排。目前,程式評估與審查技術(PERT)和關鍵路徑方法(CPM)是兩種比較常用的專案進度安排方法。兩種方法都生成描述專案進展狀態的任務網路圖。網路圖中按一定的次序列出所有的子任務和任務進展的里程碑,它表示各子任務之間的依賴關係。網路圖也是作業分解結構(WBS)的發展。20世紀70年代,作業分解結構就已廣泛應用於航天、航空、航海、雷達、通訊、火控系統等領域的基於計算機專案的分解,並用以命名各項子任務,這些子任務不僅可以用網路圖的形式表示,還可以用樹型或層次結構圖表示。PERT和CPM方法為軟體規劃人員提供了定量描述工具,包括:

①關鍵路徑。完成關鍵路徑上所有任務時間的總和,就是專案開發所需要的最短時間。

②用統計模型估算開發每個子任務需要的工作量和時間。

③計算各子任務的最早啟動時間和最遲啟動時間,即確定啟動子任務的時間視窗邊界。

某個子任務的最早啟動時間被定義為該子任務的所有前導任務完成的最早時間。反之,某個子任務的最遲啟動時間被定義為在保證專案按時完成的前提下,最遲啟動該子任務的時間。與最早啟動時間和最遲啟動時間對應的概念是最早結束時間和最遲結束時間。它們分別是最早啟動時間和最遲啟動時間與完成該子任務所需要時間的和:在任務進度安排過程中,應先尋求關鍵路徑並在關鍵路徑上安排一定的機動時間和節假日,以便應付意想不到的困難和問題。採用這些工具可以大大減輕軟體專案管理人員在制定軟體專案進度表方面的工作量,並可提高工作質量。
[@more@]

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

相關文章