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

一、实验报告封面

课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214

指导教师:娄嘉鹏 实验日期:2018年4月28日

实验时间:15:35 - 17:15 实验序号:三

实验名称: 敏捷开发与XP实践

实验要求:
1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。
2、实验报告中统计自己的PSP(Personal Software Process)时间;
3、掌握使用IDEA完成基础编程与程序调试的能力。

二、实验内容:

  1. XP基础
  2. XP核心实践
  3. 相关工具

三、实验步骤

(一)代码格式化

  • 1、在IDEA中新建一个项目“Exp3”,在该项目下创建“CodeStandard”类,输入用来测试用的代码(格式未调):
    1271410-20180427135540771-597594172.png

  • 2、在IDEA中安装alibaba 插件,安装后右键点击类名,再点击“编码规约扫描”
    1271410-20180427140241981-1169467279.png

  • 3、发现代码中不规范的地方:
    1271410-20180427152036948-411592315.png

  • 4、点击Code目录下的Reformate Code,格式化代码:
    1271410-20180427151903885-1656102923.png

  • 5、我觉得Code目录下最好用的是Override Methods
    1271410-20180427160122853-1760529229.png

里面提供了Java.lang包中的一些类的方法重写,在我们进行方法重写时很方便。

(二)邀请搭档加入码云项目,对搭档的代码进行Junit测试。

  • 1、在我的码云中创建“teamwork”项目,邀请自己的搭档成为“开发者”。

  • 2、引入搭档在实验二中的Complex代码,加入多个Junit测试用例并编译:
    1271410-20180427163830150-912117.png

出现“绿条”,通过测试。

  • 3、在命令行中使用git语句将代码传到我和搭档新建的共同项目,然后输入git log并截图:
    1271410-20180427172527612-977970323.png

  • 4、我们的码云链接

(三)重构的练习

  • 1、下载一个搭档的代码。我选择的代码:
    1271410-20180427192141169-238221630.png

  • 2、代码中存在的问题与分析
    • 问题一:类名LYK不能体现程序的功能,本程序是计算组合数,我觉得应当改成Combination;
    • 问题二:递归函数名也不能体现出相应的功能,可以改成Caculate;
    • 问题三:缺乏对输入是不合法字符情况的处理。
  • 3、根据以上问题,我对代码进行了如下重构:
    1271410-20180427211854939-1399925087.png

  • 4、对修改的代码进行Junit测试:
    1271410-20180427214753744-1926064573.png

出现“绿条”,结果正确。

(四)Java密码学算法的学习

  • 1、仔细阅读娄老师的博客Java密码学算法

  • 2、编写一个实现MD5加密的程序并且运行,输入abc,得到如下结果
    1271410-20180428190616069-445225450.png

  • 3、阅读并运行娄老师的DES算法程序并且运行,得到如下结果
    1271410-20180428190649106-738982975.png

  • 4、阅读并运行娄老师的RSA算法程序并且运行,得到如下结果
    1271410-20180428190628807-604859263.png

  • 5、码云链接

  • 6、PSP时间

步骤耗时百分比
需求分析5min7.7%
设计20min30.8%
代码实现30min46.2%
测试10min15.4%
分析总结10min15.4%

四、遇到的问题与解决

  • 问题1:在实验的步骤(三)中,我下载的搭档的代码是需要在命令行输入的,但是运行IDEA时它就直接运行完了,没有让我输入命令行参数。
  • 问题1解决:发现了一个解决办法,在IDEA中的run目录下方有一个Edit Configurations
    1271410-20180427211256899-1309857447.png
    里面的Program arguments那一栏就可以定义命令行的参数了~
    1271410-20180427211345787-874772820.png

  • 问题2:在写密码学的算法的过程中,我想使用Console类的对象来使得输入的密码不显示出来,但是不知道为什么,同样的代码,在IDEA中不能运行出来,到了输入密码这一行就报错,而Linux中就可以运行。
  • 问题2解决:现在还没有找到原因。

五、心得体会

这次实验相比上一次实验较为简单一些,不过学到的也是很多的,特别是了解了Java里面强大的关于密码的功能。这与我们的专业紧密地连接到了一起。出于兴趣,我又找到了一篇写关于Java里面关于加盐哈希函数的使用及其扩展(点击这里),看了之后感觉很涨知识,所以分享一下~
之前觉得Java好像与我们的专业没什么关系,经过这次实验后我改变了想法。我发现,Java可以很容易地实现很多密码算法,十分方便。今后可以多学学这块的内容,向我们的专业靠拢~

转载于:https://www.cnblogs.com/zhuwenyuan/p/8961795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值