Effective Project Management

Effective Project Management

「如何有效地管理專案?」像這樣的問題一直被大家討論著,然而影響專案成功的因素實在太多、太廣,從對內的資源的有效控管,時程與成本的精算,到對外與客戶之間的關係聯繫,專案需求的明確定義等,只要其中一個環節沒有顧好,專案常常會流於失敗,甚至嚴重關係到公司的信譽。

傳統的專案管理方法,是將作業內容及工具標準化,讓專案管理人員可以有效地透過系統化的方法妥善管理。然而在面臨不同性質的專案時,一樣的標準化方式也能 一併套用嗎?軟體開發流程也有重量級(像RUP)與輕量級(像XP、Agile)的差別,所以專案管理是不是也可以因應不同的需求而有不同的方法呢?

多樣化專案管理方式,讓專案也能對症下藥
《Effective Project Management》一書介紹了3種不同的專案管理方式:傳統式(Tranditional)、適應式(Adaptive)、及極限式 (Extreme)。光就第一部分介紹傳統式專案管理的內容就值回票價了,其他兩種方式更是可以讓讀者以不同的思考角度,看待專案管理的問題,了解不同方 法之間的差異。會有後面兩種方式也是基於傳統方式的缺點而改良,在觀念及方法上都是比較創新的。

兩位作者Robert K. Wysocki與Rudd McGary加起來將近70年的專案管理經驗讓內容更具參考價值,本書也受到PMI(Project Management Institute,美國專案管理學會)的加持,成為專案管理類之推薦書籍。

本書內容便是依這三種不同的管理方式分別闡述,第一部分包括12個章節,主要介紹傳統專案管理(Traditional Project Management, TPM),從專案的定義開始談起,如何界定專案的範圍(Scoping)、明確定義專案活動(Activity)、預估時程及所需資源成本、組織管理專案 團隊、監控專案進度,到最後的驗收結案。

而極限式專案管理(Extreme Project Management, xPM)主要是針對在專案初期目標尚未明確,且無法有效定義專案範圍,或是針對需求時常變更的專案,甚至連專案結束的方式都毫無章法可言。故xPM強調透 過4個相當短的階段(Initiate、Speculate、Incubate、Review)快速地反覆進行,在每個階段結束時,同時規劃下個階段的方 向及執行內容,減低因為不確定性的影響。

客戶常會以「花錢的是老大」的心態,需求變更次數的頻繁,讓整個專案的需求及範圍無止境的延伸。本書的第二部分以7個章節來說明,針對TPM及 xPM不足之處提出折衷的新方法:適應式專案管理框架(Adaptive Project Framework)。適應式的專案管理方式主要在於流程反覆進行,不斷與用戶互動以確保專案方向的正確性。包含定義版本範疇(Version Scope)、擬定循環計畫(Cycle Plan)、進行循環建置(Cycle Build)、實施用戶查核(Client Checkpoint),以及事後審查(Post-Version Review)等五大步驟。

第三部分則探討企業在進行專案時所應考慮的兩大議題,一個是在多個專案同時進行時,所需要進行的專案組合管理(Project Portfolio Management),在資源有限之下做到最大運用;另外是如何發揮專案支援辦公室(Project Support Office)的效用,提供專案在進行過程中最完善的支援任務。

清楚描述專案管理,紮實讀者的理論基礎
相較於兩年前的版本(第二版)單純包含傳統式專案管理的內容,在這個版本新增了適應式與極限式兩種不同的方法論點。作者的用意便是因應環境多變的 需求,希望以提供多樣化的管理方式來解決不同性質的專案難題,可以讓讀者以不同的思考角度來看待專案管理的問題,了解不同方法之間的差異。

就本書的廣度而言,是十分完整介紹專案管理方法的書,適合用來教學或當成工具書,但較少介紹實務經驗及案例分析建議,是美中不足之處。而就深度而 言,如何讓專案管理更為有效(Effective),就讀者而言會希望看到較具體明確的建議,若是需要針對某些議題再深入研究,就需要再參考作者列在附錄 中的參考文獻。

