l

2011年2月21日 星期一

還少一本書:Managing the Software Process

Feb. 21 21:28~ 23:41

前一陣子 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 的人,還是要看。如果不『深入敵營』,如何打探消息並將敵人殲滅。


***

終於要講到書中內容,第一章開宗明義介紹 A Software Maturity Framework

The objectives of software process management are to produce products according to plan while simultaneously improving the organization's capability to produce better products. The basic principles are those of statistical process control....

The basic principle behind statistical control is measurement.

第一章提到了五個 process maturity levels:
  • Initial
  • Repeatable
  • Defined
  • Managed
  • Optimizing
***

第二章介紹 The Principles of Software Process Change

  • Major changes to the software process must start at the top. (就是說老闆要出來鎮壓反對勢力,至少不可以自己帶頭反對...XD)
  • Ultimately, everyone must be involved. (就是說最終要把公司上上下下每個人都搞得很累...XD)
  • Effective change requires a goal and knowledge of the current process. (減肥前要先拍照『證明』自己胖的跟條豬一樣,這樣減肥成功後才可以拿來跟前男友炫耀...XD)
  • Change is continuous. (改善是沒完沒了滴,就是說顧問的錢要一直付下去不可以省...XD)
  • Software process changes will not be retained without conscious effort and periodic reinforcement. (這一句也很重要,想一下,連 Scrum  裡面都有若干角色/機制可以呼應這一點。)
  • Software process improvement requires investment. (Teddy 內心獨白:這一條的意思應該不是叫大家每次都花個 100 萬新台幣去換個 CMMI Level X 證書吧... XD)
***


有看電視的人都知道,醜女(男)在進行大改造之前,都要被現場來賓狠狠的批評一下。同理可套用在軟體流程改善上。第三章介紹 Software Process Assessment 的幾點原則。
  • The need for a process model as a basis for the assessment.
  • The requirement for confidentiality.
  • Senior management involvement.
  • An attitude of respect for the views of the people in the organization being assessed.
  • An action orientation.
***


第四章談 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。在此列舉幾個大家比較熟悉的內容:
  • 第六章 The Project Plan
  • 第七章 Software Configuration Management (Part 1)
  • 第八章 Software Quality Assurance
  • 第十章 Software Inspections
  • 第十一章 Software Testing
  • 第十二 Software Configuration Management (Part 2)
  • 第十七 Defect Prevention
  • 第十八 Automating the Software 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。這豈不是說他老人家到生命的終點都還在寫書... 真是太令人敬佩了。

沒有留言:

張貼留言