軟體工程 -物件導向程式設計與UML系統分析實作 第五章 軟體專案管理 軟體工程 -物件導向程式設計與UML系統分析實作
5.1 軟體專案管理的定義 它包含了「軟體」「專案」「管理」,每一個名詞皆是一個專門的學問
5.1.1 專案的定義 在日常用語中,專案(project)可指需要單獨作專門處理的事件或事物。
專案 專案是一項或一系列項目的工作,它有始有中也有終。專案經理必須在有限定的時間和經費的條件下,按期把它完成和交付[Liz Maclachlan,1996]。
5.1.2 專案管理的定義 專案管理就是管理專案的學問。專案管理定義即是在有限的資本、人力、時間、資源與設備範圍內,達成專案的最佳化。
5.1.3 軟體專案管理的定義 軟體專案管理包括軟體度量、專案估算、進度控制、人員組織、配置管理、專案計劃等專案管理相關學問。
5.2 軟體專案管理的知識領域和程序 美國專案管理學會(PMI)於1984揭櫫了專案管理的九大知識領域 並制定專案管理五大程序
圖5-1 專案管理的九大知識領域和五大程序
5.2.1 軟體專案管理的知識領域 專案管理包含九大知識領域: 整合管理 (integration management) 範疇管理 (scope management) 時程管理 (time management) 成本管理 (cost management) 品質管理 (quality management) 人力資源管理 (human resource management) 溝通管理 (communications management) 風險管理 (risk management) 與採購管理 (procurement management)
圖5-2案管理九大知識領域
範疇管理 確保所需執行的工作與活動均能包含在專案中。專案管理的範圍,是否有變動的需求。
時程管理 確保能如期完成專案所需之工作與活動的一系列程序及方法。時間是所有專案管理人員最大的夢魘。
成本管理 確保專案能如預算地完成所需之工作與活動的一系列程序及方法。
人資管理 確保以最有效的方式運用人員完成專案所需之工作與活動的一系列程序及方法。
風險管理 用以辨識、分析、和回應專案風險的一系列程序及方法。
品質管理 確保專案能如質地滿足所有的需求的一系列程序及方法。
採購管理 用以確保專案外購的物品或委外的服務能順利獲得的一系列程序及方法。
溝通管理 確保能適時妥當地將專案相關資訊予以蒐集、保存、彙整、發佈及傳送給所有專案利益關係人的一系列程序及方法。
整合管理 整合管理係包括專案規劃、執行、與管控之整合性管理。
5.2.2 軟體專案管理的程序 專案管理包括五大重要程序,包括啟動程序、計畫程序、執行程序、控管程序與結案程序
圖5-3專案管理五大程序
五大重要程序說明 1. 啟動程序:需求產生,定義任務進行方式。 2. 規畫程序:明確定義目標、階段、限制因素及 達到目標之手段。 1. 啟動程序:需求產生,定義任務進行方式。 2. 規畫程序:明確定義目標、階段、限制因素及 達到目標之手段。 3. 執行程序:協調人員及其他資源以實現計畫。 4. 控管程序:定期監控執行結果,控制變數,確 保目標之達成。 5. 結案程序:審視並接受專案執行結果,儲存專 案知識。
5.3 軟體專案的啟動 專案通常會任命一位專案經理(Project Manager, PM)和多位專案成員(Project Member)所組成一個團隊
專案啟動會議 專案啟動時, 通常會先召開進行一個專案啟動會議(Project Kick off Meeting, POM)。
5.4 軟體專案規劃 一是規劃的技術 另一是規劃後所完成的計劃書。
5.4.1 軟體專案規劃技術 工作分解結構(Work Breakdown Structure,WBS):工作分解結構是用來協助專案成立後進行規劃及編制預算、可安排時程、評量成效、進行型態管理,並可測試與評估成效;也就是將專案「模組化」,以進行專案的控管與進度的追蹤。 里程碑(Milestone):意指專案過程中重大之事件、時程點、活動或檢驗點,最重要用途在於檢視預定計畫與實際執行時之差異。 甘特圖(Gantt Chart): 企業運用各種方法定義出規格、時間及成本之後,發展出一張時程管制之甘特圖(Gantt Chart)。 要徑法(Graphical Evaluation and Review Techniqu,CPM):此法旨在找出執行過程中之"要徑"(最少成本+最適當時程之步驟流程),以嚴格控制進度。
5.4.2軟體專案計畫書 軟體專案計畫書發展(Project Plan Development, PPD) 乃是將計畫程序包括規劃過程中所得到的結果,去創造一份具一致性且條理分明的文件,用以指導專案的執行和專案的控制、記載專案計畫之假設事項、對備選方案選擇之決策、專案利害關係人之間的溝通、定義關鍵性的管理審查,包括內容、範圍和時機、提供進度評量和專案控制的一個基準。
擬出軟體專案計畫書 1. 先將所有工作項目列出。 2. 將所有可用時間列出,並依工作性質與難易度,將時間分配於各工作項目。 1. 先將所有工作項目列出。 2. 將所有可用時間列出,並依工作性質與難易度,將時間分配於各工作項目。 3. 訂出進度稽核點,通常是一星期一個稽核點。專案經理必須於稽核日期,確實檢查各個組員(當然也包括自己)的進度。
5.5 軟體專案執行 專案執行部份其實只包括以下三項任務: 一、 了解什麼是已經完成的事。 二、 了解什麼是未完成的事。 三、 依據設定的目標,應採取什麼應變措施來讓未完成的事準時完成。
5.6 軟體專案控制 進度控制是專案經理要負重責大任的重要工作。 專案經理必須於稽核日期,確實檢查各個組員,當然也包括自己的進度。
5.7 軟體專案的終止和結束 順利完成實現了目標或被迫提前終止時專案即結束,專案結束代表專案的活動已經告一段落。
表5-1軟體專案完成後的使用情形
專案團隊 專案任務和階段性使得專案團隊都是臨時的組織, 一般在專案開始時組成跨專業專案小組, 在專案執行的過程中成員還可能會發生變化, 結束或終止後小組即解散。
5.8軟體專案成功與失敗因素 根據Standish Group, CHAOS, 2000統計報告,只有26%軟體專案成功
5.8.1軟體專案成功因素 1. 程式碼大小(Code Size ):經由發展人員所產生的程式 碼、需求功能或軟體元件之數量多寡。 2. 流程(Process):執行專案的流程,包含專案管理、需 求管理、分析與設計、程式碼撰寫、測試、部署 (Deployment)、建構(Configuration)與異動、環境等流 程,特別是如何讓專案流程可重複使用於不同專案, 提昇可再用性與減少人與人的溝通行為。 3. 人員(Personnel):提昇個人及軟體專案相關人員的經 驗。 4. 環境(Environment):使用有效的工具及技術支援軟體 專案,讓軟體開發更自動化。 5. 品質(Quality):需要專案品質,以達到功能、績效、 穩定性與適應性。
圖5-4專案成功的三大要素
5.8.2軟體專案失敗因素 無法準確地了解使用者的需要 無法有效地處理變更需求 太晚發現專案中的嚴重問題 軟體難以維護或擴充 軟體品質及效能無法接受
5.9軟體專案管理的軟體 一個專案執行時,透過系統管理,使負責專案的各部門都能及時了解專案所有最新的進度及自己該部門的進度在專案中是否需要 加快或更改。
圖5-5 Microsoft Project 2002網站簡介
5.10 專案計畫書發展 專案管理計畫書(Project Management Plan)之製作,是依專案特性發展出專案成員共同遵循的準則。可利用一種專案管理工具軟體(如Microsoft Project 2003)之基本操作及進階運用,製作甘特圖、主計畫時程表、資源規劃、專案追蹤管控等許多專案計畫書所應包含的內容。
5.11案例研討-訂房系統 用本書的案例-訂房系統,來探討如何進行軟體專案管理。
圖5-6主計劃時程表
圖5-7 專案組織圖
圖5-8系統作業進度表
5.12 結論 軟體專案管理的效益卓著,能讓軟體業者強化軟體開發的能力是好處之一,提高專案的獲利空間,交期準、低成本、品質好的完成軟體專案。