天天看點

【建構之法】第6章-靈活流程1 靈活的流程簡介2 靈活流程的問題和解法3 靈活的團隊4 靈活總結

本章重點:

  • 靈活流程及其原則
  • Backlog
  • Burn-down
  • Sprint
  • Scrum方法論
  • 各種軟體開發方法論的優缺點
  • 選擇軟體流程的根據

1 靈活的流程簡介

在軟體工程的語境裡,“靈活流程”是一系列價值觀和方法論的集合。

1.1 與現有方法對比

現有的做法 vs. 靈活的做法:

現有的做法 靈活的做法
流程和工具 個人和交流
完備的文檔 可用的軟體
為合同談判 與客戶合作
執行原定計劃 響應變化

1.2 靈活開發的原則

  • 盡早并持續地傳遞有價值的軟體以滿足顧客需求
  • 靈活流程歡迎需求的變化,并利用這種變化來提高使用者的競争優勢
  • 經常釋出可用的軟體,釋出間隔可以從幾周到幾個月,能短則短
  • 業務人員和開發人員在項目開發過程中應該每天共同工作
  • 以有進取心的人為項目核心,充分支援新人他們
  • 無論團隊内外,面對面的交流始終是最有效的溝通方式
  • 可用的軟體是衡量項目進展的主要名額
  • 靈活流程應能保持可持續的發展。上司、團隊和使用者應該能按照目前的步調持續合作下去
  • 隻有不斷關注技術和設計,才能越來越靈活
  • 保持簡明-盡可能簡化工作量的技藝-極為重要
  • 隻有能自我管理的團隊才能創造優秀的架構、需求和設計
  • 時時總結如何提高團隊效率,并付諸行動

1.3 Scrum方法論

“靈活”下有多種軟體開發的方法論,Scrum是其中之一。

靈活流程圖:

【建構之法】第6章-靈活流程1 靈活的流程簡介2 靈活流程的問題和解法3 靈活的團隊4 靈活總結
【建構之法】第6章-靈活流程1 靈活的流程簡介2 靈活流程的問題和解法3 靈活的團隊4 靈活總結

靈活步驟:

步驟 階段任務 說明
第一步 找出完成産品需要做的事情 - Product Backlog3 産品負責人上司大家對這個Backlog中的條目進行分析、估計工作量等
第二步 決定目前的沖刺(Sprint)需要解決的事情 - Sprint Backlog

-團隊成員根據自己的情況來認領任務;

-如果團隊成員能住到任務的估計和配置設定,他們的能動性就能得到較大的發揮。

第三步 沖刺

-在這個階段,外部人士不能直接打擾團隊成員,一切交流隻能通過Scrum大師(Scrum Master)來完成);

-這一措施較好地平衡了“交流”和“集中注意力”的沖突;

沖刺期間,-團隊通過***每日例(立)會(Scrum Meeting)***來進行面對面的交流;

-Scrum Master根據項目的情況,用簡明的圖表現整個項目的進度,如燃盡圖(Burn Down Chart)或看闆圖。

第四步 得到軟體的一個增量版本,釋出給使用者 然後在此基礎上又進一步計劃增量的新功能和改進。

2 靈活流程的問題和解法

步驟 遇到的問題 解法
第一步 怎樣在計劃(Backlog)中展現依賴關系
第二步

-把一個任務從産品層級的描述逐漸細化到技術實作層面,是很需要技術能力和交流能力的;

-如果成員們任務認上司緻忙閑不均,怎麼辦?

第三步 每日例會很可能會流于形式

-定義好任務究竟是什麼;

-在每一個任務中記載我們完成這個任務還需要多少時間;

第三步半

-當你說“任務都完成了”的時候,那隻是說,開發人員任務***該寫的代碼***都寫完了,但其實還有很多事情沒做完;

-程式員寫完功能的時候,我們感覺好像項目完成了80%,殊不知後面的20%往往要花費80%的時間,靈活流程沒有明确表明到底何人何時以何種優先級來完成這20%的任務;

-長期任務-軟體項目中一些比較艱難和底層的任務,完成這些任務需要超過Sprint所計劃的時間。

-有靈活專家建議測試人員可以在一個沖刺中擔負起産品負責人(Product Owner)的部分責任,同時掌握驗收測試(Acceptance Test)流程,對産品的最終品質負責;

-本書的“穩定和釋出階段”一章講到了“第三步半要做什麼事情”,它的流程圖可以作為Scrum/Sprint模型的補充。

第四步

-得到了一個增量的軟體釋出,但是誰來驗證這個增量是否滿足了事先的計劃呢?

-如果程式員們在沖刺過程中發現了新問題,改進了原來的計劃,這是好事還是壞事?

-每一次沖刺結束後,大家要放松一下,總結上一次的經驗教訓,争取下一次做得更好;

-團隊通過多次總結和流程改進,逐漸提高團隊的效率,逐漸滿足使用者的需求。

2.1 燃盡圖

一個完整的燃盡圖,有三個每天跟蹤的時間值:

  • 實際剩餘時間(Remaining Hour):每個團隊成員所有任務的剩餘時間的總和;
  • 預估剩餘時間(Projected Remaining Hour):根據每個人每天的理論進度推算的剩餘時間;
  • 實際花費時間(Completed Hour):實際花費的時間。
【建構之法】第6章-靈活流程1 靈活的流程簡介2 靈活流程的問題和解法3 靈活的團隊4 靈活總結

3 靈活的團隊

Scrum/Sprint能成功實施的關鍵在于Scrum Master。

一個好的Scrum Master能在兩種語境(描述軟體需求的商業語境,描述實作細節的技術語境)間自如地翻譯和切換,事實上是一個強有力的項目經理(參見本書“項目經理”一章)。

靈活對于團隊的要求:

  • 自主管理(Self-managing):以前上司布置了任務,我們實作就可以了。現在要自己挑任務;每次Sprint結束之後,要總結不足,提出改進,并且自己要實施這些改進;“自主管理”不等于“沒有管理”;
  • 自我組織(Self-organizing):以前做好自己的事情就好了,安心下班。現在每個人要聯合起來對項目負責,有人工作落後了還要幫助他改進,項目缺少某類資源還要自己頂上去;
  • 多功能型(Cross-functional):以前規格說明書有PM來寫 ,測試由測試人員來做。現在每個人都全面負責,自己搞定規格說明書,和别人溝通,同時自己搞定測試。

4 靈活總結

靈活的方法與品質控制理論的模型如經典的戴明環(Plan-Do-Check-Act/Adjust,PDCA)類似。

靈活的方法不是“銀彈”,不能解決軟體開發的所有問題。

極限程式設計:所謂極限程式設計,就是把一些認為重要和有效的做法發揮到極緻,在這層意義上,“極限程式設計”應該叫“極緻程式設計”。

繼續閱讀