一、Coding.Net项目地址:
二、对接口进行的设计
看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的。
如下图SRC的目录结构:
如图一共有以下四个包:
三、计算模块接口的设计与实现过程
设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。
图片较小,右键点击图像 ---> 查看图像即可看大图:
见上图src下目录结构↑↑↑
四、计算模块接口部分的性能改进
记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图,并展示你程序中消耗最大的函数。
通过参数传值,类间调用等实现模块的对接(主要是Command类和Expression类)。内存消耗如图:分析可知相对稳定。
最初由项目的Command。java右键Profile As,进入性能分析,其次打开JVM虚拟机(可以用教程的密码破解Frofile软件)。
然后进入Live memory,最初消耗变化如图:
等待两分钟后,出现红色绿色并存现象:
还有不足,故进行性能优化处理后:
五、计算模块部分单元测试展示
展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。只需要测试命令行部分,且该部分覆盖率到90%以上,否则单元测试部分视作无效
package Function; import org.junit.Test;
import Entity.Lists; public class Tests { @Test
public void getList(){
Function fun = new Function();
fun.setSybNum(3);
Lists list = new Lists();
fun.createList(100,fun.getSybNum());
System.out.println(list.getExpArr());
}//由于没有和前台交互,这时候随便传了几个参数 @Test
public void getFile(){
Function fun = new Function();
fun.ReadFile("C://Users//apple//Desktop//ttt.txt","C://Users//apple//Desktop//www.txt");;
}//获取文件
}
六、计算模块部分异常处理说明
在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景
/*
*增加用户
*/
@Test
public void insertUsers(String nickname ,String password,String email) {
Users users = new Users();
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "INSERT INTO db_user(nickname,password,email) VALUE(?,?,?)";
ps = connection.prepareStatement(sql);
ps.setString(1, nickname);
ps.setString(2, password);
ps.setString(3, email);
ps.execute();
} catch (Exception e) {
System.out.println(e.getStackTrace());
} finally {
try {
connection.close();
ps.close();
} catch (SQLException e) {
System.out.println(e.getStackTrace());
}
}
}
/*
* 读取文件
* */ @Test
public void ReadFile(String fromUrl,String toUrl){
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(toUrl));
BufferedReader br = new BufferedReader(new FileReader(fromUrl));
String s = null;
for(int i=1;i<=100;i++){
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
bw.flush();
while((s=br.readLine())!=null){
System.out.println((String)s);
System.out.println("下一行");
}
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
/*
*查询所有的用户
*/
@Test
public List<Users> queryAllUsers() {
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Users> list = new ArrayList<Users>();
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM db_user";
ps = connection.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
Users users = new Users();
users.setId(rs.getInt("id"));
users.setNickName(rs.getString("nickname"));
users.setPassword(rs.getString("password"));
users.setEmail(rs.getString("email"));
list.add(users);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e){
e.printStackTrace();
}
}
return list;
}
七、界面模块的详细设计过程
在博客中详细介绍界面模块是如何设计的,并写一些必要的代码说明解释实现过程。(5')
右键点击图像 ---> 查看图像即可看大图:
八、界面模块与计算模块的对接
详细地描述UI模块的设计与两个模块的对接,并在博客中截图实现的功能。(4')
九、描述结对的过程
结对过程:
十、结对编程的优点和缺点
看教科书和其它参考书,网站中关于结对编程的章节,例如:
http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html
说明结对编程的优点和缺点。同时指出结对的每一个人的优点和缺点在哪里 (要列出至少三个优点和一个缺点)。(5')
十一、实际花费的时间
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 8 | 10 |
Estimate | 估计每个阶段的时间成本,并规划大致工作步骤 | 8 | 10 |
Development | 开发 | 3000 | 4000 |
Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 40 | 50 |
Design Review | 设计复审 (和同事审核设计文档) | 40 | 45 |
Coding Standard | 代码规范 (为目前的开发制定合适的规 范) | 30 | 40 |
Design | 具体设计 | 120 | 100 |
Coding | 具体编码 | 180 | 200 |
Code Review | 代码复审 | 150 | 150 |
Test | 测试(自我测试,修改代码,提交修改) | 90 | 90 |
Reporting | 报告 | 200 | 230 |
Test Report | 测试报告 | 120 | 150 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 60 |