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%

20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

    20155324 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 1.XP核心实践 2.相关工具 实验步骤 敏捷开发与XP 1.敏捷开发(Agile Developme ...

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

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

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

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

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

    20155233 <Java程序设计> 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤与内容 1.在IDEA中使用工具(Code->Reformat ...

随机推荐

  1. Php文件上传类class.upload.php

    简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...

  2. PI Square中文论坛: PI SDK 开发中级篇| PI Square

    注: 为了更好的利用站内资源营造一个更好的中文开发资源空间,本文为转发修正帖,原作者为OSIsoft技术工程师王曦(Xi Wang),原帖地址:PI SDK 中级篇 来源:https://d.gg36 ...

  3. [视频播放] HLS协议之M3U8、TS流详解

    本文转载自:<hls之m3u8.ts流格式详解> HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部 ...

  4. java统计文件字母大小写的数量练习

    import java.io.*; import java.lang.*; public class WordStatistic { private BufferedReader br; privat ...

  5. 使用socket.io client 开发时兼容IE低版本的办法

    使用socket.io client 开发时兼容IE低版本的办法 socket.io提供了针对各个版本浏览器的‘socket’功能的封转:websocket,长连接,流,flash什么的.给你格式化下 ...

  6. ALGO-115_蓝桥杯_算法训练_和为T(枚举)

    问题描述 从一个大小为n的整数集中选取一些元素,使得它们的和等于给定的值T.每个元素限选一次,不能一个都不选. 输入格式 第一行一个正整数n,表示整数集内元素的个数. 第二行n个整数,用空格隔开. 第 ...

  7. gcc同时使用动态和静态链接

    场景是这样的.我在写一个Nginx模块,该模块使用了MySQL的C客户端接口库libmysqlclient,当然mysqlclient还引用了其他的库,比如libm, libz, libcrypto等 ...

  8. Java知识之运算符篇

    运算符 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. 赋值运算符:=.+=.-=.*=./=.%=.&=.|=.~=.^=.<<=.>>= . &g ...

  9. 问题 B: 【例9.3】求最长不下降序列(基础dp)

    问题 B: [例9.3]求最长不下降序列 时间限制: 1 Sec  内存限制: 128 MB提交: 318  解决: 118[提交][状态][讨论版][命题人:quanxing] 题目描述 设有由n( ...

  10. Flume原理解析【转】

    一.Flume简介 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generati ...