20145209 实验三 《敏捷开发与XP实践》 实验报告
20145209 實驗三 《敏捷開發(fā)與XP實踐》 實驗報告
實驗內(nèi)容
XP基礎(chǔ)。
XP核心實踐。
相關(guān)工具。
實驗步驟
敏捷開發(fā)與XP
1.敏捷開發(fā)
敏捷開發(fā)(Agile Development)是一種以人為核心、迭代、循序漸進的開發(fā)方法。“敏捷流程”是一系列價值觀和方法論的集合。
2.極限編程
極限編程(eXtreme Programming,XP)是 是一種全新而快捷的軟件開發(fā)方法:
(1)XP是以開發(fā)符合客戶需要的軟件為目標(biāo)而產(chǎn)生的一種方法論
(2)XP是一種以實踐為基礎(chǔ)的軟件工程過程和思想
(3)XP認為代碼質(zhì)量的重要程度超出人們一般所認為的程度
(4)XP特別適合于小型的有責(zé)任心的、自覺自勵的團隊開發(fā)需求不確定或者迅速變化的軟件
3.XP準則:
(1)溝通 :XP認為項目成員之間的溝通是項目成功的關(guān)鍵,并把溝通看作項目中間協(xié)調(diào)與合作的主要推動因素。
(2)簡單 :XP假定未來不能可靠地預(yù)測,在現(xiàn)在考慮它從經(jīng)濟上是不明智的,所以不應(yīng)該過多考慮未來的問題而是應(yīng)該集中力量解決燃眉之急。
(3)反饋 :XP認為系統(tǒng)本身及其代碼是報告系統(tǒng)開發(fā)進度和狀態(tài)的可靠依據(jù)。系統(tǒng)開發(fā)狀態(tài)的反饋可以作為一種確定系統(tǒng)開發(fā)進度和決定系統(tǒng)下一步開發(fā)方向的手段。
(4)勇氣:代表了XP認為人是軟件開發(fā)中最重要的一個方面的觀點。在一個軟件產(chǎn)品的開發(fā)中人的參與貫穿其整個生命周期,是人的勇氣來排除困境,讓團隊把局部的最優(yōu)拋之腦后,達到更重大的目標(biāo)。表明了XP對“人讓項目取得成功”的基本信任態(tài)度。
4.一項實踐在XP環(huán)境中成功使用的依據(jù)通過XP的法則呈現(xiàn),包括:快速反饋、假設(shè)簡單性、遞增更改、提倡更改、優(yōu)質(zhì)工作。
5.XP軟件開發(fā)的基石:編碼、測試、傾聽、設(shè)計。
6.項目成員用戶成功執(zhí)行XP活動的技術(shù)通過XP實踐來呈現(xiàn),包括編程、團隊、過程相關(guān)的12條實踐,我們關(guān)注其中的編碼標(biāo)準,結(jié)對編程,代碼集體所有,測試,重構(gòu)等實踐。
編碼標(biāo)準
1.編程標(biāo)準:
具有說明性的名字、清晰的表達式、直截了當(dāng)?shù)目刂屏鳌⒖勺x的代碼和注釋,以及在追求這些內(nèi)容時一致地使用某些規(guī)則和慣用法的重要性。
public class CodeStandard { public static void main(String [] args){ StringBuffer buffer = new StringBuffer(); buffer.append('S'); buffer.append("tringBuffer"); System.out.println(buffer.charAt(1)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("tring")); System.out.println("buffer = " + buffer.toString()); if(buffer.capacity()<20) buffer.append("1234567"); for(int i=0; i<buffer.length();i++) System.out.println(buffer.charAt(i)); } }該程序沒有最基本的縮進,讓人讀起來很費勁,在IDEA里可以很好地解決這個問題。
結(jié)對編程
1.結(jié)對編程的角色
(1)駕駛員(Driver)是控制鍵盤輸入的人。
(2)領(lǐng)航員(Navigator)起到領(lǐng)航、提醒的作用。
2.如何更好地實現(xiàn)結(jié)對編程
(1)駕駛員:寫設(shè)計文檔,進行編碼和單元測試等XP開發(fā)流程。
(2)領(lǐng)航員:審閱駕駛員的文檔、駕駛員對編碼等開發(fā)流程的執(zhí)行;考慮單元測試的覆蓋率;思考是否需要和如何重構(gòu);幫助駕駛員解決具體的技術(shù)問題。
(3)駕駛員和領(lǐng)航員不斷輪換角色,不要連續(xù)工作超過一小時,每工作一小時休息15分鐘。領(lǐng)航員要控制時間。
(4)主動參與。任何一個任務(wù)都首先是兩個人的責(zé)任,也是所有人的責(zé)任。
(5)只有水平上的差距,沒有級別上的差異。
版本控制
1.版本控制的好處
(1)版本控制提供項目級的
undo(撤銷)功能:沒有什么事情是終結(jié)版本,任何錯誤必須很容易回滾。
(2)版本控制允許多人在同一代碼上工作,只要遵守一定的控制原則就行。
(3)版本控制系統(tǒng)保存了過去所作的修改的歷史記錄。
(4)版本控制系統(tǒng)支持在主線上開發(fā)的同時發(fā)布多個軟件版本。
(5)版本控制也是項目級的時間機器,你可以選擇任何一個時間, 精確地查看項目在當(dāng)時的情況。
2.學(xué)習(xí)如何將代碼提交到代碼庫:
$ cd /home/shiyanlou/Code/shiyanlou_cs212 # 修改代碼文件 # 添加修改文件 $ git add 所有修改的文件 # 提交到環(huán)境中本地代碼倉庫 $ git commit -m '本次修改的描述' # push到git.shiyanlou.com,無需輸入密碼 $ git push重構(gòu)
重構(gòu)(Refactor),就是在不改變軟件外部行為的基礎(chǔ)上,改變軟件內(nèi)部的結(jié)構(gòu),使其更加易于閱讀、易于維護和易于變更。
eclipse中Refactor
重新命名:Rename
封裝成員變量:Encapsulate Field
抽象方法:Extract Method
重構(gòu)前:
重構(gòu)后:
轉(zhuǎn)載于:https://www.cnblogs.com/liuyiyang/p/7003691.html
總結(jié)
以上是生活随笔為你收集整理的20145209 实验三 《敏捷开发与XP实践》 实验报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web前端超出两行用省略号表示
- 下一篇: jquery通过数值改变球大小