《軟體專案管理應用》書評

sbuehring發表於2008-07-18
書籍英文名為“Applied Software Project Management”,作者Andrew Stellman & Jennifer Greene, O’Reilly, ISBN 0-596-00948-8[@more@]

在軟體專案管理方面,我們並不經常看到比較注重實踐的、易懂並且包含大量即時可用的操作描述的書籍。Andrew Stellman Jennifer Greene的《軟體專案管理應用》正是少有的、具備了這些優點的一本書。

很多關於軟體專案管理或者軟體工程的書都很枯燥無味並且闡述過度複雜。但是這本書卻是不同的:它的語言描述清楚卻不是過分簡單,作者對於細節程度的把握恰到好處。看起來他們很瞭解這本書的讀者群,所以可以恰如其分地提供非常實踐性的幫助。他們絕對做到了這一點。

書的第一部分涵蓋了適用於專案工作的技巧和方法。專案規劃、估算、工期安排、評估、設計製作和測試都分別各佔一個章節。第二部分則側重在如何高效地管理軟體專案,包括了關於變更管理、管理和領導力、外包專案管理和流程改良的章節。

整本書有一條清晰的主線,那就是識別出軟體專案團隊常常面臨的典型問題:必需條件不足;變更管理問題;專案的每個階段缺乏質量保證;無休止的測試和故障修復環節;軟體工程師和商業客戶之間的誤解和壓力等等。這些問題都是關於專案組織和管理方面的,而不是軟體工程技術方面。StellmanGreene憑藉他們在類似專案上的經驗為讀者提供瞭解決這些問題的實踐性建議。

StellmanGreene的確非常瞭解軟體專案團隊可能面對的困難。在前言部分作者描述了一個克服專案中長期問題的需要,並且這一要點在整本書裡貫穿始終。對於每一個問題,現實中總是存在不止一種的解決方法。作者在這裡描述了一個極為常見的情形,那就是專案的高層經理常常會懷疑技術隊伍對於工程的估算,不知怎麼地他會認為技術隊伍會人為地誇大估算來給他們自己留出懈怠時間。作者建議的方法是讓這些經理參與整個估算過程,從而瞭解到估算是用一個系統並且透明的方式來完成的。作者繼而具體地闡述瞭如何使用Wideband Delphi估算方法,並且提供了一些在此過程中可能用到的模板和檔案的示例。作者同時還提供了一個對專案團隊有指導意義的流程表。

隨後的章節涵蓋了規劃、工期安排、評估、需求、設計和測試的內容。除了關於設計的一章,大部分的章節對其論題的描述的具體程度都比較合理。關於設計的一章比較缺乏細節,另外作者沒有對可能產生的設計交付物提供必要闡述,也沒有說明這些設計交付物可能包含的內容。這與討論需求的章節形成了鮮明的對比:在需求一章裡作者詳盡的敘述了需求誘發和分析以及針對使用者的軟體需求說明書。

這本書的另外一個優點是在每一個專案管理或者軟體工程相關論題之後都給出了一個清單。清單是一個重要的質量保證方法,作者正確地指出,應當將清單運用到整個軟體專案中來儘早地發現錯誤。比如說,如果一個軟體需求清單發現了一個重要需求的缺失或者定義不清,那麼這個錯誤可以在分析的階段就得到解決。作者還指出,儘早地發現和修改錯誤所消耗的資源比在較晚的階段再解決問題所消耗的資源要少得多。作者用清單這個技巧來舉例說明專案中質量保證技術的重要性是非常有實踐幫助的。

我認為作者也許應該重新考慮一些例項的採用。比如說,他們在描述為了更好地維護而採用的程式重整時,用了一些Java語言中多次反覆重整的例子。最後作者說明了為什麼程式重整在程式編碼比較長的情況下仍然可用。這個論述是沒有問題的,問題在於作者在這裡採用了一個很不恰當的Java編碼來重整。這樣一來好像作者也掉進了一個很常見的程式設計師陷阱:用太多的時間來改寫原本就功能完整的編碼來實現“完美”程式。在我的實踐經驗中,專案的時間安排常常比較緊張,根本不可能有尋找“完美”程式的時間。另外,這些所謂的完美程式並不能夠給利益相關者帶來更多的業務收益。當然,這只是這本書中一個很小的瑕疵。

另外我認為如果這本書可以增加一些關於風險管理的內容的話會更完善。缺少風險管理常常會導致專案失敗。作者在這本書裡只是粗略的介紹了在專案規劃階段的風險管理,增加一段關於為什麼和怎樣在整個專案中實現風險管理的內容是很有價值的。

我覺得這本書缺少的另一個內容就是對迭代方法的詳細分析。書中一個隱含的假設就是軟體專案應當採用瀑布方法,這一點我是不同意的。在過去的20年裡已經有不少基於迭代法而發展出來的不同於瀑布法的方法。瀑布法的一個最主要的弱點在於它的前提假設是在專案的開始階段就已經識別了專案中的所有需求。

另一方面,迭代法認為專案需求是會因為客戶加深對所需產品的理解或者因為業務環境的變化而改變的。基於這個假設而設計的迭代法能夠更好地應對環境的變化。對於瀑布法而言,各種變更則要求對之前的專案階段進行回顧,相應的就會增加專案的財力和人力消耗。作者只用了不到一頁的篇幅來介紹軟體建模方法(RUP),而作者應該更加關注如何將軟體建模方法的實踐過程運用到其他迭代式的方法中。

最後,我覺得這本書因為試圖面向3類不同的讀者而使得內容過於廣泛。第一部分是寫給軟體專案團隊的(專案經理、分析師、程式師和測試員);第二部分則面向於那些專案管理方面的顧問以及負責管理外包軟體專案的專案經理。如果能夠專注於第一類讀者的話會更好。

講述外包專案管理的倒數第二章內容很粗略,容易讓人誤會作者之所以提到外包是因為外包是當今一個非常流行的業務方式。關於流程改良的最後一章也是過於簡短,不足以有效地闡述這樣一個寬泛的論題。把這些專案管理方面的問題放在單獨的書籍中討論應該更為恰當。

結論

儘管如此,這本書對於參與軟體專案的讀者,無論是專案經理還是技術人員,都是一個很好的指導。他們能夠從這本書中找到很多可以直接運用到實踐中去的知識和技巧。

我願意將這本書推薦給每一個從事軟體開發的團隊成員,因為它的許多實踐指導能夠幫助人們提高開發軟體的質量。我也把它推薦給那些對其軟體開發隊伍持懷疑態度的高層管理者,也許這樣一來他們能夠更好地瞭解為什麼注重流程改良是一項最有回報的投資。

書評作者

Simon Buehring是一位在英國及海外IT行業都有豐富的專案管理經驗的專案管理師及專案管理培訓師。他曾在許多FTSE一百強的公司以及公共行業工作,現在則致力於為您及您的公司提供PRINCE2專案管理培訓課程。請通過KnowledgeTrain的網站來聯絡他。

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

相關文章