敏捷開發(fā)培訓(AgileDevelopment)_第1頁
敏捷開發(fā)培訓(AgileDevelopment)_第2頁
敏捷開發(fā)培訓(AgileDevelopment)_第3頁
敏捷開發(fā)培訓(AgileDevelopment)_第4頁
敏捷開發(fā)培訓(AgileDevelopment)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

AgileDevelopment

敏捷開發(fā)JackDing(jack.w.)09/28/20102/24/20241Content

AgileDevelopment介紹RUPXPScrum2/24/20242AgileProcess-敏捷的開發(fā)流程AgileProcess(敏捷的開發(fā)流程)是一種軟件開發(fā)流程的泛稱,幾項共通的特性:客戶與開發(fā)人員形成密切合作的團隊,因為客戶無法于初期定義完整的規(guī)格,而開發(fā)人員于開發(fā)過程中也常常無法知悉外在環(huán)境或業(yè)務的變動,所以需要兩者密切合作方能開發(fā)適用的軟件。項目最終的目標是可執(zhí)行的程序,因此所有的中間產品必須經過審慎評估,確認有助于最終目標,才需要制作中間產品。采用Iterative與Incremental方式分階段進行,密集review是否符合需求。流程可以簡單,但規(guī)劃與執(zhí)行必須嚴謹。強調團隊合作,賦予高度的責任,團隊有自主權得以因應變化做調整2/24/20243AgileDevelopment敏捷開發(fā)是一種以人為核心、迭代、循序漸進的開發(fā)方法在敏捷開發(fā)中,項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。2/24/20244敏捷開發(fā)核心價值(CoreValue)Individualsandinteractionsoverprocessesandtools

個人和交流重于過程和工具

Workingsoftwareovercomprehensivedocumentation

正在運行的軟件本身重于復雜的文檔

Customercollaborationovercontractnegotiation

與客戶的溝通和交流重于使用合同約束客戶

Respondingtochangeoverfollowingaplan

