軟件開(kāi)發(fā)方法—XP_第1頁(yè)
軟件開(kāi)發(fā)方法—XP_第2頁(yè)
軟件開(kāi)發(fā)方法—XP_第3頁(yè)
軟件開(kāi)發(fā)方法—XP_第4頁(yè)
軟件開(kāi)發(fā)方法—XP_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、軟件開(kāi)發(fā)方法-XP宿為民2002年6月6日主題o什么是XP方法?o發(fā)展沿革o主要思想o項(xiàng)目應(yīng)用案例?什么是XP方法?oeXtreme ProgrammingoXP 是以開(kāi)發(fā)符合變化的客戶需求的軟件為目標(biāo)而是以開(kāi)發(fā)符合變化的客戶需求的軟件為目標(biāo)而產(chǎn)生的一種方法,產(chǎn)生的一種方法, 它的成功得益于它對(duì)客戶滿意它的成功得益于它對(duì)客戶滿意度的特別強(qiáng)調(diào),度的特別強(qiáng)調(diào),XP 使開(kāi)發(fā)者能夠更有效的響應(yīng)客使開(kāi)發(fā)者能夠更有效的響應(yīng)客戶的需求變化,哪怕在軟件生命周期的后期。戶的需求變化,哪怕在軟件生命周期的后期。o是一種經(jīng)歷過(guò)很多實(shí)踐考驗(yàn)的軟件開(kāi)發(fā)方法是一種經(jīng)歷過(guò)很多實(shí)踐考驗(yàn)的軟件開(kāi)發(fā)方法. . 已經(jīng)已經(jīng)被成功的應(yīng)

2、用在許多大型的公司,如:被成功的應(yīng)用在許多大型的公司,如:Bayeris che Landesbank , Credit Swis s Life,DaimlerChrysler, First Union National Bank, Ford Motor Company and UBS.發(fā)展發(fā)展1990s,Kent Beck and Ward Cunningham together had experienced an approach to software development that made every thing seem simple and more efficient. M

3、arch, 1996, Kent started a project at DaimlerChrysler using new concepts in software development. The result was the Extreme Programming (XP) methodology. What Kent came to realize is that there are four dimensions along which one can improve any software project, which are Communication, Simplicity

4、, Feedback, and Courage. These are the four values sought out by XP programmers.The Rules and Practices oPlanningoDesigningoCodingoTestingPlanningo User stories are written.o Release planning creates the schedule.o Make frequent small releases.o The Project Velocity is measured.o The project is divi

5、ded into iterations.o Iteration planning starts each iteration.o Move people around.o A stand-up meeting starts each day.o Fix XP when it breaks.User storieso類似于use cases但不一樣o用于估計(jì)release planning meeting的時(shí)間o替代詳細(xì)的用戶需求規(guī)格說(shuō)明書o由用戶書寫,類似于用戶“場(chǎng)景”,但不局限于界面的描述o沒(méi)有技術(shù)術(shù)語(yǔ)o能夠成為驗(yàn)收測(cè)試的依據(jù)Release planningo通過(guò)召開(kāi) release pla

6、nning meeting 來(lái)制訂一份發(fā)布計(jì)劃o發(fā)布計(jì)劃詳細(xì)描述用戶所要求的各版本要求,這為后面的迭代計(jì)劃打基礎(chǔ)small releaseso經(jīng)常向客戶發(fā)布系統(tǒng)的迭代版本o在release planning meeting上確定哪些功能單元對(duì)用戶業(yè)務(wù)有重要影響并可在早期加入到系統(tǒng)中o越晚向用戶介紹系統(tǒng)的重要特征,開(kāi)發(fā)隊(duì)伍所獲得的“搞定”系統(tǒng)的時(shí)間就越短。Project Velocityo項(xiàng)目周轉(zhuǎn)時(shí)間是衡量項(xiàng)目工作進(jìn)度速度的值。o“負(fù)載因子”近期被引進(jìn)用于項(xiàng)目周期的測(cè)量Iterationso迭代式開(kāi)發(fā)增加了開(kāi)發(fā)過(guò)程的敏捷性o將總體進(jìn)度劃分為一系列長(zhǎng)度為1-3周的小的迭代過(guò)程. 迭代周期固定且一致

