摘要:php
用數聽說話,這是當前很流行的話題,本文將數據管理過程劃分紅4個層次,並闡述企業如何達到這四個層次。性能
1.初級量化管理:以數據「感知」項目的情況(至關於CMMI2級)測試
2.中級量化管理:經過經驗值來管理項目(至關於CMMI3級)大數據
3.高級量化管理:用PCB進行項目管理(至關於CMMI4級)優化
4.超級量化管理:持續優化的量化管理(至關於CMMI5級)編碼
1. 前言spa
量化方面相關資料、理論很是多,如:六西格瑪、統計過程控制(SPC)、過程能力基線(PCB)、軟件度量、功能點法、軟件估算等等。關於量化方面文章,你們可能難以把各文章的內容在腦殼中組織成一面知識網,主要由於各文章按照各自的角度闡述問題。咱們須要一個統一的角度來描述這些事情,這裏咱們就以CMMI的爲參考標準,對全部的量化理論進行「格式化」。設計
爲了闡述方便,這裏咱們把與量化有關的內容,所有統稱爲「量化管理」,量化管理大體能夠分爲如下四個級別:3d
1) 初級量化管理-感知級,至關於CMMI2級。對象
2) 中級量化管理-經驗級,至關於CMMI3級。
3) 高級量化管理-可預測級,至關於CMMI4級。
4) 超級量化管理-持續優化級,至關於CMMI5級。
高級別的量化管理,必知足全部低級別量化管理特色,例如高級量化管理,它具有初級量化管理、中級量化管理的特色,又具有自己的特色。
2. 量化管理的第一基本法則
咱們爲何要用「功能點法」來估計項目的規模?
咱們爲何要度量項目的工時、費用?
咱們爲何要作量化管理?
若是咱們不用量化管理的方式,也能達到量化管理的效果,並且成本更低,那還要不要進行量化管理?
當咱們面對鋪天蓋地的量化理論的時候,當咱們要考慮要作量化管理的時候,首先要問本身的問題就是:爲何要作量化管理?
咱們回答一下這個問題:爲何要用「功能點法」來估計項目的規模?
若是老闆想這樣作,估計他感受到項目的估算不是很準,他但願經過一些量化的辦法,讓項目的估算作得更準。因此,他的要進行量化管理的目的是:提升估算的準確率。
這就是老闆的完整目標嗎?若是員工們不計成本地把功能點法作好了,估算誤差提升到不超過5%,但估算工做須要的時間由原來的5天增長到50天,這樣老闆會接受嗎?其實老闆還有隱含的約束條件,就是不能太花成本。
若是把老闆的目標再完整表達一下,應該是:在必定的時間成本要求內,提升估算的準確率。
不管咱們作什麼量化的工做,都必須先明確:
量化管理第一基本法則:明確量化管理的目的及約束條件。
「功能點」法是比較複雜並且難掌握的軟件規模度量辦法,有可能在研究使用的過程當中,才發現不值得用「功能點」法,你們再反過來看看目標:在必定的時間成本要求內,提供估算的準確率,而不是:在必定的時間成本要求內,用功能點法提升估算的準確率。這時,你們能夠選用別的辦法,或者對「功能點」法進行改造。在制定目標的時候,不要把具體的方法寫進去,目標是很高層次的,把辦法寫進去,也就是至關於限制了思路。
有人可能會說,「在必定的時間成本要求內,提升估算的準確率」,這個目標太虛了吧,寫了等於沒寫。其實正是由於沒有明確這個「虛」的目標,不少量化管理的工做變成就是爲了量化管理而量化管理。其實六西格瑪、統計過程控制(SPC)、過程能力基線(PCB)等量化管理辦法,都要有很明確的目的。
若是企業對量化管理的目標都不明確的話,那就很是很差意思了,連初級水平都不是,是屬於「無級別」的水平。
3. 初級量化管理-感知級
有不少軟件企業,在項目過程當中,須提交一些進度報告、總結報告,報告中可能會有進度狀況、成本狀況的一些數據。收集這些數據的目標也十分明確,就是想了解項目的進度、成本狀況,並與計劃的狀況進行比較,採起必要的措施。
例:進度報告(節選)
在軟件測試中,會記錄各種缺陷的狀況,而且在測試報告中報告缺陷的一些數據。項目組會根據缺陷方面的數據,分析軟件的質量,並考慮後續的改進措施。
例:測試報告(節選):
總缺陷數量:50
建議:須要在後續版本中修復沒有解決的缺陷。
「感知級」的企業,有這樣的一些特色:
1) 有明確的度量目的。
2) 有度量值的比較基準,如例子中的計劃完成時間與實際完成時間的對比。
3) 被度量對象的屬性定義得比較清楚,如上例中缺陷的屬性。
4) 對度量的結果進行分析,而且要考慮改進措施。
「感知級」的企業,應該知足CMMI2級中MA(度量)這個PA的要求的(請參考CMMI相關標準)。
但下面這種狀況,算不算「感知級」呢?
在項目總結報告中,統計項目進度、成本等狀況,分析與計劃比較的差別,提出對之後有用的改進意見。
若是隻在項目總結報告的時候,才進行度量的話,是不能算「感知級」的,度量的結果要能用於項目管理,而不是項目結束後了統計出到一些數字,儘管這些數字能夠用來改善之後的工做,但對該項目自己工做的改善已經沒有任何做用了。
達到初級量化管理的企業,能明確量化管理的目標,經過合適的度量辦法,「感知」項目的各種參數,並根據各度量指標的實際數值,採起改善項目行爲的措施。
4. 中級量化管理-經驗級
進行量化管理過程當中,咱們能獲得各種參數值,但該參數值應該怎樣纔算合理呢?例如進度誤差多少纔算合理?遺留缺陷數量多少個纔算合理?
前面提到用「功能點」法來估算項目的規模,而後咱們能夠由規模導出工做量,但規模與工做量是怎樣的一個關係呢?怎樣根據規模導出工做量呢?相同規模的軟件,不一樣的軟件企業來作,導出的工做量是不同的。
進行初級量化管理的時候,企業經過實際的參數值,來「感受」項目的情況,當積累足夠多數據的時候,管理者可能會找出項目間的一些共同的數據特色,如能夠統計出「平均值」、「最大值」、「最小值」,這些數據,能夠描述組織總體的性能。
當數據積累比較多的時候,組織級的經驗數據,能夠用來管理之後的項目,例如能夠用組織的平均值作爲量化管理的要求。這個時候,就達到了中級量化管理水平了。
中級量化管理有如下特色:
1) 對歷史數據進行必定的分析,得出一些數值,從這些數據能大概掌握企業的能力情況。
2) 根據大概的企業能力情況,定出項目量化的管理目標,並用於管理項目。
3) 利用歷史的經驗數據,由項目規模導出工做量。
例:項目規模與工做量的關係
根據歷史的經驗數據,能夠繪出規模與工做量的關係,由這個關係可用來估計新項目的工做量。若是沒有大量的經驗數據,這是不能作到的。
CMMI3級中,並無專門的PA是與度量直接對應的,爲何說中級量化管理與CMMI3級的要求是對應的呢?CMMI3級的重要特色之一就是,有組織級的度量庫,而且項目依據組織級度量庫的數據,定義和管理項目的過程。中級量化管理與初級量化管理的最大區別就是,度量數據已經上升到組織級別,每一個項目均可以利用組織的「經驗」(即歷史數據)來管理項目。
5. 高級量化管理-可預測級
麥當勞的薯條很多人都吃過,味道很好,並且每家麥當勞的薯條味道很一致。麥當勞是如何作到的呢?咱們分析一下生產過程,咱們發現薯條從原材料開始,到後續加工,油炸的時間,薯條炸出來後多少分鐘沒有售出,就銷燬,整個過程都有嚴格的控制,並且不少地方是量化控制,時間甚至精確到秒。嚴格的過程控制,保證了薯條能高質量地穩定地產出。全球的麥當勞,都用同一的嚴格過程來管理,因此保證了全球的麥當勞的食品都是高質量的並且是高度一致的。從另一個角度說,只要麥當勞按照既定的過程來生產食物,就能夠「預測」出最終食物的狀況,麥當勞將對最終產品的質量很是有信心。
那麼咱們軟件開發,是否是也但願能達到這樣的效果呢?你們能夠回答一下這個問題:若是項目的規模、採用的技術、人員的水平等因素都肯定了,那麼您是否能夠頗有信心去預測這個項目的最終結果呢?
若是按照中級量化管理的辦法,仍是比較難達到這個效果的,「可預測級」的量化管理應該是怎樣的呢?
在回答這個問題以前,咱們須要先搞清楚什麼是「穩定」的過程,什麼是「不穩定」的過程。咱們以「煮飯」爲例,說明什麼是穩定的過程什麼是不穩定的過程。
你們小的時候可能都野炊過,野炊煮出來的飯可能廣泛都是不太好吃的,不是太硬就是太軟。爲何煮出來的效果會差別這麼大呢?仔細分析一下,咱們發現不少因素會影響煮飯的最終質量,如:飯鍋、火候、煮的時間、水量等。當咱們用野炊的方式煮飯時,這些因素都不太好控制,因此出來飯的質量變化就會比較大了。
咱們換一種方式來煮飯,用電飯煲煮飯,失手的概率是否是極大地下降了?爲何會這樣呢?當咱們用電飯煲的時候,飯鍋、火候、時間等因素都被「固定」在理想範圍了,因此最終出來的結果是比較穩定並且質量比較好。
再看看咱們的軟件開發過程,1級的企業作出來的軟件,結果是很不穩定的,而4級的企業,能穩定地輸出比較好的結果。4級的軟件企業,只須要肯定了項目的規模、性質、技術、人員技能等因素後,只要按照既定的過程來生產軟件,那麼就能夠頗有信心地「預測」這個項目的最終結果,這個「預測」是有很高的可信度的。而CMMI2、3級的企業,雖然也能預測項目的最終結果,但只能「大概」預測,4級企業的預測能準確估計出最終結果的範圍,並且這個範圍是量化的。
CMMI2、3級的企業,過程還不能說是穩定的,而4級的企業,過程必定是穩定的。一樣,初級、中級量化管理,用數據管理的過程,也不能說是穩定的,而高級量化管理,用數據管理的過程,必定是穩定的。
用數據管理過程,要進入「高級」階段,就必須瞭解統計過程控制(SPC)的學問,要了解什麼是基線(Baseline),所謂的六西格瑪管理,其實就是統計過程控制。
例:某公司每週對項目的CPI(成本指數,這是項目掙值管理中的一個重要概念,請參考相關資料)進行度量,分析項目的實際性能。
經過分析,發現CPI波動範圍比較寬,從最低的10%到最高的210%,這樣意味着最終項目的成本極可能會與預算相差1倍以上。做爲管理者來講,這是不能夠接受的,管理者但願最終的成本與預算相差在比較小的範圍內。
爲何CPI會波動這麼大呢?影響CPI波動的因素很是多,有估算、計劃、過程、人的能力等等,若是要收窄波動,就須要在這些影響因素上下功夫,想辦法減小這些影響因素的影響。通過改進後,項目的CPI狀況以下:
以上的作法是否是已經達到統計過程控制的層次呢?還不是,咱們看看下圖。
這個控制圖,把整個項目過程分爲四個階段:需求階段、設計階段、編碼階段、測試階段。每一個階段執行的過程不同,工做的性質不同,故繪製控制圖的時候須要予以區分。對不一樣階段的CPI數據點繪製XmR圖,得出不一樣階段的中值與上下限。用不一樣階段的CPI的中值及上下限來監控項目的行爲,項目管理的重點就是監控各數據點有沒有超出上下限,對超出上下限的數據點,分析其緣由並採起措施,使之迴歸到範圍內。
所謂的統計過程控制是這樣的一個過程:
1) 進行統計過程控制的過程是穩定的,影響該過程的各種因素,都被很好地控制在必定的範圍內,故最終的結果也是在可控的範圍內的而且是可預測的。
l 什麼叫穩定?簡單地說,就是在給定的條件下,產出的結果是在必定可接受的範圍內的。如:只要項目性質和之前的項目差很少,項目的人員水平和之前的大致一致,執行的過程也和之前一致,那麼該項目的結果應該是在可預測的可接受的範圍內的。若是從統計學的角度,能夠對數據點進行穩定性測試,判斷其是否穩定(詳細信息請參考SPC方面的書籍)。
2) 要對過程進行足夠地細分,才能清晰地區分出各影響因素,使度量出來的數據點很容易識別是信號仍是噪音。在進行數據分組的時候,保證數據之間的可比性是很是重要的,蘋果只能跟蘋果比,不能蘋果跟香蕉比。不少作CMMI4級的企業,很容易犯這樣的錯誤,沒有很好地進行數據分組,進行數據分組的時候,要充分考慮項目的性質、人員的水平、所執行的過程等因素。數據分組是否合理的重要標準就是,是否能清晰區分出信號仍是噪音。
l 什麼是信號?信號能夠說是「過程之音」,就是過程自己內在的特色所引發的正常波動,如項目的性質、技術、執行的過程、人員的水平等。信號反映了過程的正常的能力。
l 什麼是噪音?噪音代表實際工做中出現了一些過程以外的特殊狀況,如由沒有具有項目管理技能的人來擔當項目經理工做,而當前過程要求的是須要具有項目管理能力的人來負責的,這樣過程執行效果確定會與預計的效果發生比較大的誤差,從而超出上下限範圍。信號體現了過程正在被正常執行,而噪音則反映出過程正在被偏離執行。
3) 數據點的誤差,是由公共緣由(Common Cause)和可歸屬緣由(Special Cause)共同做用下致使的。在控制限內的數據點的誤差,主要是由公共緣由致使的,而超出上下限的誤差,則是由公共緣由和可歸屬緣由共同引發的。
l 什麼是公共緣由?公共緣由是指過程自己特有的引發誤差的因素,若是人員的水平波動、項目性質的差別、執行過程的力度差別等,這些引發誤差的因素在本過程內已經被削弱,但不可能徹底被消除,這些因素共同做用下,會引發數據點的正常波動。信號是由公共緣由引發的。
l 什麼是可歸屬緣由?可歸屬緣由是指出現了過程沒有考慮或者違背了過程的狀況,引入了新的引發波動的因素,如:沒有安排好相應培訓、沒有按過程執行等。出現了可歸屬緣由,將會加大數據點的波動,從而超出上下限範圍。噪音是由公共緣由和可歸屬緣由共同做用引發的。
4) 經過統計學的辦法計算出性能基線,如用XR圖、XmR圖。
5) 用性能基線進行項目管理,項目管理的重點是監控超出範圍內的數據點,分析其緣由,想辦法排除可歸屬緣由。消除可歸屬緣由後,就能夠消除因爲可歸屬緣由引發的波動,這樣數據點就會從新回到上下限範圍內。組織級應該有詳細的進行可歸屬緣由分析及問題解決的指導,項目經理根據該指導來排除可歸屬緣由。
SPC的原理比較深奧,要深入理解是不容易的。SPC在製造業等其它行業已經被普遍應用,其基本原理就是經過改造生產流水線,消除或者限制影響產品規格的因素,使產出的產品規格在必定的範圍內並符合要求。
這個原理要用到軟件生產,就沒有那麼簡單了,影響軟件質量的因素很是多,須要「功力深厚」的人分析各影響因素,並經過改造過程來消除或者削弱這些因素的影響。在這個層面上,用數據管理過程的「檔次」已經提升了一大截,這時候數據管理的過程是穩定的過程,該過程的中值和上下限反映出該過程的能力。
這裏咱們引出一個新的問題,什麼是有能力的過程?什麼是沒有能力的過程?什麼是能力高的過程?什麼是能力低的過程?
不穩定的過程,談不上能力之說,穩定的過程才能談能力。穩定的過程,能夠經過不斷地提升性能來提升能力,如收窄性能基線的上下限範圍,使中值更接近理想的目標值等,這些都體現了能力的提升。
6. 超級量化管理-持續優化級
高級量化管理主要講述的是如何把不穩定的過程變成穩定的過程,而超級量化管理主要講述的是把有能力的過程變成更加有能力的過程。
前面提到的CPI中值和上下限,有可能不知足商業目標的須要,如CPI平均值達不是所指望的值,上下限的範圍太寬,這樣就有必要想辦法作一些改進,提升能力,而且能力提升後的過程一樣也是穩定的過程。
那麼有什麼辦法能夠提升能力呢?
1) 改進過程。過程的性能基線的中值及上下限,是由公共緣由所引至的,要提升其性能,必須從這些公共緣由入手,對信號進行分析,想辦法進一步削弱公共緣由引發的誤差,想辦法改造過程,使中值符合要求。
2) 採用新技術。考慮引入新的技術,並調整相應的過程,來提升過程的性能。
3) 對噪音進行緣由分析。噪音是由公共緣由和可歸屬緣由共同做用引發的,對每一個噪音的可歸屬緣由進行詳細的分析,將極可能找到改進的機會。
分析過程的可改進地方是比較複雜的,有可能須要對過程進行更深一步的細分,可能會發現原來的數據分組達不到要求,須要加強粒度,以便區分出更多的公共緣由,找出可改進點。另外,原來不須要進行基線級別管理的過程,可能也會由於商業目標的須要,須要創建基線並進行基線級別的管理。
在這個級別上用數據管理過程意義在於,經過數據來監控過程的改進效果,比較能力的變化,爲決策提供依據。當造成新的更有能力的能力基線時,企業將用新的能力基線來管理項目。
SPC的創建及優化過程的成本是很高的,但進行SPC管理的過程的成功機率是很是高的,企業根據本身的商業目標須要,選擇須要進行SPC管理的過程,並不斷優化,使企業具有愈來愈強的競爭力,而這種競爭力是別的企業難以模仿並難以超越的。
7. 總結
由「感知級」到「經驗級」,再到「可預測級」、「持續優化級」這個過程是不可跨越的,不一樣級別的「用數據管理過程」,都是由商業目標驅動的,只是不一樣級別所達到的量化管理程度不同。
「感知級」經過軟件度量,大概瞭解項目的情況,並做爲工做調整的依據。
「經驗級」經過軟件度量,對比項目的歷史經驗數據,把握項目的情況,並進行相應的工做調整。同時,項目的歷史經驗數據,可供估算等工做進行參考。
「可預測級」,把「經驗級」推向一個更高的高度,對影響問題的因素進行詳細的分析,排除和削弱影響項目性能的各類因素,對歷史經驗數據進行合理分組,統計出性能基線,並用於項目管理。用基線來管理的過程都是穩定的過程,這些過程從統計角度來講均可以準確地預測出未來的結果。
「持續優化級」是「數據管理過程」的最高級別,達到這個級別意味着企業能根據商業目標持續的優化SPC管理,使企業造成別的企業難以模仿並難以超越的核心競爭力。
那是否是越高級越好呢?企業是否是都應該追求更高級的量化管理呢?
答案是否認的。
要實施「可預測級」的量化管理,是有條件限制的,就是過程要穩定,穩定就意味着項目間要有可比性,採用的技術、過程要大致一致。若是一個企業是創新型的企業,常常用新技術作新項目,這樣項目的可比性就比較弱,就很難具有穩定的基礎條件,很難造成基線。
因此,不能說CMMI級別越高的企業,就必定比級別低的企業管理要更好一點,有時候企業的特色就決定了企業不可能作到4、5級。各企業的最高領導,關鍵是清楚理解本身的商業目標,理解高級別的量化管理能帶來什麼幫助。
那爲何要「用數據管理過程」呢?
若是有一個非量化管理的辦法,成本更低,而且能更有效地達到目的,那咱們固然就採用那個辦法,而不會片面地追求「用數據管理過程」了。全部想「用數據管理過程」的人士,都應該認真思考這個問題,並考慮哪一種層次的量化管理級別適合您的商業目標。