對變化的快速響應重于跟隨計劃2/24/20245敏捷開發(fā)原則(Principles)最高目標是通過快速的和經常的發(fā)布軟件滿足客戶的需要提交軟件的周期為幾個星期到幾個月產生正確的軟件是衡量進度的首要標準主動接受需求的改變而不是拒絕商務人員和開發(fā)人員工作在一起個人必須有動力,要創(chuàng)造環(huán)境支持他們的要求,信任他們最有效的交流方法是面對面的交流最好的結構,需求和設計來自于自組織的團隊(self-organizingteam),允許任何人提出想法和建議持續(xù)改進設計和編碼鼓勵正常工作,減少長時間加班保持簡單,減少不必要的部分,認識到簡單的設計比復雜的設計更難(simpledesignishardertoproduce)定期調整過程,獲得更高效率2/24/20246敏捷開發(fā)的設計原則SRP單一職責原則SRP:SingleResponsibilityPrincipleOCP開放封閉原則OCP:Open-ClosePrincipleLSPLiskov替換原則LSP:LiskovSubstitutionPrincipleDIP依賴倒置原則DIP:DependencyInvertionPrincipleISP接口隔離原則ISP:InterfaceSeparatePrinciple2/24/20247敏捷開發(fā)-迭代計劃最新版本驗收測試發(fā)布計劃迭代計劃開發(fā)項目周期2/24/20248敏捷開發(fā)-迭代計劃2/24/20249名詞解釋故事故事是客戶想要系統(tǒng)做的事情,適合在一至兩個迭代內完成,并且是可測試的,他不一定是商業(yè)價值的直接體現(xiàn)。迭代迭代是一個周期在2-4周,能夠完成當前團隊所能實現(xiàn)的,最具商業(yè)價值的功能,并可以提供一個可工作的小版本供發(fā)布。VelocityVelocity翻譯為項目周轉時間。代表團隊在給定周期內能夠完成多少商業(yè)價值,以便用于衡量將來該團隊能夠提供的商業(yè)價值。也即昨天的天氣。2/24/202410名詞解釋優(yōu)先級優(yōu)先級主要考慮商業(yè)價值,同時兼顧市場風險、商業(yè)風險、技術風險等因素在內的一個衡量數(shù)字,優(yōu)先級越高通常意味著其商業(yè)價值越高風險系數(shù)風險系數(shù)綜合商業(yè)環(huán)境、項目資源、技術以及項目環(huán)境等等因素在內的一個衡量數(shù)字,它是優(yōu)先級的重要衡量指標之一。它通常出現(xiàn)在故事中。風險系數(shù)較大意味著優(yōu)先級也較大。負載因子負載因子是綜合項目成員的技術能力、技能集、精神狀態(tài)等等因素,對于團隊成員的一個負載系數(shù)。2/24/202411名詞解釋理想時間理想時間排除一切可能的外界干擾,同時排除自身的精神狀態(tài),職業(yè)態(tài)度等等因素,完成某項工作所需要的時間。實際時間實際時間理想時間乘上負載因子任務任務分配到項目成員,從故事切分的出來。通常任務時間不應該超過10個實際工作日。2/24/2024121.RUP2.XP3.Scrum2/24/202413RUP-RationalUnifyProcessRUP為IBMRational提出的軟件開發(fā)流程內容含蓋Businessmodeling,RequirementModeling,LogicalDesign,Implementation,Testing,Deployment等軟件開發(fā)生命周期的直接工作與ProjectManagement,Change&ConfigurationManagement,Environmentsupport等支持性工作。2/24/202414RUP的主要精神項目進行采用Iterative程序分階段漸進地完成項目功能;廣泛使用VisualModeling于商業(yè)需求分析、系統(tǒng)分析與系統(tǒng)設計;強調架構設計;對每項工作所需要的技術、工具、做法、模板、檢查項目均有詳細的定義,架構完備且具有可調整的彈性。2/24/2024151.RUP2.XP3.Scrum2/24/202416XP-eXtremeProgramming極限編程,最輕量級的開發(fā)流程,其最主要的精神是『在客戶有系統(tǒng)需求時,給予及時滿意的可執(zhí)行程序』,所以最適合需求快速變動的項目強調客戶所要的是workable的執(zhí)行碼,所以把與撰寫程序無關的工作降至最低,并要求客戶與開發(fā)人員最好以side-by-side的方式一起工作2/24/202417XP強調4個因素交流(communication),XP要求程序員之間以及和用戶之間有大量而迅速的交流簡單(simplicity),XP要求設計和實現(xiàn)簡單和干凈反饋(feedback)通過測試得到反饋,盡快提交軟件并根據(jù)反饋修改勇氣(courage)。勇敢的面對需求和技術上的變化2/24/202418XP開發(fā)流程開發(fā)人員隨時可以和客戶進行有效溝通,撰寫userstories以確認需求。簡易快速的系統(tǒng)設計,撰寫獨立的驗證程序以解決特殊困難的問題,找出算法即可丟棄驗證程序。規(guī)劃多次小型階段的項目計劃,以最快速度完成每一階段的程序交付客戶,客戶負責Acceptancetests;Coding前必須完成UnitTest與Acceptancetests程序,所有模塊整合前都須經過UnitTests;開發(fā)人員必須快速響應Bug與需求變更;要求二人一組使用一臺計算機設計程序,當一人coding時,另一人負責思考與設計;程序必須符合程序規(guī)范,并常做程序的重構(Refactoring)。2/24/202419XP原則和實踐-Planning-userstoriesuserstoriesUserstories類似usecase,描述用戶所見的系統(tǒng)功能,但避免使用大量的文檔,userstories由用戶編寫(不僅限于描述用戶界面)。Userstories使用用戶的語言編寫,不使用技術性的語言,每個userstories限于幾句話。Userstories用于在releaseplan會議上對開發(fā)時間進行評估,也用于產生驗收測試(acceptancetest),必須使用可以自動進行的驗收測試保證軟件的正確性。Userstories與傳統(tǒng)的用戶需求的區(qū)別在于詳細的程度,userstories并不會確定需求的每個細節(jié),它只是用來簡單的描述系統(tǒng)功能,供開發(fā)人員進行估計開發(fā)進度,在開發(fā)過程中開發(fā)人員和用戶會不斷的交流以討論細節(jié)問題。Userstory應該專注于功能,不應該過分注重用戶界面等細節(jié)。一般一個userstoriy在1-3周的時間完成,如果估計超過3周,說明userstory太大了,需要細分.2/24/202420XP原則和實踐-Planning-releaseplanreleaseplan召開一個releaseplan會議,產生releaseplan。Releaseplan將用于指定每個iteration的計劃。開發(fā)人員對每個userstory估計開發(fā)時間(在不被打斷,無其他工作情況下的開發(fā)時間,包括測試),用戶對userstories給出優(yōu)先級,releaseplan會議并不制訂每個iteration的計劃。Releaseplan要用戶,開發(fā)人員和管理者都同意,在完成功能范圍(scope),使用資源(resource),時間(time)和質量(quality)上達成一致(一般質量是不能改變的)2/24/202421XP原則和實踐-Planning-smallreleasesmallreleaseoftenandsmallrelease是XP的一個原則,每個release完成一些用戶有意義的功能集合,盡快的提交給用戶以獲得反饋,及時調整,提交的越晚,調整越困難。2/24/202422XP原則和實踐-Planning-projectvelocityprojectvelocity團隊在開發(fā)過程中要收集數(shù)據(jù),以便于對自己的開發(fā)速度進行評估,用于以后的releazseplan2/24/202423XP原則和實踐-Planning-iterationiteration每個smallrelease的周期稱為iteration,每個iteration約為1-3周,在一個項目中保持每個iteration的時間相等,不要超前制定計劃,每個iteration的計劃在iteration的開始時制定。這樣能夠更靈活的應付變化。不要急于完成本次iteration沒有包括的功能。要注重每個iteration的時間限制,當團隊覺得不能按時完成iteration時,召開一次iterationplan會議,重新評估,減少一些userstories。2/24/202424XP原則和實踐-Planning-iterationplaniterationplan在每個iteration開始的時候召開會議,從releaseplan中選擇還沒有實現(xiàn)的用戶最迫切需要的userstories。上一個iteration中沒有通過驗收測試的功能也要在這個iteration中實現(xiàn)??梢愿鶕?jù)上一個iteration的實踐調整團隊速度。Userstories和失敗的測試被分解成programmingtask,task使用技術語言編寫,作為iterationplan的詳細描述。程序員主動領取task并估計完成時間,每個task應該在1-3天內完成,超過3天的task應該被細分。如果整個團隊需要的時間多于或少于規(guī)定的iteration時間,調整userstories。2/24/202425XP原則和實踐-Planning-movepeoplearoundmovepeoplearound不要使每個開發(fā)人員局限于一項工作,不要使某項工作依賴于一個開發(fā)人員,增加知識共享,減少信息孤島,多進行交流和培訓。當項目中的所有人對所有模塊都了解并可以進行開發(fā)時是效率最高的,鼓勵開發(fā)人員在不同iteration中開發(fā)不同的模塊。2/24/202426XP原則和實踐-Planning-stand-upmeetingstand-upmeeting每天工作開始之前,開5-10分鐘的stand-up會議(站立會議),站立的目的是為了強迫節(jié)省時間,會議的目的是交流,提出存在的問題,但不要在會議上解決問題。開一個所有人員參加的短會比多個個別人員參加的會議要高效。在會議上提出的問題可以由少數(shù)人討論解決,這個少數(shù)人參加的會議如果涉及到代碼,可以在計算機前討論。2/24/202427XP原則和實踐-Planning-fixXPwhenitbreaksfixXPwhenitbreaksXP并不是一成不變的,當團隊覺得需要修改的時候,可以根據(jù)自己的情況進行修改,任何修改都要經過整個團隊的討論和達成一致2/24/202428XP原則和實踐-Designing-1Simplicity保持簡單的設計,在完成同樣的功能的情況下,選擇簡單的設計,不要急于設計沒有計劃的功能,應該認識到:keepingadesignsimpleishardworkSystemmetaphor使用統(tǒng)一的術語描述系統(tǒng),在用戶,管理者和開發(fā)人員之間使用統(tǒng)一的術語。這將使交流清晰。CRCcard使用CRC(Class,Responsibilities,andCollaboration)card進行系統(tǒng)設計,鼓勵更多的人參加設計。每個CRC卡片表示系統(tǒng)中一個對象,寫上對象的名字,責任和每個責任需要交互的其他對象??梢阅M對象之間的交互。CRC卡片是易于理解的,但是是非正式的,如果需要正式的文檔,要將卡片轉換為相應的文檔。spikesolutionneveraddfunctionearlyrefactoringwheneverandwherever2/24/202429XP原則和實踐-Designing-2spikesolution使用spikesolution減低風險,當遇到技術難題或設計問題時,使用簡單的程序進行測試,找出問題,在不同的解決方法之間進行評估。在早期進行實驗可以有效的降低風險。neveraddfunctionearly不要過早的設計沒有計劃的功能,在一個需求經常變化的環(huán)境中,過早的設計經常是沒有用的。refactoringwheneverandwhereverXP鼓勵對設計和代碼經常進行重構(Refactoring),目的是去除冗余,提高質量,保持設計簡單。重構必須以完全測試為檢驗條件2/24/202430XP原則和實踐-Coding-1customerisalawaysavailable用戶是項目組的成員之一,用戶的參加貫穿整個開發(fā)過程,用戶與開發(fā)人員之間的交流是重要的codingstandard使用統(tǒng)一的編碼標準,這是保持代碼整潔和共享代碼的基礎codingunittestfirsttestfirst是XP的一個特點,在編寫代碼之前先編寫單元測試代碼,單元測試代碼和代碼由同一個程序員完成。先編寫測試代碼可以使程序員更好的理解需求,避免直接編碼造成的理解偏差,對需求的不清晰,可以在編寫測試代碼時就發(fā)現(xiàn)。測試代碼也是檢驗程序是否完成的標準。編碼工作應該是以下工作的循環(huán):