7、,成為項(xiàng)目的“心跳” 。Iteration planningo在每個(gè)迭代的開(kāi)始召集迭代計(jì)劃會(huì)議,明確本次迭代任務(wù)o每次迭代1-3周長(zhǎng)o由用戶在 User stories中確定最有價(jià)值的特征作為本次迭代的目標(biāo)o上次迭代時(shí)沒(méi)通過(guò)驗(yàn)收測(cè)試的特征應(yīng)當(dāng)加入本次迭代Move people aroundo讓所有人多掌握技能,避免知識(shí)孤島和開(kāi)發(fā)瓶頸o交叉培訓(xùn),“結(jié)對(duì)編程”o并非一個(gè)人掌握所有的代碼,而是要每個(gè)人掌握大多數(shù)的代碼,所需要的人員可以隨時(shí)被指派到最需要的地方,實(shí)現(xiàn)人員的“負(fù)載平衡”o每次迭代每個(gè)人試圖做系統(tǒng)新的部分,Pair programming 能夠保證這種形式stand-up meetingo

8、目標(biāo):在整個(gè)開(kāi)發(fā)組(而非個(gè)別開(kāi)發(fā)人員)中進(jìn)行溝通o每天早上一次站立會(huì)議,主要溝通問(wèn)題、方案,以集中小組注意力o避免了策劃會(huì)議的時(shí)間odaily stand up meeting 不同于一般浪費(fèi)時(shí)間的會(huì)議Fix XPo一旦破壞了XP流程,就馬上更正!o可根據(jù)具體項(xiàng)目制定XP規(guī)則,一旦制定就必須執(zhí)行,直到規(guī)則變更o所有人員都明確知曉規(guī)則DesigningoSimplicity.o Choose a system metaphor.o Use CRC cards for design sessions.o Create spike solutions to reduce risk.o No func

9、tionality is added early.o Refactor whenever and wherever possible. Simplicity is the Keyo決不增加沒(méi)有列入到進(jìn)度中的功能o“簡(jiǎn)單化”其實(shí)并不簡(jiǎn)單system metaphoro為系統(tǒng)選擇一種metaphor使得開(kāi)發(fā)小組能夠?yàn)轭惣胺椒ㄟM(jìn)行統(tǒng)一的命名. o命名方式易理解.CRC cardsoClass, Responsibilities, and Collaboration (CRC)oCRC cards的最大價(jià)值在于引導(dǎo)開(kāi)發(fā)人員擺脫過(guò)程模型,精確掌握OO技術(shù)oCRC Cards 允許所有的人參與設(shè)計(jì),參與的

10、人越多,就會(huì)有更多的好的主意引入spike solutionso創(chuàng)建關(guān)鍵問(wèn)題解決方案,解決關(guān)鍵的技術(shù)和設(shè)計(jì)問(wèn)題o大多數(shù) spikes可能都不足以得到保持,有可能被丟棄. 但制作SPIKE的目標(biāo)降低技術(shù)風(fēng)險(xiǎn);o一旦技術(shù)困難對(duì)系統(tǒng)的開(kāi)發(fā)造成了威脅,立即派一對(duì)開(kāi)發(fā)人員關(guān)注于該問(wèn)題一至兩周,以降低潛在的風(fēng)險(xiǎn)No functionality is added earlyo切記不要實(shí)施你認(rèn)為日后有用的額外特征o只有10% 的額外特征會(huì)有用o只關(guān)注目前進(jìn)度中所要求的內(nèi)容Refactor whenever and wherever possibleo隨時(shí)隨地可以對(duì)已做過(guò)的事重新考慮o毫不留情地將設(shè)計(jì)、編碼簡(jiǎn)單

11、化,簡(jiǎn)單得足夠容易理解、修改和擴(kuò)展o所有的事只表達(dá)一次o修飾得太好的系統(tǒng)往往到后期趕不上進(jìn)度要求Codingo The customer is always available.o Code must be written to agreed standards.o Code the unit test first.o All production code is pair programmed.o Only one pair integrates code at a time.o Integrate often.o Use collective code ownership.o Leave

