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% |
20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践的更多相关文章
- 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 20145213《Java程序设计》实验三敏捷开发与XP实践
20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"
20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...
- 20155324 《Java程序设计》实验三 敏捷开发与XP实践
20155324 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 1.XP核心实践 2.相关工具 实验步骤 敏捷开发与XP 1.敏捷开发(Agile Developme ...
- 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
20155314 2016-2017-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统 ...
- 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20155233 《Java程序设计》 实验三 敏捷开发与XP实践
20155233 <Java程序设计> 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤与内容 1.在IDEA中使用工具(Code->Reformat ...
随机推荐
- nginx给server增加日志配置
error_log /usr/local/nginx/logs/xxx.com.log debug; 放在 server { error_log /usr/local/nginx/logs/xxx.c ...
- 用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php
<?php $serv = new swoole_server("0.0.0.0", 9508); $serv->set(['worker_num'=>1 ...
- Complexity and Tractability (3.44) - The Traveling Salesman Problem
Copied From:http://csfieldguide.org.nz/en/curriculum-guides/ncea/level-3/complexity-tractability-TSP ...
- Action<T> Delegate
来源:https://docs.microsoft.com/zh-cn/dotnet/api/system.action-1?view=netframework-4.7.2 Action<T&g ...
- pytest.7.常见套路
From: http://www.testclass.net/pytest/common_useage/ 在使用pytest的时候,下面这些问题我们可能会经常遇到,这里给出官方的解决方案,按照套路来执 ...
- 测试教程网.unittest教程.1. 基本概念
From:http://www.testclass.net/pyunit/basic_concept/ unittest是python自带的单元测试框架,有时候又被称为”PyUnit”,是python ...
- JSON Web Tokens测试工具
JSON Web Tokens官方提供测试工具https://jwt.io某些静态资料需要链接google.twitter服务器,被墙无法访问.现在提供可以方法测试工具http://hingtai.c ...
- Scala集合类型详解
Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合 ...
- kafka 生产消费原理详解
Kafka日志及Topic数据清理 https://blog.csdn.net/qiaqia609/article/details/78899298 Kafka--Consumer消费者 pastin ...
- Java集合类分析,初始化
Java集合是常用的数据类型,在此详细分析接口和实现类.整个集合框架就围绕一组标准接口而设计,学习集合框架有助开发实践. 框架体系图 1.Collection 接口Collection 是最基本的集合 ...