软工作业--结对编程
软工作业 | 结对编程 |
---|---|
作业要求 | 结对编程 |
作业目标 | 实现一个自动生成小学四则运算题目的命令行程序 |
队伍成员 | 3118005421邱泽滨,3118005418卢敏聪 |
运行说明
Github地址
https://github.com/LDY1065/softwareEngineering
PSP表
PSP 各个阶段 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 20 | 25 |
Development | 开发 | 700 | 850 |
Analysis | 需求分析(包括学习新技术) | 40 | 40 |
Design Spec | 生成设计文档 | 30 | 25 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 40 | 55 |
Design | 具体设计 | 40 | 50 |
Coding | 具体编码 | 210 | 300 |
Code Review | 代码复审 | 90 | 100 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 75 |
Reporting | 报告 | 40 | 45 |
Test Repor | 测试报告 | 30 | 25 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem&Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 20 |
合计 | 1390 | 1670 |
效能分析
总概况
内存占用
CPU占用
各项目占用
设计实现
项目框架
项目结构
项目中的类 | 作用 |
---|---|
checkAnswerController | 接收请求,调用service中方法生成比对结果 |
newTestController | 接收请求,调用service中方法生成题目 |
checkAnswerService | 比对答案服务类 |
newTestService | 生成题目服务类 |
testFileProperties | 路径配置类 |
fraction | 分数处理类 |
FouroperationsApplication | 启动类 |
类之间的关系
代码说明
生成测试
public String newTest(int number,int resultLimit) {
List<String> subjects=new ArrayList<>();
List<String> answers=new ArrayList<>();
for (int i = 0; i < number; i++) {
switch (random.nextInt(20)%5){
case 0:
newAdd(subjects,answers,resultLimit,i+1);
break;
case 1:
newSubtraction(subjects,answers,resultLimit,i+1);
break;
case 2:
newMultiplication(subjects,answers,resultLimit,i+1);
break;
case 3:
newDivision(subjects,answers,resultLimit,i+1);
break;
case 4:
newFractional(subjects,answers,resultLimit,i+1);
break;
default:
break;
}
}
String testFileName=testFileProperties.getTestDir()+UUID.randomUUID().toString().substring(0,10)+".txt";
String answerFileName=testFileProperties.getTestDir()+UUID.randomUUID().toString().substring(0,10)+".txt";
File testFile=new File(testFileName);
File answerFile=new File(answerFileName);
try{
if(!testFile.exists()&&!answerFile.exists()){
testFile.createNewFile();
answerFile.createNewFile();
}
FileWriter testFileWriter=new FileWriter(testFile);
FileWriter answerFileWriter=new FileWriter(answerFile);
for (String subject : subjects) {
testFileWriter.append(subject);
testFileWriter.flush();
}
for (String answer : answers) {
answerFileWriter.append(answer);
answerFileWriter.flush();
}
testFileWriter.close();
answerFileWriter.close();
String zipName = compress(testFile, answerFile);
return zipName;
}catch (IOException e){
e.printStackTrace();
}
return null;
}
调用random方法生成随机数对5求模,生成加法、减法、乘法、除法以及分数运算。写入题目文件和答案文件,压缩为zip后返回前端
关键函数流程图
测试运行
输入空值
输入非数字值
生成100以内的10000道题目
比对答案
项目小结
得失总结
在合作完成项目时,应该注重一下代码注释的重要性,有了注释才可以让对方更快捷明白对方所写代码的内容。
在工作过程中应该加强双方之间的沟通
进行多种测试有助于完善代码
结对感想及闪光点
成员 | 感想 |
---|---|
邱泽滨 | 在这次作业中对于结对编程感触挺大,多一个人有利于互补,弥补一下自己的不足,而且队友有时的突发奇想也是可以填充项目的需求,同时也可以发现双方的不足,队友java基础稍弱,编程能力有待加强,希望他有更大的进步、 |
卢敏聪 | 结对编程有助于互补互助,两个人一起思考能充分的理解题目,对需求作充足的分析。这次我的队友有这较强的编程能力,对问题的思考有深度、广度,并且在做作业的过程的对我有着很大的帮助。在他的帮助下,我也发现了很多自己对于编程的不足之处,对于需求总是停留在最表面的层次,有很多问题都忽略了不考虑。我在各方面都有待加强。 |