最近在著手準(zhǔn)備ACP考試,仔細(xì)看了下相關(guān)的書籍,對(duì)每章知識(shí)點(diǎn)進(jìn)行相應(yīng)的整理珠增,想著記錄下來,后續(xù)如有更好的理解砍艾,再回頭更新蒂教。
之后會(huì)按照以下目錄進(jìn)行梳理:
- 敏捷的理念
- 價(jià)值驅(qū)動(dòng)交付
- 干系人管理
- 打造高績(jī)效團(tuán)隊(duì)
- 適應(yīng)性計(jì)劃
- 發(fā)現(xiàn)與解決問題
- 持續(xù)改進(jìn)
- 敏捷的實(shí)踐
敏捷的實(shí)踐
-
看板
看板開發(fā)方法通過限制在制品(WIP)來幫助解決問題,并減少開發(fā)變更帶來的浪費(fèi)和成本的增加脆荷。
在拉式系統(tǒng)中被使用凝垛,通過限制WIP,一步步完成開發(fā)任務(wù)简烘。
本身是一種精益技術(shù)苔严,形式上采用來任務(wù)板/故事墻/狀態(tài)強(qiáng)的增強(qiáng)版;
核心原則:- 流程可視化:可視化流程的方法對(duì)項(xiàng)目跟蹤非常重要孤澎。
- 限制WIP:明確限制流程中各狀態(tài)上同時(shí)進(jìn)行對(duì)任務(wù)數(shù)上限届氢。保持進(jìn)行中工作量可以減少問題、瓶頸對(duì)發(fā)生覆旭,聚焦并持續(xù)改進(jìn)退子;
- 關(guān)注流程:可以清楚的解釋如何工作,體現(xiàn)共同的目標(biāo)-改進(jìn)型将。
-
精益
精益軟件開發(fā)不是敏捷方法寂祥,但是價(jià)值觀很接近。精益是將精益生產(chǎn)方法應(yīng)用于軟件開發(fā)七兜。七大核心概念如下:- 消除浪費(fèi):要想獲得最大化的價(jià)值丸凭,必須消除浪費(fèi)(延期、沒用的功能腕铸、等待)惜犀;
- 授權(quán)團(tuán)隊(duì):尊重團(tuán)隊(duì)成員并由團(tuán)隊(duì)進(jìn)行決策,保證項(xiàng)目效率狠裹,有利于項(xiàng)目成功虽界;
- 快速交付:快速交付有價(jià)值的軟件來最大化項(xiàng)目的投資回報(bào)率(ROI)
- 全面優(yōu)化:檢視系統(tǒng)的整體而不是一部分,關(guān)注整個(gè)組織的優(yōu)化改進(jìn)涛菠。
- 品質(zhì)為先:不是測(cè)試為先莉御,通過重構(gòu)撇吞、持續(xù)集成、單元測(cè)試等技術(shù)手段加強(qiáng)質(zhì)量保質(zhì)礁叔;
- 晚做決策:延遲決策牍颈,盡早進(jìn)化和最晚決策;可以理解為消除不必要的變更浪費(fèi)晴圾;
- 強(qiáng)化學(xué)習(xí):通過盡早溝通和頻繁的反饋來建立學(xué)習(xí)的內(nèi)容颂砸。軟件項(xiàng)目是業(yè)務(wù)和技術(shù)兩項(xiàng)經(jīng)驗(yàn)的積累,需要盡快開始并保持學(xué)習(xí)的狀態(tài)死姚。
-
極限編程
輕量級(jí)的軟件開發(fā)方法,價(jià)值觀是溝通勤篮、簡(jiǎn)單都毒、反饋、勇氣和尊重碰缔。
“探針”是迭代中使用的技術(shù)手段账劲,用于探測(cè)未知的工作與風(fēng)險(xiǎn)。
極限編程價(jià)值觀- 溝通:保證團(tuán)隊(duì)成員都知道對(duì)他們的期望和團(tuán)隊(duì)其他成員的工作金抡,每日站會(huì)非常重要瀑焦;
- 簡(jiǎn)單:“最簡(jiǎn)潔的東西是最可行的”為指導(dǎo),減少?gòu)?fù)雜程度梗肝、多余的功能榛瓮,消除浪費(fèi);
- 反饋:盡早暴露反饋問題巫击。早期出現(xiàn)的錯(cuò)誤可能是有益的禀晓,可以減少后期改進(jìn)的成本;
- 勇氣:有勇氣將我們的工作對(duì)別人公開可視坝锰,體現(xiàn)在結(jié)對(duì)編程粹懒,開發(fā)人員需要自動(dòng)備份和進(jìn)行單元測(cè)試,并且需要有足夠的勇氣和細(xì)心來做重要的改動(dòng)顷级。
- 尊重:每一個(gè)人低謳在一起工作凫乖,素有人都對(duì)項(xiàng)目的成功或者失敗負(fù)責(zé)。
極限編程的12個(gè)技術(shù)實(shí)踐
- 計(jì)劃游戲:發(fā)布計(jì)劃和迭代計(jì)劃弓颈;
- 小版本:頻繁對(duì)小版本帽芽,更快的交付價(jià)值,客戶更多對(duì)反饋恨豁∠担基礎(chǔ)是:嚴(yán)格的測(cè)試和持續(xù)集成;
- 用戶測(cè)試:定義需要完成的功能的一部分橘蜜。團(tuán)隊(duì)可以根據(jù)驗(yàn)收標(biāo)準(zhǔn)進(jìn)行自動(dòng)化測(cè)試菊匿;
- 集體代碼所有權(quán):代碼歸屬集體所有付呕,任何人都可以修改任何代碼;
- 編碼標(biāo)準(zhǔn):由于代碼歸屬集體跌捆,所以需要統(tǒng)一的編碼標(biāo)準(zhǔn)與規(guī)則徽职;
- 可持續(xù)的開發(fā)速度:長(zhǎng)期的加班是不允許的,最高的生產(chǎn)率水準(zhǔn)是一個(gè)團(tuán)隊(duì)可以達(dá)到持續(xù)的開發(fā)速度佩厚;
- 比喻:解釋設(shè)計(jì)的理念和創(chuàng)建共同的技術(shù)愿景姆钉,讓項(xiàng)目干系人理解和解釋項(xiàng)目開發(fā)的系統(tǒng)是如何工作的。意思就是說能夠更人更清楚明白系統(tǒng)在做什么抄瓦;
- 持續(xù)集成:在項(xiàng)目中是非常關(guān)鍵的潮瓶,是盡早增量交付和持續(xù)改進(jìn)的基礎(chǔ)。
- 測(cè)試驅(qū)動(dòng)開發(fā):通過測(cè)試來推動(dòng)整個(gè)開發(fā)的進(jìn)行钙姊;在測(cè)試的不斷保護(hù)下毯辅,不斷重構(gòu)代碼,以消除重復(fù)設(shè)計(jì)煞额,優(yōu)化設(shè)計(jì)結(jié)構(gòu)思恐,提高代碼的重用性,從而提高軟件產(chǎn)品的質(zhì)量膊毁;測(cè)試驅(qū)動(dòng)開發(fā)過程中爭(zhēng)取可以盡可能短地進(jìn)行測(cè)試-反饋循環(huán)胀莹。
- 重構(gòu):在測(cè)試和持續(xù)集成基礎(chǔ)上,調(diào)整代碼改善軟件質(zhì)量和性能婚温,使設(shè)計(jì)模式和架構(gòu)更合理描焰,提高軟件的擴(kuò)展性和維護(hù)性。
- 簡(jiǎn)潔設(shè)計(jì):“可工作的最簡(jiǎn)化的東西”缭召,相比于很多項(xiàng)目失敗與龐大和復(fù)雜的編碼栈顷,簡(jiǎn)潔的設(shè)計(jì)是降低風(fēng)險(xiǎn)的策略;
- 結(jié)對(duì)編程:可以盡早發(fā)現(xiàn)錯(cuò)五嵌巷,還能共享知識(shí)萄凤。
-
Scrum
Scrum概述
是一種基于跨職能團(tuán)隊(duì)以迭代、增量的方式進(jìn)行復(fù)雜系統(tǒng)或者產(chǎn)品開發(fā)的框架搪哪;特點(diǎn)如下:- 組織分拆為小規(guī)模靡努、跨職能的自組織團(tuán)隊(duì);
- 工作拆分成一些小而具體的交付物晓折,按優(yōu)先級(jí)排序惑朦,估算沒想任務(wù)的相對(duì)工作量;
- 將時(shí)間拆分為短迭代漓概,迭代結(jié)束時(shí)對(duì)基本可以交付的代碼進(jìn)行演示(評(píng)審會(huì))漾月;
- 每個(gè)迭代結(jié)束后跟客戶一起確認(rèn)發(fā)布目標(biāo),并據(jù)此優(yōu)化發(fā)布計(jì)劃胃珍,更新任務(wù)優(yōu)先級(jí)梁肿;
- 每個(gè)迭代結(jié)束后進(jìn)行回顧以及過程優(yōu)化蜓陌。
敏捷的各類方法都有一個(gè)共同功能點(diǎn):短迭代方式交付客戶價(jià)值。
下面簡(jiǎn)單的介紹下Scrum中的一些概念:
- Sprint 0:第一個(gè)迭代前的特殊士氣吩蔑,用來完成一些必要的準(zhǔn)備工作钮热。
- 團(tuán)隊(duì)組建、導(dǎo)入培訓(xùn)
- 確定PB烛芬,以及可供第一個(gè)迭代開發(fā)的用戶故事隧期;
- 架構(gòu)設(shè)計(jì);
- 原型開發(fā)赘娄;
- 測(cè)試和驗(yàn)收策略仆潮;
- CI、開發(fā)擅憔、測(cè)試環(huán)境等技術(shù)基礎(chǔ)設(shè)施的準(zhǔn)備
- 辦公環(huán)境和辦公用品的準(zhǔn)備鸵闪;
- 制訂初始的發(fā)布計(jì)劃;
- 定義各種DoD暑诸;
- Sprint H:同緊急版本,當(dāng)正常Sprint所完成的軟件贈(zèng)來給你還達(dá)不到產(chǎn)品發(fā)布標(biāo)準(zhǔn)時(shí)辟灰,在產(chǎn)品發(fā)布之前要專門留出用于“還債”的一段時(shí)間个榕。
- SOS:當(dāng)Scrum擴(kuò)展到更大規(guī)模的技術(shù)〗胬可以有兩種含義:多團(tuán)隊(duì)代表組成的虛擬會(huì)議&多團(tuán)隊(duì)的每日站會(huì)西采;
Scrum是一個(gè)框架,包含很多技術(shù)和工具继控。主要有:
- 3個(gè)角色
- 4個(gè)儀式
- 3個(gè)工件
Scrum中的3個(gè)角色
-
產(chǎn)品負(fù)責(zé)人PO:負(fù)責(zé)最大化產(chǎn)品和開發(fā)團(tuán)隊(duì)工作的價(jià)值械馆;主要職責(zé)有:
- 定義所有的產(chǎn)品功能;
- 決定產(chǎn)品發(fā)布的內(nèi)容以及日期武通;
- 負(fù)責(zé)產(chǎn)品的投入產(chǎn)出霹崎;
- 排序功能的優(yōu)先級(jí);
- 調(diào)整產(chǎn)品功能和迭代順序冶忱;
- 認(rèn)同或者拒絕迭代的交付尾菇;
PO對(duì)產(chǎn)品代辦列表(PB)的內(nèi)容和排序的決定必須是可見的,開發(fā)團(tuán)隊(duì)必須尊重PO的意見并按照PO的意見進(jìn)行開發(fā)和實(shí)踐囚枪。
-
開發(fā)團(tuán)隊(duì):負(fù)責(zé)用戶故事的實(shí)現(xiàn)派诬,主要負(fù)責(zé)每個(gè)迭代結(jié)束時(shí)交付潛在的產(chǎn)品增量,必須是‘完成’狀態(tài)的链沼。
開發(fā)團(tuán)隊(duì)由組織組建并得到授權(quán)默赂,團(tuán)隊(duì)自組織和管理他們的工作。主要特點(diǎn)有:- 自組織:如何交付潛在的可發(fā)布產(chǎn)品增量括勺,是由開發(fā)團(tuán)隊(duì)自主決定缆八,SM不要干預(yù)曲掰,除非團(tuán)隊(duì)需要;
- 跨職能:擁有交付產(chǎn)品增量所需的全部技能耀里;
- 共擔(dān)責(zé)任:責(zé)任屬于整個(gè)開發(fā)團(tuán)隊(duì)蜈缤;
- 規(guī)模:考慮職能、敏捷和靈活性冯挎,通常開發(fā)團(tuán)隊(duì)在5~9人底哥;
- 集中辦公:一般情況都在同一地點(diǎn)辦公。
- Scrum Master:負(fù)責(zé)加強(qiáng)對(duì)Scrum的理解房官,指導(dǎo)團(tuán)隊(duì)成員正確理解并實(shí)施Scrum趾徽。主要的職責(zé)有:
- 對(duì)項(xiàng)目的直接管理;
- 帶領(lǐng)并指導(dǎo)團(tuán)隊(duì)的Scrum實(shí)踐翰守;
- 移除開發(fā)團(tuán)隊(duì)工作中的阻礙孵奶;
- 確保團(tuán)隊(duì)能夠勝任其工作,并保持高效的生產(chǎn)率蜡峰;
- 使得團(tuán)隊(duì)緊密合作了袁,團(tuán)隊(duì)個(gè)人具有多方面的工作能力;
- 保護(hù)團(tuán)隊(duì)不受外來因素?zé)o端的干擾湿颅;
- 在自組織和跨職能方面指導(dǎo)開發(fā)團(tuán)隊(duì)载绿;
- 協(xié)助PO管理代辦實(shí)現(xiàn),以及和開發(fā)團(tuán)隊(duì)溝通項(xiàng)目愿景油航、目標(biāo)以及產(chǎn)品代辦事項(xiàng)崭庸。
Scrum中的4個(gè)儀式
Scrum通常在每個(gè)迭代中使用固定的會(huì)議,以此來減少其他無效的會(huì)議谊囚。每個(gè)儀式都有時(shí)間盒的限制怕享。-
Sprint計(jì)劃會(huì)議(迭代計(jì)劃會(huì))
特性:- 標(biāo)志著Sprint的開始
- 確定哪些用戶故事會(huì)納入到本版本當(dāng)中
- PO必須為迭代計(jì)劃會(huì)準(zhǔn)備一個(gè)最新的、經(jīng)過排序的PB镰踏;
- 通常有時(shí)間限制函筋。
計(jì)劃會(huì)議通常會(huì)分成兩個(gè)部分,
- 上半場(chǎng):PO確認(rèn)本次迭代需要完成的功能余境,說明迭代的目標(biāo)以及達(dá)成該目標(biāo)需要完成的代辦事項(xiàng)列表驻呐;
- 下半場(chǎng):開發(fā)團(tuán)隊(duì)自己決定選擇產(chǎn)品代辦事項(xiàng)中用戶故事的數(shù)量,并且進(jìn)行故事的估算和任務(wù)的細(xì)分等芳来。
上半場(chǎng)主要是PO澄清需求含末,告知目標(biāo)以及用戶故事的優(yōu)先級(jí),確保用戶的需求與開發(fā)團(tuán)隊(duì)的理解是一致的即舌;
下半場(chǎng)根據(jù)理解的目標(biāo)佣盒,結(jié)合實(shí)際資源、代辦事項(xiàng)優(yōu)先級(jí)與開發(fā)速度顽聂,進(jìn)行用戶故事的估算肥惭、選擇和任務(wù)的劃分盯仪;
計(jì)劃會(huì)議的輸入輸出:
- 輸入:產(chǎn)品代辦事項(xiàng)、最新的產(chǎn)品增量蜜葱、開發(fā)團(tuán)隊(duì)的開發(fā)速度等全景;
- 輸出:開發(fā)團(tuán)隊(duì)能夠解釋如何自組織完成迭代目標(biāo)和預(yù)期的產(chǎn)品增量;
-
每日站會(huì):
特點(diǎn):- 每天進(jìn)行牵囤;
- 固定時(shí)間(15分鐘)爸黄;
- 同一時(shí)間、同一地點(diǎn)揭鳞;
- 所有人都可以參加炕贵,但是只有Scrum的角色才能發(fā)言;
- 不是匯報(bào)會(huì)議野崇,而是團(tuán)隊(duì)之間的承諾称开;
- 不是每次都要SM主持,團(tuán)隊(duì)成員可以負(fù)責(zé)召開乓梨;
-
Sprint評(píng)審會(huì)
主要包含如下內(nèi)容:- PO邀請(qǐng)Scrum團(tuán)隊(duì)和主要干系人參會(huì)鳖轰;
- PO說明哪些代辦事項(xiàng)已經(jīng)即完成,哪些還未完成扶镀;
- 開發(fā)團(tuán)隊(duì)演示完成的工作并解答關(guān)于所交付增量的問題脆霎;
- PO討論當(dāng)前產(chǎn)品代辦事項(xiàng)情況,根據(jù)當(dāng)前進(jìn)度預(yù)測(cè)可能的完工日期狈惫;
- 評(píng)審市場(chǎng)或潛在的產(chǎn)品使用方式所帶來的接下來要做的最有價(jià)值的東西的改變。
輸出:一份修訂后的產(chǎn)品代辦事項(xiàng)列表鹦马,闡明很可能進(jìn)入下一個(gè)迭代的代辦事項(xiàng)胧谈。
-
Sprint回顧會(huì)
持續(xù)改進(jìn)是敏捷的核心,回顧會(huì)的核心就是為了持續(xù)改進(jìn)荸频。目的主要在于:- 總結(jié)上一個(gè)迭代中的經(jīng)驗(yàn)和問題菱肖;
- 找出后續(xù)潛在改進(jìn)的主要方面,同時(shí)加以排序旭从;
- 制訂改進(jìn)工作計(jì)劃稳强。
在回顧會(huì)議結(jié)束后,團(tuán)隊(duì)?wèi)?yīng)該明確在接下來的迭代中需要實(shí)施的改進(jìn)和悦,并且跟蹤退疫;
Scrum中的3個(gè)工件
-
產(chǎn)品代辦事項(xiàng):要在某個(gè)迭代中實(shí)現(xiàn)的需求或者工作列表,特點(diǎn)如下:
- 需求淶源:是產(chǎn)品需求變動(dòng)的唯一來源
- 動(dòng)態(tài)的:PB是不完整的鸽素,需要持續(xù)更新的
- 有序的:排序越高越清晰褒繁、具體;排序越低馍忽,細(xì)節(jié)越少
- 唯一的:每個(gè)產(chǎn)品都有一個(gè)產(chǎn)品代辦事項(xiàng)棒坏,與團(tuán)隊(duì)數(shù)量無關(guān)
- PO負(fù)責(zé):產(chǎn)品負(fù)責(zé)人負(fù)責(zé)管理內(nèi)容燕差、可用性和排序(最終決定權(quán))。
-
迭代代辦事項(xiàng): 是當(dāng)前迭代選出的用戶故事列表坝冕;特點(diǎn)如下:
- PB的子集徒探;
- (有且只有)開發(fā)團(tuán)隊(duì)任何人都可以添加、刪減或者更改迭代中的工作項(xiàng)喂窟;
- 關(guān)注HOW测暗,團(tuán)隊(duì)怎么做才能在一個(gè)迭代中完成任務(wù)的交付;
- 開發(fā)團(tuán)隊(duì)通過每日站會(huì)跟蹤剩余工作量谎替,更新剩余工作量的估計(jì)偷溺,預(yù)測(cè)迭代目標(biāo)完成的可能性;
產(chǎn)品增量:當(dāng)產(chǎn)品代辦事項(xiàng)或者增量被描述為“完成”時(shí)钱贯,即可以作為發(fā)布的產(chǎn)品挫掏,“完成”的定義是需要在工作開始前被定義的。在客戶多次參與的基礎(chǔ)上秩命,每次迭代被定義完成的產(chǎn)品增加到產(chǎn)品增量上尉共。
同一個(gè)項(xiàng)目團(tuán)隊(duì)對(duì)“完成”的定義必須一致,也體現(xiàn)了Scrum的透明性弃锐。