只要接觸到物件導向分析與設計的課題,熟悉UML工具及設計樣式(Design Patterns)是不可避免的,想當年剛開始接觸UML時,公司的前輩便丟給我《UML Distilled》這本書,其實,對於一個已經被傳統瀑布式開發流程荼毒許久的我來說,K完這本書之後完全不知其所云(可能是資質太差,無法感受到其精 髓),更別說是上手了。後來也是不斷地收集網路上UML相關討論,才零零碎碎,片片斷斷地搞清楚UML在做什麼,慢慢地與實務面結合起來。

坊間不乏探討UML及Design Patterns的書籍,有些內容只是枯燥地逐一介紹UML每個圖例及符號的使用方法,有些書籍完全不提專案實務上的運用,而有些書籍只舉出無關痛癢的例 子(像是車子與輪胎的老掉牙故事),對於複雜的現實需求毫無助益,讀者看了這些書也很難將理論應用上手(筆者便是其中的一位)。當筆者接觸到 《Applying UML and Patterns》時,翻開封面看到內頁的流程圖(Sample Unified Process Artifact Relationships)和GRASP原則,深深覺得相見恨晚,許多我對UML塵封已久的疑慮都可以從這本書中找到。

結合作者多年實務經驗,內容詳細完整

本書在架構設計上依開發流程分成四大部份,從第一部份Inception階段探討如何定義及分類需求,如何利用使用案例圖(Use Case Diagram)及活動圖(Activity Diagram)將需求具體化。到第二部份Elaboration階段初期,討論如何將需求建構出領域模型(Domain Model),分門別類地規劃出物件及其間的關係,運用Class Diagram進行需求分析。第三部份Elaboration階段中期,則討論如何加入Patterns來進行物件設計,不斷改良上個階段的設計內容。而 第四部份Elaboration階段後期則包括軟體架構(Architecture)及框架(Framework)設計。

對於學習UML的讀者來說,UML符號及其代表意義的問題都不大,比較大的問題會是在每個UML圖的使用時機,以及如何將抽象的轉化成UML方式 來表現。光這個觀念筆者也是花了不少時間才建立起來。本書值得推薦的是,作者依開發流程分別說明每個階段會用到的UML圖有那些,詳細描述每個UML圖在 引用時需要,並說明與前後階段的關連性,讓讀者能對UML的用意更有深刻體會。

而設計樣式(Design Patterns)相信也是許多開發人員難以消化的課題。本書針對四人幫所著之《Design Patterns》一書中常用Patterns的運用也有專章說明,除了介紹Patterns本身的用法之外,同時亦提到在設計及實作階段時運用這些 Pattern時應該留意的重點,並搭配程式碼讓讀者更了解最終透過UML工具產生的程式內容。

光介紹UML是不夠的,結合實務及流程才重要

案例研究也是本書的另一個值得推薦的優點。許多UML書籍不是過度著墨在標記(Notations)的使用方式,就是很少與軟體開發流程結合,所 以讀者常會有知道一大堆的UML圖,但卻說不出來那個階段該套用什麼樣的工具。作者以實例方式貫穿本書,讓讀者可以從需求階段開始,循序漸進地思考如何流 暢地利用UML工具套用到開發流程的每個階段中。

本書目前為第三版,與前個版本內容的差別主要在於本書以UML第二版標準來介紹,增加了一個大家都十分熟悉的「大富翁遊戲」當做案例研究,在反覆 及演進式開發過程中歸納出更多的使用技巧。同時在這個版本中加入敏捷(Agile Modeling)理論、重構(Refactoring)、以及測試導向開發(Test-Driven Development)的討論,亦說明如何套用UML於此輕量級的開發流程中。另外改良原有內容,加入更多的圖片及學習小技巧來輔助說明,並再加入一些 業界較受歡迎的方法論進來,讓讀者更容易閱讀而且更實用。

Follow

Get every new post delivered to your Inbox.