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代 ...
随机推荐
- 在 Windows 10 中开启移动 WLAN 热点
本文将介绍如何在 Windows 10 中开启移动 Wi-Fi 热点. This post is written in multiple languages. Please select yours: ...
- jquery,从后台查数据,给页面上添加树形。
前台jquery+ajax请求往页面上添加树形的js代码 //传入当前点击节点的id,在后台代码查询出parentid=当前节点id的记录数,从而实现点击当前节点,往后台发送ajax请求,查询出子节点 ...
- Linux内核电源管理综述
资料:http://blog.csdn.net/bingqingsuimeng/article/category/1228414http://os.chinaunix.net/a2006/0519/1 ...
- yocto和bitbake
一.yocto 1.yocto简介 Yocto 是一个开源社区通过它提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 ...
- streamsets 集成 cratedb 测试
我们可以集成crate 到streamsets 中可以实现强大的数据导入,数据分析能力. 演示的是进行csv 文件的解析并输出到cratedb 环境使用docker && docker ...
- Linux下载
免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 下载方法见 http://www.linuxidc.com/Linux/2013 ...
- c# list排序的三种实现方式 (转帖)
用了一段时间的gridview,对gridview实现的排序功能比较好奇,而且利用C#自带的排序方法只能对某一个字段进行排序,今天demo了一下,总结了三种对list排序的方法,并实现动态传递字段名对 ...
- mySQL 教程 第4章 数据查询
mySQL运算符 这些运算符在SQL查询中用得到. 算数运算符 + 加 - 减 * 乘 / DIV 除 % MOD 取余数 比较运算符 = 等于 <> != 不等于 < <= ...
- DataSet和DataTable有用的方法
每一个DataSet都是一个或多个DataTable 对象的集合(DataTable相当于数据库中的表),这些对象由数据行(DataRow).数据列(DataColumn).字段名(Column Na ...
- sql server 2008数据库 降为 sql server 2005数据库 最终方案总结
由于xx原因,sql server 要降级,所以有了下文.... 一 直接 通过sql server 自带工具 生成脚本即可,具体操作方法如下: 1.打开 Microsoft Sql Server M ...