軟件工程敏捷軟件開發(fā)課件
軟件工程軟件工程軟件工程軟件工程第5章 敏捷軟件開發(fā) 軟件工程軟件工程內(nèi)容摘要內(nèi)容摘要敏捷敏捷軟件開件開發(fā)概述概述極限極限編程(程(XP)方法)方法相關(guān)敏捷相關(guān)敏捷過程模型程模型Scrum方法方法動態(tài)系統(tǒng)開發(fā)方法動態(tài)系統(tǒng)開發(fā)方法敏捷建模敏捷建模敏捷統(tǒng)一過程敏捷統(tǒng)一過程2 軟件工程軟件工程敏捷軟件開發(fā)的產(chǎn)生背景敏捷軟件開發(fā)的產(chǎn)生背景軟件開件開發(fā)的新挑的新挑戰(zhàn)快速的市場進(jìn)入時間,要求高生產(chǎn)率快速的市場進(jìn)入時間,要求高生產(chǎn)率快速變化的需求快速變化的需求快速發(fā)展的技術(shù)快速發(fā)展的技術(shù)傳統(tǒng)的的軟件開件開發(fā)方法方法強(qiáng)調(diào)過程和文檔強(qiáng)調(diào)過程和文檔對變化的適應(yīng)能力偏弱對變化的適應(yīng)能力偏弱3提提高對變化的適應(yīng)能力高對變化的適應(yīng)能力Martin Fowler認(rèn)為:提前預(yù)測需求是困難的。同樣,對項目進(jìn)行提前預(yù)測需求是困難的。同樣,對項目進(jìn)行過程中客戶需求優(yōu)先級的變更進(jìn)行預(yù)測也很過程中客戶需求優(yōu)先級的變更進(jìn)行預(yù)測也很困難困難對很多項目來說,軟件設(shè)計和構(gòu)建是交錯進(jìn)對很多項目來說,軟件設(shè)計和構(gòu)建是交錯進(jìn)行的。也就是說,設(shè)計需要通過實施構(gòu)建來行的。也就是說,設(shè)計需要通過實施構(gòu)建來獲得驗證,而在構(gòu)建的過程中新獲得的知識獲得驗證,而在構(gòu)建的過程中新獲得的知識又可以幫助設(shè)計又可以幫助設(shè)計從制定計劃的角度來看,分析、設(shè)計、構(gòu)建從制定計劃的角度來看,分析、設(shè)計、構(gòu)建和測試活動并不容易預(yù)測和測試活動并不容易預(yù)測 軟件工程軟件工程4 軟件工程軟件工程5敏捷方法的基本觀點(diǎn)敏捷方法的基本觀點(diǎn)強(qiáng)調(diào)強(qiáng)調(diào)適應(yīng)性適應(yīng)性而不是可預(yù)測性而不是可預(yù)測性經(jīng)典軟件開發(fā)方法經(jīng)典軟件開發(fā)方法:通過控制變化實現(xiàn)軟件開發(fā)的通過控制變化實現(xiàn)軟件開發(fā)的可預(yù)測性可預(yù)測性敏捷敏捷軟件開發(fā)方法軟件開發(fā)方法:變化變化是不可避免的,應(yīng)該通過是不可避免的,應(yīng)該通過改善管理實踐和工程實踐來更好地適應(yīng)改善管理實踐和工程實踐來更好地適應(yīng)變化變化強(qiáng)調(diào)強(qiáng)調(diào)人人在在項目中項目中的的關(guān)鍵作用關(guān)鍵作用敏捷軟件開發(fā)認(rèn)為人不是可以互相替換的敏捷軟件開發(fā)認(rèn)為人不是可以互相替換的“編程部編程部件件”,而是具有創(chuàng)造力的個體,成功的軟件開發(fā)活,而是具有創(chuàng)造力的個體,成功的軟件開發(fā)活動依賴于人的主觀能動性動依賴于人的主觀能動性 軟件工程軟件工程6 軟件工程軟件工程強(qiáng)調(diào)強(qiáng)調(diào)“剛剛好剛剛好”(Just enough)在保證軟件開發(fā)有成功產(chǎn)出的前提下,盡量減少開在保證軟件開發(fā)有成功產(chǎn)出的前提下,盡量減少開發(fā)過程中的活動和制品的方法,即開發(fā)中的活動及發(fā)過程中的活動和制品的方法,即開發(fā)中的活動及制品既不要太多也不要太少制品既不要太多也不要太少7敏捷方法的產(chǎn)生敏捷方法的產(chǎn)生從從20世世紀(jì)90年代開始,逐年代開始,逐漸產(chǎn)生了一大生了一大批敏捷批敏捷軟件開件開發(fā)方法方法其中比其中比較有影響的包括:極限有影響的包括:極限編程、程、Scrum、看板方法、精益看板方法、精益軟件開件開發(fā)方法、水晶方法、水晶軟件開件開發(fā)方法(方法(crystal)、自適)、自適應(yīng)軟件開件開發(fā)(adaptive software development,ASD)、)、動態(tài)系系統(tǒng)開開發(fā)方法(方法(dynamic system development method,DSDM)等)等 軟件工程軟件工程8敏捷宣言敏捷宣言2001年年2月,月,17位敏捷方法的先位敏捷方法的先驅(qū)在美國在美國猶他州召開了猶他州召開了為期期2天的會天的會議,成立了敏成立了敏捷捷軟件開件開發(fā)聯(lián)盟盟 并并發(fā)布了布了“敏捷宣言敏捷宣言”該宣言由四個價宣言由四個價值觀聲明聲明組成,并提成,并提煉出出敏捷敏捷軟件開件開發(fā)方法必方法必須遵循的遵循的12條原條原則 軟件工程軟件工程9敏捷宣言敏捷宣言我們我們正通過親身或者協(xié)助他人進(jìn)行軟件開發(fā)實踐來正通過親身或者協(xié)助他人進(jìn)行軟件開發(fā)實踐來探索更好的軟件開發(fā)方法。探索更好的軟件開發(fā)方法?;诖耍覀兘⒘巳缦碌膬r值觀:基于此,我們建立了如下的價值觀:個體個體和交互和交互 重于重于 過程和工具程和工具工作的工作的軟件件 重于重于 詳盡的文檔盡的文檔客客戶合作合作 重于重于 合同合同談判判響響應(yīng)變化化 重于重于 遵循遵循計劃劃也就是說也就是說,盡管右項有其價值,盡管右項有其價值,我們更重視左項的價值我們更重視左項的價值 軟件工程軟件工程10 軟件工程軟件工程個體和交互個體和交互 重于重于 過程和工具過程和工具過程和工具是重要的,但是程和工具是重要的,但是軟件開件開發(fā)中人的作用和中人的作用和交流的作用更需要被交流的作用更需要被進(jìn)一步一步強(qiáng)調(diào)軟件是由人件是由人組成的成的團(tuán)隊來開來開發(fā)的,與的,與軟件件項目相關(guān)目相關(guān)的各的各類人人員通通過充分的交流和有效的合作,才能成充分的交流和有效的合作,才能成功地開功地開發(fā)出得到用出得到用戶滿意的意的軟件件如果光有定如果光有定義良好的良好的過程和先程和先進(jìn)的工具,而人的工具,而人員的的技能很差,或者不能很好地交流和技能很差,或者不能很好地交流和協(xié)作,作,軟件是很件是很難成功地開成功地開發(fā)的的11 軟件工程軟件工程工作的軟件工作的軟件 重于重于 詳盡的文檔詳盡的文檔可以工作的可以工作的軟件是件是軟件開件開發(fā)工作的最工作的最終目目標(biāo)好的好的必要的文必要的文檔能檔能幫助我?guī)椭覀兝斫饫斫廛浖鍪裁?,怎么件做什么,怎么做以及如何使用做以及如何使用,是有價,是有價值的。但是,的。但是,軟件開件開發(fā)的的主要目主要目標(biāo)仍然是仍然是創(chuàng)建可運(yùn)行的建可運(yùn)行的軟件件敏捷敏捷軟件開件開發(fā)強(qiáng)調(diào)不斷地快速地向用不斷地快速地向用戶提交可運(yùn)行提交可運(yùn)行的的軟件(不一定是完整的件(不一定是完整的軟件),以得到用件),以得到用戶的的認(rèn)可可12 軟件工程軟件工程客戶合作客戶合作 重于重于 合同談判合同談判只有客只有客戶才能明確才能明確說明需要什么明需要什么樣的的軟件,然而,件,然而,大量的大量的實踐表明,在開踐表明,在開發(fā)的早期客的早期客戶常常不能完整常常不能完整地表達(dá)他地表達(dá)他們的全部需求,有些早期確定的需求,以的全部需求,有些早期確定的需求,以后也可能會改后也可能會改變由于由于軟件開件開發(fā)的的預(yù)測性的困性的困難,想通,想通過合同合同談判的判的方式,將需求固定下來常常是困方式,將需求固定下來常常是困難的的敏捷敏捷軟件開件開發(fā)強(qiáng)調(diào)與客與客戶的的協(xié)作,通作,通過與客與客戶的交的交流和流和緊密合作來密合作來發(fā)現(xiàn)用用戶的需求的需求13 軟件工程軟件工程響應(yīng)變化響應(yīng)變化 重于重于 遵循計劃遵循計劃任何任何軟件件項目的開目的開發(fā)都都應(yīng)該制制訂一個一個項目目計劃,以劃,以確定各開確定各開發(fā)任任務(wù)的的優(yōu)先先順序和起止日期。然而,隨序和起止日期。然而,隨著著項目的目的進(jìn)展,需求、展,需求、業(yè)務(wù)環(huán)境、技境、技術(shù)等都可能等都可能變化,任化,任務(wù)的的優(yōu)先先順序和起止日期也可能因種種原因序和起止日期也可能因種種原因會改會改變因此,因此,項目目計劃劃應(yīng)具有可塑性,有具有可塑性,有變動的余地。當(dāng)?shù)挠嗟?。?dāng)出出現(xiàn)變化化時及及時做出反做出反應(yīng),修,修訂計劃以適劃以適應(yīng)變化化14敏捷宣言的敏捷宣言的12條原則條原則 我們的最高優(yōu)先級是持續(xù)不斷地、及早地交付有價值的我們的最高優(yōu)先級是持續(xù)不斷地、及早地交付有價值的軟件來使客戶滿意軟件來使客戶滿意 擁抱變化,即使是在項目開發(fā)的后期。敏捷過程愿意為擁抱變化,即使是在項目開發(fā)的后期。敏捷過程愿意為了客戶的競爭優(yōu)勢而了客戶的競爭優(yōu)勢而接納接納變化變化 經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個月,傾經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個月,傾向于向于采用采用較短的周期較短的周期 業(yè)務(wù)人員和開發(fā)人員必須在項目的整個階段緊密合作業(yè)務(wù)人員和開發(fā)人員必須在項目的整個階段緊密合作 圍繞著被激勵的個體構(gòu)建項目。為個體提供所需的環(huán)境圍繞著被激勵的個體構(gòu)建項目。為個體提供所需的環(huán)境和支持,給予信任,從而達(dá)成目標(biāo)和支持,給予信任,從而達(dá)成目標(biāo) 在團(tuán)隊內(nèi)和團(tuán)隊間溝通信息的最有效和最高效的方式是在團(tuán)隊內(nèi)和團(tuán)隊間溝通信息的最有效和最高效的方式是面對面的交流面對面的交流 軟件工程軟件工程15敏捷宣言的敏捷宣言的12條原則(續(xù))條原則(續(xù))可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)。可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)。敏捷過程倡導(dǎo)可持續(xù)開發(fā)。項目發(fā)起者、開發(fā)人員和用敏捷過程倡導(dǎo)可持續(xù)開發(fā)。項目發(fā)起者、開發(fā)人員和用戶應(yīng)該維持一個可持續(xù)的步調(diào)。戶應(yīng)該維持一個可持續(xù)的步調(diào)。持續(xù)地追求技術(shù)卓越和良好設(shè)計,可以提高敏捷性持續(xù)地追求技術(shù)卓越和良好設(shè)計,可以提高敏捷性 以簡潔為本,它是減少不必要工作的藝術(shù)。以簡潔為本,它是減少不必要工作的藝術(shù)。最好的架構(gòu)、需求和設(shè)計是從自組織的團(tuán)隊中涌現(xiàn)出來最好的架構(gòu)、需求和設(shè)計是從自組織的團(tuán)隊中涌現(xiàn)出來的。的。團(tuán)隊定期地反思如何變得更加高效,并相應(yīng)地調(diào)整自身團(tuán)隊定期地反思如何變得更加高效,并相應(yīng)地調(diào)整自身的行為。的行為。軟件工程軟件工程16敏捷方法的公共特征敏捷方法的公共特征致力于降低致力于降低變化化帶來來的成本的成本強(qiáng)調(diào)價價值強(qiáng)調(diào)人的人的作用作用使用增量和迭代的開使用增量和迭代的開發(fā)方法方法 軟件工程軟件工程17 軟件工程軟件工程內(nèi)容摘要內(nèi)容摘要敏捷敏捷軟件開件開發(fā)概述概述極限極限編程(程(XP)方法)方法相關(guān)敏捷相關(guān)敏捷過程模型程模型Scrum方法方法動態(tài)系統(tǒng)開發(fā)方法動態(tài)系統(tǒng)開發(fā)方法敏捷建模敏捷建模敏捷統(tǒng)一過程敏捷統(tǒng)一過程18 軟件工程軟件工程XP(eXtreme Programming)方法方法1996年,年,Kent Beck等人在等人在Chrysler的的C3項目的開目的開發(fā)過程中逐步程中逐步產(chǎn)生了極限生了極限編程的基本概程的基本概念念1999年,年,Kent Beck撰寫了撰寫了解析極限解析極限編程:程:擁抱抱變化化,對極限極限編程的價程的價值觀、原、原則和和實踐踐進(jìn)行了行了闡述述19極限編程過程極限編程過程 軟件工程軟件工程20XP方法方法XP 策劃策劃開始于傾聽,傾聽產(chǎn)生一系列開始于傾聽,傾聽產(chǎn)生一系列“用戶故事用戶故事”。團(tuán)隊成員評估每一個故事,并給出以開發(fā)周數(shù)為度量單團(tuán)隊成員評估每一個故事,并給出以開發(fā)周數(shù)為度量單位的位的成本成本。團(tuán)隊共同決定如何將故事分組,并置于將要開發(fā)的下一團(tuán)隊共同決定如何將故事分組,并置于將要開發(fā)的下一個個軟件增量軟件增量中中。給出對給出對下一個發(fā)布版本的基本承諾(就包括的故事、交下一個發(fā)布版本的基本承諾(就包括的故事、交付日期和其他項目事項)付日期和其他項目事項)項目的第一個發(fā)行版本(也稱為一個軟件增量)交付之項目的第一個發(fā)行版本(也稱為一個軟件增量)交付之后,后,XP團(tuán)隊計算團(tuán)隊計算項目的速度項目的速度,用于幫助估計后續(xù)發(fā)行版用于幫助估計后續(xù)發(fā)行版本的發(fā)布日期和進(jìn)度安排。本的發(fā)布日期和進(jìn)度安排。軟件工程軟件工程21XP方法方法XP設(shè)計設(shè)計嚴(yán)格遵循KIS(Keep It Simple,保持簡潔)原則。鼓勵使用CRC卡。如果在設(shè)計中碰到困難,推薦使用“Spike解決方案”鼓勵“重構(gòu)”以不改變代碼外部行為而改進(jìn)其內(nèi)部結(jié)構(gòu)的方式來修改軟件系統(tǒng)的過程。XP編程編程推薦在編碼開始之前建立單元測試。鼓勵“結(jié)對編程”。XP測試測試所有單元測試應(yīng)當(dāng)使用一個可以自動實施的框架?!膀炇諟y試”由客戶規(guī)定技術(shù)條件,并且著眼于客戶可見的系統(tǒng)級特征和功能。22結(jié)對編程結(jié)對編程結(jié)對編程程提高了提高了設(shè)計的可靠性和的可靠性和質(zhì)量量在做任何設(shè)計的時候在做任何設(shè)計的時候,都有兩個程序員一起思考,都有兩個程序員一起思考,可以匯集兩個程序員的設(shè)計思想可以匯集兩個程序員的設(shè)計思想在代碼編寫完成的時候同時也通過了代碼審查在代碼編寫完成的時候同時也通過了代碼審查這種方式有助于減少程序中的種方式有助于減少程序中的錯誤,降低,降低測試時間和和測試成本成本 軟件工程軟件工程23 軟件工程軟件工程XP核心實踐:用戶故事核心實踐:用戶故事故事是故事是對團(tuán)隊?wèi)?yīng)該完成的工作的完成的工作的陳述述。極限。極限編程程通通過故事來體故事來體現(xiàn)價價值觀中的中的“溝通溝通”的原的原則。好的。好的用用戶故事故事應(yīng)該能能夠觸觸發(fā)客客戶和開和開發(fā)團(tuán)隊之之間的的溝通溝通作作為和客和客戶的良好溝通的成果,故事的良好溝通的成果,故事?lián)碛星宄耐暧星宄耐瓿沙蓸?biāo)準(zhǔn)。一種常準(zhǔn)。一種常見的策略是,從用的策略是,從用戶的角度描述一的角度描述一組驗收收測試用例,開用例,開發(fā)團(tuán)隊使用使用該驗收收測試用例來用例來驗證是否已是否已經(jīng)完成了某個完成了某個故事故事24 軟件工程軟件工程XP核心實踐核心實踐:估算:估算估算是極限估算是極限編程中程中隱含的含的實踐,很多踐,很多應(yīng)用極限用極限編程程的的團(tuán)隊使用估算來幫助溝通、制定迭代和使用估算來幫助溝通、制定迭代和發(fā)布布計劃劃估算不估算不僅僅是幫助確定故事的是幫助確定故事的規(guī)模,更重要的是通模,更重要的是通過對故事點(diǎn)的故事點(diǎn)的討論,團(tuán)隊可以可以發(fā)現(xiàn)需求或需求或?qū)崿F(xiàn)中可中可能存在的能存在的問題25 軟件工程軟件工程XP核心實踐:簡單設(shè)計核心實踐:簡單設(shè)計完成了定完成了定義的功能的功能,能通能通過所有的所有的測試該設(shè)計描述了程序描述了程序員的重要意的重要意圖,便于理解和溝通;,便于理解和溝通;設(shè)計和和實現(xiàn)沒有冗余、沒有重復(fù)的沒有冗余、沒有重復(fù)的邏輯在在滿足以上條件的前提下,沒有多余的足以上條件的前提下,沒有多余的類和方法和方法26 軟件工程軟件工程XP核心實踐:重構(gòu)核心實踐:重構(gòu)重構(gòu)是在不改重構(gòu)是在不改變代代碼的外部行的外部行為的情況下,通的情況下,通過調(diào)整內(nèi)部的整內(nèi)部的結(jié)構(gòu),來持構(gòu),來持續(xù)保持代保持代碼的可理解、可的可理解、可維護(hù)特征特征27 軟件工程軟件工程XP核心實踐:測試驅(qū)動開發(fā)核心實踐:測試驅(qū)動開發(fā)測試驅(qū)動開開發(fā)的的3個快速循個快速循環(huán)的步的步驟:編寫一個寫一個測試該測試試圖發(fā)現(xiàn)代代碼中有一中有一處功能沒有功能沒有實現(xiàn),或,或者代者代碼中存在一個需要修復(fù)的中存在一個需要修復(fù)的問題 編寫代寫代碼使用盡可能快的方式使用盡可能快的方式編寫寫產(chǎn)品代品代碼,使,使這個個測試得以通得以通過 對代代碼進(jìn)行重構(gòu)行重構(gòu)28 軟件工程軟件工程XP核心實踐核心實踐:結(jié)對編程:結(jié)對編程結(jié)對編程提高了程提高了設(shè)計的可靠性和的可靠性和質(zhì)量量在做任何設(shè)計的時候在做任何設(shè)計的時候,都有兩個程序員一起思考,可以都有兩個程序員一起思考,可以匯集兩個程序員的設(shè)計匯集兩個程序員的設(shè)計思想思想在代碼編寫完成的時候同時也通過了在代碼編寫完成的時候同時也通過了代碼審查代碼審查這種方式有助于減少程序中的種方式有助于減少程序中的錯誤,降低,降低測試時間和和測試成本成本29瀑布模式:瀑布模式:重型開發(fā)方式,每個階段都要求完美,無法適應(yīng)變更迭代開迭代開發(fā)不要求每個階段的任務(wù)都完美,逐步完善螺旋開螺旋開發(fā)風(fēng)險驅(qū)動的開發(fā)方式敏捷開敏捷開發(fā)相比迭代,開發(fā)周期更短,并強(qiáng)調(diào)溝通合作 軟件工程軟件工程30極限編程的核心價值極限編程的核心價值溝通溝通簡單反反饋勇氣勇氣謙遜強(qiáng)調(diào)把列出的每個方法和思想做到極限把列出的每個方法和思想做到極限 軟件工程軟件工程31 軟件工程軟件工程內(nèi)容摘要內(nèi)容摘要敏捷敏捷軟件開件開發(fā)概述概述極限極限編程(程(XP)方法)方法相關(guān)敏捷相關(guān)敏捷過程模型程模型Scrum方法方法動態(tài)系統(tǒng)開發(fā)方法動態(tài)系統(tǒng)開發(fā)方法敏捷建模敏捷建模敏捷統(tǒng)一過程敏捷統(tǒng)一過程32敏捷開發(fā)的本質(zhì)敏捷開發(fā)的本質(zhì)以人以人為中心、迭代、循序中心、迭代、循序漸進(jìn)的開的開發(fā)方法方法不以文檔作不以文檔作為驅(qū)動,強(qiáng)調(diào)人與人之人與人之間的面的面對面的溝通交面的溝通交流流迭代:把復(fù)迭代:把復(fù)雜并且開并且開發(fā)周期周期長的開的開發(fā)任任務(wù),分解成很多,分解成很多小周期可完成的任小周期可完成的任務(wù),這樣的每個小周期就是一個迭代的每個小周期就是一個迭代過程,每次迭代都程,每次迭代都產(chǎn)生一個可交付的生一個可交付的產(chǎn)品品快速迭代快速迭代 擁抱抱變化化敏捷是一種指敏捷是一種指導(dǎo)思想,思想,Scrum和和XP就是具體的開就是具體的開發(fā)方式方式了,了,Scrum偏重于偏重于過程,而程,而XP重在重在實踐踐Scrum,橄橄欖球運(yùn)球運(yùn)動的的專業(yè)術(shù)語,表示,表示“爭球爭球”動作,作,軟件工程軟件工程33Scrum方法方法Scrum90年代中期,敏捷過程模型年代中期,敏捷過程模型Scrum 橄欖球比賽橄欖球比賽;Sprint 比賽中的沖刺比賽中的沖刺框架性過程活動框架性過程活動需求需求分析分析設(shè)計設(shè)計演化演化交付交付 軟件工程軟件工程34過程流過程流35Scrum開發(fā)過程開發(fā)過程 軟件工程軟件工程36 軟件工程軟件工程37Scrum開發(fā)過程開發(fā)過程確定確定Product Backlog(按(按優(yōu)先先順序排列的一個序排列的一個產(chǎn)品需求列表品需求列表;Scrum Team根據(jù)根據(jù)Product Backlog列表,做工作量的列表,做工作量的預(yù)估和安估和安排;排;根據(jù)根據(jù)Product Backlog列表,通列表,通過 Sprint Planning Meeting來從來從中挑中挑選出出一個一個Story作作為本次迭代完成的目本次迭代完成的目標(biāo),該目目標(biāo)的的時間周周期是期是14個星期,然后把個星期,然后把這個個Story進(jìn)行行細(xì)化,形成一個化,形成一個Sprint Backlog;Sprint Backlog是由是由Scrum Team去完成的,每個成去完成的,每個成員根據(jù)根據(jù)Sprint Backlog再再細(xì)化成更小的任化成更小的任務(wù)(細(xì)到每個任到每個任務(wù)的工作量在的工作量在2天內(nèi)能完成);天內(nèi)能完成);軟件工程軟件工程38在在Scrum Team完成完成計劃會劃會議上上選出的出的Sprint Backlog過程中,程中,需要需要進(jìn)行行 Daily Scrum Meeting(每日站立會(每日站立會議),),每次會每次會議控控制在制在15分分鐘左右左右,每個人向所有成,每個人向所有成員當(dāng)面當(dāng)面匯報你昨天完成了什么,你昨天完成了什么,并且向所有成并且向所有成員承承諾你今天要完成什么,同你今天要完成什么,同時遇到不能解決的遇到不能解決的問題也可以提出,每個人回答完成后,要走到黑板前更新自己的也可以提出,每個人回答完成后,要走到黑板前更新自己的Sprint burn down(Sprint燃盡燃盡圖)每日集成,每天都要有一個可以成功每日集成,每天都要有一個可以成功編譯、并且可以演示的版本、并且可以演示的版本(自自動工具工具實現(xiàn))當(dāng)一個當(dāng)一個Story完成,也就是完成,也就是Sprint Backlog被完成,也就表示一被完成,也就表示一次次Sprint完成,要完成,要進(jìn)行行Srpint Review Meeting(演示會(演示會議),),也稱也稱為評審會會議,產(chǎn)品品負(fù)責(zé)人和客人和客戶都要參加每一個都要參加每一個Scrum Team的成的成員都要向他都要向他們演示自己完成的演示自己完成的軟件件產(chǎn)品品Sprint RetrospectiveMeeting(回(回顧會會議),也稱),也稱為總結(jié)會會議,以,以輪流流發(fā)言方式言方式進(jìn)行,每個人都要行,每個人都要發(fā)言,言,總結(jié)并并討論改改進(jìn)的的地方,放入下一地方,放入下一輪Sprint的的產(chǎn)品需求中;品需求中;軟件工程軟件工程39 軟件工程軟件工程40Scrum的的33553個角色個角色Product Owner:產(chǎn)品品負(fù)責(zé)人,清楚的知道人,清楚的知道產(chǎn)品的愿景,品的愿景,需要需要對產(chǎn)品待品待辦列表的梳理,列表的梳理,優(yōu)化,化,優(yōu)先先級排序等排序等負(fù)責(zé)。決定決定團(tuán)隊每個沖刺要完成哪些任每個沖刺要完成哪些任務(wù),負(fù)責(zé)產(chǎn)品的功能和品的功能和達(dá)到要求的達(dá)到要求的標(biāo)準(zhǔn),指定準(zhǔn),指定軟件的件的發(fā)布日期和交付內(nèi)容布日期和交付內(nèi)容Scrum Master是是Scrum教教練和和團(tuán)隊帶頭人,確保人,確保團(tuán)隊合理的運(yùn)作合理的運(yùn)作Scrum,并幫助,并幫助團(tuán)隊掃除除實施中的障礙,施中的障礙,負(fù)責(zé)流程在流程在項目中的目中的順利利實施和施和進(jìn)行行Team是開是開發(fā)團(tuán)隊,能,能夠交付一個端到端的真正交付一個端到端的真正對客客戶有價有價值的的產(chǎn)品品 軟件工程軟件工程413個工件個工件Product Backlog:是指是指產(chǎn)品待品待辦事事項的集合,其中事的集合,其中事務(wù)有有優(yōu)先先級判斷,先判斷,先處理理優(yōu)先先級高的事高的事項。Sprint Backlog:每個迭代的功能開每個迭代的功能開發(fā)列表,列表,PO會根會根據(jù)據(jù)團(tuán)隊的能力并按照的能力并按照產(chǎn)品待品待辦列表中的列表中的優(yōu)先先級來來選取每取每個沖刺要做的事情。個沖刺要做的事情。團(tuán)隊可以可以專注在每個迭沖刺要走的注在每個迭沖刺要走的事情上而不被打斷。事情上而不被打斷。Burn down chart:燃盡燃盡圖,在每個迭代,在每個迭代顯示剩余工作示剩余工作時間和任和任務(wù)完成情況完成情況 軟件工程軟件工程425種活動種活動Sprint:沖刺沖刺,一個固定的一個固定的時間周期(通常周期(通常為2w-4w),團(tuán)隊要盡可能在要盡可能在這個周期內(nèi)交付可以工作的個周期內(nèi)交付可以工作的軟件件給客客戶sprint planning meeting:沖刺開始的沖刺開始的時候,候,PO會和會和團(tuán)隊一起從一起從PB中中選擇本次要做的任本次要做的任務(wù)/故事,并且會故事,并且會對團(tuán)隊提出的疑提出的疑問進(jìn)行解行解釋和澄清。同和澄清。同時團(tuán)隊會估算故事并分解成任會估算故事并分解成任務(wù),最后會形成本次的,最后會形成本次的Sprint Backlog.daily standup meeting:每日站會,每日站會,scrum為了加了加強(qiáng)團(tuán)隊溝通,每天溝通,每天團(tuán)隊都要都要選擇一個一個時間站在一起,互相交流彼此的站在一起,互相交流彼此的進(jìn)展和展和問題,以便及以便及時解決解決出出現(xiàn)的的問題,同,同時也能也能讓團(tuán)隊隨隨時了解我了解我們離沖刺目離沖刺目標(biāo)還有多有多遠(yuǎn)。sprint review:在在sprint周期最后,需要周期最后,需要進(jìn)行一次行一次評審會會議,讓團(tuán)隊向向產(chǎn)品品負(fù)責(zé)人和利益相關(guān)者展示已完成的功能。人和利益相關(guān)者展示已完成的功能。sprint審核的大部分核的大部分實踐用于踐用于團(tuán)隊成成員展示功能、回答利益相關(guān)者展示功能、回答利益相關(guān)者對展示的疑展示的疑問并并記錄所期望的更改。所期望的更改。評審會會議可以吸引相關(guān)利益者的關(guān)注,可以吸引相關(guān)利益者的關(guān)注,讓其他人了解其他人了解團(tuán)隊在做些什么,在做些什么,并得到重要反并得到重要反饋。做演示也會迫使開。做演示也會迫使開發(fā)團(tuán)隊真正完成一些工作。真正完成一些工作。retrospective meeting:回回顧會會議,通常在,通常在reivew會會議之后開始,有之后開始,有團(tuán)隊成成員在沖刺在沖刺結(jié)束之后束之后對上個迭代上個迭代進(jìn)行行總結(jié),同,同時提出一些改提出一些改進(jìn)方案,方案,這是一個持是一個持續(xù)改改進(jìn)的的過程程 軟件工程軟件工程435個價值觀個價值觀承承諾 愿意愿意對目目標(biāo)做出承做出承諾專注注 把你的心思和能力都用到你承把你的心思和能力都用到你承諾的工的工作上去作上去開放開放 Scrum 把把項目中的一切開放目中的一切開放給每個人每個人看看尊重尊重 每個人都有他獨(dú)特的背景和每個人都有他獨(dú)特的背景和經(jīng)驗勇氣勇氣 有勇氣做出承有勇氣做出承諾,履行承,履行承諾,接受,接受別人的尊重人的尊重 軟件工程軟件工程4445動態(tài)系統(tǒng)開發(fā)方法動態(tài)系統(tǒng)開發(fā)方法(DSDM)在可控在可控項目目環(huán)境中使用增量原型開境中使用增量原型開發(fā)模式以完模式以完全全滿足足對時間有有約束的系束的系統(tǒng)的構(gòu)建和的構(gòu)建和維護(hù)是一種是一種過程框架,程框架,使用迭代使用迭代軟件件過程程,Pareto原原則(20%的的時間完成完成80%的功能的功能)三個迭代周期三個迭代周期功能模型迭代設(shè)計和構(gòu)建迭代實現(xiàn) 增量不需要100%完成46敏捷建模敏捷建模對于大型,業(yè)務(wù)關(guān)鍵型系統(tǒng),傳統(tǒng)建模以及文檔:對于大型,業(yè)務(wù)關(guān)鍵型系統(tǒng),傳統(tǒng)建模以及文檔:完美完美 龐大龐大 難以維護(hù)難以維護(hù)由由Scott Ambler提出,以輕量級方式對待軟件提出,以輕量級方式對待軟件建模的標(biāo)準(zhǔn)、原則和實踐建模的標(biāo)準(zhǔn)、原則和實踐敏捷建模原則敏捷建模原則有目的的建模有目的的建模使用多個模型,不同模型表達(dá)系統(tǒng)不同方面使用多個模型,不同模型表達(dá)系統(tǒng)不同方面輕裝上陣,只保留能提供長期價值的模型輕裝上陣,只保留能提供長期價值的模型內(nèi)容重于表述形式;內(nèi)容重于表述形式;理解模型及工具;建模方法適應(yīng)本地團(tuán)隊需要理解模型及工具;建模方法適應(yīng)本地團(tuán)隊需要47敏捷統(tǒng)一過程敏捷統(tǒng)一過程(AUP)Agile Unified Process,在大型上連續(xù),在小型在大型上連續(xù),在小型上迭代上迭代采用經(jīng)典采用經(jīng)典UP階段活動:起始、細(xì)化、構(gòu)建和轉(zhuǎn)換階段活動:起始、細(xì)化、構(gòu)建和轉(zhuǎn)換每個活動中,迭代使用敏捷,盡快交付軟件增量每個活動中,迭代使用敏捷,盡快交付軟件增量每個每個AUP迭代執(zhí)行以下活動:迭代執(zhí)行以下活動:建模建模實現(xiàn)實現(xiàn)測試測試部署部署配置及項目管理配置及項目管理環(huán)境管理環(huán)境管理