- 術以載道:軟件過程改進實踐指南
- 任甲林
- 10416字
- 2019-08-13 10:08:43
第1章 CMMI實施精要
1.1 對CMMI的基本認識
1.1.1 CMMI是什么
CMMI是Capability Maturity Model Integration的縮寫,譯成中文稱為能力成熟度集成模型,或者更通俗地稱為集成的能力成熟度模型。CMMI的前身是SW-CMM(SoftWare Capability Maturity Model), SW-CMM是美國國防部委托卡內基梅隆大學軟件工程研究所(SEI-CMU)開發的用于評價軟件開發組織過程能力的模型。SW-CMM 1.0版本發表于1991年,兩年后發布了SW-CMM 1.1版本,該版本成為CMM歷史上最經典的一個版本,長達13年的生命力,直至2006年,SEI宣布CMM 1.1版本“太陽下山”。2000年12月SEI發布了CMMI 1.0版本,隨后CMMI 1.1版本也成為一個影響巨大的版本,CMMI 1.1是集成了SW-CMM, SE-CMM(系統工程能力成熟度模型)、IPD-CMM(集成產品開發能力成熟度模型)之后發展而成的一個版本,在CMMI 1.2版本之后又劃分為CMMI-DEV+IPPD、CMMI-ACQ、CMMI-SVC三個系列,分別應用于開發類(包括集成產品類)、采購類、服務類組織。2010年11月發布了CMMI 1.3版本。相對于CMMI 1.2版本,1.3版本增加了對于敏捷方法和產品線管理等新技術的描述,吸收了很多敏捷的實踐,并且對于高成熟度的實踐進行了細化說明。
CMMI是一個過程框架,給出了一組管理企業的最佳實踐。何謂框架?比如我們走在馬路上看到一幢正在建設中的高樓,建筑者澆灌了水泥,搭筑了整個大樓的基本結構,我們看到了整座樓面的概貌與主體,但并不是一幢裝修完整的樓,在這個框架基礎上,我們可以進行后續的加工定制,使其成為各式各樣的漂亮的樓。
在CMMI中定義了一個企業(注:為通俗起見,本書中以企業指代各種組織,如公司、研究所、技術中心等之類)要管理的各個過程域,正如我們定義一幢樓的各個子系統一樣,比如一幢樓有電梯系統、照明系統、供水系統等等。CMMI中也定義了每個過程的核心實踐,正如我們定義了建設照明系統的最佳實踐一樣。
何謂最佳實踐?就是得到業內認可的、多家成功企業的成功做法。
為什么判定這些實踐是最佳的呢?因為多家成功的企業都是那么做的,并且獲得了成功的。前車之鑒,后車之師。
是否存在你認為是最佳實踐,而我認為不是最佳實踐呢?CMMI中的最佳實踐是美國卡內基梅隆大學軟件工程研究所(全球最好的軟件工程科研機構之一,自2013年1月1日起專門成立了CMMI研究所)組織了很多來自工程界與理論界的高手一起討論總結出來的,是經過了多次評審得到的共識。如果你有證據表明確實有更好的實踐,你可以認為它們不是最佳實踐。
是否高手們認可的最佳實踐就適合我們的企業呢?未必,但是應該基本適合。之所以說未必,是因為每個企業有每個企業的特點,別人的成功實踐在你的公司未必能夠完全對癥。之所以說是基本適合,是因為這些實踐是抽取了成功企業的共同點、共同實踐而得到的,應該能夠以很大的概率適合你們公司的情況。
如果不適合你的企業怎么辦?裁剪!只有適合你的才是最好的!
如果裁剪了就不能滿足CMMI模型的要求,怎么辦?CMMI模型中的要求分成三種嚴格程度。
(1)必需的。目標是必需的,即無論你如何做,只要滿足目標即可。怎么判斷呢?經驗判斷!誰來判斷?評估時的評估組成員!評估組成員累計的工程經驗(除主任評估師以外)要超過25年才可以。在評估時只要有評估組成員都一致同意才可以(都同意或大部分同意、有個別人保持中立,沒有人反對)。靈活吧?CMMI不是死的,不是刻板的,做得刻板了不是CMMI的錯,是你沒有理解CMMI的要求,不能因為你刻板,而說CMMI不好,這是社會上很多人常犯的錯誤。如果主任評估師不同意怎么辦呢,討論啊。主任評估師也是有經驗的人,是懂工程實踐的人,是經過嚴格選拔與培訓的,是講道理的。如果真不認可你的做法,要么你的實踐確實有問題,要么你被冤枉了,這是小概率事件,哪個廟里都有冤死的鬼。
(2)期望的。實踐是期望的,所謂期望,是說你最好那么做,你不那么做也可以,但是你要證明你的替換做法是可以滿足目標要求的。怎么判定是否滿足了目標要求?同樣也是由評估組成員進行經驗判斷。
(3)參考的。子實踐、實踐的名字、目的描述、對目標與實踐的解釋說明、文檔案例、注釋、參考、共性實踐的細化說明、其他案例等,都是參考的說明,是解釋性的資料。但是,需要注意的是,SEI認為很多企業沒有理解模型的要求,是因為沒有關注CMMI中這些參考的解釋性說明。
CMMI模型每3~5年就會發布新的版本,為什么?與時俱進!最佳實踐在今年是最佳,明年就可能不是最佳了,出現了更好的實踐,也需要吸收進來。
以上是解釋最佳實踐的相關含義。再返回來說說框架的含義。如圖1-1所示,在這個框架中,還有很多東西都是空的,等待補充、等待裝修,模型應用到每個企業后需要各個企業補充完善那些空白。用什么去補充完善呢?用你們公司的實際做法,用你們公司能做到的做法,用敏捷的方法,用ISO,用什么都可以,只要你能滿足“必需的”!CMMI并不排斥其他的最佳實踐,在滿足“必需的”前提下,什么都可以!還是那句話,CMMI是活的,不是刻板的。有最低要求,有可變通的要求。

