20145226夏藝華 《Java程序設計》實驗報告三

實驗三 敏捷開發與XP實踐

實驗內容

  1. XP基礎html

  2. XP核心實踐java

  3. 相關工具git

實驗步驟

(一)敏捷開發與XP程序員

軟件工程是把系統的、有序的、可量化的方法應用到軟件的開發、運營和維護上的過程。軟件工程包括下列領域:軟件需求分析、軟件設計、軟件構建、軟件測試和軟件維護。編程

敏捷開發(Agile Development)是一種以人爲核心、迭代、按部就班的開發方法。「敏捷流程」是一系列價值觀和方法論的集合。敏捷開發包括不少模式:安全

其中,極限編程(eXtreme Programming,XP)是 是一種全新而快捷的軟件開發方法。XP團隊使用現場客戶、特殊計劃方法和持續測試來提供快速的反饋和全面的交流。服務器

XP是以開發符合客戶須要的軟件爲目標而產生的一種方法論;XP是一種以實踐爲基礎的軟件工程過程和思想;XP認爲代碼質量的重要程度超出人們通常所認爲的程度;XP特別適合於小型的有責任心的、自覺自勵的團隊開發需求不肯定或者迅速變化的軟件。工具

一項實踐在XP環境中成功使用的依據經過XP的法則呈現,包括:快速反饋、假設簡單性、遞增更改、提倡更改、優質工做。XP軟件開發的基石是XP的活動,包括:編碼、測試、傾聽、設計。單元測試

(二)編碼標準測試

編程標準使代碼更容易閱讀和理解,甚至能夠保證其中的錯誤更少。編程標準包含:具備說明性的名字、清晰的表達式、直截了當的控制流、可讀的代碼和註釋,以及在追求這些內容時一致地使用某些規則和慣用法的重要性。程序的版式追求清晰、美觀,是程序風格的重要因素。

程序沒有最基本的縮進,讓人讀起來很費勁,這個問題在Eclipse中比較容易解決,咱們單擊Eclipse菜單中的source->Format 或用快捷鍵Ctrl+Shift+F就能夠按Eclipse規定的規範縮進。代碼標準中很重要的一項是如何給包、類、變量、方法等標識符命名,能很好的命名可讓本身的代碼立立刻升一個檔次。Java中的通常的命名規則有:

  • 要體現各自的含義
  • 包、類、變量用名詞
  • 方法名用動賓
  • 包名所有小寫,如:io,awt
  • 類名第一個字母要大寫,如:HelloWorldApp
  • 變量名第一個字母要小寫,如:userName
  • 方法名第一個字母要小寫:setName
  • ...

標識符名字應當直觀且能夠拼讀,可望文知意,沒必要進行「解碼」,通常採用英文單詞或其組合,便於記憶和閱讀。

代碼標準:

(三)結對編程

結對編程是XP中的重要實踐。在結對編程模式下,一對程序員肩並肩、平等地、互補地進行開發工做。

結對編程中有兩個角色:

駕駛員(Driver)是控制鍵盤輸入的人。寫設計文檔,進行編碼和單元測試等XP開發流程。
領航員(Navigator)起到領航、提醒的做用。審閱駕駛員的文檔、駕駛員對編碼等開發流程的執行;考慮單元測試的覆蓋率;思考是否須要和如何重構;幫助駕駛員解決具體的技術問題。

駕駛員和領航員不斷輪換角色,不要連續工做超過一小時。領航員要控制時間。任何一個任務都首先是兩我的的責任,也是全部人的責任。兩人結對,儘管可能你們的級別資歷不一樣,但無論在分析、設計或編碼上,雙方都擁有平等的決策權利。

(四)版本控制

XP的集體全部制意味着每一個人都對全部的代碼負責;這一點,反過來又意味着每一個人均可以更改代碼的任意部分。

  • 版本控制(Version Control)的好處:

  • 版本控制提供項目級的 undo(撤銷) 功能。
  • 版本控制容許多人在同一代碼上工做, 只要遵照必定的控制原則就行。
  • 版本控制系統還支持在主線上開發的同時發佈多個軟件版本。
  • 版本控制也是項目級的時間機器,你能夠選擇任何一個時間, 精確地查看項目在當時的狀況。

流行的版本控制工具備CVS,SVN,Git等,Git是Linus除了Linux操做系統外的另一個重要發明。

git命令上傳代碼:

$ cd /home/shiyanlou/Code/shiyanlou_cs212
# 修改代碼文件
# 添加修改文件
$ git add 全部修改的文件
# 提交到環境中本地代碼倉庫
$ git commit -m '本次修改的描述'
# push到git.shiyanlou.com,無需輸入密碼
$ git push

下面給出一個HelloWorld的例子:

1.首先進入工做目錄,建立一個新的項目,編譯運行經過後上傳新建代碼。值得注意的是,往代碼庫提交的代碼必定編譯、運行、測試都沒有問題的代碼。

2.咱們能夠先用git status查看一下代碼狀態,顯示有未跟蹤的代碼,並建議用git add ...添加,咱們使用git add HelloWorld.* 把要提交的文件的信息添加到索引庫中。當咱們使用git commit時,git將依據索引庫中的內容來進行文件的提交。這只是在本地操做,關閉實驗環境,會刪除代碼的,若是想把代碼保存到遠程託管服務器中,須要使用git push,實驗完成前,必定不要忘了使用git push,不然就是至關於你在Word中編輯了半天文件最後卻沒有保存。以下圖所示:

注意:HelloWorld.class是不該該保存在代碼庫中的,咱們只要有HelloWorld.java就行。

運行過程以下圖所示:

在碼雲上的運行結果以下所示:

(五)重構

重構(Refactor),就是在不改變軟件外部行爲的基礎上,改變軟件內部的結構,使其更加易於閱讀、易於維護和易於變動 。重構中一個很是關鍵的前提就是「不改變軟件外部行爲」,它保證了咱們在重構原有系統的同時,不會爲原系統帶來新的BUG,以確保重構的安全。

下面以Eclipse這個IDE的重構爲例:

1.重構的第一項功能就是Rename,能夠給類、包、方法、變量更名字。修改方法是,用鼠標單擊要改的名字,選擇Eclipse中菜單中的Refactor->Rename,具體以下所示:

2.重構的下一項功能爲封裝,例若有個學生類,有姓名、年齡和編號三個屬性,下面要對姓名屬性進行封裝,進行Refactor->Encapsulate Field操做。該操做修改了屬性的修飾符,增長了屬性的get和set方法,並修改了調用方法,具體以下所示:

另外,每次打印學生信息都這麼寫代碼違反了DRY原則,形成代碼重複。方法一能夠可使用Eclipse中的Extract Method來建立一個toString()方法,另外一個是使用Eclipse中Source->Generate toString()來產生一個toString()方法用於打印,結果以下所示:

一個完整的重構流程包括:

  • 從版本控制系統代碼庫中Check out code
  • 讀懂代碼(包括測試代碼)
  • 發現bad smell
  • Refactoring
  • 運行全部的Unit Tests
  • 往代碼庫中Check in code

(六)實踐項目

1.結對夥伴:http://www.cnblogs.com/lxy1997/p/6820928.html

2.任務很簡單,兩人用git來下載已完成項目代碼,並下載到本地,修改完成後經過git上傳到服務器中,這些在上面的內容中已經展現完成。

本次實驗的 PSP(Personal Software Process) 時間:

步驟 耗時 百分比
需求分析 40min 18.2%
設 計 50min 22.7%
代碼實現 60min 27.3%
測 試 30min 13.6%
分析總結 40min 18.2%
相關文章
相關標籤/搜索