1編寫測試代碼

2運行測試程序,確認失敗

3編寫實現(xiàn)這個測試程序要求功能的代碼,不需要實現(xiàn)其他的功能,只需要實現(xiàn)剛剛滿足測試程序的功能

4運行測試程序,確認成功

實踐證明,testfirst方式需要的編碼實踐少于先編碼,后寫測試代碼2/24/202431XP原則和實踐-Coding-2PairProgrammingPairprogramming是XP的特色,它要求兩個程序員在一臺計算機上同時進行編程工作。共用鼠標和鍵盤,通常一個人進行戰(zhàn)略上的思考,程序架構和函數(shù),類之間的關系,一個人進行輸入和戰(zhàn)術上的思考,完成函數(shù)和類。兩個人可以經常交換角色。sequentialintegration要保證源代碼庫的狀態(tài)是可標識的,同一時間,只允許一個pair的程序進行整和和測試,這樣可以縮小問題產生的范圍。不同的pair可以在自己的機器上隨時進行整和和測試.integrateoften只要有可能就進行代碼整合,周期可以在幾個小時,最好不要超過一天。2/24/202432XP原則和實踐-Coding-3共同擁有代碼鼓勵每個人對項目中的任何人提出新的想法,任何開發(fā)人員對項目中的任何代碼都可以進行增加功能,改正錯誤和重構。優(yōu)化工作放在最后先使系統(tǒng)能夠正常工作,不要猜測系統(tǒng)的瓶頸,要實際測量NOovertime