圖1-1 現實中的框架
1.1.2 CMMI里有什么
CMMI模型分為三個分支。
適用于供方、乙方的模型如下:
CMMI-DEV:主要是針對開發類組織;
CMMI-SVC:主要是針對服務類組織;
適用于需方、甲方的模型如下:
CMMI-ACQ:主要是針對采購類組織。
CMMI-DEV提到的開發,是包括了軟件、硬件等類型的開發。CMMI-DEV模型還可以適用于復雜多學科產品開發的IPD模式,在CMMI之外稱為IPD,在CMMI之內稱為IPPD。IPPD并沒有涉及市場、財務等。多出來的一個P代表過程,IPD中包含了市場與財務,所以IPD與IPPD是有一定差別的。IPPD有其適用范圍,IPD也是同理。國內有些企業盲目追隨華為實施IPD,成功者少,失敗者眾。為什么呢?沒有注意IPD的適用范圍。IPD適用于以下范圍。
(1)復雜產品的開發,需要多學科配合協同的產品開發。
(2)市場驅動的產品開發,產品需要隨時判斷是否滿足市場需求,投入產出是否合適,如果不可以,需要隨時終止產品的開發。
(3)項目團隊規模比較大,需要劃分為多個小組進行協同工作。小組之間的溝通是項目成功的一個制約因素。
CMMI模型在1.1版本中對IPD的支持包含了2.5個過程域,在1.2版本中是通過描述的附件來支持,在1.3版本中則直接融合到了OPD和IPM這2個過程域中。
CMMI-DEV包含了22個過程域。何謂過程域(Process Area,縮寫為PA)?過程域是一類最佳實踐的集合,這些最佳實踐屬于同一類過程。CMMI中有167條特定實踐,264條共性實踐,需要將它們分類管理,以便于實施,便于記憶。分類方法是人們分析、認識問題的一種主要的方法。CMMI將所有的實踐劃分成了22類,每一類包含的特定實踐個數從4個到14個不等。這種分類是否就完全合理呢?仁者見仁,智者見智,沒有絕對的合理,有的實踐放在某個PA中很自然,有的就有點牽強,CMMI就那么劃分了,你就那么記憶吧。
要注意過程域與過程的概念不同,過程域是實踐的集合。何謂集合?集合中的元素是沒有嚴格的先后順序,是一個堆(堆是數據結構中的專業術語)。過程是活動的偏序集(偏序關系是離散數學中的專業術語),活動之間是存在先后順序的。不要搞混了這兩個概念,否則是很囧的。
22個過程域分成4大類,項目管理類、過程管理類、工程類、支持類,其核心內容見表1-1。
表1-1 4類過程域

