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. MeshLab显示纹理贴图

    共需要三个文件:obj文件.mtl文件及一张纹理图. 1.obj文件需要满足如下格式: 顶点 v 纹理坐标 vt 法线 vn 面片f Vertex1/Texture1/Normal1 Vertex2/ ...

  2. Kafka Stream

    Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature(当前:1.0.0-rc0,参见:https://github.com/apache/kafka/releas ...

  3. swoole创建工作进程,执行滞后工作

    一,创建守候进程,因为这里不需要Server,也没有Client,数据交换通过redis进行 <?php namespace Kuba\Saas; require_once __DIR__ . ...

  4. gtid error set test

    1.从库报主键重复(Errno: 1062)#create test data 1062create table t1 (id tinyint not null primary key,ename v ...

  5. [2]注解(Annotation)-- 深入理解Java:注解(Annotation)自定义注解入门

    转载 http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 深入理解Java:注解(Annotation)自定义注解入门 要深入学习 ...

  6. 跟着未名学Office - 熟练使用WORD

    目录 第一章.Word之编辑篇. 1 第一节 页面布局... 1 第二节 格式编辑... 1 第三节 表.图.域... 5 第四节 审阅.保护... 7 第五节 *插入对像... 9 第二章.Word ...

  7. PHP批量添加数据

    <?php // 连接数据库 header('content-type:text/html;charset=utf-8'); define('DB_HOST','127.0.0.1'); def ...

  8. android开发实践之1:安装部署环境设置

    一.安装包 1.andorid studio: 2.Java sdk: 二.操作步骤 1.安装Java SDK: 2.安装android studio; 3.创建Helloword工程并运行:遇到问题 ...

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

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

  10. Java-学习-喜欢-品牌:互联网公司成为动物园,拟人化品牌形象真的那么有意思?

    ylbtech-Java-学习-喜欢-品牌:互联网公司成为动物园,拟人化品牌形象真的那么有意思?  1.返回顶部 1. 当我们在思考如何在这个碎片化.多元化的时代找到真实的.不被标签的自我时,互联网中 ...