不要長時間的加班,大多數(shù)加班并不能挽回已有的延遲,連續(xù)超過兩個星期的加班說明有問題存在。向一個已經延遲的項目填加人員也不是一個好的選擇。2/24/202433XP原則和實踐-Testing-1所有的代碼都有單元測試單元測試是XP的基石,XP中的單元測試應該是可以自動進行的,所以可以很快的進行所有的單元測試,單元測試應該在編碼之前創(chuàng)建。單元測試的代碼和代碼一起release,沒有單元測試的代碼不能夠release。使用自動單元測試可以系統(tǒng)整合時節(jié)省大量的發(fā)現(xiàn)錯誤和改正的時間。單元測試越完善,節(jié)省的時間越多。代碼在release前必須通過所有的單元測試發(fā)現(xiàn)bug后,首先增加測試在實際運行中發(fā)現(xiàn)bug,首先增加acceptancetest,然后增加unittest,在增加完測試后在查找和修改代碼,增加的測試保證同樣的錯誤不會再出現(xiàn)acceptancetestacceptancetest根據(jù)userstories在iterationplan會議上創(chuàng)建,它也應該可以自動運行以便可以經常運行。2/24/2024341.RUP2.XP3.Scrum2/24/202435ScrumScrum2/24/202436Scrum特點自我管理的團隊以“sprint”為周期迭代的產品開發(fā)以一系列“產品Backlog”記錄了產品需求沒有特定的工程實踐慣例在以生成規(guī)則創(chuàng)造的敏捷開發(fā)環(huán)境交付產品是其中一種“敏捷方法”2/24/202437SCRUM開發(fā)流程

