实验内容

  • P基础
  • XP核心实践
  • 相关工具

实验步骤

(一)敏捷开发与XP
  • 软件开发:即将软件需求分析、软件设计、软件构建、软件测试和软件维护这些相关技术和过程统一到一个体系中
  • 敏捷开发:是一种以人为核心、迭代、循序渐进的开发方法。
  • 敏捷流程:是一系列价值观和方法论的集合。
  • XP软件开发(极限编程):包括编码、测试、倾听、设计
(二)编码标准
  • 编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
  • 代码标准
    • 要体现各自的含义
    • 包、类、变量用名词
    • 方法名用动宾
    • 包名全部小写,如:io,awt
    • 类名第一个字母要大写,如:HelloWorldApp
    • 变量名第一个字母要小写,如:userName
    • 方法名第一个字母要小写:setName
    • ...
  • 实验任务:安装alibaba插件,解决代码中的规范问题,并在IDEA中使用工具Code->Reformate Code把代码重新格式化,再研究一下Code菜单。
  • IDEA中的插件,通过Jetbrains官方仓库安装:打开Settings ->Plugins -> Browse repositories...在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDEA生效
  • 实验截图

  • Code菜单功能
    • Override Methods:重载方法/新建方法
    • Implement Methods:执行方法
    • Generate:创建类里面任何字段的gettersetter方法
    • Surround with:将某条语句被if、for等等封装语句括起
    • Move Statement Down/up:将语句下移到后一模块之后
    • Move line down:调换语句顺序
    • Comment with Line/Block Comment:两种注释
    • Reformat Code:将代码按标准格式缩进
    • ...
(三)结对编程
  • 两个角色:

    • 驾驶员(Driver)是控制键盘输入的人。
    • 领航员(Navigator)起到领航、提醒的作用。
  • 实验任务:在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .git commit -m "自己学号 添加内容"git push
  • 将自己的搭档加入自己的项目
    • 打开自己的码云项目
    • 点击管理->项目成员管理->添加项目成员->邀请组织成员
    • 打开虚拟机新建一个文件,打开终端转到新建文件下
    • 输入git clone 搭档码云链接
    • 转到要添加代码的搭档目录下进行vim 类名.java
  • 实验截图



(四)重构
  • 重构(Refactor):即在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
  • 重构动机
    • 增加新功能
    • 原有功能有BUG
    • 改善原有程序的结构
    • 优化原有系统的性能
  • 可以在哪些方面对代码进行重构:
    • 重命名:对类,接口,方法,属性等重命名,以使得更易理解
    • 抽取代码:将方法内的一段代码抽取为另一个方法,以使得该段代码可以被其他方法调用,这是重构中很重要很常用的,此举可以极大的精炼代码,减少方法的代码行数
    • 封装字段:将类的某个字段转换成属性,可以更加合理的控制字段的访问
    • 抽取接口:将类的某些属性,方法抽取组成个接口,该类自动实现该接口
    • 提升方法内的局部变量为方法的参数:这主要是在写代码的过程中会使用到
    • 删除参数:将方法的一个或多个参数删掉
    • 重排参数:将方法的参数顺序重新排列
  • Refactor菜单各功能

  • 实验任务:下载搭档的代码,至少进行三项重构,提交重构后代码的截图
  • 实验截图:

(五)Java密码学算法
  • 密码学包含密码编码学和密码分析学两个分支

    • 密码编码学:主要研究如何对信息进行编码,如何实现对信息的隐蔽,是密码学理论的基础,也是保密系统设计的基础。
    • 密码分析学:主要研究加密消息的破译或消息的伪造,是检验密码体制安全性最为直接的手段,只有通过实际密码分析考验的密码体制,才是真正可用的。
  • 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密码学算法:
    • 体验加解密-凯撒密码
    • Java对称加密-DES算法
    • Java非对称加密-RSA算法
    • 使用密钥协定创建共享密钥
    • Java摘要算法- MD5
    • Java混合密码系统
  • 实验任务:以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
  • 实验代码:
  • 凯撒密码
/**
* @Date 2018/4/28
* @author wangyaojia
*/
public class Caesar{
public static void main(String []args) throws Exception{
String s=args[0];
int key=Integer.parseInt(args[1]);
String es="";
for(int i=0;i<s.length( );i++)
{ char c=s.charAt(i);
// 是小写字母
c = getC(key, c);
es+=c;
}
System.out.println(es);
} private static char getC(int key, char c) {
if(c>='a' && c<='z') {
//移动key%26位
c = move(key, c);
if(c<'a') {
//向左超界
c = changeCplus(c);
}
if(c>'z') {
//向右超界
c = changeCminus(c);
}
}
// 是大写字母
else if(c>='A' && c<='Z') {
c = move(key, c);
if(c<'A') {
c = changeCplus(c);
}
if(c>'Z') {
c = changeCminus(c);
}
}
return c;
} private static char changeCminus(char c) {
c -= 26;
return c;
} private static char changeCplus(char c) {
c += 26;
return c;
} private static char move(int key, char c) {
c+=key%26;
return c;
}
}
  • 运行结果

  • Java摘要算法- MD5