續表

通過表1-1我們可以看到,CMMI模型中包括了很多開發活動。沒有包括什么呢?沒有包括考核,沒有包括市場,沒有包括財務、行政、人事等其他非開發管理活動。對于開發活動是否都包含全面了呢?項目立項、技術預研、系統維護等活動并沒有描述在里面。沒關系,立項、預研、維護的活動都可以分解為上述PA中的活動,也可以認為是含在里面了。
每個過程域有其名稱與簡寫,一般我們都稱呼其簡寫,比如一說REQM就知道是需求管理過程域,一提DAR就代表了決策與解決方案過程域。不一定要刻意去背誦它,知道每個縮寫代表的英文單詞,自然就記住了。
1.1.3 CMMI的構件
CMMI的內容是按照成熟度等級或過程域類別、過程域、目標、實踐、子實踐的方法進行分類管理的,這些概念之間的整體與部分關系可以參見圖1-2。

圖1-2 CMMI構件整體與部分的關系
每個過程域(PA)都有一個目的,在英文里明確區分了Purpose與Goal這兩個單詞,我們翻譯為目的與目標。在中文里這兩個單詞并沒有特別明顯的區別。Purpose是一種抽象的、宏觀的期望,Goal是一種具體的、微觀的期望。
PA之間有一定的關聯性,互相影響,比如RD的輸出為TS的輸入;TS的輸出又影響了RD的輸出,如此交織在一起。在CMMI模型中有多張圖描述了各個PA之間的關聯關系,也僅僅是一個概念的視圖,不能全面描述復雜的交織關系,參考而已。
在每個過程域里對實踐進行了細分類,即又分為多個目標,目標是對實踐的一種分類方式。目標又分為特定目標與共性目標,所謂特定目標是指某個PA所特有的,即這個PA有其他PA沒有。所謂共性目標是指每個PA都有的,你有我有他也有。目標是CMMI模型中必需的構件,是不可以裁剪的,是評估時必須考察、必須滿足的。
對應于每個目標有能夠滿足此目標的實踐。特定目標有對應的特定實踐,共性目標有對應的共性實踐。實踐是期望的模型構件,所謂期望即最好這么做,如果不那么做,你可以替換這些實踐,但替換后必須滿足目標的要求。每個目標對應的實踐之間沒有嚴格的先后順序關系。比如需求管理過程域對應的5條特定實踐:
SP1.1 與需求提供者對需求達成一致的理解;
SP1.2 獲得需求實現者對需求的承諾;
SP1.3 管理需求的變更;
SP1.4 建立與維護需求的雙向可跟蹤性;
SP1.5 識別需求與工作產品間的不一致。
這5條特定實踐之間沒有嚴格的先后順序關系。在管理需求的變更之前,我們已經建立了需求跟蹤矩陣,根據需求跟蹤矩陣進行了需求變更波及范圍的分析,所以不能認為SP1.3與SP1.4之間存在嚴格的先后關系。
每條實踐都有一個編號,如前所述,SP代表的是特定實踐,GP代表的是共性實踐,1.2代表第1個目標的第2條實踐。比如SP1.2代表第1個特定目標的第2條實踐,GP2.3代表第2個共性目標的第2條實踐。
在CMMI模型中絕大部分實踐都列舉了工作產品的樣例,這些工作產品樣例并非都是必需的,而是可選的,只要你能證明你的工作產品滿足了這條實踐的要求即可,不必從文檔名字、文檔個數等方面和模型保持一致。
每條實踐都可能有子實踐,這些子實踐是對實踐的細化描述,是對實踐的解釋說明,可以根據企業的實際情況選擇適用的子實踐。我也曾經看到有的企業在做CMMI時,把每條子實踐都定義在體系中。如果真有用,還可以理解;如果不是這樣,就太機械了。
對于過程域、實踐、子實踐都有一些解釋性的說明,這些解釋性的說明在正式評估時是供參考的,對我們準確理解模型的要求有一定的幫助。
對于CMMI的構件一定要注意“必需的”、“期望的”、“解釋說明”三種嚴格程度之間的區別,不要把后兩種上升為“必需的”,這是很多公司常犯的錯誤,切記切記。
為了加深對過程域中各個構件分布的理解,我對CMMI-DEV 1.3版本中的特定目標與特定實踐的分布做了統計分析,如表1-2、表1-3、表1-4和圖1-3所示。
表1-2 按過程域類別統計分析

表1-3 特定實踐按過程域類別的分析


圖1-3 特定實踐按過程域類別的分布
表1-4 按成熟度等級的統計分析

1.1.4 CMMI的表示方法
CMMI分為兩種表示方法:一種稱為階段式表示方法;另一種稱為連續式表示方法,如圖1-4所示。

圖1-4 CMMI的兩種表示方法
我們可以從以下幾個方面來理解這兩種表示方法的區別與聯系。
1.包含的過程域相同,但是過程域分類的維度不同。
階段式表示方法為我們所熟悉,我們通常說的過了2級、過了3級都是針對階段式表示方法而言的。在CMMI-DEV V1.3中,階段式表示方法將22個過程域分別放置在4個等級中,其中2級7個過程域、3級11個過程域、4級2個過程域、5級2個過程域;在連續式表示方法中將22個過程域分成了四類,其中工程類5個過程域、項目管理類7個過程域、支持類5個過程域、過程管理類5個過程域。
2.改進的路線圖不同。
階段式表示方法給出了固定的路線圖,即必須先是2級的7個過程域,然后是3級的11個過程域,依此類推,在實施高等級時也必須實施通過低等級的過程域。而在連續式表示方法中,企業可以自己選擇你想改進的過程域,可以針對自己企業的弱點進行針對性的改進,可以靈活選擇改進點。在CMMI模型中項目管理類、支持類與過程管理類的過程域又區分了低級和高級的PA,比如對于過程管理類的過程域,OPF、OPD、OT是低級的PA, OPP、OPM是高級的PA。按照連續式表示方法改進時,建議先從低級的過程域開始改進。
3.評估級別的評定維度不同。
在評估時,階段式表示方法是針對整個組織進行統一評級,即評價組織的成熟度等級為2級或3級等,簡寫為ML2或ML3。連續式表示方法是針對整個組織的某些過程域評級,即評價組織的某個PA的能力等級為2級或3級,簡寫為CL2或CL3。注意兩種表示方法對管理水平等級稱呼的區別:階段式稱為組織成熟度等級(簡寫為ML),連續式稱為過程能力等級(簡寫為CL)。成熟度等級是從1到5計數,能力等級是從0到3計數。
兩種表示方法之間的等級有如下的換算關系。
(1)ML2級的7個PA都達到了或超過了CL2級,則可以評價為ML2。
(2)ML2和ML3的18個PA都達到了CL3,則可以評價為ML3。
(3)ML2、ML3和ML4的20個PA都達到了CL3,則可以評價為ML4。
(4)ML2、ML3、ML4和ML5的22個PA都達到了CL3,則可以評價為ML5。
注:在22個過程域中,SAM是唯一一個可以在評估時裁剪的過程域。
4.滿足的商務需求不同。
根據上面的描述我們可以發現,連續式表示方法為企業的改進提供了靈活的方法,更加實用。可是為什么很多企業選擇了階段式表示方法呢?我認為主要的原因是對外宣傳的簡潔性,以及政府補助驅動的作用。
那么到底應該選擇哪種表示方法實施改進呢?
如果你只要證書,當然選擇階段式。但是,記住了,不要找我們咨詢。
如果你要實效,不要證書,你就選擇連續式。這是我最喜歡咨詢的企業。
如果二者都要,你可以先選擇連續式,再選擇階段式。魚和熊掌兼得,需要好好平衡一下。
1.1.5 CMMI成熟度等級的比較
了解CMMI的人都知道,CMMI的階段式表示方法有5個等級,但是要將5個等級的區別真正說明白、說透徹,不太容易。下面我們用一個表格概括之。如表1-5所示,表格中并沒有1級,1級在CMMI的階段式表示方法中沒有對應的過程域,是起始級,所以不加描述。
表1-5 CMMI成熟度等級及其比較

