2017-2018-2 20165233 实验三 敏捷开发与XP实践
20165233 实验三 敏捷开发与XP实践
实验内容
XP基础
XP核心实践
相关工具
实验步骤
一、编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次。Java中的一般的命名规则有:
- 要体现各自的含义
- 包、类、变量用名词
- 方法名用动宾
- 包名全部小写,如:io,awt
- 类名第一个字母要大写,如:HelloWorldApp
- 变量名第一个字母要小写,如:userName
- 方法名第一个字母要小写:setName
- ...
任务一:在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下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));
}
}
所以我们利用IDEA功能菜单中的Code->Reformat Code,便可实现按照IDEA的规范进行缩进。修改效果如下:

在研究Code菜单的过程中,我发现名为Surround With的功能十分好用。它的作用是:使用if-else、try-catch、do-while等包装代码段;它会将这些语句中的基本内容进行补全。比如说在我需要用try-catch语句时,突然忘记异常的类型或者名字,此时就可以使用Surround With,为编程提高效率。

二、敏捷开发与XP
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。从2001年开始,一些软件界的专家开始倡导“敏捷”的价值观和流程,他们肯定了流行做法的价值,但是强调敏捷的做法更能带来价值。
我们关注其中的编码标准,结对编程,代码集体所有,测试,重构等实践。
任务二:在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例
首先在码云中打开自己的项目,功能栏中选择
管理->开发者,就可以邀请自己的学习搭档加入自己的项目中,随后对方确认邀请,即添加成功。打开IDEA在功能栏中选择
File->New->Project from Version Control,就可以成功clone自己学习搭档码云项目里的所有代码

- 下载实验二的Complex代码后,我的学习搭档MyComplex.java的源程序如图:

- 我修改的JUnit单元测试用例如下图:

三、重构
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
- 我们要修改软件,万变不离其宗,无非就是四种动机:
增加新功能;
原有功能有BUG;
改善原有程序的结构;
优化原有系统的性能 。
任务三:完成重构内容的练习,下载搭档的代码,至少进行三项重构
我下载的搭档代码如下:

通过分析,代码存在如下问题:
- 类名不符合命名规则;
- 程序对于用户输入的不同数据的包含情况过少
- 处理问题太笼统,划分不细致
基于以上的分析,我对搭档的代码进行了如下图的重构:

练习:Java 密码学算法
我们遇到的安全问题可以归结为安全的三个属性(CIA金三角):
- 机密性(Confidentiality):确保数据仅能被合法的用户访问, 即数据不能被未授权的第三方使用。
- 完整性(Integrity):主要确保数据只能由授权方或以授权的方式进行修改,即数据在传输过程中不能被未授权方修改。
- 可用性(Availability):主要确保所有数据仅在适当的时候可以由授权方访问。
Java安全体系结构总共分为4个部分:
- JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。
- JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中
- JSSE( Java Secure Sockets Extension, Java安全套接字扩展包):JSSE提供了基于SSL( Secure Sockets Layer,安全套接字层) 的加密功能。 在网络的传输过程中, 信息会经过多个主机(很有可能其中一台就被窃听) , 最终传送给接收者, 这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
- JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务):JAAS提供了在Java平台上进行用户身份鉴别的功能。
任务四:以结对的方式完成Java密码学相关内容的学习,结合重构、git、代码标准等
我们基于老师的博客进行了对于Java对称加密-DES算法的学习。
在对称加密-DES算法中一共包括四个部分:
- 生成随机密钥
- 保存了密钥编码后,又使用循环语句将字节数组中的内容打印出来
- 加密
- 解密
在理解了这个加密过程后,我们对方法进行了一部分的重构:




我想添加解密的JUnit单元测试用例,但在进行过程中遇到了问题。由于密文存放在文件SEnc.dat中,需要从文件中读入,所以在声明一个新的字符串对象用于验证密文解密后是否正确时,IDEA会提示没有String方法,因此也就无法进行断言语句进行匹配判断,最终以失败告终...
总结与体会
- 本次试验更注重结对编程,通过互相加入开发者,便可以互相修改代码,更加方便。两个人都可以对双方的代码进行修改。
- 在修改对方的单元测试用例时,也能够增强自己纠错,适应多种编程形式的能力
- 重构搭档代码时,可以吸取更多经验教训,使自己避免出现与搭档同样的错误
- Java密码学算法的学习过程中,的确很深刻的感受到学了《密码学》却不会使用密码技术的问题,在老师的博客中也见到了教材中没有接触过的生成密钥等之类的方法。
| 步骤 | 耗时 | 百分比 |
| 需求分析 | 10min | 17.2% |
| 设计 | 20min | 34.5% |
| 代码实现 | 8min | 13.8% |
| 测试 | 15min | 25.9% |
| 分析总结 | 5min | 8.6% |
2017-2018-2 20165233 实验三 敏捷开发与XP实践的更多相关文章
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- 20165223 实验三 敏捷开发与XP实践
目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...
- 20165323 实验三 敏捷开发与XP实践
一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:13:45 - 15:25 实验序号:实验 ...
- 20165235 实验三 敏捷开发与XP实践
20165235 实验三 敏捷开发与XP实践 主目录: 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.30 ...
- 20172328《程序设计与数据结构》实验三 敏捷开发与XP实践报告
20172328<程序设计与数据结构>实验三 敏捷开发与XP实践报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强 ...
- 20165336 实验三 敏捷开发与XP实践
20165336 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...
- 20165215 实验三 敏捷开发与XP实践
20165215 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...
随机推荐
- 放苹果问题 DP计数 m个苹果放在n个盘子里,苹果,盘子相同,盘子可为空
详细的解释放苹果问题的链接:苹果可相同可不同,盘子可相同可不同,盘子可空和不可空,都有详细的说明··· http://www.cnblogs.com/celia01/archive/2012/02/1 ...
- HashMap Hashtable LinkedHashMap TreeMap
// Map<String, String> map = new HashMap<String, String>(); // bb aa cc Map<String, S ...
- $.grep()的用法
grep()方法用于数组元素过滤筛选 grep(array,callback,invert) array:待过滤数组; callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个 ...
- day41 python【事物 】【数据库锁】
MySQL[五] [事物 ][数据库锁] 1.数据库事物 1. 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性 ...
- 《Entity Framework 6 Recipes》中文翻译 ---- 系列教程
为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...
- 【转】每天一个linux命令(17):whereis 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/11/09/2761928.html whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数- ...
- netty SimpleChannelInboundHandler<Message>和ChannelInboundHandlerApter
一个兄弟的测试体验:https://blog.csdn.net/linuu/article/details/51307060 比较官方:https://www.imooc.com/article/28 ...
- button使用注意
<button type="button" class="btn btn-primary" onclick="ChangePassword(); ...
- ionic3之自定义tabs菜单图标
请参考以下链接 ionic3之自定义tabs菜单图标
- MySQL 查看编码 排序规则
查看数据库的排序规则 mysql> show variables like 'collation%'; +----------------------+-------------------+ ...