【第155期 August 5, 2010】
 

CMMI與軟體工程

流程績效產生差異的原因探討與分析

作者/鄭堃斌

[發表日期:2010/7/27]




前言

本文主要介紹的是CMMI 的CAR與OID 流程領域的主要關鍵因素 - Common Cause Variation。一個process,其績效表現若是受到Common Cause和Special Cause所影響,則被稱為是一個不穩定的process。 一個不穩定的process不一定要有很大的變異(variation)。因為variation的幅度大小從一段時間到未來一段時間是不可預測的,這就是所謂的不穩定。因為”可預測”的variation才是一個穩定的process的重要特質。

一個process(或系統),只有僅僅存在common cause影響流程績效時才是一個”穩定的”process或稱為是在統計控制狀態中。

再則僅僅因為一個流程是穩定的,或在統計控制內,並不意味著其結果是令人滿意的。 一個流程可能是非常前後一致,日復一日都是介於specification control limit範圍內,或者它可以更好更精進,正如日本的成功作法,可以有系統性地減少variation,即使在穩定的流程中,仍然可以再逐步縮減control limit,並在較低的成本下能整體性的提高產品品質。 改進一個穩定的流程比改進一個不穩定的流程是較為困難的,因為根據定義,一個穩定的流程不會有special causes of variation跳出來,要你進行調查。 相反的,你面對的工作是需要去看看所有流程的數據,而不是簡單地了解是捨造成單一點不同於其他點的原因。

Common causes variation經常是隱藏在系統內,而且有時被認為是不可避免的。 然而,若是能經由改善流程,降低Common causes variation,這是非常可能的,而且往往是難能可貴。 依經驗顯示,在專案過程過程中,在這些來來往往人中,即使是在一個穩定的流程下,仍是有足夠的思考做出具有重大影響的改善。

有許多不同的方式搜索並移除造成common causes variation常見的原因中,可能最知名的是實驗法(experimentation),但你也可以使用分層法(stratification)。 這些方法都有可能藉助於數據的分門別類(disaggregation of data.)。 更多這些相關資訊,可選擇如下:

Experimentation實驗法

當你在很少或沒有數據可用時,experimentation允許你測試一個理論或直覺。Experimentation最好的指導方針,是策劃(P),執行(D),檢查(C ),實施(A)循環法。 根據Walter Shewhart 與W. Edwards Deming對PDCA循環的描述,其本質上是重覆性質的科學方法。此科學方法可追溯回1620年的Francis Bacon,但其根源則可一路追溯回希臘哲學家。

PDCA循環強調以實驗和觀察的方式發現真理:

一.在規劃(P)階段,問題是被確認和分析,並制定可能的解決辦法。
二.在執行(D)階段,最有可能的或有效的解決方案是在一個試驗場先試行。
三.檢查(C)階段,則是用於比較試驗結果和原來的方法解決,看是否有真正的改善。
四.實施(A)階段,則是以成功的解決方案更換舊方法。

然後,您可以返回到循環的開始以探討其他可能出現的問題,與爭取新的不一樣改善措施。 搜索common causes僅是PDCA循環可以使用的許多領域之一。 最普遍的,它是用來引導整個流程的改善,其中尋找common causes可能是其中一小部分。

PDCA循環要求的創造性思維和分析思維,兩者都是改善流程中所不可缺少的東西。 創意或思考的擴展與發散性思維(*divergent thinking)可鼓勵考量許多不同想法和發覺新的可能性。 創新是一個重要的因素,因為它可以突破舊模式,可以對一個流程看出超越目前的思維模式。 但是創意必須通過分析式的試煉或是在一個可行的形式下,能將零散的東西,重新集結在一起的收斂思維模式。

Stratification階層法

有時,實驗(experimentation)是沒有必要的,common causes可以使用分層(Stratification)的數據來發現。數據的分層基本上是將分離的數據進行分類:什麼樣的特質是共同分享的?或不是? 它往往需要反覆的做 - 你在一個級別分層,然後在其中的一個類別您再次分層,如此反覆的做。如果你在所擁有數據的最一般層級開始,只有最表面化的回答可能會出現。如果你將數據分成不同層次,你可能會開始見到其關連性。這就像一個信的地址。在最一般的層級,一個地址導引你到一個國家,然後到一個都市/州,再到一個城市或郵遞區號,然後到街道,再到一個特定街上的房子,最後到一個特定家裡的人。

經過數據整理將其分為有共同特徵的多個層次的群體,可以更好地找出問題的根源原因(root cause)。例如,在一個六年級的課,似乎有很多學生沒有通過他們的拼寫測試。當你看看那些數據,您會注意到,很多學生考試不合格的,在週二比週五多。當您調查星期二的測試,您會注意到,大部分不合格的孩子是有參與籃球隊。然後,從籃球教練得知,該小組在週一晚上有籃球練習,但在週三和週四是放學課後立即作練習。 這意味著,最可能的是,大量的不合格是由於前一天晚上太晚練球,孩子們沒有太多時間去讀書。 如果你沒有分層的數據,讓每一步更具體化,首先是星期幾,然後由有參與籃球和非籃球者,你絕不會在這個過程中發現common causes。

分層(Stratification),可更容易使用Pareto charts,bar charts(條形圖)或pie charts(餅圖),所有的圖表,可以將許多的東西顯示在不同的類別上。 即使是因果圖(cause & effect diagram)也可以用來建立一個有樹狀分枝的特性,每一個分層可再進一步分層,並進一步直到達到問題的根源。分層(Stratification)的方法,用於分隔數據的特點是“分層變數”(stratification variable)。 分類可以由一個單一的變數,也可以多個變數組成,只要它們都屬於不同的特點。 例如,一種分類可能是“因未成年喝酒被吊銷駕駛執照的大學生”。此分類包含了幾個變數的組合: 他們是一個大學生嗎?他們有被吊銷執照?因未成年喝酒?

數據分層時常見的兩種錯誤。首先,它很容易在分層得出太多的結論。 不要將不同類別間小的差異看得太重。 取而代之是要尋找大的差異,並嘗試使用不同的”分層變數”作分層。其次,人們往往跳出這樣的結論:一個不規則模式的類別是造成問題的起因。 該類別可能提供我們一個在哪裡可以尋找原因的線索,而不是起因它自己。

Disaggregation解體法

無論是實驗法(experimentation)或分層法(stratification)有時也需要解體(disaggregating)過程的幫助和單獨地審視其中組成的部分。 有時,流程中的一部分的一個問題,被流程中的另一部分給掩蓋了。 通過分開地研究組成部分,可將一個存在流程中但被整個流程給掩蓋了的問題,浮現到表面上。

解體不是建立在優化每一塊而犧牲其它部分。 在解體法中,被分開地審視的部分流程仍必須與各部分的流程共享同一目標並且著重在努力往下一步的流程邁進。 解體法將片段一齊觀察討論,而不是把它們分開,或視為森林和樹木。經過管理人員之間,在不同部分流程,非常依賴著定期會議的分解分析,尋找common causes, 使這些碎片可以在的在整個系統內容中被充分討論分析。

*註解: Divergent thinking 『發散性思考』,也譯作『殊性思考』
它反應的是個體思考的擴展與發散性,從同一個來源的訊息中,產生多元變異產出的一種能力,也是與創造力表現關係最為密切的認知歷程。它有四個重要的構成要素:流暢力(fluency)、變通力(flexibility)、獨創力(originality)、精進力(elaboration)。

參考文件
http://www.skymark.com/resources/responding_to_common_cause_variation.aspResponding to Variation: Common Causes