import java.security.*;
/**
* Demo class
*
* @author zyx
* @date 2018/04/28
*/
public class DigestPass{
public static void main(String[ ] args) throws Exception{
String x = getString(args[0]);
MessageDigest m=MessageDigest.getInstance("MD5");
m.update(x.getBytes("UTF8"));
byte[] s = getDigest(m);
String result="";
for (int i=0; i<s.length; i++){
result+= getString(s[i]).substring(6);
}
System.out.println(result);
} private static String getString(byte b) {
return Integer.toHexString((0x000000ff & b) |
0xffffff00);
} private static byte[] getDigest(MessageDigest m) {
return m.digest();
} private static String getString(String arg) {
return arg;
}
}
  • 结果截图

实验过程中遇到的问题及解决

  • 在下载alibaba插件时出现

解决方法:应该是网络连接的问题,转换网络后下载成功。在查询资料时,我找到了阿里巴巴Java开发规约IDEA插件安装及使用,这里提供了两种下载方法。

  • 在进行团队项目时,老师要求将搭档可以添加代码到自己的项目中,我们认为是在自己原进行git的文件下进行git clone,结果在搭档码云中出现我的码云文件并且打不开

解决方法:需新建一个全新的文件夹,进行git clone,再转到要添加代码的搭档目录下进行vim 类名.java

实验总结

  • 通过本次实验我知道了如何进行规范、格式化代码,如何将搭档加入自己的码云项目并进行合作编写添加代码,如何重构以及Java密码学相关知识。
  • 这次实验也加深了对平时不清楚的知识点的理解,也掌握了重构等新知识点。在小伙伴的帮助下,我对代码有了更深的解读,团队完成的效率更得到提高,在之后学习的路上,要不断学会合作,掌握更多的知识并会熟练运用!
步骤 耗时 百分比
需求分析 15分钟 9%
设计 90分钟 49%
代码实现 20分钟 10%
测试 30分钟 16%
分析总结 30分钟 16%

2017-2018-2 20165330 实验三《敏捷开发与XP实现》实验报告的更多相关文章

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

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

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

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

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

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

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

    实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...

  5. 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

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

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

    20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

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

    20155224 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

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

    20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

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

    20155311 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 xp核心工具 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  10. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

随机推荐

  1. 安装vim 出现 terminal libary 错误,解决方法

    通过源码安装vim时,提示缺少terminal libary 而在安装ncurses以后,此问题照样出现. 经过查找资料发现.运行例如以下命令就能够正常安装vim <pre name=" ...

  2. python学习之yummain模块

    定义:`yum`的命令行接口. yummain.main(args) Run the yum program from a command line interface. yummain.hotsho ...

  3. Acquiring Heap Dumps

      Acquiring Heap Dumps HPROF Binary Heap Dumps Get Heap Dump on an OutOfMemoryError One can get a HP ...

  4. doc转docx以及type对应的类型

    https://blog.csdn.net/flagang/article/details/51454665 // 作为type格式保存到临时文件 // *Variant(0):doc // *Var ...

  5. 浏览器 本地预览图片 window.url.createobjecturl

    第一种方式 <script type="text/javascript"> function setImagePreview() { var docObj = docu ...

  6. Pgsql排序让空值NULL排在数字后边

    遇到一种情况,对数字进行排序的时候,出现NULL在数字后面的情况,现在的需求是NULL排在前面然后才是升序的排数字 [Oracle 结论] order by colum asc 时,null默认被放在 ...

  7. Codeforces461A Appleman and Toastman 贪心

    题目大意是Appleman每次将Toastman给他的Ni个数拆分成两部分后再还给Toastman,若Ni == 1则直接丢弃不拆分.而Toastman将每次获得的Mi个数累加起来作为分数,初始时To ...

  8. 转:Linux下which、whereis、locate、find 命令的区别

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用. which    ...

  9. vsftpd 服务移植出现 500 oops : socket 解决

    一开始, 在vsftpd 打印的错误是 500 oops : socket 在 vsftpd 源码里面找到 buildroot-2016.05/output/build/vsftpd-3.0.3/sy ...

  10. Linux开机启动文件rc.local无法执行怎么办?

    rc.local是Linux系统中的一个重要的开机启动文件,每次开机都要执行这个文件.但是有一些用户的Linux系统无法执行这个文件,并导致了一系列的问题.遇到这个问题我们应该怎么办呢? 在Linux ...