一、Coding.Net项目地址:

       https://git.coding.net/verde/Pair_Work.git

二、对接口进行的设计

看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的。

如下图SRC的目录结构:

如图一共有以下四个包:

web结对项目-LMLPHP

三、计算模块接口的设计与实现过程

           设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。

图片较小,右键点击图像 ---> 查看图像即可看大图:

见上图src下目录结构↑↑↑

四、计算模块接口部分的性能改进

          记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图,并展示你程序中消耗最大的函数。

通过参数传值,类间调用等实现模块的对接(主要是Command类和Expression类)。内存消耗如图:分析可知相对稳定。

web结对项目-LMLPHP

最初由项目的Command。java右键Profile As,进入性能分析,其次打开JVM虚拟机(可以用教程的密码破解Frofile软件)。

然后进入Live memory,最初消耗变化如图:

web结对项目-LMLPHP

等待两分钟后,出现红色绿色并存现象:web结对项目-LMLPHP

还有不足,故进行性能优化处理后:

web结对项目-LMLPHP

五、计算模块部分单元测试展示

  展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。只需要测试命令行部分,且该部分覆盖率到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");;
}//获取文件
}

六、计算模块部分异常处理说明

在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景

web结对项目-LMLPHP

   /*
*增加用户
*/
@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开发30004000
 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

 

05-11 22:55