Scrum的本质(未完成)
Scrum的本質
Scrum是敏捷開發的一種。
Scrum側重于指導項目管理,而XP側重于指導開發過程。
1. SCrum的基本原則:經驗過程控制
Scrum的隱含思想:軟件開發本質上是複雜且不可預測的過程。
我們所建立的軟件實體是不確定的:一個微小的Bug(即使是一行代碼)就會導致系統崩潰;客戶需求的變化貫穿整個軟件開發週期;隨著工具和平臺的改變,團隊的生產力有可能提高,也有可能降低;技術方面的障礙……這些因素(還有更多無法預見的因素)都趨向一個結論:軟件開發天生就是不可預測的過程。
基於以上結論,如果過程不可預測并且因此使確定(計畫)的方法過於複雜,那麼經驗方法是一種可選的方法。
Scrum 理论是基于一个国外的学科,叫《过程动态学,建模及控制》,什么意思呢?过程控制方法有两种:预定义过程控制和经验性过程控制。预定义过程就是在执行之前先要制定详细的计划,然后严格按照计划执行,这种控制方式在过程比较简单的情况下比较适用,但是如果过程不可能预测的非常详尽的话,预定义过程就显得力不从心,这时候“经验过程控制”就更合适于过程控制。
经验过程控制讲究“检查”和“调整“,就是在执行过程中不断的检查是否出现问题然后根据实际情况来调整过程的执行。
这两种过程各有优缺点。
预定义过程在当今软件业仍然有着广泛的应用,为什么呢?就是因为预定义过程可以在项目开始之前就能给出大概的项目预算和风险评估,这样投资人才可能放心的投资项目。当然它的弊端就是应对变化的风险很差,尤其在于软件开过程中,变化是不可避免的,很多情况是不可预知的,所以预定义过程在这种情况下就显得力不从心。
2. Scrum的特點
l 功能交叉的小型團隊在一個開放環境中緊密在一起工作,30天為一個開發階段(sprints),在此期間提交產品的增量發布;
l 團隊能夠自我管理並且充滿活力,為實現開發階段的目標而努力;
l 團隊工作由Scrum主管(Master)來推動,Scrum主管不直接指導技術工作,但是負責排除障礙並且加強Scrum核心原則;
l 由產品記錄(Product Backlog)來組織工作,產品記錄為每個開發階段排列優先次序。
3. Scrum的角色
Scrum的團隊成員都屬於以下角色之一:
3.1. 產品擁有者(Product Owner)
負責代表客戶的需求。產品擁有者負責排列產品記錄的優先級。注意,除了排列優先級,產品記錄的其它工作不需要產品擁有者負責。
3.2. Scrum主管(Scrum Master)
負責統籌Scrum團隊,監督實施Scrum的實踐方法和原則。
3.3. 團隊(Team)
負責實現功能。團隊成員包括開發人員、測試人員、實施人員等。
團隊成員的職責允許交叉,一起設計、創建、測試軟件。
4. Scrum的過程模型