表中比較內容解釋如下。
1.過程改進的側重點
CMMI的2級是已管理級,是項目組對自己的過程實施了基本的管理,并不一定是組織級統一的管理規范。項目組可以自己管理自己的流程,也可以由組織級統一定義流程。3級是由組織級統一發起過程改進活動,統一定義流程,項目組基于組織級的標準流程進行裁剪。而4級則要求在組織級對度量數據進行統一的分析,發現規律,建立組織級的過程性能目標、過程性能基線與過程性能模型。5級則要緊緊圍繞企業的商業目標實施過程改進,解決過程改進的實際商業收益問題。
2.管理制度的復雜度
CMMI的2級包含了7個過程域,3級包含了11個過程域。2級是基本的管理過程,是從無到有的過程;3級是逐步完善、提升、統一的過程,達到3級時,企業的過程覆蓋了18個過程域;4、5級分別包含了2個過程域。是否意味著在4、5級增加了過程域,過程定義就更加復雜了呢?不是的!4、5級的核心是解決了量化地刻畫了過程的性能,圍繞商業目標優化過程!所謂優化并非是指越優化越復雜,而是指越優化越經濟!做最少的事情滿足目標,取得投入與產出的最好平衡。
3.過程能力
過程能力指的是過程持續穩定實現過程目標的能力。
我們可以用職業運動員與業余運動員的水平差別進行比喻。比如職業的射擊運動員,他每次出槍總能命中9環左右,而業余選手可能有時打飛,有時打中10環,當他抬手射擊時我們無法預料他下一槍究竟多大的概率命中9環以內,也就是說我們可以從穩與準兩個維度判斷其水平的高低。
穩:每次射擊的命中環數很接近,沒有大起大落的現象,這樣才可以預測。即使你每槍都脫靶,我們也可以認為你過程很穩定啊(必須脫靶在相近的位置)。為什么呢?因為我們可以預料到你下一槍還會脫靶。
準:每次射擊的命中環數接近靶心,是我們期望的結果,這樣才可以說你水平高,可以參加世界級的比賽。
CMMI的2級和3級對過程沒有穩與準的要求,而4級要求穩定,消除過程偏差的特殊原因,5級要求又穩又準,持續優化,優化過程偏差的一般原因。2級的過程由項目經理自己掌握,只要滿足了CMMI 2級7個PA的要求即可,3級要求組織級必須定義標準過程,項目組進行裁剪,過程基本統一即可。這也是2級稱為已管理級與3級稱為已定義級的由來,已管理級即項目組已經實施了基本的管理;已定義級指組織已經定義了標準過程。
4.過程定義的可行性
過程定義指的是過程設計。做一個項目,我們拿到需求后會在技術上進行設計,考慮需求在技術上如何實現,從管理上也需要進行設計,考慮這個項目在管理上如何實現,管理上的設計主要是過程的設計,兩者的對比關系參見圖1-5。過程設計在CMMI模型中描述了3個層次。

