http://picasaweb.google.com.tw/liangyun.wang2
好像又空了很久齁,不過我還記得之前跟大家討論的是軟體架構啦,這次來談談流程好啦
上個學期上的 Seminar for Software Process 課程,比較像是用大量的閱讀來洗腦,就是希望能把
流程的概念灌進管理人的腦子裡。 這門課的講師 Dr.Mark Paulk 是 CMM 當年的主要計畫成員之一。
流程這個字的意義,簡單來說是 可以重複的做事方法,也就是每次遇到相同的問題,我們都可以使用相同的劇本,
微調以後就上陣。或許有的人會說,我們組織太小,我們做的事情太簡單,沒有流程。這實在是不太可能的,大部分
的時候,我們只是沒有把流程具體化、文字化而已,大部分的組織,對於正常的事務,都還是有些既定處理方法的。
要不要把流程給文字化,當然有得討論,因為很多時候真的有些麻煩。
好,現在我們有共識了,雖然未必訴諸文字,但是大部分的事務都有既定的處理方法。接下來就是要看這套方法的效果
如何?比方說,我們發現目前的流程是拿到需求就開始寫程式,通常都沒有經過設計與設計審查的階段。寫完程式之後,
自己測試一下就 check in,等下個月由測試部門去測試。測試部門反映問題回來之後,我要想一想、找出錯誤的地方
加以修改,然後再送測試,直到正確為止。
這樣的流程有甚麼問題呢?一點問題也沒有。之前與大家談軟體架構的時候就提過,並不存在
絕對判斷好壞的標準,完全看計畫相關人士(stakeholder,通常就是客戶、管理階層、開發人員等等)
感興趣的是甚麼。
在談流程改善的時候,Mark 跟我們說,最重要的就是 business interest。若是流程改善的行動沒有
商業利益作為基礎,就得不到管理階層真心的支持,行動很容易就會失敗,或者流於形式。這個論點應該是很容易了解的。
假設管理階層交付的任務是減少產品開發的時間,希望由客戶提出需求到移交的時間,可以盡量縮短。第一件事情就是
回答:現在要花多少時間?經過收集或者翻查一些資料(請注意資料收集本身也是要花時間與成本的喔)
平均說來,從客戶希望增加一項(事前預估為)小型功能,到這個功能真的可以出現在給客戶的版本裡,
大概是 100 工作小時,延遲大約兩個月。
接下來就要回答:時間到哪裡去了?可能是除錯花太久,所以是程式寫不好,應該加強設計審查。
可能是測試週期過長,所以應該增加人手或者精簡測試。可能是需求定義不清楚導致重工太多,
可能要加強需求撰寫人員(可能是分析師、客戶代表、或者部門主管,都無所謂)的訓練,
或者增加期中向客戶簡報展示紙上原型的階段。
原因或者解決的方法,不需要我多說,只要有適當的資料,大部分的人都看得出來,問題是如何取得資料、
得知改善的效果,以及不再犯同樣的錯誤?
取得資料本身可以是固定的流程收集所有工作,或者以專案的形式分析小部分,其實蠻需要經驗的,
專業的顧問可能會更有幫助,Mark 常說大家有需要可以找他啊 ^_^
假設我們繼續收集資料,發現對於同樣類型的功能,工作小時數變少了,延遲也縮短到一個半月,皆大歡喜。
又增加了規定把改善對策加入到每個人的工作流程裡,更利用部門間的會報把經驗分享出去。
經過幾次這樣的循環,公司的流程就會越來越成熟,而 CMM 就是評估個別領域流程 "成熟度" 的方法。
CMM(現在的版本叫 CMMI) 不是 "作" 出來的,也不應該當成 "目標",而應該是在內部不斷進行流程改善,
累積到一個程度看看我們跟別人相比夠不夠成熟的一項參考。 Mark 本人是 CMM 的主筆,也接觸過很多為了
取得政府標案製造假證據畫虎爛通過 CMM/CMMI 認證的例子(顯然美國人在這方面也沒有比較好啦),
他不斷地強調這對品質或者生產力是沒有用處的。
要是有人對流程改善或者品質管制有興趣的話,也可以繼續談談,或者大家對 security 比較有興趣呢?
這個學期(對,暑期) 我修了一門 independent study,題目是尋找 security 對現有系統架構的影響。
至於 studio project,我們進度還不錯,經過兩個 sprint,客戶對於第一次 release 頗為滿意。目前最大的問題是
老師們覺得我們在流程計畫與掌控上的著力不夠,花太多時間在寫程式了。我身為 tracking manager,責無旁貸啊。