第三章 敏捷軟件開發
第一節 敏捷軟件開發
敏捷早於devops
適用於DevOps的軟件工程方法
·DevOps,開發運維一體化。
·DevOps思想,部分起源於一些運維工程師借鑒敏捷軟件開發思想。
·DevOps的早期活躍分子很多來自敏捷社區。
·當前公認的適合於DevOps的軟件過程方法是敏捷軟件開發(包括Scrum、eXtreme Programming、Kanban等),尤其是敏捷軟件開發中的Kanban(看板)方法。
·Scrum
·eXtreme Programming(XP):極限編程
·Kanban
敏捷軟件開發介紹
·2001年,17位軟件開發領域的領軍人物在美國發布了敏捷宣言,之後敏捷軟件開發作為一個軟件開發模式和價值觀在全球軟件開發人員中廣為傳播。
·現在敏捷軟件開發已經成為主流軟件開發方法。
·敏捷軟件開發是當前公認的應對模糊需求、快速變化需求的最佳軟件開發方式。
敏捷軟件開發宣言
我們一真在實踐中探尋更好的軟件開發方法
身體力行的同時也幫助他人。由此我們建立了如下價值觀:
個體和互動 高於 流程和工具
工作的軟件 高於 詳盡的文檔
客戶合作 高於 合同談判
響應變化 高於 遵循計劃
也就是說,盡管右項有其價值,我們更重視左項的價值。
需求文檔
測試文檔
設計文檔
架構文檔
敏捷軟件開發歷史
敏捷 精益
Lean Startup(精益創業)
敏捷軟件開發知識體系
第二節 看板(Kanban)方法
看板歷史
看板方法,由David Anderson創立。
看板(Kanban)(大寫字母“K”開頭)方法指的是自2006-2008年間在Corbis公司湧現的漸進增量式的過程改進方法學。
Kanban有時也指具體的看板實踐或工具,這時可以配合其它敏捷方法使用。
看板(kan-ban)(小寫字母開頭)是一個日語詞匯,英文字面意思是“信號卡”(signal card)。
在2018年4月9日發表的12thAnmual State of Agile中,受訪者中采用Kanban方法的占5%,結合其它敏捷方法把Kanban當做一個實踐的占65%(排在所有敏捷實踐的第8位)。
看板方法的核心實踐
1.可視化工作流程。
2.限制進行中的工作(WIP,work-in-progress)。
可視化工具一白板
使用白板,物理白板(信息輻射器)。也可以使用電子系統(電子冰箱),但大多數團隊不使用。
放在團隊成員非常容易看到的地方,比如研發團隊所在房間墻上。
可視化是敏捷軟件開發非常重要的一個實踐和優勢,在12thAnnual
State of Agile中,在采用敏捷帶來的好處中Project Visibility排在第二位(66%)。
看板例子
·使用白板
·1、為每個工作項建立一個記事貼
·2、用列映射團隊工作流
·每列標識工作流的一個部分(每個團隊不同)
·應當包含工作所有階段,從工作進入到工作離開團隊
·PDCA(Plan-Do-Check-Act),檢視並調整
·通過可視化工作流,可以看到
·工作狀態
·潛在的問題,工作是否有阻塞,或者有人員閑置
一旦所有的工作顯示在白板上,信息傳遞給所有人,可以極大的降低溝通交流成本。
白板上的記事貼一工作項
常見的屬性為
·工作項描述
·電子系統中的唯一標識
·完成期限
·誰在處理這個工作項
·工作類型(比如bug或者常規工作)
盡可能保證每個工作項的工作量不要偏差太大(比如都在3人天左右)
從卡片上你可以
·看到工作項的進展狀態
·能夠決定下一步如何處理
限制在制品
在制品(WIP,Work in Progress)是同時進行中的工作數量。
減少在制品使其快速流過整個工作流,可以使前置時間縮短。
·前置時間是指處理一個工作項從開始到結束所經過的時間。
限制每列中卡片的數目。
硬幣傳遞遊戲說明限制在制品原理(1)-規則
4個人(共8人)圍著桌子坐下來,其他人分別選擇一個坐下的同事站在其身後,並掏出手機打開計時器。
有20枚硬幣。每個人要把所有硬幣翻一遍,然後傳遞給下一個人。當所有人都翻過所有硬幣之後,他們就完成了工作,並交付給了客戶。
“我來作為客戶,為整個工作流計時。我會記錄兩個時間,一個是第一枚硬幣到達我這裏的時間,一個是所有20枚硬幣到達我這裏的時間。"
我們會玩三輪這個遊戲,第一輪的規則是每個工人需要把所有20枚硬幣翻完後傳遞給下一個工人;第二輪每次翻5枚硬幣;第三輪每一批次翻1個硬幣。
硬幣傳遞遊戲說明限制在制品原理(2)-結果
硬幣遊戲分析
我們不再關註是否每個工人的工作都是最有效率的;關註團隊。
在最後一輪中,前置時間是最短的,但每個工人的工作時間都延長了,從個人來看效率下降了,但整個團隊的效率最高。
經驗法則如下:
·在制品規模高會有工作閑置(有一些硬幣沒有人翻,在等人)
·在制品規模低會有人要閑置(人等工作)
在制品規模大小可以不斷調整到團隊適應的情況。
取中間值
1.可視化工作流程。
2.限制進行中的工作(WIP,work-in-progress)。
看板示例
第三節 精益
精益思想(Lean)
精益起源於日本豐田公司的“TPS”(豐田生產方式)。
敏捷與精益可以看作是一對擁有共同價值觀但起源不同的兄弟。精益起源於制造業,敏捷起源於軟件開發。
精益軟件開發原則:
·消除浪費、增強(不斷)學習、盡量延遲決定(因為早期得到的消息較少,延遲可以使決定的正確性提高)、盡快發布(交付)、下放權力(給團隊授權)、內置完整性(客戶對產品體驗的一致性)、全局優化
識別浪費、消除浪費
任何不能為客戶增加價值的行為即是浪費:
·創建不必要的功能和產品
·需求管理不當(重復的工作、低價值需求、bug修復速度慢)
·返工Rework(已交付工作沒有正確完成,質量問題)
·不必要的復雜解決方案(超出需求的復雜方案)
·過度認知負擔(技術債務、有問題的工具、遺留代碼缺乏優化等)
·心理壓力(團隊人員沖突、士氣低落、上級壓力等)
·等待/多任務(互相等待、不斷進行工作內容切換)WIP
·知識丟失(人員變動、知識孤島)
·無效溝通(大團隊、不完全、不足夠的溝通)可視化Kanban
·(Sedano,Todd &Ralph,Paul & Peraire,Cecile.(2017).Software Development Waste.)
總結
- 敏捷軟件開發是2000年後出現的一種新的研發方法,它能夠很好的應對快速變更、模糊的需求。
- 敏捷軟件開發知識體系包含價值觀、原則、方法、實踐和工具。
- Kanban可以作為一種敏捷方法,其核心實踐為可視化看板、限制在制品。
- Kanban也經常作為一種實踐和工具,成為其它敏捷方法的一部分。
- 精益是一種和敏捷對應的價值觀。精益軟件開發是精益思想在軟件開發領域的應用,其中發現浪費、消除浪費是很重要的一種原則。
Anderson, David J.(April 2010). Kanban: Successful Evolutionary Change for Your
Technology Business. Blue Hole Press. ISBN O-9845214-0-2.
Marcus Hammarberg and Joakim Sunden.2014. Kanban in Action (1st ed.). Manning
Publications Co., Greenwich, CT, USA.
Mary Poppendieck; Tom Poppendieck (2003). Lean Software Development: An Agile
Toolkit. Addison-Wesley Professional. ISBN 978-0-321-15078-3.
Sedano, Todd & Ralph, Paul & Peraire, Cecile.(2017). Software Development Waste.
第三章 敏捷軟件開發