圖1-5 技術設計和管理設計兩者的對比
層次1:生命周期模型的選擇與項目階段的劃分,這是2級PP過程域的要求。
層次2:組織級標準過程的裁剪,這是3級IPM過程域的要求;
層次3:子過程的裁剪及驗證過程或子過程對目標的可實現性,這是4級QPM過程域的要求;
層次1的要點是階段設計,層次2的要點是過程設計,層次3的要點是子過程設計,要求是逐步深入,過程設計的顆粒度越來越細化。
5.管理的前瞻性
項目管理類的過程域在2級中有4個:項目策劃(PP)、項目監督與控制(PMC)、供應商子合同管理(SAM)、需求管理(REQM)。在3級中有2個PA:集成項目管理(IPM)、風險管理(RSKM);在4級中有1個PA量化項目管理(QPM)。3級的IPM與RSKM是在2級的3個過程域(PP、PMC、SAM)基礎上更高的管理要求,尤其是IPM過程域。PP要求做計劃,PMC要求在計劃執行過程中進行事中與事后的監督與控制,而IPM強調了事前對照計劃的管理活動,強調了計劃的合理性、可行性,強調了過程與人員的協調一致問題,而4級的QPM則要求對過程定義的可行性、項目目標的可實現性進行量化的預測與管理。從2級到4級項目管理的變化,是一個從無到有,從簡單到完備,從經驗到量化,從事中、事后的反應式管理到事前的預測式管理的變化過程。
6.目標的可度量性
CMMI 2級和3級并沒有對項目目標提出要求,即項目組可以定義也可以不定義項目的質量與過程性能目標,即使定義了也不需要證明目標的可實現性,可以憑經驗定義目標。而在4級和5級則明確提出,項目必須定義質量與過程性能目標,并且要求目標應該是文檔化的、量化的、可以實現的,目標要符合SMART原則。
· Specific:文檔化,明確。
· Measurable:可度量。
· Attainable:可實現。
· Relevant:和商務目標的相關性。
· Time-bound:在規定的時間。
目標的可實現性是需要重點解決的問題。怎么保證目標是可以實現的呢?(1)目標是基于歷史的性能制定的,不能與歷史偏差太大,如果偏差很大,必須有充分的理由證明之。(2)可以采用過程性能模型預測目標實現的可能性,即在什么樣的投入下,這個目標是可以實現的,實現的概率多大。如果是小概率事件,則認為目標是不可實現的。
7.度量數據的完備性
CMMI的2級有MA過程域要求進行度量分析,但是此PA僅要求每個項目組按自己的需求定義、收集、分析、存儲度量數據,并沒有要求在組織級統一定義度量元。而在3級中則要求建立組織級度量庫,組織級統一定義需要采集的度量元。在4級中要建立組織級的過程性能基線與過程性能模型。過程性能基線的建立需要對組織級統一定義的度量元進行數據分布的分析,以求得歷史數據的位置與離散程度。過程性能模型的建立則要求建立過程的輸出與過程輸入、屬性之間的關系,既要度量Y也要度量x, x即為過程的輸入與屬性,度量數據的采集范圍要比原來廣泛了。

