前一陣子 Teddy 看到一個消息，Watts S. Humphrey 這位軟工界的大師過世了(4 July 1927 - 28 October 2010)，這算是軟工界一個很大的損失 。Humphrey 博士寫了很多軟體工程方面的書籍與論文，對軟工領域可謂貢獻良多。大體上 Humphrey 博士的精神是『一個流程如果無法測量，就無法改善』，因此在他的書中可以看到很多制式的表格，提供軟體開發者一個『測量』的基準。這種精神反應到了極致，就是在軟工界鼎鼎有名的 CMM 以及後來進化版的 CMMI，因此有人稱呼 Humphrey 博士為 CMMI 之父。
今天要推薦的這本書就是 Humphrey 博士在 22 年前所寫得 Managing the Software Process 這本書。
路人甲：Teddy 你不是 agile methods 這一國的嗎，怎麼可以『為匪宣傳』？
路人乙：1989 年出版的『舊書』現在還在推薦？
還沒開始介紹就有鄉民們看的不爽了，請容 Teddy 娓娓道來。首先，Teddy 並沒有『討厭』或 『反對』CMMI。而且 CMMI 並不是一種『流程』，而是一種『評估流程成熟度』的框架（方法），軟體團隊可以選用任何的流程來達到 CMMI 所要求的評估標準。你可以用 Waterfall，用 RUP ，用 agile methods， 或用吸星大法，只要符合 CMMI 對於每一個流程成熟度等級的要求便可（當然如果要獲得證書是需要花一筆錢滴）。
講的再白話一點，CMMI 就是一種『評鑑標準』，就好像唸國中的時候學校有『整潔競賽』一樣，整潔競賽的評分標準有『地上有沒有垃圾』，『抽屜有沒有髒東西』，『桌椅有沒有對齊』，『黑版有沒有擦乾淨』，『垃圾有沒有倒』，『門窗電燈有沒有關好』，『打掃用具有沒有歸位』等等囉哩八唆的一堆規定。打分數的老師就用這些『評鑑標準』來評量你們班級的『整潔成熟度等級』。至於要如何達到『高整潔成熟度』，則是不會被規範在『評鑑標準』中。有的班級可能會用『排值日生』的方式，有的人會要求『全班留下來打掃』，有些『富二代』的班級可以把打掃工作『外包』，有的班級可能會花錢買 『iRobot』 外加『好神拖』以提昇打掃效率（一個以 xxx 工具支援的自動化打掃流程...XD）。總之不管是黑貓白貓，只要能通過『評鑑標準』的就是好貓。是不是這個意思？就是這個意思。
講了這麼多好像都不是重點... 總之：
(1) 介紹 Managing the Software Process 或是 CMMI 不算為匪宣傳。
(2) 此書雖然已經出版 22 年了，但是如果你是那種『測量的擁護者』，那這本書還是十分值得一看。此外，本書還是有很多軟體工程觀念，作法與名詞介紹，歷久彌新。
(3) 就算你是那種很不爽 CMMI 的人，還是要看。如果不『深入敵營』，如何打探消息並將敵人殲滅。
有看電視的人都知道，醜女（男）在進行大改造之前，都要被現場來賓狠狠的批評一下。同理可套用在軟體流程改善上。第三章介紹 Software Process Assessment 的幾點原則。
第四章談 The Initial Process，也就是 Level 1。一言以蔽之，Level 1 就是『亂七八糟』。接下來 5-8 章介紹 The Repeatable Process；9-14 章是 The Defined Process；15-16 章是 The Managed Process；17-20 章是 The Optimizing Process。在此列舉幾個大家比較熟悉的內容：
總之，這本書用『工程』的方法告訴鄉民們『軟體應該要這樣開發滴』... 不管看完之後是否買帳，多了解一種看法也是不錯的。另外，這本書不會只告訴你要達到 Level x 『應該』做這個，做那個，而且會實際告訴你『實做方法』。如果想導入 CMMI 的人看這本 CMMI: Guidelines for Process Integration and Product Improvement 書看的一頭霧水的時候，不仿先看看 Managing the Software Process。
友藏內心獨白：Humphrey 博士 2010 年 10 月逝世，而他的最後一本書 Reflections on Management 出版於 April 8, 2010。這豈不是說他老人家到生命的終點都還在寫書... 真是太令人敬佩了。