标签(空格分隔): 软件工程html
戴志斌(201521123083)博客:http://www.cnblogs.com/daizhibin/
黄华林(201521123082)博客:http://www.cnblogs.com/moyi-h/
结对编程码云地址:https://gitee.com/smoyi/softwarePairingProject
原源代码地址:https://coding.net/u/Belong033/p/java-third/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
通过咱们两我的协商,决定将题目的客观题答案进行比较留下比较好的回答,而后主观题按照本身的理解做答。java
ANSWER:
python
ANSWER:
单元测试以下:
测试覆盖率:
git
ANSWER:
1.不能实现负数的加减乘除;
2.不能实现3个数字以上的加减乘除;
3.不能实现乘方的功能;
4.不能实现括号的功能;
5.不能实现小数的加减乘除;
6.没法自动生成计算式并完成计算
7.代码重复量,出现代码逻辑泥球程序员
ANSWER:
单元测试须要本身修改,由于咱们用python进行重构了,单元测试确定要修改,测试用例因为功能增长也要增长。express
增长一个运算符,程序应该有怎样的改变?不得不扔掉所有重写么,仍是能够只改部分模块?基于模块化设计的思想,考虑在现有程序中作什么样的修改,才能让程序更好地实现新的需求
ANSWER:
咱们决定用python进行重构来更方便实现新的需求。编程
def generExpress(): express = list() express.append(str(random.randint(-10,10))) for i in range(random.randint(1,5)): if "^" not in express: oper = random.choice(['+','-','*',"/","^"]) else: oper = random.choice(['+','-','*',"/"]) express.append(oper) if oper == "^": express.append(str(random.randint(1,5))) else: express.append(str(random.randint(1,3))) if "+" not in express and "-" not in express: return "".join(express) index = -1 while index == -1: try: index = express.index(random.choice(["+","-"])) except: index= -1 express.insert(index-1,"(") express.insert(index+3,")") return "".join(express).replace("--","+").replace("+-","-")
def parseExpress(Express): Express=Express.replace("^","**") # print(Express) try: return eval(Express) except Exception as e: return "Error"
程序一次运行生成的题目不能重复,即任何两道题目不能经过有限次交换+和×左右的算术表达式变换为同一道题目。例如,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,它们之间不能经过有限次交换变成同一个题目。用符号^表示乘方,例如:4^2=16app
ANSWER:
以下python代码实现:
dom
ANSWER:
1.单元测试图片以下:
2.覆盖率测试以下:
3.在开发新功能时避免损坏旧的功能,以确保新的功能不与原有功能冲突,在确认修改的功能正确以后再签入代码。
<1>效能分析工具:http://www.oschina.net/p/jprofiler ,使用方法: http://www.cnblogs.com/bjlhx/p/6668888.html
ANSWER:
1,Telemetries 监控信息
查看JVM的运行信息
2,Live memory 内存剖析
JProfiler 的内存视图部分能够提供动态的内存使用情况更新视图和显示关于内存分配情况信息的视图。全部的视图都有几个汇集层而且可以显示现有存在的对象和做为垃圾回收的对象。
(1)知足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html
ANSWER:
<1>咱们两我的要有口头上的沟通:“好的,咱们一块儿在开发中遵照一块儿承认的编码规范”,按照编码标准和规范进行分模块编码。
<2>使用工具:
checkstyle http://blog.csdn.net/maritimesun/article/details/7668718
Findbugs
PMD
<3>请根据构建之法书上编码规范里提到的那些要点整理一份大家在结对编程时使用的代码规范,把大家约定的编码规范文档也提交到码云
(2)代码复审:
参考:http://drysaltery.com/2015/06/15/Rainy-Days/
(3)给人提意见的方式——送一个汉堡包
参考:http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html
(4)理解领航员和驾驶员两种角色关系,并在结对编程中两我的轮流作对方的角色。两人都必须参与本次做业的编码工做,并在git提交日志上体现这点。
码云提交记录:
PSP2.1 | 我的开发流程 | 预估耗费时间(分钟) | 实际耗费时间(分钟) |
---|---|---|---|
lanning | 计划 | 15 | 10 |
· Estimate | 明确需求和其余相关因素,估计每一个阶段的时间成本 | 15 | 10 |
Development | 开发 | 90 | 100 |
· Analysis | 需求分析 (包括学习新技术) | 10 | 15 |
· Design Spec | 生成设计文档 | 15 | 15 |
· Design Review | 设计复审 | 5 | 10 |
· Coding Standard | 代码规范 | 5 | 5 |
· Design | 具体设计 | 10 | 10 |
· Coding | 具体编码 | 30 | 30 |
· Code Review | 代码复审 | 5 | 5 |
· Test | 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 10 | 8 |
· | 测试报告 | 5 | 4 |
· | 计算工做量 | 2 | 1 |
· | 并提出过程改进计划 | 3 | 3 |
ANSWER: 结对编程,有利于两我的对于同一个项目的交流。由一开始拿到项目时的需求分析,两我的都会不一样的想法,经过协商和交流,达成共同的想法。因为两我的的代码规范有些许不一样,经过统一规范,能够达到代码风格一致。在重构的过程当中两我的能够交替更换领航员和驾驶员的身份,更有利于完善项目需求。在这期间咱们两我的都有本身的PSP,可以按照实际状况完成填写,我以为这个表格有利于更好地完成项目。结对编程,对于咱们学生来讲可能更重要的是一点是互帮互助,因此效果多是1+1=2左右,而对于未来从事开发并具备必定水平的程序员来讲,1+1>2。