一、实验报告封面

课程: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”类,输入用来测试用的代码(格式未调):

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

  • 3、发现代码中不规范的地方:

  • 4、点击Code目录下的Reformate Code,格式化代码:

  • 5、我觉得Code目录下最好用的是Override Methods

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

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

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

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

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

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

  • 4、我们的码云链接

(三)重构的练习

  • 1、下载一个搭档的代码。我选择的代码:

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

  • 4、对修改的代码进行Junit测试:

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

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

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

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

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

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

  • 5、码云链接

  • 6、PSP时间

步骤 耗时 百分比
需求分析 5min 7.7%
设计 20min 30.8%
代码实现 30min 46.2%
测试 10min 15.4%
分析总结 10min 15.4%

四、遇到的问题与解决

  • 问题1:在实验的步骤(三)中,我下载的搭档的代码是需要在命令行输入的,但是运行IDEA时它就直接运行完了,没有让我输入命令行参数。
  • 问题1解决:发现了一个解决办法,在IDEA中的run目录下方有一个Edit Configurations

    里面的Program arguments那一栏就可以定义命令行的参数了~

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

五、心得体会

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

20165214 实验三 敏捷开发与XP实践的更多相关文章

  1. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

  2. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  3. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  4. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  5. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  6. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

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

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

  8. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  9. 20175314 实验三 敏捷开发与XP实践

    20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...

随机推荐

  1. pygame

    pip install msgpack-python pip install msgpack 离线安装下载地址 Downloading https://files.pythonhosted.org/p ...

  2. C++的成员初始化列表和构造函数体(以前未知)

    成员的初始化列表和构造函数在对成员指定初值方面是不一样的.成员初始化列表是对成员初始化,而构造函数,是对成员赋值 成员初始化列表使用初始化的方式来为数据成员指定初值, 而构造函数的函数体是通过赋值的方 ...

  3. 时间选择控件YearPicker(基于React,antd)

    不知道为什么蚂蚁金服团队没有在ant design的DatePicker中单独给出选择年份的组件,这给我们这种懒人造成了很大的痛苦,自己手造轮子是很麻烦的.毕竟只是一个伸手党,emmmmm..... ...

  4. springboot 定时任务部署至linux服务器上后会执行两次问题

    springboot定时任务在本地运行时,正常执行且只执行一次,但是在maven打包成war包,部署至linux服务器上之后,定时任务奇怪的执行了两次. 由于未做负载均衡,所以可以先排除是因为多台服务 ...

  5. poj2117-tarjin求割点

    http://poj.org/problem?id=2117 求移除一个点以及与它相邻边后,剩下的图中最大的联通子图的数量是多少. 跑一遍tarjin统计下拆除某个点剩下的子图数量即可.注意给出的图不 ...

  6. MongoDB 第一篇

    概述 MongoDB是一个高性能,开源,无模式的文档型数据库,使用C++开发.是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是 ...

  7. H5活动页面与APP交互规则

    IOS: 用户信息请求:window.webkit.messageHandlers.GetUserInfo.postMessage(jsonData); 参数:jsonData 回调方法:iosDel ...

  8. Leetcode 144

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  9. git 恢复误删的分支

    在使用git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...

  10. oracle 12c新特性 FETCH FIRST、WITH TIES 关键字详解

    几乎都是官方文档上的内容.     [ OFFSET offset { ROW | ROWS} ] [ FETCH { FIRST | NEXT }[ { rowcount | percent PER ...