圖1-6 評估度量
8.度量的服務對象
CMMI 2級采集哪些度量數據是由項目經理來確定的。3級采集哪些度量數據是由組織級統一定義的。項目組可以裁剪。2級和3級采集的度量數據主要是為了監督項目過程的性能,而4級采集度量數據是為了建立過程性能基線與過程性能模型,不但要對過程的輸出采集度量數據,也要對過程輸入、過程的屬性采集度量數據,采集的度量元相比2級和3級更多了。5級的度量數據是圍繞改進組織級的商業目標來采集的。
9.管理技術的客觀性
管理技術的客觀性是指是是否采用了統計技術對項目實施了量化管理。
這里說的統計技術不僅僅是指度量了數據,對數據畫了餅圖或其他圖形的分析。統計技術包含了2個方面:統計描述技術與統計推斷技術。對于一組數據計算了平均值、標準差等稱為統計描述。統計推斷技術是指根據樣本的統計量可以推斷出總體的統計量,發現統計的規律,比如根據3000個家庭父母的身高、孩子的身高得出一個計算孩子身高的回歸方程。
基于統計的技術非基于經驗識別過程的異常、識別管理中的問題,這正如中醫與西醫看病的區別。中醫看病是憑經驗,經驗好的大夫看病比較準,經驗差的大夫看病水平則比較低,同一種病,不同的中醫大夫診斷,結論可能相差很大。西醫看病是基于各種檢測指標,如血壓、血小板的含量等等,是客觀的決策,同一種病,不同的西醫的結論差別不大。
上述的區別是我在咨詢中對這4個等級的體會,不代表CMMI研究所的官方解釋。每個人也許有每個人的感悟,各有道理吧。
1.1.6 如何學習CMMI
在建立體系之前需要研究CMMI模型的要求以建立理論基礎。那么,究竟如何學習CMMI呢?我的體會如下。
(1)通讀模型
模型是眾多專家總結的最佳實踐,歷時多年,討論了許多遍才寫成的。模型里包含的信息量很大,描述得很完備,需要全面地通讀模型。比如,有朋友問我,開發工具是否要識別為配置項?其實這個問題在模型里有明確的答案,只要去讀CM SP1.1的描述就可以了,模型的原文如下(CMMI?for Development, Version 1.3, CMU/SEI-2010-TR-033, P140)。
Configuration identification is the selection and specification of the following:
· Products delivered to the customer
· Designated internal work products
· Acquired products
· Tools and other capital assets of the project, s work environment
· Other items used in creating and describing these work products
<參考譯文>
配置識別是選擇和刻畫:
· 交付給客戶的產品;
· 指定的內部工作產品;
· 采購的產品;
· 項目工作環境的工具和其他重要的資產;
· 用來創建和描述這些工作產品的其他物品。
再比如,對于CM SP1.2建立配置管理系統,有的企業僅把實際應用的配置管理工具視為證據,其實仔細去讀模型的原文(A configuration management system includes the storage media, the procedures, and the tools for accessing the configuration system)就會發現:存儲的介質、規程與工具三者結合起來構成了配置管理系統,因此物理的配置項、配置管理工具及配置管理規程都是該實踐的物證。
需要注意,應盡可能通讀模型原文,盡管已有中文版的模型可以下載,但是翻譯后的資料與原文還是有些差異,可能丟掉了原文里的很多含義。
(2)咀嚼模型
模型不但描述得完備,而且簡練,很多思想蘊含在平淡的敘述之中,因此需要仔細體會模型里的每一句話,要反復地閱讀模型。比如對DAR SG1:評價候選方案。模型中該目標的原文如下(CMMI?for Development, Version 1.3, CMU/SEI-2010-TR-033-P151):
Issues requiring a formal evaluation process may be identified at any time. The objective should be to identify issues as early as possible to maximize the time available to resolve them.
<參考譯文:在任何時間都可以識別需要執行正式評價過程的問題。目的是盡早地識別出這些問題以預留出盡可能多的時間用以解決這些問題。>
仔細體會這段話,傳達了以下這樣幾個含義。
· 在任何時候都可以采用DAR,比如項目的初期、中期、后期。項目的初期會有哪些決策呢?開發方法的選擇、技術路線的選擇、開發工具的選擇、需求的裁剪、供應商的選擇等等。中期呢?深思之。
· 應該盡可能早地識別出需要執行DAR的問題,以留出足夠的時間解決問題。在項目進展的早期應該盡可能多地識別出需要執行DAR的問題,這樣能夠考慮得更加完備。
再比如,對于PP SP1.1估計項目的范圍。模型中該實踐的正文為(CMMI?for Development, Version 1.3, CMU/SEI-2010-TR-033。P283):Establish a top-level work breakdown structure(WBS)to estimate the scope of the project.<參考譯文:建立高層的任務分解結構以估計項目的范圍>
top-level是第幾層呢?仔細讀該實踐的第2條子實踐:
Identify the work packages in sufficient detail to specify estimates of project tasks, responsibilities, and schedule。<參考譯文:詳細地識別任務包,以明確估計項目的任務、責任和進度>
據此可以推理出:這里所說的top-level的WBS就是分解到工作包級,基于工作包做估計、分配責任及安排進度。如果僅僅從字面的含義認為top-level就是第1層的WBS,那就是笑話了。第1層只有1個節點,沒有實質性的意義。
書讀百遍,其義自現!
(3)參考其他模型
CMMI是融合SW-CMM、SE-CMM、IPD-CMM等幾個模型而來,為了保證能夠適合于多種學科,在術語上往往比較抽象,因此當對某些實踐無法讀懂時,就要相應地去參考其他模型。比如對PI SP1.1確定集成順序,對于軟件系統的集成,當系統的規模不大時,其實開發順序在很大程度上決定了集成順序。為了加深理解該實踐,在實際執行過程中很好地裁剪該實踐,可以參考SE-CMM的BP05.08等實踐,在SE-CMM的BP05.08中有如下的描述。
The larger or more complex the system or the more delicate its elements, the more critical the proper sequence becomes, as small changes can cause large impacts on project results.
The optimal sequence of assembly is built from the bottom up as components become subelements, elements, and subsystems, each of which must be checked prior to fitting into the next higher assembly. The sequence will encompass any effort needed to establish and equip the assembly facilities (e.g., raised floor, hoists, jigs, test equipment, I/O, and power connections). Once established, the sequence must be periodically reviewed to ensure that variations in production and delivery schedules have not had an adverse impact on the sequence or compromised the factors on which earlier decisions were made.
<參考譯文:
系統越大、越復雜或元素越易損的,正確的順序就越關鍵,因為小的變動就可能對項目的結果帶來很大的影響。
最佳的集成順序是進行由底向上的集成:當部件集成為子元素、子元素集成為元素、元素集成為子系統時,每個層次在集成到更高的層次之前都要進行檢查。集成順序中也包含了所有建立和配備集成工具的活動(例如:活動地板、基座、起重機、夾具、測試設備、I/O、電力連接線等)。一旦建立了集成順序,則必須周期性地評審以確保生產和交付工期的變化對集成順序沒有負面影響或者對早期的決策進行折中調整。>
在閱讀CMMI時可以參考的資料包括:SW-CMM、SE-CMM、IPD-CMM、PMBOK、ISO15504、TSP、PSP等。
(4)映射到本企業的實際情況
CMMI模型既適合于軟件開發企業,也適合于硬件生產企業,既適合于軟件產品的開發,也適合于外包類的軟件企業,不同類型的企業對于模型的每條實踐解釋是不同的,需要結合企業自己的實際情況解釋模型。
CMMI模型是基于實踐提出的,不是理論推導出來的。模型里的實踐或多或少都可以在本企業的實踐中找到映射。“做沒做”、“做得好不好”,是在和企業的實踐進行映射時必須考慮的問題,通過這種映射可以加深對模型的理解。
比如,對TS SP1.1開發候選解決方案與選擇準則,在企業里候選方案的開發與選擇可能發生于投標階段、立項階段、設計階段,企業的這些不同階段的實踐都可以映射過來,在投標或立項時可能是涉及對總體方案的選擇,在設計階段可能涉及對具體某個產品構件的解決方案的選擇。通過與企業的實踐進行映射就可以發現,這里提到的解決方案實際上是泛泛而言,并非僅僅針對總體技術路線的選擇,某個具體的構件的解決方案的選擇也適合。
判斷“做沒做”僅僅是最基本的映射,判斷“做得好不好”才是更高層次的映射。在CMMI模型里,因為模型里的實踐是可以替換的,所以只要達成了模型里每個PA的目標的實踐都被認可就可以了。
(5)與多個人討論模型
一個人的視角是有局限的,通過與其他人的溝通,可以從不同的人員那里獲得不同的信息,從而對實踐理解得更加全面與深入。即使別人的觀點未必是正確的,也可以在討論中受到啟發,也可能激發自己更多的想法。組織應該建立定期討論的制度,通過一種制度化的溝通來確保大家關注過程改進工作,真正地投入時間去考慮如何改進。在我咨詢的一個客戶中,有一個項目組每周都定期抽出一定的時間大家一起研讀模型,這種溝通與討論對理解模型、識別組織的優勢與劣勢很有幫助。不要僅僅限于與組織內部的同事進行討論,與其他組織的同行進行溝通幫助可能更大。
我建立了一個QQ群:133986886,我的很多客戶都參與了該過程改進的討論群,大家可以在這個群里進行模型相關的討論。
- The Complete Rust Programming Reference Guide
- 兩周自制腳本語言
- C和C++安全編碼(原書第2版)
- NumPy Essentials
- 你不知道的JavaScript(中卷)
- Java EE 7 Performance Tuning and Optimization
- 軟件測試技術指南
- Visual C++開發入行真功夫
- iOS開發實戰:從入門到上架App Store(第2版) (移動開發叢書)
- Practical GIS
- Python物理建模初學者指南(第2版)
- Mastering OpenStack
- Node.js應用開發
- Bitcoin Essentials
- Python數據可視化之matplotlib實踐