20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践

20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践

实验内容

检查点1:

  • 安装alibaba 插件,解决代码中的规范问题

    • 首先把搭档加入到自己的项目中:
    • 然后利用alibaba插件,将所给代码修改格式:

检查点2:

  • 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,左侧是将搭档代码clone后的显示:
  • 下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

    在搭档代码中添加了c4,c5,c6,并将其假如到代码测试中。

检查点3:

  • 完成重构内容的练习,下载搭档的代码,至少进行三项重构:我对文件名字进行了重构;由于alibaba的插件对格式要求严格,所以在if后添加大括号;还有添加了最后一个else用来除了其他情况:

检查点4:

  • 完成一个java密码学的代码,并进行重构,添加了异常类:

Skey_DES.java

import java.io.*;
import javax.crypto.*;
public class Skey_DES{
public static void main(String args[])throws Exception{KeyGenerator kg=KeyGenerator.getInstance("DES");kg.init(56);SecretKey k=kg.generateKey( );FileOutputStream  f=new FileOutputStream("key1.dat");ObjectOutputStream b=new  ObjectOutputStream(f);b.writeObject(k);}
}

Skey_kb.java

import java.io.*;import java.security.*;
public class Skey_kb{
public static void main(String args[]) throws Exception{try {FileInputStream f = new FileInputStream("key1.dat");ObjectInputStream b = new ObjectInputStream(f);Key k = (Key) b.readObject();byte[] kb = k.getEncoded();FileOutputStream f2 = new FileOutputStream("keykb1.dat");f2.write(kb);// 打印密钥编码中的内容for(int i=0;i<kb.length;i++){System.out.print(kb[i]+",");}}catch (Exception e) {System.out.println(e.toString());e.printStackTrace();}}
}

SEnc.java

import java.io.*;
import java.security.*;
import javax.crypto.*;
public class SEnc{
public static void main(String[] args) throws Exception{try{String s="Hello World!";FileInputStream f=new FileInputStream("key1.dat");ObjectInputStream b=new ObjectInputStream(f);Key k=(Key)b.readObject( );Cipher cp=Cipher.getInstance("DES");cp.init(Cipher.ENCRYPT_MODE, k);byte ptext[]=s.getBytes("UTF8");for(int i=0;i<ptext.length;i++){System.out.print(ptext[i]+",");}System.out.println("");byte ctext[]=cp.doFinal(ptext);for(int i=0;i<ctext.length;i++){System.out.print(ctext[i] +",");}FileOutputStream f2=new FileOutputStream("SEnc.dat");f2.write(ctext);
}
catch (Exception e) {System.out.println(e.toString());e.printStackTrace();}}
}

SDer.java

import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class SDec {public static void main(String[] args) throws Exception     {// 获取密文try {FileInputStream f = new FileInputStream("SEnc.dat");int num = f.available();byte[] ctext = new byte[num];f.read(ctext);// 获取密钥FileInputStream f2 = new FileInputStream("keykb1.dat");int num2 = f2.available();byte[] keykb = new byte[num2];f2.read(keykb);SecretKeySpec k = new SecretKeySpec(keykb, "DESede");// 解密Cipher cp = Cipher.getInstance("DESede");cp.init(Cipher.DECRYPT_MODE, k);byte[] ptext = cp.doFinal(ctext);// 显示明文String p = new String(ptext, "UTF8");System.out.println(p);} catch (Exception e) {System.out.println(e.toString());e.printStackTrace();}}
}

学习内容

(一)敏捷开发与XP

  • 软件工程:
  • 软件工程包括以下领域:
    • 软件需求分析
    • 软件设计
    • 软件构建
    • 软件测试
    • 软件维护
  • 常见开发流程:
    • RUP(Rational Unified Process)
    • PSP(Personal Software Process )
    • TSP(Team Software Process )
    • Agile Process
    • ……
  • 敏捷开发(Agile Development):是一种以人为核心、迭代、循序渐进的开发方法

  • XP软件开发的基石是XP的活动,包括:
    • 编码
    • 测试
    • 倾听
    • 设计
  • Java中的一般的命名规则:
    • 要体现各自的含义
    • 包、类、变量用名词
    • 方法名用动宾
    • 包名全部小写,如:io,awt
    • 类名第一个字母要大写,如:HelloWorldApp
    • 变量名第一个字母要小写,如:userName
    • 方法名第一个字母要小写:setName
    • ...

(二)编码标准

  • 编程标准包含:

    • 具有说明性的名字
    • 清晰的表达式
    • 直截了当的控制流
    • 可读的代码和注释
    • 在追求这些内容时一致地使用某些规则和惯用法的重要性

(三)重构

  • 重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。
    • 修改软件的四种动机:

      • 增加新功能
      • 原有功能有BUG
      • 改善原有程序的结构
      • 优化原有系统的性能

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

  • 问题:在clone搭档的代码并重构后,run时遇到问题Cannt start process,the working dirctory

  • 解决方法:在File->Project Structure->Module->paths->修改outpath到bin文件夹

(四)实践项目

实验报告中统计自己的PSP(Personal Software Process)时间

步骤 耗时 百分比
需求分析 10min 7.7%
设计 30min 23%
代码实现 50min 38%
测试 10min 7.7%
分析总结 30min 23%
posted on 2018-04-27 09:28 mushroom1111 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mushroomissmart/p/8960853.html

20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践相关推荐

  1. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  2. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践

    20155314 2016-2017-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统 ...

  3. 20145326蔡馨熠 实验三 敏捷开发与XP实践

    20145326蔡馨熠 实验三 "敏捷开发与XP实践" 程序设计过程 一.实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 1.git上传代码 首先我通 ...

  4. 20155231 实验三 敏捷开发与XP实践

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

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

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

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

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

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

    20175212童皓桢 实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 一.Code菜单功能的研究 Move Line/statement Down/Up:将某 ...

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

    目录 实验三 敏捷开发与XP实践-1 实验步骤 实验截图 实验三 敏捷开发与XP实践-2 实验步骤 实验截图 代码链接 实验三 敏捷开发与XP实践-3 实验步骤 实验截图 代码链接 实验三 敏捷开发与 ...

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

    20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告 码云博客链接 https://gitee.com/dky20175312/dky_20175312_warehouse_ ...

最新文章

  1. c++Primer再学习-练习Todo
  2. Android Gradle 学习笔记(四):Gradle 构建脚本
  3. 疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...
  4. 教程:正确的SLF4J日志记录用法以及如何检查它
  5. 重启开源,分享无限--微软面试187题精选
  6. 双11特刊|购物车实时显示到手价,看云原生内存数据库Tair如何提升用户体验?
  7. 两图说明 java 开发工具中启动类参数都是干嘛的
  8. settings.xml的配置
  9. sqlsever 导入大数据sql文件
  10. 以太坊上DeFi协议总锁仓量突破190亿美元
  11. Pure-ftpd无法连接到服务器 425错误
  12. 从0开始安卓开发之路_Android Studio安装包
  13. 学术 | 如何写一篇合格的NLP论文
  14. 删除python读取的txt每一行尾部的\n
  15. 阶段3 1.Mybatis_03.自定义Mybatis框架_4.自定义mybatis的编码-解析XML的工具类介绍
  16. 迈高图手机版_迈高图(地图数据下载器)
  17. ele饿了么表单验证的校验提示突破v-if的限制
  18. Unity Shader appdata详解
  19. 必须重启计算机才能关闭用户账户控制,Win10系统怎么彻底关闭用户帐户控制?...
  20. 计算机专业英语谐音大全,英语单词谐音记忆法汇总整理

热门文章

  1. 二维数组中最大连通子数组
  2. 1022. Digital Library
  3. XML读写演示程序(2)
  4. onload、DOMContentLoaded、$(document).ready(fn)、$(document).load(fn)
  5. 牛客网模拟笔试——膨胀的牛牛(JavaScript)
  6. ES6——变量的解构赋值
  7. 计算机网络学习笔记(17. 计算机网络作业一)
  8. html中h标签可包含a标签,HTML中H标签P标签(Paragraph)img标签(image)a标签(anchor)
  9. python应聘的职位_Python学到哪种程度可以去应聘相关的职位了?
  10. 股票卖出以后可以立即把钱转出吗?