20135337朱荟潼——实验三
實(shí)驗(yàn)三 敏捷開發(fā)與XP實(shí)踐
實(shí)驗(yàn)內(nèi)容
1. XP基礎(chǔ)
2. XP核心實(shí)踐
3. 相關(guān)工具
實(shí)驗(yàn)步驟
(一)敏捷開發(fā)與XP
軟件工程是把系統(tǒng)的、有序的、可量化的方法應(yīng)用到軟件的開發(fā)、運(yùn)營和維護(hù)上的過程。軟件工程包括下列領(lǐng)域:軟件需求分析、軟件設(shè)計(jì)、軟件構(gòu)建、軟件測試和軟件維護(hù)。 人們在開發(fā)、運(yùn)營、維護(hù)軟件的過程中有很多技術(shù)、做法、習(xí)慣和思想體系。軟件工程把這些相關(guān)的技術(shù)和過程統(tǒng)一到一個(gè)體系中,叫“軟件開發(fā)流程”。軟件開發(fā)流程的目的是為了提高軟件開發(fā)、運(yùn)營、維護(hù)的效率,并提高軟件的質(zhì)量、用戶滿意度、可靠性和軟件的可維護(hù)性。 光有各種流程的思想是不夠的,我們還要有一系列的工具來保證這些思想能夠在實(shí)踐中有效率地運(yùn)作。軟件開發(fā)很重要的一點(diǎn)不是看你能對多少理論講的頭頭是道,還要看你對相關(guān)工具應(yīng)用的如何,比如Java中單元測試要和JUnit的應(yīng)用結(jié)合起來,建模要和Umbrello或StarUML的應(yīng)用結(jié)合起來。編程學(xué)習(xí)是一個(gè)習(xí)而學(xué)的過程。 一個(gè)常見的公式是:軟件工程=開發(fā)流程+工具?鄒欣老師給出的兩個(gè)公式:軟件=程序+軟件工程和軟件企業(yè)=軟件+商業(yè)模式?開發(fā)流程大家可以參考學(xué)習(xí)鄒欣老師的軟件團(tuán)隊(duì)和開發(fā)流程。常見的開發(fā)流程有:
- RUP(Rational Unified ???? Process)
- PSP(Personal Software ???? Process )
- TSP(Team Software Process ???? )
- Agile Process
- ……
敏捷開發(fā)(Agile Development)是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法。“敏捷流程”是一系列價(jià)值觀和方法論的集合。從2001年開始,一些軟件界的專家開始倡導(dǎo)“敏捷”的價(jià)值觀和流程,他們肯定了流行做法的價(jià)值,但是強(qiáng)調(diào)敏捷的做法更能帶來價(jià)值。
其中,極限編程(eXtreme Programming,XP)是
是一種全新而快捷的軟件開發(fā)方法。XP團(tuán)隊(duì)使用現(xiàn)場客戶、特殊計(jì)劃方法和持續(xù)測試來提供快速的反饋和全面的交流:
- XP是以開發(fā)符合客戶需要的軟件為目標(biāo)而產(chǎn)生的一種方法論
- XP是一種以實(shí)踐為基礎(chǔ)的軟件工程過程和思想
- XP認(rèn)為代碼質(zhì)量的重要程度超出人們一般所認(rèn)為的程度
- XP特別適合于小型的有責(zé)任心的、自覺自勵(lì)的團(tuán)隊(duì)開發(fā)需求不確定或者迅速變化的軟件
XP軟件開發(fā)是什么樣的通過 XP準(zhǔn)則來表達(dá):
- 溝通 :XP認(rèn)為項(xiàng)目成員之間的溝通是項(xiàng)目成功的關(guān)鍵,并把溝通看作項(xiàng)目中間協(xié)調(diào)與合作的主要推動(dòng)因素。
- 簡單 :XP假定未來不能可靠地預(yù)測,在現(xiàn)在考慮它從經(jīng)濟(jì)上是不明智的,所以不應(yīng)該過多考慮未來的問題而是應(yīng)該集中力量解決燃眉之急。
- 反饋 :XP認(rèn)為系統(tǒng)本身及其代碼是報(bào)告系統(tǒng)開發(fā)進(jìn)度和狀態(tài)的可靠依據(jù)。系統(tǒng)開發(fā)狀態(tài)的反饋可以作為一種確定系統(tǒng)開發(fā)進(jìn)度和決定系統(tǒng)下一步開發(fā)方向的手段。
- 勇氣:代表了XP認(rèn)為人是軟件開發(fā)中最重要的一個(gè)方面的觀點(diǎn)。在一個(gè)軟件產(chǎn)品的開發(fā)中人的參與貫穿其整個(gè)生命周期,是人的勇氣來排除困境,讓團(tuán)隊(duì)把局部的最優(yōu)拋之腦后,達(dá)到更重大的目標(biāo)。表明了XP對“人讓項(xiàng)目取得成功”的基本信任態(tài)度。
一項(xiàng)實(shí)踐在XP環(huán)境中成功使用的依據(jù)通過XP的法則呈現(xiàn),包括:快速反饋、假設(shè)簡單性、遞增更改、提倡更改、優(yōu)質(zhì)工作。
XP軟件開發(fā)的基石是XP的活動(dòng),包括:編碼、測試、傾聽、設(shè)計(jì)。
(二)編碼標(biāo)準(zhǔn)
編寫代碼一個(gè)重要的認(rèn)識(shí)是“程序大多時(shí)候是給人看的”,編程標(biāo)準(zhǔn)使代碼更容易閱讀和理解,甚至可以保證其中的錯(cuò)誤更少。編程標(biāo)準(zhǔn)包含:具有說明性的名字、清晰的表達(dá)式、直截了當(dāng)?shù)目刂屏鳌⒖勺x的代碼和注釋,以及在追求這些內(nèi)容時(shí)一致地使用某些規(guī)則和慣用法的重要性。
編碼標(biāo)準(zhǔn)中的版式就是一個(gè)很好的例子,版式雖然不會(huì)影響程序的功能,但會(huì)影響可讀性。程序的版式追求清晰、美觀,是程序風(fēng)格的重要因素。
三)結(jié)對編程
結(jié)對編程是XP中的重要實(shí)踐。在結(jié)對編程模式下,一對程序員肩并肩、平等地、互補(bǔ)地進(jìn)行開發(fā)工作。他們并排坐在一臺(tái)電腦前,面對同一個(gè)顯示器,使用同一個(gè)鍵盤、同一個(gè)鼠標(biāo)一起工作。他們一起分析,一起設(shè)計(jì),一起寫測試用例,一起編碼,一起做單元測試,一起做集成測試,一起寫文檔等。 結(jié)對編程中有兩個(gè)角色:
- 駕駛員(Driver)是控制鍵盤輸入的人。
- 領(lǐng)航員(Navigator)起到領(lǐng)航、提醒的作用。
如何結(jié)對編程,為何要結(jié)對編程,大家參考一下結(jié)對編程和兩人合作,重點(diǎn)是:
- 駕駛員:寫設(shè)計(jì)文檔,進(jìn)行編碼和單元測試等XP開發(fā)流程。
- 領(lǐng)航員:審閱駕駛員的文檔、駕駛員對編碼等開發(fā)流程的執(zhí)行;考慮單元測試的覆蓋率;思考是否需要和如何重構(gòu);幫助駕駛員解決具體的技術(shù)問題。
- 駕駛員和領(lǐng)航員不斷輪換角色,不要連續(xù)工作超過一小時(shí),每工作一小時(shí)休息15分鐘。領(lǐng)航員要控制時(shí)間。
- 主動(dòng)參與。任何一個(gè)任務(wù)都首先是兩個(gè)人的責(zé)任,也是所有人的責(zé)任。沒有“我的代碼”、“你的代碼”或“他/她的代碼”,只有“我們的代碼”。
- 只有水平上的差距,沒有級(jí)別上的差異。兩人結(jié)對,盡管可能大家的級(jí)別資歷不同,但不管在分析、設(shè)計(jì)或編碼上,雙方都擁有平等的決策權(quán)利。
團(tuán)隊(duì)精神是好多地方都強(qiáng)調(diào)的一個(gè)精神,最小的團(tuán)隊(duì)就是一對一的二人團(tuán)隊(duì)了,培養(yǎng)團(tuán)隊(duì)精神從結(jié)對編程開始吧。社會(huì)生活中人與人相處最重要的是誠信,有同理心,互利。結(jié)對編程中大家會(huì)出現(xiàn)分歧,如何更有效地合作要做到對事不對人,掌握這些是可以終生受益的,如何影響小伙伴,大家參考一下兩人合作:要會(huì)做漢堡包。
(四)版本控制
XP的集體所有制意味著每個(gè)人都對所有的代碼負(fù)責(zé);這一點(diǎn),反過來又意味著每個(gè)人都可以更改代碼的任意部分。結(jié)對編程對這一實(shí)踐貢獻(xiàn)良多:借由在不同的結(jié)對中工作,所有的程序員都能看到完全的代碼。集體所有制的一個(gè)主要優(yōu)勢是提升了開發(fā)程序的速度,因?yàn)橐坏┐a中出現(xiàn)錯(cuò)誤,任何程序員都能修正它。 這意味著代碼要放到一個(gè)大家都能方便獲取的地方,我們叫代碼倉庫。這引出另外一個(gè)話題叫版本控制(Version Control)。
不論是對于團(tuán)隊(duì)還是個(gè)體,版本控制都提供了很多好處。
- 版本控制提供項(xiàng)目級(jí)的 ???? undo(撤銷) ???? 功能: ???? 沒有什么事情是終結(jié)版本, 任何錯(cuò)誤必須很容易回滾。 假設(shè)你在使用世界上最復(fù)雜的文字處理系統(tǒng)。 它具備了所有的能想到的功能,就是沒有支持 DELETE(刪除) 鍵。想象你打字的時(shí)候得多么的謹(jǐn)慎和緩慢吧, ???? 特別是一篇超大的文檔的快臨近末尾的時(shí)候, 一個(gè)不小心就要重頭再來(試想你選中所有的文字, 不小心按了 DELETE 鍵, 因?yàn)闆]有撤銷功能,只好重新錄入)。編輯文字和版本控制相同,任何時(shí)候都需要回滾,無論是一個(gè)小時(shí), 一天, 還是一周, 這讓你的團(tuán)隊(duì)工作自由快速的工作, 而且對于修正錯(cuò)誤也非常自信。
- 版本控制允許多人在同一代碼上工作, ???? 只要遵守一定的控制原則就行。 再也不會(huì)發(fā)生諸如一個(gè)人覆蓋了另一個(gè)人編輯的代碼,導(dǎo)致那個(gè)人的修改無效這樣的情況。
- 版本控制系統(tǒng)保存了過去所作的修改的歷史記錄。如果你遭遇到一些驚訝的代碼,通過版本控制系統(tǒng)可以很容易找出是誰干的, 修改了什么, 修改的時(shí)間, 如果幸運(yùn)的話,還能找出原因。
- 版本控制系統(tǒng)還支持在主線上開發(fā)的同時(shí)發(fā)布多個(gè)軟件版本。在軟件發(fā)布的時(shí)候也不需要整個(gè)團(tuán)隊(duì)的停止工作,不需要凍結(jié)代碼。
- 版本控制也是項(xiàng)目級(jí)的時(shí)間機(jī)器,你可以選擇任何一個(gè)時(shí)間, 精確地查看項(xiàng)目在當(dāng)時(shí)的情況。 這對研究非常有用, 也是重現(xiàn)以前某個(gè)有問題的發(fā)布版本的基礎(chǔ)
?
(五)重構(gòu)
-
我們先看看重構(gòu)的概念:
重構(gòu)(Refactor),就是在不改變軟件外部行為的基礎(chǔ)上,改變軟件內(nèi)部的結(jié)構(gòu),使其更加易于閱讀、易于維護(hù)和易于變更。
重構(gòu)中一個(gè)非常關(guān)鍵的前提就是“不改變軟件外部行為”,它保證了我們在重構(gòu)原有系統(tǒng)的同時(shí),不會(huì)為原系統(tǒng)帶來新的BUG,以確保重構(gòu)的安全。如何保證不改變軟件外部行為?重構(gòu)后的代碼要能通過單元測試。如何使其更加易于閱讀、易于維護(hù)和易于變更??設(shè)計(jì)模式給出了重構(gòu)的目標(biāo)。
(六)實(shí)驗(yàn)過程截圖:
1,Eclipse菜單中的source->Format?或用快捷鍵Ctrl+Shift+F就可以按Eclipse規(guī)定的規(guī)范縮進(jìn)
2,學(xué)習(xí)git簡單的使用
3,重構(gòu)
重構(gòu)的一個(gè)具體實(shí)例:
4,結(jié)對實(shí)驗(yàn)
另附一次實(shí)驗(yàn)報(bào)告博客
實(shí)驗(yàn)時(shí)間(不含結(jié)對游戲編程)
?
| 步驟 | 耗時(shí) | 百分比 |
| 需求分析 | 1h | 30.7% |
| 設(shè)計(jì) | 30min | 15.4% |
| 代碼實(shí)現(xiàn) | 45min | 23.1% |
| 測試 | 0 | 0% |
| 分析總結(jié) | 1h | 30.7% |
?
?
實(shí)驗(yàn)總結(jié)(不含結(jié)對游戲編程)
1、首先,通過這次實(shí)驗(yàn)學(xué)習(xí)到在編程序過程中最實(shí)用的知識(shí)是使用重構(gòu)的raname:如何修改名稱。以前在編程序時(shí)名稱不小心打錯(cuò),或者是需要對名稱進(jìn)行修改使它更有意義時(shí),在Eclipse中都是一個(gè)一個(gè)的改進(jìn),現(xiàn)在可以快捷簡便的進(jìn)行修改。我認(rèn)為這個(gè)功能十分的便捷、人性化。
其次,學(xué)會(huì)了重構(gòu)的封裝功能,可以對成員變量進(jìn)行封裝,以及Source->Generate toString()...?給Student類產(chǎn)生一個(gè)toString方法。實(shí)驗(yàn)中體會(huì)到了通過重構(gòu)改善了結(jié)構(gòu),優(yōu)化了代碼。
最后,學(xué)習(xí)了git的使用,在實(shí)驗(yàn)樓里代碼的git push存到遠(yuǎn)程托管服務(wù)器,十分方便。
2、實(shí)驗(yàn)中出現(xiàn)的問題:在這次實(shí)驗(yàn)中主要的問題產(chǎn)生在git push學(xué)習(xí)使用中,根據(jù)實(shí)驗(yàn)步驟比較容易學(xué)習(xí),但是由于對Gvim的不了解導(dǎo)致出現(xiàn)問題。
突然跳到到這個(gè)界面時(shí)不知道發(fā)生了什么,以為自己按錯(cuò)了鍵盤,在查閱關(guān)于Gvim的使用命令后知道 ctrl+C-----:-------wq(:wq 保存文檔然后退出vim編輯器。)解決了這個(gè)問題。
同時(shí)也學(xué)到了其他的一些命令如::q 不保存文檔,退出vim編輯器。L 光標(biāo)移至屏幕底第一個(gè)非空白字符。這和PageDown,PageUp 不一樣,內(nèi)文內(nèi)容并未動(dòng),只是光標(biāo)在動(dòng)而已。:n 將光標(biāo)定位到第n行。
(一定是在Notmal的情況下)
?
轉(zhuǎn)載于:https://www.cnblogs.com/zzzz5/p/4550648.html
總結(jié)
以上是生活随笔為你收集整理的20135337朱荟潼——实验三的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ifconfig命令无法找到,提示bas
- 下一篇: 【Android开发】消息处理类(Han