SCRUM開發(fā)流程是AgileProcess的一種,以英式橄欖球爭球隊形(Scrum)為名,基本假設是『開發(fā)軟件就像開發(fā)新產品,無法一開始就能定義FinalProduct的規(guī)程,過程中需要研發(fā)、創(chuàng)意、嘗試錯誤,所以沒有一種固定的流程可以保證項目成功』。Scrum將軟件開發(fā)團隊比擬成橄欖球隊,有明確的最高目標,熟悉開發(fā)流程中所需具備的最佳典范與技術,具有高度自主權,緊密地溝通合作,以高度彈性解決各種挑戰(zhàn),碓保每天、每個階段都朝向目標有明確的推進,因此SCRUM非常適用于產品開發(fā)項目。2/24/202438SCRUM開發(fā)流程(cont.)SCRUM開發(fā)流程通常以30天為一個迭代周期,每個迭代周期叫做一個Sprint,由客戶提供新產品的需求規(guī)格開始,開發(fā)團隊與客戶于每一個階段開始時挑選該完成的規(guī)格部份,開發(fā)團隊必須盡力于30天后交付成果,團隊每天用15分鐘開會檢視每個成員的進度與計劃,了解所遭遇的困難并設法排除,決定第二天的任務安排.SCRUM較為有特色的,是它特別強調開發(fā)隊伍和管理層的交流協(xié)作。每天,開發(fā)隊伍都會向管理層匯報進度,如果有問題,也會向管理層要求幫助解決。2/24/202439Scrum總體骨架迭代每30天DailySCRUM每24小時高優(yōu)先級可運行的軟件工作項分解產品訂單ProductBacklog迭代訂單SprintBacklog新的功能增量迭代規(guī)劃會議SprintPlan一般不超過8小時。前4個小時:產品負責人向團隊展示最高優(yōu)先級的產品,團隊則向他詢問產品Backlog的內容、目的、含義及意圖。后4小時:團隊計劃本Sprint的安排迭代復審會議SprintReview一般4個小時,由團隊成員向產品負責人額其他利益相關人展示Sprint周期內的產品開發(fā)情況迭代回顧會議SprintRetrospective一般3個小時,ScrumMaster將鼓勵團隊在SCRUM過程框架和實踐范圍內,對開發(fā)過程做出修改,使它在下一個Sprint周期中更加有效和令人愉快每日站立會議DailyScrumMeeting在簡會上,每個成員主要回答三個問題;–自上次SCRUM簡會后的一天了(昨天),你做了什么?–從現(xiàn)在到下次SCRUM簡會的一天里(今天),你要做什么?–在實現(xiàn)SCRUM及項目目標的工作中,你遇到哪些困難嗎?產品負責人Scrum主管開發(fā)團隊2/24/202440順序vs.重疊開發(fā)過程Scrum并非以一段時間集中完成一個過程...而是將所有過程中必須的每一部分集中在這段時間內完成需求設計代碼測試2/24/202441Scrum結構框架產品所有者ScrumMaster團隊職能迭代計劃迭代驗收迭代回顧每天召開的

scrum會議儀式產品backlog迭代

backlog進度曲線圖產出2/24/202442ScrumTeam自組織的團隊跨功能團隊沒有角色區(qū)分最少2個,最多7個對工作交付負責只要交付工作需求,授權做任何事情.2/24/202443Scrum角色及職責火腿雞蛋!三思過后我決定不和你開餐館了。因為我全身心投入,而你只牽涉入內!2/24/202444Chickens&PigsPigs:ScrumTeam成員:他們承諾對迭代目標交付負責Chickens:項目組有關的成員,但并不專注于項目以觀察者的形式參加Scrummeeting2/24/202445ProductOwnerBacklog優(yōu)先級制定開發(fā)的版本規(guī)劃必須確保驅動開發(fā)的需求只有一份受管理層,客戶等影響但僅PO有權調整Backlog與相關成員協(xié)同工作來確定ProductBacklog的items消除關于Backlog的疑惑,確保理解一致,消除干擾2/24/202446ScrumMasterScrumMaster職責確保SCRUM的成功實施SCRUM實踐和規(guī)定,保護團隊以免受干擾項目管理的代表2/24/202447Sprint交付產品的固定的時間箱.建議2-3周迭代包括design,coding,testing,anddocumentation一旦迭代開始,僅ScrumTeam能增加或者刪除Sprintbacklog中的items當?shù)哪繕俗兊臎]有意義的時候,才能終止迭代開發(fā)對于ProductBacklog,不允許迭代內的需求變更:需求優(yōu)先級調整僅存在于迭代之間2/24/202448如何定義Sprint團隊自己從產品的backlog中選擇一些他們能夠完成的任務作為迭代的backlog迭代backlog被創(chuàng)建任務被確認并且每一任務估計工作量應該在1-16小時左右迭代的backlog的確定是團隊協(xié)作的結果,而不是只有scrummaster的決定概要設計已經討論過為了選擇好去處度過這個假期,我需要先看到酒店的照片.編寫后臺和中間層(8小時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論