2018-2019-2 20175320实验三《敏捷开发与XP实践》实验报告

2018-2019-2 20175320实验三《敏捷开发与XP实践》实验报告

一、实验步骤及内容

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。软件工程通常是开发流程与开发工具的组合,而敏捷和极限编程就是开发方法的一部分。
敏捷开发

  • 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
    极限编程(XP)
  • 极限编程是一种全新而快捷的软件开发方法,其包括沟通、简单、反馈、勇气这几项准则;编码、测试、倾听、设计这几项活动;编码标准,结对编程,代码集体所有,测试,重构等12项实践。
    本次实验中我们对编码标准,结对编程,代码集体所有,测试,重构这几项实践进行练习。

(一)编码标准——使用阿里的编码标准并借助阿里开放的IDE检测插件对代码进行规范。

在这一步骤中我们主要需要安装阿里的格式插件并使用插件以及IDEA中的Code工具对代码进行规范并格式化。
1、在IDEA中安装Alibaba Java Code Guide lines并重启IDEA。
2、打开一个项目用于代码规范,这里我使用的是以前测试数据库连接的MessageDAODemo等类。
3、右键点击src,选择编码规约扫描即可在下面的窗口中查看是否符合规范,如不符合可以查看不符合的具体位置以及相应问题。

4、找到定位到的行,根据中文提示将问题解决,这里的MessageDAO由于特殊情况可以不使用驼峰规则。

5、新建一个CodeStandard类,并使用IDEA中的Code->Reformate Code对代码进行格式化,在Code工具中还可以进行插入、重写方法以及添加注释等一系列格式化的操作。

(二)结对编程,代码集体所有,测试——了解结对编程,并在码云上把自己的学习搭档加入自己的项目中,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例。

结对编程在做“小学四则运算题目”这一项目时已经体会过了。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作,两人分别充当驾驶员以及领航员的角色。而代码集体所有我们是通过git实现的,通过git我们不仅可以让所有人项目参与人都能修改代码,还可以对旧版本进行修改,并在新版本出问题时及时找到能实现部分功能的旧版本。实验二中我们已经对测试驱动的程序开发有所了解,在本次实验中需要使用junit添加单元测试用例,并对以前的代码进行测试。
1、在码云中的仓库界面中点击管理->添加管理员,并将链接发送给搭档,将搭档添加为管理员,搭档也需要按同样的操作将我添加为管理员。
2、成为搭档仓库的管理员后,在搭档的仓库中添加公钥,并将搭档的仓库克隆。
3、找到Complex代码,在仓库中新建一个文件夹并添加Complex代码以及自己的测试类ComplexTest
4、使用junit进行测试,编写测试用例,直到所有实际值都与预期值相符,具体步骤请见实验二的报告。

5、将添加内容通过git上传到搭档的仓库中,并使用git log命令查看上传记录。

(三)重构——使用阿里的插件进行代码规约扫描,并使用IDEA的refactor菜单对代码进行重构

重构,就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。而IDEA的重构菜单能使我们的修改更加便捷。
1、这里我选用的是搭档的Complex类,按照上一部分的过程对代码进行规约扫描,发现有变量的命名不符合驼峰规则,于是使用refactor菜单中的rename选项变量进行批量的改变名字。


2、还存在有类没有添加创建者的信息,点击图示位置,在窗口的右侧可以一键添加创建者的信息。


3、窗口显示还需要使用javadoc规范,于是在所需更改行将注释改为/**内容**/格式

(四)以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。

使用Java的JCE可以很方便的实现加密和解密,在本次实验中我们使用Java来实现使用凯撒密码、对称密码、非对称密码对字符串进行加密,以及使用密钥协定创建密钥并使用Java计算指定字符串的消息摘要。
1、凯撒密码

  • 凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数)
  • 解密过程可表示为:m≡c+k mod n (其中n为基本字符个数)
    实验代码运行结果如图:

2、对称密码-DES算法
(一)加密

  • (1)获取密钥生成器
  • (2)初始化密钥生成器
  • (3)生成密钥
  • (4)通过对象序列化方式将密钥保存在文件中
  • (5)获取密钥
  • (6)创建密码器(Cipher对象)
  • (7)初始化密码器
  • (8)获取等待加密的明文
  • (9)执行加密
  • (10)处理加密结果
    运行结果如图:

    (二)解密
    解密时需要使用以字节保存在文件中的密钥
  • (1)获取密文
  • (2)获取密钥
  • (3)创建密码器(Cipher对象)
  • (4)初始化密码器
  • (5)执行解密
    运行结果如图:

3、非对称密码-RSA算法
RSA算法是使用整数进行加密运算的,在RSA公钥中包含了两个信息:公钥对应的整数e和用于取模的整数n。对于明文数字m,计算密文的公式是:me mod n。在RSA私钥中包含了两个信息:私钥对应的整数d和用于取模的整数n。其中的n和加密时的n完全相同。对于密文数字c,计算明文的公式是:cd mod n

