(201421123002 翁珊;201421123006 黄月梅;201421123007 徐晓珊)
题目要求:
- 结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间(分钟),并在过程中统计实际耗时(分钟),最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
- 继续两人结对协作,把编码规范、领航员和驾驶员角色互换做到位。
- 单元测试: 有单元测试保证,有代码覆盖率。
需求分析:
1.把计算模块提取出来,单独创建一个类。
计算模块单独成类Calc:
package happy; public class Calc{ static int getGCD(int i, int j) //求最大公约数 { int temp; while (i % j != 0) { temp = i % j; i = j; j = temp; } return j; } static String Reduction(int i, int j) { String k; if (j == 1) { k = i + ""; } else { k = (i) + "" + "/" + (j) + ""; } return k; } static boolean compare(String a, String b) //比较输入值与答案 { if (a.equals(b)) {System.out.println("回答正确"); return true;} else { System.out.println("回答错误,正确答案是" + b); return false; } } }
2.针对提取出来的计算类的接口函数做单元测试。
单元测试代码如下:
package happy; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class CalcTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testGetGCD() { assertEquals(Calc.getGCD(10, 5), 5); } @Test public void testReduction() { assertEquals(Calc.Reduction(9, 5), "9/5"); } @Test public void testMain() { } }
单元测试结果:
代码覆盖率:
描述测试过程中遇到的问题以及解决的方案:
测试中的除零错误,由于我们一开始在程序设计的时候就设定了出书的值不为零,所以不会出现不能除的情况。对于两个运算符的情况也是,在程序设计的一开始就设定只能生成一个运算符,所以不会出现类似a++的情况。
小结与感受:通过测试,是否有效发现了程序计算模块的问题,并给予改进?
因为模块是根据助教发的写的,所以将自己原先的程序给拆解开来,并删除了一些没有必要的类,例如:GUI。再进行的单元测试。在拆解的过程中使得程序出现了很大的改变,程序在测试的时候出现了很多的问题。但是实在是由于我们组的编程能力有限,时间也是很有限,使得很多问题没有的到有效的解决,希望自己的编程能力能够有所提高。至少在目前,这种做作业还是有很大的难度,需要投入很大的精力,却得不到理想的效果。
隔周看之前的代码:
(1)良好的设计:在开始设计程序的时候就要进行合理地规划。对程序的功能进行合理地划分,这样后期对程序功能的完善跟扩充更加具有弹性。
(2)编码规范:在定义的时候尽量避免使用a,b,c等无意义的变量,会影响在后序实验过程中的代码阅读和理解。
(3)必要的注释:在写程序时需要进行必要的注释的填写,会帮助后期对程序总体框架的了解。而且程序不仅仅是给自己看的,也要让别人能够理解,从这点上说,注释还是很有必要的
git克隆助教的框架:
git上交截图:
coding链接:
https://coding.net/u/watermelon123/p/homework3/git
结对照片:
PSP表格:
PSP2.1 |
Personal Software Process Stages |
Estimated Time(hour) |
Actual Time (hour) |
Planning |
计划 |
0.5 |
0.5 |
· Estimate |
估计这个任务需要多少时间 |
10 |
12 |
Development |
开发 |
5 |
6 |
· Analysis |
需求分析 (包括学习新技术) |
1 |
1.5 |
· Design Spec |
生成设计文档 |
1 |
1 |
· Design Review |
设计复审 |
1.5 |
2 |
· Coding Standard |
代码规范 |
0.5 |
0.5 |
· Design |
具体设计 |
2 |
2 |
· Coding |
具体编码 |
4 |
4.5 |
· Code Review |
代码复审 |
0.5 |
0.5 |
· Test |
测试(自我测试,修改代码,提交修改) |
0.5 |
1 |
Reporting |
报告 |
0.5 |
0.5 |
· |
测试报告 |
1/6 |
1/6 |
· |
计算工作量 |
1/6 |
0.5 |
· |
并提出过程改进计划 |
0.25 |
0.25 |