2016-2017 《移動平臺開發》實驗三 敏捷開發與XP實踐

概述

軟件=程序+軟件工程
軟件企業=軟件+商業模式html

XP是一種輕量(敏捷)、高效、低風險、柔性、可預測、科學並且充滿樂趣的軟件開發方式。java

  • 在更短的週期內,更早地提供具體、持續的反饋信息。
  • 在迭代的進行計劃編制,首先在最開始迅速生成一個整體計劃,而後在整個項目開發過程當中不斷的發展它。
  • 依賴於自動測試程序來監控開發進度,並及早地捕獲缺陷。
  • 依賴於口頭交流、測試和源程序進行溝通。
  • 倡導持續的演化式設計。
  • 依賴於開發團隊內部的緊密協做。
  • 儘量達到程序員短時間利益和項目長期利益的平衡。

XP軟件開發是什麼樣的經過 XP準則來表達:git

  • 溝通 :XP認爲項目成員之間的溝通是項目成功的關鍵,並把溝通看做項目中間協調與合做的主要推進因素。
  • 簡單 :XP假定將來不能可靠地預測,在如今考慮它從經濟上是不明智的,因此不該該過多考慮將來的問題而是應該集中力量解決燃眉之急。
  • 反饋 :XP認爲系統自己及其代碼是報告系統開發進度和狀態的可靠依據。系統開發狀態的反饋能夠做爲一種肯定系統開發進度和決定系統下一步開發方向的手段。
  • 勇氣:表明了XP認爲人是軟件開發中最重要的一個方面的觀點。在一個軟件產品的開發中人的參與貫穿其整個生命週期,是人的勇氣來排除困境,讓團隊把局部的最優拋之腦後,達到更重大的目標。代表了XP對「人讓項目取得成功」的基本信任態度。

XP的法則:程序員

  • 快速反饋:及時地、快速地獲取反饋,並將所學到的知識儘快地投入到系統中去。也就是指開發人員應該經過較短的反饋循環迅速地瞭解如今的產品是否知足了客戶的需求。這也是對反饋這一價值觀的進一步補充。
  • 簡單性假設:相似地,簡單性假設原則是對簡單這一價值觀的進一步補充。這一原則要求開發人員將每一個問題都看得十分容易解決,也就是說只爲本次迭代考慮,不去想將來可能須要什麼,相信具備未來必要時增長系統複雜性的能力,也就是號召你們出色地完成今天的任務。
  • 逐步修改:就像開車打方向盤同樣,不要一次作出很大的改變,那樣將會使得可控性變差,更適合的方法是進行微調。而在軟件開發中,這樣的道理一樣適用,任何問題都應該經過一系列可以帶來差別的微小改動來解決。
  • 提倡更改:在軟件開發過程當中,最好的辦法是在解決最重要問題時,保留最多選項的那個。也就是說,儘可能爲下一次修改作好準備。
  • 優質工做:在實踐中,常常看到許多開發人員喜歡將一些細小的問題留待後面解決。例如,界面的按鈕有一些不平整,因爲不影響使用就先無論;某一兩個成員函數暫時沒用就不先寫等。這就是一種工做拖泥帶水的現象,這樣的壞習慣一旦養成,必然使得代碼質量大打折扣。

XP的活動:
編碼、測試、傾聽、設計。編程

實驗

實驗一

