根據歷史的經驗數據,可以繪出規模與工作量的關系,由這個關系可用來估計新項目的工作量。如果沒有大量的經驗數據,這是不能做到的。
CMMI3級中,并沒有專門的PA是與度量直接對應的,為什么說中級量化管理與CMMI3級的要求是對應的呢?CMMI3級的重要特點之一就是,有組織級的度量庫,并且項目依據組織級度量庫的數據,定義和管理項目的過程。中級量化管理與初級量化管理的最大區別就是,度量數據已經上升到組織級別,每個項目都可以利用組織的“經驗”(即歷史數據)來管理項目。
6. 高級量化管理-可預測級
麥當勞的薯條不少人都吃過,味道很好,而且每家麥當勞的薯條味道很一致。麥當勞是如何做到的呢?我們分析一下生產過程,我們發現薯條從原材料開始,到后續加工,油炸的時間,薯條炸出來后多少分鐘沒有售出,就銷毀,整個過程都有嚴格的控制,而且很多地方是量化控制,時間甚至精確到秒。嚴格的過程控制,保證了薯條能高質量地穩定地產出。全球的麥當勞,都用同一的嚴格過程來管理,所以保證了全球的麥當勞的食品都是高質量的而且是高度一致的。從另外一個角度說,只要麥當勞按照既定的過程來生產食物,我們就可以“預測”出最終食物的情況,我們將對最終產品的質量非常有信心。
那么我們軟件開發,是不是也希望能達到這樣的效果呢?大家可以回答一下這個問題:如果項目的規模、采用的技術、人員的水平等因素都確定了,那么您是否可以很有信心去預測這個項目的最終結果呢?
如果按照中級量化管理的辦法,還是比較難達到這個效果的,“可預測級”的量化管理應該是怎樣的呢?
在回答這個問題之前, 我們需要先搞清楚什么是“穩定”的過程,什么是“不穩定”的過程。我們以“煮飯”為例,說明什么是穩定的過程什么是不穩定的過程。
大家小的時候可能都野炊過,野炊煮出來的飯可能普遍都是不太好吃的,不是太硬就是太軟。為什么煮出來的效果會差異這么大呢?仔細分析一下,我們發現很多因素會影響煮飯的最終質量,如:飯鍋、火候、煮的時間、水量等。當我們用野炊的方式煮飯時,這些因素都不太好控制,所以出來飯的質量變化就會比較大了。
我們換一種方式來煮飯,用電飯煲煮飯,失手的幾率是不是極大地降低了?為什么會這樣呢?當我們用電飯煲的時候,飯鍋、火候、時間等因素都被“固定”在理想范圍了,所以最終出來的結果是比較穩定而且質量比較好。
再看看我們的軟件開發過程,1級的企業做出來的軟件,結果是很不穩定的,而4級的企業,能穩定地輸出比較好的結果。4級的軟件企業,只需要確定了項目的規模、性質、技術、人員技能等因素后,只要按照既定的過程來生產軟件,那么就可以很有信心地“預測”這個項目的最終結果,這個“預測”是有很高的可信度的。而CMMI2、3級的企業,雖然也能預測項目的最終結果,但只能“大概”預測,4級企業的預測能準確估計出最終結果的范圍,而且這個范圍是量化的。
穩定的過程與不穩定的過程,大家應該有大致的體會了吧。2、3級的企業,過程還不能說是穩定的,而4級的企業,過程一定是穩定的。同樣,初級、中級量化管理,用數據管理的過程,也不能說是穩定的,而高級量化管理,用數據管理的過程,一定是穩定的。
用數據管理過程,要進入“高級”階段,就必須了解統計過程控制(SPC)的學問,要了解什么是基線(Baseline),所謂的六西格瑪管理,其實就是統計過程控制。
例:某公司每周對項目的CPI(成本指數,這是項目掙值管理中的一個重要概念,這里不作介紹)進行度量,分析項目的實際性能。
通過分析,發現CPI波動范圍比較寬,從最低的10%到最高的210%,這樣意味著最終項目的成本很可能會與預算相差1倍以上。作為管理者來說,這是不可以接受的,管理者希望最終的成本與預算相差在比較小的范圍內。
為什么CPI會波動這么大呢?影響CPI波動的因素非常多,有估算、計劃、過程、人的能力等等,如果要收窄波動,就需要在這些影響因素上下功夫,想辦法減少這些影響因素的影響。經過改進后,項目的CPI情況如下:
以上的做法是不是已經達到統計過程控制的層次呢?還不是,我們看看下圖。
這個控制圖,把整個項目過程分為四個階段:需求階段、設計階段、編碼階段、測試階段。每個階段執行的過程不一樣,工作的性質不一樣,故繪制控制圖的時候需要予以區分。對不同階段的CPI數據點繪制XmR圖,得出不同階段的中值與上下限。用不同階段的CPI的中值及上下限來監控項目的行為,項目管理的重點就是監控各數據點有沒有超出上下限,對超出上下限的數據點(如圖中的紅點),分析其原因并采取措施,使之回歸到范圍內。