成员
201521123060 邹其元 [个人博客地址:(http://www.cnblogs.com/zq1996/)]
201521123075 江鹭涛 [个人博客地址:(http://www.cnblogs.com/tt1104/)]
题目要求:
1.改进现有代码
分析网络14部分现有程序代码(请选择其中一个)
个人博客地址1:http://www.cnblogs.com/weihui-01 ,源代码:https://coding.net/u/weh/p/software-testing/git
个人博客地址2:http://www.cnblogs.com/belong033 ,源代码:https://coding.net/u/Belong033/p/java-third/git
个人博客地址3:http://www.cnblogs.com/zenglijun ,源代码:https://coding.net/u/wjunren/p/TEST/git
个人博客地址4:http://www.cnblogs.com/shizhuangde ,源代码:https://coding.net/u/lhl1212/p/work2/git
个人博客地址5:http://www.cnblogs.com/NianQiFeng ,源代码:https://git.coding.net/qwx_hh/java-szys.git
原题目要求
http://www.cnblogs.com/happyzm/p/6472120.html
http://www.cnblogs.com/happyzm/p/6509116.html
http://www.cnblogs.com/happyzm/p/6558307.html
PSP | 个人开发流程 | 预估耗费时间 | 实际耗时 |
Planning | 计划 | 20 | |
Estimate | 明确需求和其他相关因素,估计每个阶段的时间成本 | 10 | |
Development | 开发 | 180 | |
Analysis | 需求分析 | 50 | |
Design Spec | 生成设计文档 | 30 | |
Design Review | 设计复审 | 30 | |
Coding Standard | 代码规范 | 30 | |
Design | 具体设计 | 30 | |
Coding | 具体编码 | 30 | |
Coding Reivew | 代码复审 | 30 | |
Test | 测试 | 30 | |
Reporting | 报告 | 30 | |
测试报告 | 30 | ||
计算工作量 | 30 | ||
并提出过程改进计划 | 30 |
重构
clone项目,在开发环境中运行该应用程序,修改完毕最后上传至码云,并在博客中给出链接
检查大部分主要类之间的关系,画出类图
浏览所有代码考虑代码质量和测试覆盖率
确定当前设计的一个弱点,通过重构,确保在这个地方已有测试覆盖并保证重构没有改变已有的功能
好的测试是重构的根本。检查已有代码的测试,看测试用例是否足够覆盖原代码,如果不足,请添加测试用例
降低代码重复量,找出代码逻辑泥球
当前程序是否支持多个操作符运算,如果不支持,请在源代码基础上进行改进,算法参考:https://www.cnblogs.com/dragondove/p/6445850.html
修改代码后,检查代码覆盖,看单元测试是否需要修改?测试用例是否需要增加?
参考
重构-靠谱程序员的必备技能:https://mp.weixin.qq.com/s/23a8BY_fP168GWLrGLJzrw
JUnit单元测试:http://www.cnblogs.com/happyzm/p/6482886.html
Java覆盖率统计:http://www.cnblogs.com/happyzm/p/6530384.html
2.功能改进与扩展
增加一个运算符,程序应该有怎样的改变?不得不扔掉全部重写么,还是可以只改部分模块?基于模块化设计的思想,考虑在现有程序中做什么样的修改,才能让程序更好地实现新的需求
增加括号操作符
减少重复题目
程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
3.在两人合作的过程中, 请看下面的内容
满足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
请重视这点,在开发时两个人要有口头上的沟通:“好的,我们一起在开发中遵守一起认可的编码规范”,按照编码标准和规范进行分模块编码。
工具:
checkstyle http://blog.csdn.net/maritimesun/article/details/7668718
Findbugs
PMD
当然,你也可以修改这份代码规范,前提是你要知道该规范的内容意义。关于这个,Google 也提供有一份在线文档,可供参考:https://google.github.io/styleguide/javaguide.html
请根据构建之法书上编码规范里提到的那些要点整理一份你们在结对编程时使用的代码规范,把你们约定的编码规范文档也提交到git
参考:http://drysaltery.com/2015/06/15/Rainy-Days/
给人提意见的方式——送一个汉堡包http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
理解领航员和驾驶员两种角色关系,并在结对编程中两个人轮流做对方的角色。两人都必须参与本次作业的编码工作,并在git提交日志上体现这点。