12、optimization till last.o No overtime. The customer is always availableo隨時(shí)能聯(lián)系客戶是XP方法的基本要求之一oXP的所有階段都要求客戶的強(qiáng)參與o最好有客戶派員直接參與開(kāi)發(fā)組o把客戶“吊住”,并將客戶由新手培養(yǎng)成為專家,開(kāi)發(fā)組需要專家Code must be written to agreed standardso所有代碼必須采用統(tǒng)一標(biāo)準(zhǔn)以便理解oSmalltalk projects : Smalltalk Best Practice PatternsCode the unit test firsto創(chuàng)建單元測(cè)試能夠幫助開(kāi)發(fā)

13、者清醒地意識(shí)到什么是真正需要的o需求是由測(cè)試活動(dòng)明確下來(lái)的All production code is pair programmedo所有發(fā)布的代碼都由兩個(gè)程序員在一臺(tái)機(jī)器上共同開(kāi)發(fā)完成。o結(jié)對(duì)編程的最好方式是兩人共同坐在顯示器前,將鍵盤和鼠標(biāo)在兩人之間“滑動(dòng)”,一人考慮所創(chuàng)建的方法(Method),而另一人同時(shí)考慮該方法如何在類中得到更好的體現(xiàn)。o適應(yīng)結(jié)對(duì)編程需要時(shí)間,必須度過(guò)開(kāi)始面臨的尷尬境況Sequential Integration o每次加入一個(gè)模塊做集成 Integrate ofteno開(kāi)發(fā)人員應(yīng)不斷地將代碼集成到代碼庫(kù)中,幾小時(shí)一次,絕不超過(guò)1天o每個(gè)人需要在最后的版本上工作o

14、持續(xù)集成能夠在早期避免或發(fā)現(xiàn)一些兼容性問(wèn)題。“現(xiàn)在付錢還是以后付更多的錢?” Use collective code ownershipo“集體擁有代碼”鼓勵(lì)每個(gè)人對(duì)項(xiàng)目的所有部分提出新想法o任何開(kāi)發(fā)人員都可改變?nèi)魏未a以增加功能、修改錯(cuò)誤o沒(méi)有人會(huì)成為變更的瓶頸Leave optimization till lasto在項(xiàng)目快結(jié)束之前不要去優(yōu)化o永遠(yuǎn)不要試圖猜測(cè)系統(tǒng)的瓶頸在哪里,去度量它、讓系統(tǒng)動(dòng)起來(lái)、修正系統(tǒng)、去讓系統(tǒng)變的更快!No overtime.o超時(shí)工作會(huì)吞噬開(kāi)發(fā)組的精神和熱情o利用版本計(jì)劃會(huì)來(lái)改變項(xiàng)目的范圍和時(shí)間要求o項(xiàng)目進(jìn)度拖延時(shí)通過(guò)增加資源來(lái)改進(jìn)也不是推薦的方法Testing

15、o All code must have unit tests.o All code must pass all unit tests before it can be released.o When a bug is found tests are created.o Acceptance tests are run often and the score is published. All code must have unit testso單元測(cè)試是XP方法中的小界石,但與傳統(tǒng)的單元測(cè)試略有不同o1、要?jiǎng)?chuàng)建或下載一些單元測(cè)試工具以便能夠自動(dòng)生成測(cè)試數(shù)據(jù)o2、測(cè)試系統(tǒng)中所有的類o3、單元測(cè)試應(yīng)與其所測(cè)試的代碼一起發(fā)布o(jì)4、沒(méi)有單元測(cè)試的代碼不能發(fā)布o(jì)5、若發(fā)現(xiàn)沒(méi)有進(jìn)行單元測(cè)試,則立即開(kāi)始進(jìn)行All code must pass all unit tests before it can be releasedWhen a bug is found tests are createdAcceptance tests are run often and the score is publishedo驗(yàn)收測(cè)試來(lái)自u(píng)ser stories.o每一次迭代時(shí)的迭代計(jì)劃會(huì)都應(yīng)選取適當(dāng)?shù)?us

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論