实验内容

  • 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. atitit.新增编辑功能 跟orm的实现 attilax p31

    atitit.新增编辑功能 跟orm的实现 attilax p31 1. 流程的实现 1 2. view的实现(dwr) 1 3. 获取表结构 1 4. grep filt req params 2 ...

  2. 浅谈PCIe体系结构(详细剖析PCIE数据流向)

    <PCI-Express 体系结构导读> <浅谈PCIe体系结构> http://blog.sina.com.cn/s/articlelist_1685243084_3_1.h ...

  3. [ukulele]入门指南

    不少尤克里里初学者在开始学习尤克里里的时候,都会进行尤克里里教程搜索,还有不少新手会问“尤克里里和吉他的区别”“尤克里里好学吗”“尤克里里和弦有哪些”等问题.今天,国际知名乐器品牌Gorilla歌芮拉 ...

  4. CHero

    #ifndef __HERO_H__ #define __HERO_H__ #include "GameFrameHead.h" #include "GameParam. ...

  5. Java线程停止interrupt()方法

    程序是很简易的.然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的.难以发现的错误.在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程. 中 ...

  6. vue-cli中实现全选、单选计算总价格(vue2.0)

    <template> <div> <table> <tr> <td><input type="checkbox" ...

  7. myeclipse 上安装 Maven3<转>

    环境准备: JDK 1.6 Maven 3.0.4 myeclipse 8.6.1 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Maven是 Apache 下的一个项目,目前最新版 ...

  8. 用Netty开发中间件:高并发性能优化(转)

    用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...

  9. Elk使用笔记(坑)(2017-02-17更新)

    Elk使用笔记(坑)(2017-02-17更新) 作者: admin 时间: 2016-12-07 分类: 工具,数据 主要记录使用过程终于到的一些坑和需要注意的地方,有些坑想不起来了,以后再完善补上 ...

  10. js生成唯一的uuid

    ---恢复内容开始--- 在做项目的时候出现这样的一种情况,需要动态生成唯一的uuid,刚开始我的思路是这样的,我可以根据时间来做,然后出现了下面的思路: var uuid = "cms&q ...