根據實驗三 敏捷開發與XP實踐
在IDEA中使用工具(Code->Reformate Code)把下面代碼從新格式化,再研究一下菜單,找出一項讓本身感受好用的功能。提交截圖,加上本身學號水印。安全

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));
}
}```
![](http://images2015.cnblogs.com/blog/1115797/201704/1115797-20170430005120053-1469429373.png)

按照教程中利用快捷鍵crtl+alt+I能夠將IDEA中代碼女自動縮進,按照命名格式命名代碼,是代碼格式規範方便閱讀。
## 實驗二
在碼雲上把本身的學習搭檔加入本身的項目中,下載搭檔的Complex代碼,加入很多於三個JUnit單元測試用例,測試成功後git add .; git commit -m "本身學號 添加內容";git push;
提交搭檔項目中git log的截圖,並加上學號水印信息。
搭檔碼雲:[mao20169219](https://git.oschina.net/md2017/mao20169219/tree/master/exp/exp2/Tdd/test?dir=1&filepath=exp%2Fexp2%2FTdd%2Ftest&oid=47c4f414d82426dd3d8bb89cea748da4043d6554&sha=afebb3a9f4bc35a5ab12f00ddc073b9ddacd0146)
![](http://images2015.cnblogs.com/blog/1115797/201704/1115797-20170430010130037-1671425835.png)
![](http://images2015.cnblogs.com/blog/1115797/201704/1115797-20170430010142381-1016981052.png)
TDD並非什麼高深的理論,其涉及的方法和技巧其實很簡單,你們都耳有所聞:面向對象設計、單元測試、重構。
TDD有三個核心原則:
1)沒有測試以前不要寫任何功能代碼
2)只編寫剛好可以體現一個失敗狀況的測試代碼
3)只編寫剛好能經過測試的功能代碼
結對編程:結對編程是XP中的重要實踐。在結對編程模式下,一對程序員肩並肩、平等地、互補地進行開發工做。他們並排坐在一臺電腦前,面對同一個顯示器,使用同一個鍵盤、同一個鼠標一塊兒工做。他們一塊兒分析,一塊兒設計,一塊兒寫測試用例,一塊兒編碼,一塊兒作單元測試,一塊兒作集成測試,一塊兒寫文檔等。

#實驗三
結合[實驗三 敏捷開發與XP實踐](http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的內容替換成IDEA)
完成重構內容的練習,下載搭檔的代碼,至少進行一項重構,提交重構後代碼的截圖,加上學號水印。
重構(Refactor),就是在不改變軟件外部行爲的基礎上,改變軟件內部的結構,使其更加易於閱讀、易於維護和易於變動 。
![](http://images2015.cnblogs.com/blog/1115797/201704/1115797-20170430010906569-473813899.png)
Java代碼的重構模式主要有三種:重命名方法重構模式、引入解釋性變量重構模式、以查詢取代臨時變量重構模式
重命名方法重構模式建議執行以下的步驟來完成:
1.創建一個具備新名稱的方法
2.將舊方法的方法體複製進新方法
3.講舊方法的方法體修改成調用新方法
4.將全部引用舊方法的地方修改成引用新方法
5.刪除舊方法

#補充課堂測試
1.命令行參數

for(int i=0;i<args.length;i++){
sum=sum+Integer.parseInt(args[i]);
}app

2.遞歸

public class TestArgs {
public static int sum(int i, int[] arr) {
if (i < arr.length - 1)
return arr[i] + sum(i + 1, arr);
else return arr[i];
}
public static void main(String[] args) {
int[] arr = new int [20];
for(int i=0; i<args.length;i++)
{
arr[i]=Integer.parseInt(args[i], 10);
}
System.out.println(sum(0, arr));
}
}
```
總結:遞歸方法通俗的將就是自身調用自身。Integer 類在對象中包裝了一個基本類型 int 的值。Integer 類型的對象包含一個 int 類型的字段。該類提供了多個方法,能在 int 類型和 String 類型之間互相轉換,還提供了處理 int 類型時很是有用的其餘一些常量和方法。函數

遇到的問題

常見的代碼覆蓋率有下面幾種:
語句覆蓋(Statement Coverage):這是最經常使用也是最多見的一種覆蓋方式,就是度量被測代碼中每一個可執行語句是否被執行到了。
斷定覆蓋(Desicion Coverage):它度量程序中每個斷定的分支是否都被測試到了。
條件覆蓋(Condition Coverage):它度量斷定中的每一個子表達式結果true和false是否被測試到了。
路徑覆蓋(Path Coverage):它度量了是否函數的每個分支都被執行了。
前三種覆蓋率你們能夠查看下面的引用的第3篇 文章 ,這裏就再也不多說。咱們經過一個例子,來看看路徑覆蓋。好比下面的測試代碼中有兩個斷定分支
代碼覆蓋率高不能保證安全,真正的安全須要用測試用例覆蓋邏輯工具

碼雲截圖和連接

連接:https://git.oschina.net/sunxing27/java-besti-is-sx/tree/master/experiment3?dir=1&filepath=experiment3&oid=f91f4a1fe919aa1f7b10bf682166257a4931b92e&sha=2bd9535024965afe93b89e3449c15678a7e131aa
截圖:
單元測試

參考資料

重構
實驗三
20個IntelliJ IDEA重構功能

相關文章
相關標籤/搜索