homework-03
1.分工准备
这次的工作是结对编程,在第二次作业中我是使用python完成的作业,而小明是使用C完成的作业。因为打算使用动态链接库的方式将第二次的代码嵌入到本次的作业中,而python生成动态链接库不易实现,因此采用了小明的第二次代码。
因连通区域的解决方案在第二次作业中并没有实现,因此我们本次作业不能够实现解决联通区域的答案。本次作业的编码工作由小明同学来实现,鉴于他的代码能力比较强,并且本人并不是很擅长写图形界面。本次作业的要求也主要集中在实现一个UI,C#实现图形界面较为容易,所以最终我们决定用C#来实现本次作业。
2.具体思路
第三次作业乍一看好像和第二次差不多,但是经过仔细分析之后我们发现第3次作业中其实有一些难点。
难点1:第二次作业的代码不能直接使用,没有对最优子矩阵进行记录。因此我们需要对第二次的代码进行修改,将最优子矩阵记录,这样才能够满足显示最优子矩阵的要求。
难点2:保证只有一个界面在系统中运行,并且还要进行更新。这个要求是邹老师在上课时候建议大家实现的,这样才能够与实际的应用场景相符。C#对于这种情况的处理并不繁琐,这也是我们选择C#的原因之一。
3.实际编写
本次代码的编写工作并不容易,因最近本组两人都有一些额外的工作,所以我们本次代码的编写是在短时间内突击完成。鉴于一些细节问题,消耗时间不少。
4.测试功能
本次代码我们采取人工测试。
5.总结
这次是我们第一次采取结对编程的方式,可能在分工处理上并不得当。并且本次作业代码量并不是很大,结对编程也和之前接触到团队项目性质区别较大,结对编程的效果并没有很好的体现出来。但是,我们还是体会到了结对编程的意义所在,并且也希望能够加强对通过测试驱动开发这一概念的理解。相信经过多次磨合后,我们能够发挥出结对编程的效率。
6.问题
你的同伴有哪些优点 (列出至少三点), 和那些需要改进的地方 (列出至少三点)
优点:代码能力强,耐心高,配合能力好
缺点:较忙,不了解python等开发效率高的编程语言,结对编程经验较少(也是大家都存在的缺点)
你的代码从 作业2 到 作业3 经历了哪些变化? 哪些代码需要重构 (看关于代码重构的资料), 哪些需要重写, 为什么?
主要添加了记录最优子矩阵的代码,重写了返回值,将子矩阵也一起返回,方便主界面调用。
7、时间统计
Personal Software Process Stages |
时间百分比(%) |
实际花费的时间 (分钟) |
原来估计的时间 (分钟) |
计划 |
10% | 24 | 18 |
· 估计这个任务需要多少时间,把工作细化并大致排序 |
10% | 24 | 18 |
开发 |
85% | 204 | 153 |
· 需求分析 (包括学习新技术) |
15% | 36 | 27 |
· 设计复审 (和同事审核设计文档) |
10% | 24 | 18 |
· 代码规范 (制定合适的规范) |
5% | 12 | 9 |
· 具体设计 |
10% | 24 | 18 |
· 具体编码 |
35% | 84 | 63 |
· 代码复审 |
5% | 12 | 9 |
· 测试(自我测试,修改代码,提交修改) |
5% | 12 | 9 |
总结报告 |
5% | 12 | 9 |
总计 | 100% | 总用时 180 |