軟體開發人員的組織與分工
按“主程式設計師”組織軟體開發小組是一條比較成功的經驗。“主程式設計師”應該是“超級程式設計師”。其他成員,包括程式設計師、後備工程師等,是主程式設計師的助手。主程式設計師負責規劃、協調和審查小組的全部技術活動。程式設計師負責軟體的分析和開發。後備工程師是主程式設計師的助手,必要時能代替主程式設計師領導小組的工作並保持工作的連續性。軟體開發小組還可以根據任務需要配備有關專業人員,如資料庫設計人員、遠端通訊和協調,提高了工作效率。這種形式的成敗主要取決於程式設計師的技術和管理水平。除了按主程式設計師負責的程式設計師小組組織開發人員外,還可以按“無我程式設計”建立軟體民主開發小組。這各組織形式強調組內成員人人平等,組內問題均由集體討論決定。這種組織形式有利於集思廣益、互相取長補短,但工作效率比較低。
軟體專案或軟體開以小組可以配置若干個祕書、軟體工具員、測試員、編輯和律師等到。祕書負責維護和軟體配置中的文件、原始碼、資料及所依附的各種磁介質;規範並收集軟體開發過程中的資料;規範並收集可重用軟體,對它們分類並提供檢索機制;協助軟體開發小組準備文件,對專案中的各種引數,如程式碼行、成本、工作進度等,進行估算;參與小組的管理、協調和軟體配置的評估。大型軟體專案需專門配置一個或幾個配置管理人員,專門負責軟體專案的程式、文件和資料的各種版本控制,保證軟體系統的一致性與完整性。軟體開發小組內部和小組之間經常交流情況和資訊,以便減少誤解,刪除軟體中的個人特徵,提高軟體的質量.
軟體專案的開發實踐表明,軟體開發各個階段所需要的技術人員型別、層次和數量是不同的。軟體專案的計劃與分析階段只需要少數人,主要是系統分析員、從事軟體系統論證和概要設計的軟體高階工程師和專案高階管理人員。概要設計時要增加一部分高階程式設計師,詳細設計時,要增加軟體工程師和程式設計師,在編碼和測試階段還要增加程式設計師、軟體測試員。在此過程中軟體開發管理人員和各類專門人員逐漸增加,到測試階段結束時,軟體專案開發人員的數量達到頂峰。軟體執行初期,參加軟體維護的人員比較多,過早解散軟體開發人員會給軟體維護帶來意想不到的困難。軟體執行一段時間以後,由於軟體開發人員參與糾錯性維護,軟體出錯率會很快衰竭,這時軟體開發人員也就可以逐步撤出。如果系統不做適應性或完善性維護,需要留守的維護人員就不多了。上述人力資源安排類似下所示Rayleigh-Norden曲線。根據Putnam得出的軟體專案開發工作量與開發時間的四次方成反比的結論,得出軟體開發的人員-時間折衷定律:在時間允許的情況下,適當減少人員會提高工作效率,降低軟體開發成本。F.Brooks從大量的軟體開發實踐中發現:“向一個已經延期的軟體專案追加開發人員,可能使專案完成的更晚。”這從另一個角度說明軟體開發寧可時間長一點,人員少一點。這樣可以大大減少人員之間的通訊開銷,工作效率會更高些。
由此可見,在軟體開發過程中,人員的選擇、分配和組織是涉及軟體開發效率、軟體開發進度、軟體開發過程管理和軟體產品質量的重大問題,必須引起專案負責人的高度重視。