2016-2017 《移动平台开发》实验三 敏捷开发与XP实践
概述
软件=程序+软件工程
软件企业=软件+商业模式
XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。
- 在更短的周期内,更早地提供具体、持续的反馈信息。
- 在迭代的进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断的发展它。
- 依赖于自动测试程序来监控开发进度,并及早地捕获缺陷。
- 依赖于口头交流、测试和源程序进行沟通。
- 倡导持续的演化式设计。
- 依赖于开发团队内部的紧密协作。
- 尽可能达到程序员短期利益和项目长期利益的平衡。
XP软件开发是什么样的通过 XP准则来表达:
- 沟通 :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));
}
}```

按照教程中利用快捷键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)


TDD并不是什么高深的理论,其涉及的方法和技巧其实很简单,大家都耳有所闻:面向对象设计、单元测试、重构。
TDD有三个核心原则:
1)没有测试之前不要写任何功能代码
2)只编写恰好能够体现一个失败情况的测试代码
3)只编写恰好能通过测试的功能代码
结对编程:结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。
#实验三
结合[实验三 敏捷开发与XP实践](http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA)
完成重构内容的练习,下载搭档的代码,至少进行一项重构,提交重构后代码的截图,加上学号水印。
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

Java代码的重构模式主要有三种:重命名方法重构模式、引入解释性变量重构模式、以查询取代临时变量重构模式
重命名方法重构模式建议执行如下的步骤来完成:
1.建立一个具有新名称的方法
2.将旧方法的方法体复制进新方法
3.讲旧方法的方法体修改为调用新方法
4.将所有引用旧方法的地方修改为引用新方法
5.删除旧方法
#补充课堂测试
1.命令行参数
for(int i=0;i<args.length;i++){
sum=sum+Integer.parseInt(args[i]);
}
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
截图:

##参考资料
[重构](http://www.jianshu.com/p/ab298b46bf50)
[实验三](http://www.cnblogs.com/rocedu/p/4795776.html)
[20个IntelliJ IDEA重构功能](http://blog.csdn.net/woshilcg/article/details/56012368)
2016-2017 《移动平台开发》实验三 敏捷开发与XP实践的更多相关文章
- 20145213《Java程序设计》实验三敏捷开发与XP实践
20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...
- JAVA课程实验报告 实验三 敏捷开发与XP实践
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- #实验三 敏捷开发与XP实践---实验报告
一.实验三 敏捷开发与XP实践-1 1.实验要求 -实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成I ...
- 20165323 实验三 敏捷开发与XP实践
一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:13:45 - 15:25 实验序号:实验 ...
- 20165220 实验三 敏捷开发与XP实践 实验报告
实验三 敏捷开发与XP实践-1 实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA ...
- 20165336 实验三 敏捷开发与XP实践
20165336 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...
- 20155208实验三 敏捷开发与XP实践
20155208实验三 敏捷开发与XP实践 一.实验内容 (1)在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最 ...
- 20155303 实验三 敏捷开发与XP实践
20155303 实验三 敏捷开发与XP实践 目录 一.编码标准 任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能 二.敏捷开发与XP ...
随机推荐
- .NET泛型解析(上)
[1]:泛型介绍 泛型是C#2.0中一个重要的新特性,泛型是CLR和编程语言提供的一种特殊机制,它支持另一种形式的代码重用.泛型通常用与集合以及作用于集合的方法一起使用,当然也可以单独使用. C#是一 ...
- ASP.NET 获得当前网页名字
Code string currentFilePath = HttpContext.Current.Request.FilePath; string CurrentPageName = current ...
- 黄聪:中国大陆的所有IP段,中国电信所有IP段、中国铁通所有IP段、中国网通所有IP段。
中国大陆的所有IP段,中国电信所有IP段.中国铁通所有IP段.中国网通所有IP段. 中国大陆的所有IP段: 47.153.128.0 47.154.255.25558.14.0.0 58.25.255 ...
- JAVA面向对象编程课程设计——项目部署
目录 一.Java环境的安装 1.下载 2.安装 3.配置环境变量 二.Tomcat的安装 1.下载 2.安装 3.启动Tomcat(默认已经安装好java环境,如果未安装java会报错.) 三.My ...
- 注解反射原理(IOC框架)
IOC(Inversion of Control):控制反转.采用配置文件和注解的方式,将成员变量通过反射注入,舍弃new的方式,降低了耦合度. 反射:JAVA反射机制是在运行状态中,对于任意一个类, ...
- arm-linux-gcc配置安装
1.首先去下载arm-linux-gcc压缩包 https://pan.baidu.com/s/15QLL-mf0G5cEJbVP5OgZcA 密码:ygf3 2.把压缩包导入到Linux系统:htt ...
- Asp.netMVC中地址后缀使用.html,jsp等404错误解决
asp.net mvc 默认的地址路径url都是没有后缀的比如 www.a.com/aa/bb 等 如果要是www.a.com/aa/bb.html需要专门写路由. 根据我之前的经验,mvc的路由是相 ...
- [POJ] Financial Management
Financial Management Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 182193 Accepted: ...
- IOS 上架要求视频及屏幕截屏
客户提供上架的资料 1.IOS 上架要求视频演示,录制一段视频,上传到优酷,需要url连接. 2.手机截屏,每个尺寸5张.5s/6/6p *5=15张.截屏图片分辨率. iPhone4s手机 3.5I ...
- spring jpa sqls
package com.example.repository; import java.util.List; import org.springframework.data.jpa.repositor ...