經驗性過程


轉自:http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-4

軟件開發是一個復雜的活動, 在軟件產品開發的過程中不僅存在着需求的不確定性,也存在着技術的不確定性,再加上參與軟件開發的主體通常是由多人組成的軟件開發團隊,加上人的因素,就讓整個軟件開發的活動變得非常復雜。如下圖所示,軟件開發活動通常處在下圖的很復雜的區域。

projectcomplex

圖-01

為了管理軟件開發的活動,我們會引入過程控制來管理它。過程控制通常有兩種方式,第一種方式是預定義的過程,第二種方式是經驗性過程。

我們所熟知的是預定義的過程,它通常是使用已知的方法解決已知的問題。制造業的生產線就是典型的預定義過程,例如生產餅干、啤酒、汽車的生產線等。預定義的過程的特點是給予固定的輸入,得到固定的輸出,過程可重復。它的優勢在於可以大規模批量生產。預定義過程的缺點在於一旦過程定義出現錯誤,或產品設計上存在瑕疵,會造成比較大的損失。

beerline

圖-02

如果我們期望解決的問題比較復雜,並且存在着較大的不確定性的時候,我們需要使用經驗性過程。經驗性過程的特點是過程是不能夠完全預先定義好,結果是不可預知的,生產過程是不可重復的。比如研究一項新技術,下一盤棋,踢一場球賽,在過程運行當中,我們需要通過不斷的獲得真實的反饋,然后進行適應和調整,使得過程能夠產出我們需要的結果。

“在過程運行機制相當簡單易懂的情況下,典型的做法是采用預定義的建模方式。如果過程復雜程度超出預定義方式的能力范圍,便應用經驗性方式。”

                                                              ——B.A.Ogunnaike and W.H.Ray

《過程動態學、建模與控制》

軟件產品的研發通常存在多很多的不確定性,並且生產的過程非常的復雜,所以更適合使用經驗性過程來管理。

Scrum以經驗性過程控制理論做為理論基礎的過程。Scrum 采用迭代、增量的方法來優化可預見性並控制風險。

Scrum過程框架的基石包括如下三個方面:

第一:透明性(Transparency)

透明度是指,在軟件開發過程的各個環節保持高度的可見性,影響交付成果的各個方面對於參與交付的所有人、管理生產結果的人保持透明。管理生產成果的人不僅要能夠看到過程的這些方面,而且必須理解他們看到的內容。也就是說,當某個人在檢驗一個過程,並確信某一個任務已經完成時,這個完成必須等同於他們對完成的定義。

第二:檢驗(Inspection)

開發過程中的各方面必須做到足夠頻繁地檢驗,確保能夠及時發現過程中的重大偏差。在確定檢驗頻率時,需要考慮到檢驗會引起所有過程發生變化。當規定的檢驗頻率超出了過程檢驗所能容許的程度,那么就會出現問題。幸運的是,軟件開發並不會出現這種情況。另一個因素就是檢驗工作成果人員的技能水平和積極性。

第三:適應(Adaptation)

如果檢驗人員檢驗的時候發現過程中的一個或多個方面不滿足驗收標准,並且最終產品是不合格的,那么便需要對過程或是材料進行調整。調整工作必須盡快實施,以減少進一步的偏差。

Scrum中通過三個活動進行檢驗和適應:每日例會檢驗Sprint目標的進展,做出調整,從而優化次日的工作價值;Sprint評審和計划會議檢驗發布目標的進展,做出調整,從而優化下一個Sprint的工作價值;Sprint回顧會議是用來回顧已經完成的Sprint,並且確定做出什么樣的改善可以使接下來的Sprint更加高效、更加令人滿意,並且工作更快樂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM