Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
決
策
e話
題
20Galaxy Software Services
從「根本」做起 「持續」流程改善
CMMI ―專為軟體量身訂做的流程改善制度
撰稿/楊東城 叡揚㈾訊 技術發展辦公室 經理
CMMI真是㆒盞明燈嗎?
CMMI(Capability Maturity Model Integration,
能力成熟度模式整合),以㆒句最簡單的話來說
明,CMMI是㆒套為了系統工程與軟體工程量身訂做
的流程改善制度。由於此次的焦點主要係針對軟體
的部份進行探討,因此,可再簡化為『CMMI是㆒套
為了軟體工程量身訂做的流程改善制度』。
若根據美國軟體工程㈻院(Software Engineering
Institute,SEI)的文件,再進㆒步深究,㉂會衍生
出「連續式」與「階段式」兩種不同表述方式,
接著是「流程領域」的主題與不同的分類,而且每
㆒個「流程領域」都務必達到「目標」、「執行方
法」,最後才是看到「內容」。然而,軟體廠商在
導入CMMI時,會碰觸到正反兩面的問題,讓我們試
就此問題來做更深入的探討。
首先,不管是㊞度執行CMMI的公司或是國內現
已導入CMMI的公司及輔導廠商,都將CMMI視為救
星,寄予無窮的希望。CMMI搖身變為『㆟㈪神話』
裡的「銀彈」,㆒槍就能讓狼㆟立即斃命。然而,
事實情況真是如此嗎?其實不然。根據The Standish
Group在2000年針對軟體專案準交率進行大規模調
查,結果顯示軟體專案能順利準時結案的比例實在
低的可憐,軟體專案的成功率不到30%。CMMI果真
是㆒盞指引方向的明燈嗎?答案頗耐㆟尋味。
其次,㆒般輔導公司在介紹廠商如何利用CMMI
來改善軟體品質問題時,都會提出㆔個維度,為
「People」、「Technology」、「Process」,而其㆗
尤以「Process」為其㆗的「槓桿點」最為重要。㈲
趣的是,在談到導入CMMI遭逢的困難與風險時,卻
㆒致將焦點對準
「People」,如尋
求高階主管的支持
與同仁的配合與投入
等,這對於風險管理
來說並不太合理。
科技始終來㉂於㆟性
近來,許多㈽業
管理方面的暢銷書,如
管理大師Peter Drucker 的「㈲效的管理者」及Joan
Magretta 的「管理是什麼?」,都㈲㆒個共同現象,
即強調「㆟」的重要性。書㆗提及,現㈹經濟環境
㆗的工作,絕大多數是知識工作和服務工作,過去
強調㈼督與控制的管理工具已慢慢淡出㈽業管理的
舞台。我們無法靠「㈼督」的方式來逼迫工程師㊢
出好的軟體程式,也無法藉以「命令」讓產品設計
師㆒夕之間就變得更具創意,同樣的道理,CMMI也
不行。曾㈲家知㈴科技業者打出㆒個響亮的口號:
『科技始終來㉂於㆟性』,將這句㈴言套用在CMMI
的品質改善是再㊜合也不過了。或許「Process」是
「槓桿點」,但最根源的動力還是來㉂於「People」
㆟性㆖。
㆒般而言,㆒件事情背後所隱藏的「動機」常
是促使我們完成該事情的主要原因。既然如此,那
麼導入CMMI的成功「㆟性」因素背後的動機是什麼
呢?或許我們可以這樣假設:
Q:為何要導入CMMI?
A:當然是為了能擁㈲更好的軟體品質!
21Galaxy Software Services
決
策
e話
題
Q:為什麼導入CMMI就能創造更好的軟體品質?
A:因CMMI在軟體開發的各個「流程領域」裡,都
設定了務必達到的要求與目標,只要能達到要
求,就定能保障軟體的基本品質。
Q:若沒㈲CMMI的要求,在軟體開發過程㆗,對於
「流程領域」的要求是否就不再需要?
A:這,就是筆者所認為的關鍵性問題了!
又可依「需要與否」的角度,區分出兩個不同
的問題:
第㆒個問題是「若沒㈲CMMI的要求,是否就無法
㊢出㆒個好的應用系統?(稱之為必要條件)
答案是「YES!」筆者以為CMMI導入成功與否
的「關鍵」,同時也是「㆟」這個維度的所在。許
多軟體開發㆟員甚㉃是客戶都不認為除「㊢程式」
之外的「軟體工程」所要求的內容,對於開發㆒個
應用系統而言是㈲其「必要性」的。大多都是當㈲
問題發生時,才回過頭將軟體工程的要求全數搬出
檢討,如需求分析未確實執行、單元測試沒㈲做完
整、風險管理未事先討論詳細等,實不勝枚舉。然
而,當㆘個專案又開始執行時,同樣的問題還是會
㆒再發生,無形㆗也形成㆒種不良的示範與循環。
既然軟體工程的程序是如此重要,為何仍無法
受到軟體廠商及客戶的重視呢?究其原因在於,對
軟體本質㆖的複雜度及對軟體缺乏足夠且深入的了
解。因此,㆒旦客戶㈲不合理的要求提出時,軟體
廠商大多選擇犧牲堅持立場而予以妥㈿,㉂然影響
專案準交率的時間,進度㆒再被拖延。其結果就會
陷入『㆟㈪神話』㆒書㆗所提的,在㆒個Delay的專
案㆗再加入㆟手,只會使情況變得更糟。
㆒套軟體系統最明顯的錯誤是將問題過於單
純化。但這並不單是開發㆟員或客戶會犯的錯誤,
而是對於整個軟體產業環境的市場機制所產生的誤
解。筆者發現㈲㆒種產業與軟體產業㈲極類似的情
況,就是「減肥食品」。減肥食品的廣告不斷標榜
著「不用運動」、「㆒週見效」、「無副作用」等
誇張訊息,是否與研討會裡不斷向與會來賓灌輸的
「5個步驟開發㆒個Web Services」、「又快又好」、
「不用Coding就能開發系統」等訊息相類似?想當
然爾,結果早在預料當㆗,軟體系統就好比㆟體的
脂肪不斷㆞困擾著你我,但仍㈲數不清的㆟會對這
樣的謊言深信不疑。
你大可不必會撰㊢程式,但㆒定要了解開發
㆒個軟體系統絕對不等於㊢程式,就如同蓋㆒棟大
樓,最後實際建造的工作僅佔整個工程的㆒小部份
而已,但大多數的時間都必須花費在大樓的整體設
計、驗證及與業主不斷溝通、修改設計藍圖的過程
㆖,我們從沒聽過大樓蓋到㆒半才被業主臨時要求
要多加蓋㆒層樓或少蓋㆒層樓的笑話,但軟體工程
可就不同了。軟體在開發過程㆗,會不斷㆞被要求
要修改程式,美其㈴是客製化才能讓系統更貼近使
用者的真正需要,但實際情形卻是㆒支程式在經過
超過10個㆟在不同時間修改過後,只是徒增軟體本
身的複雜度。
在沒㈲CMMI時,我們不需製作許多文件來交
待軟體開發的流程與時程,修改程式與功能的增刪
修可以隨使用者調整,想改那裡就改那裡;但㈲了
CMMI後,每㆒個動作都必須依據SEI制定的準則,
隨意修改㆒行程式的事情恐將成為回憶,每㆒步都
必須從專案管理的角度審視,如修改程式是否會影
響開發時程及成本?是否要對應到哪㆒㊠需求或功
能的變更?修改程式是否會影響其他的分析設計?
㈲功能㈲哪些需重新測試?應留㆘什麼樣的記錄以
利後續的追蹤修改等…凡此種種,影響甚深,在不
斷要求修改需求的情況㆘,最終所賠㆖的㈹價與成
本將是軟體廠商及客戶㉂己。
決
策
e話
題
22Galaxy Software Services
第㆓個問題是「如果完全遵照CMMI的要求,是
否意謂著我們就可以㊢出㆒個好的應用系統?」
(稱之為充分條件)
答案是「NO!」這個問題還可以轉換成「除了
CMMI外,㆒個好的應用系統還需具備什麼條件?」
或是「CMMI真㈲這麼完美嗎?及㈲沒㈲什麼問題是
CMMI無法解決的?」的形式來思考。
除了CMMI能帶來的好處及產生的正面效益外,
導入CMMI的過程㆗可能遭遇的障礙或是CMMI的缺
點也應在導入前納入考量,才能在事先規劃並避免
可能發生的錯誤。然礙於篇幅限制,試提供幾點逆
向觀點,如㆘:
C M M I僅要求軟體開發應達到什麼要求
(What),卻未談及該如何去做(How)─因
此,軟體廠商若只是為了達到CMMI的要求才
設計出㆒堆文件來應付CMMI的評鑑,即便通過
評鑑,所衍生的負面效益卻遠比導入CMMI帶來
的好處還多,可謂得不償失!更㈲可能會流於
形式,為文件而文件,最後工程㆟員仍沿用舊
㈲習慣與方式開發軟體。曾經在網路㆖看到討
論XP(eXtreme Programming,開發流程亦稱終
極流程)與CMMI的差異。㈲㆟認為XP是講求
最少的文件與重視程式設計本身是否能符合快
速變動的專案需求;而CMMI卻恰好相反,不但
要求準備許多文件,㊟重流程,並嚴格要求每
個步驟,XP與CMMI兩者間是㈲衝突的。事實
㆖卻非如此,㈲些公司採用XP的方式來從事軟
體開發,也同時獲得ML5的CMMI評鑑㈾格。因
此,軟體廠商應該思考如何設計㆒套最符合本
身需求的最佳開發方式,遠比只想取得CMMI的
評鑑來得重要。
CMMI沒㈲教導軟體廠商該「找出需要做什
麼」,僅教導在流程㆖該做到什麼要求,這之
間的差距甚大──在『最後期限』及『與熊共
舞』的作者Tom DeMarco提到:「軟體的關鍵
問題就是“找出需要做什麼”,而“怎麼做”則是
次要問題—所㈲的技術、工具和過程解決的都
是這個次要問題。」筆者完全認同此觀點。的
確,在“怎麼做”的問題㆖,我們已獲得極大的
進展,但在“做什麼”的問題㆖,幾㈩年來情況
似乎仍未獲得太大的改善。
導入重點應著重在找出㆒個「好」的軟體過程
─UML的創始㆟之㆒Ivar Jacobson明確的指出,
「把㆒個好的軟體過程變得可度量非常容易,
但是把㆒個可度量的軟體過程變成㆒個好的軟
體過程卻很難。」由此可看出,軟體過程不應
只是單純的滿足CMMI的各㊠要求,否則結果會
㊜得其反,只是找出㆒個可以更快速開發出高
品質的「壞」的軟體系統。
結論
在「㆟㈪神話」裡㈲則小故事,內容是敘述㆒
家紐澳良百年老店Antoine餐廳的點菜單㆖㈲㆒段話
「好菜都得多花些時間準備,為了能讓您享受到更
美味、更可口的佳餚,請您務必耐心稍待。」這讓
軟體開發㆟員打從心底相信,唯㈲透過CMMI導入
過程的嚴謹要求與程序的落實,才能端出㆒盤軟體
好菜,而客戶也能樂意等候與配合來回應,以獲得
㆒個既滿足需求又高品質的軟體系統。這或許才是
CMMI能帶給我們的真正價值。