20165233 实验三 敏捷开发与XP实践

实验内容

  1. XP基础

  2. XP核心实践

  3. 相关工具

实验步骤

一、编码标准

  • 编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。

  • 代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次。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-elsetry-catchdo-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实践的更多相关文章

  1. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

  2. 20165223 实验三 敏捷开发与XP实践

    目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...

  3. 20165323 实验三 敏捷开发与XP实践

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:13:45 - 15:25 实验序号:实验 ...

  4. 20165235 实验三 敏捷开发与XP实践

    20165235 实验三 敏捷开发与XP实践 主目录: 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.30 ...

  5. 20172328《程序设计与数据结构》实验三 敏捷开发与XP实践报告

    20172328<程序设计与数据结构>实验三 敏捷开发与XP实践报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强 ...

  6. 20165336 实验三 敏捷开发与XP实践

    20165336 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...

  7. 20165215 实验三 敏捷开发与XP实践

    20165215 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...

  8. 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...

  9. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

随机推荐

  1. EasyTouch中多种QuickGesture手势检测

    EasyTouch中QuickGesture的用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Qu ...

  2. HttpWebRequest.Connection的问题

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/");request.Co ...

  3. 斐波那契数列的5种python实现写法

    斐波那契数列的5种python写法       斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖 ...

  4. ACM常用算法

    数据结构 栈,队列,链表 哈希表,哈希数组 堆,优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平衡二叉树 二叉排序树 线段树 一维线段树 二维 ...

  5. JSON字符串-赋张最初接触后台从map转json的方法

    **************************************** json数组: *************************************************** ...

  6. MySQL Disk--SSD磁盘性能抖动问题

    ============================================================= SSD性能 空盘性能:SSD出厂时磁盘没有任何数据情况下的性能 稳态性能:当 ...

  7. CommonsChunkPlugin知识点

    CommonsChunkPlugin 的作用就是提取代码中的公共模块,然后将公共模块打包到一个独立的文件中去,以便在其它的入口和模块中使用. 多个 html共用一个js文件(chunk),可用Comm ...

  8. tomcat和servlet关系

    https://blog.csdn.net/weixin_30531261/article/details/78574410 图不错:https://www.cnblogs.com/fengli999 ...

  9. php比较全的友好时间显示

    分享一个php友好的比较完成的时间格式化函数,包括‘刚刚’,'几秒之前',‘几分钟前’,'几小时前',几天前,几周前,几个月前等.调用方式很简单,是从ThinkSNS 里面拿出来的. /** * 友好 ...

  10. ML(4.1): R C4.5

    决策树模型中最为流行的是C4.5算法,  该类算法70年代末,J Ross Quinlan提出ID3算法,此算法的目的在于减少树的深度.但是忽略了叶子数目的研究.1993年,Quinlan本人以ID3 ...