(一)生成双钥

  • (1)创建密钥对生成器
  • (2)初始化密钥生成器
  • (3)生成密钥对
  • (4)获取公钥和私钥
    (二)使用公钥进行加密
  • (1)获取公钥
  • (2)获取公钥的参数(e, n)
  • (3)获取明文整数(m)
  • (4)执行计算
    步骤一二的运行结果如图:

    (三)使用私钥进行解密
  • (1)读取密文
  • (2)获取私钥
  • (3)获取私钥的参数(d, n)
  • (4)执行计算
  • (5)计算明文整型数对应的字符串
    运行结果如图:

4、使用密钥协定创建共享密钥
密钥协定可以用来交换对称密钥,执行密钥协定的标准算法是DH算法,通过共享密钥可以实现秘密传送大量数据。

  • (1)创建DH公钥和私钥
  • (2)创建共享密钥
  • (3)读取自己的DH私钥和对方的DH公钥
  • (4)创建密钥协定对象
  • (5)初始化密钥协定对象
  • (6)执行密钥协定
  • (7)生成共享信息
    运行结果如图:

5、Java摘要算法

  • (1)生成MessageDigest对象
  • (2)传入需要计算的字符串
  • (3)计算消息摘要
  • (4)处理计算结果
    运行结果如下:

    git log如下:

二、实验时遇到的问题:

  • 问题1:在使用阿里插件时注释不符合标准,但不知如何更改。
  • 问题1解决方法:反复尝试多次后发现需要在类前添加/**注释*/ 的内容。
  • 问题2:在创建共享密钥部分进行运行时命令行出现java.lang.ArrayIndexOutOfBoundsException的错误。
  • 问题2解决方法:发现是运行时少输入了参数,args[]数组只有一位,发生了数组下标溢出。

三、实验感想

本次实验的部分内容比如结对、git的使用、测试已经在前面练习过了,因此没有遇到太大的问题,而重构和编码标准使我使我知道如何写出跟易读的代码,并对不合格代码进行更高效的检测和修改。而Java与密码学部分使我有更简单快捷的方法实现各种密码算法,Java的各种API十分的便捷,可以节省很多编写算法的时间。
附上PSP时间:
| 步骤 | 耗时 | 百分比 |
| -- | -- | -- |
| 需求分析 | 20 | 16% |
| 设计 | 15 | 12% |
| 代码实现 | 35 | 28% |
| 测试 | 45 | 36% |
| 分析总结 | 10 | 8% |

原文地址:https://www.cnblogs.com/nameless-student/p/10803318.html

时间: 2024-10-04 15:41:30

2018-2019-2 20175320实验三《敏捷开发与XP实践》实验报告的相关文章

20175212童皓桢 实验三敏捷开发与XP实践实验报告

20175212童皓桢 实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 一.Code菜单功能的研究 Move Line/statement Down/Up:将某行.表达式向下.向上移动一行 suround with:用 try-catch,for,if等包裹语句 comment with line/block comment:把选中它区域变成注释 show reformat file dialog:按照格式自动对齐 Optimize imports:可以优

20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告

20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告 实验步骤与运行结果 实验三 敏捷开发与XP实践-1 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->

20165220 实验三 敏捷开发与XP实践 实验报告

实验三 敏捷开发与XP实践-1 实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己

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

课程:Java程序设计实验   班级:1353  姓名:余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.4 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  21                    必修/选修: 选修                  实验序号:3 实验名称:敏捷开发与XP实践 实验内容 1. XP

20145207 实验三 敏捷开发与XP实践 实验报告

实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问同学"."看书"等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等).报告可以

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

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉鹏             实验日期:2015.5.29 实验密级:         预习程度:                     实验时间:15:30--18:00 仪器组次:         必修/选修: 选修             实验序号:3 实验名称:实验三 敏捷开发与XP实践 实

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

实验三 敏捷开发与XP实践 实验目的 一.安装alibaba 插件,解决代码中的规范问题.在IDEA中使用工具(Code->Reformate Code)格式化代码,研究一下Code菜单,比较功能. 二.在码云上把自己的学习搭档加入自己的项目中,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试并上传代码至码云 三.下载搭档的代码,完成重构内容的练习. 四.结合重构,git,代码标准,以结对的方式完成Java密码学相关内容的学习. 实验内容及步骤 (一)安装aliba

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

20155327 实验三 敏捷开发与XP实践 实验内容 任务一 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能.提交截图,加上自己学号水印. public class CodeStandard { public static v

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

2018-2019-2 20175303 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验报告封面 课程:Java程序设计 班级:1753 姓名:柴轩达 学号:20175303 指导教师:娄嘉鹏 实验日期:2019年4月29日-5月2日 实验序号:3 实验名称:敏捷开发与XP实践 实验步骤 敏捷开发与XP实践-1 实验要求 参老师给的链接安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,

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

2018-2019-20175322 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验内容 1.XP基础 2.XP核心实践 3.相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问