博客信息 | 沈阳航空航天大学计算机学院2020软件工程作业 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10685 |
课程目标 | 熟悉一个“高质量”软件的开发过程 |
作业目标 | 结对编程练习 |
一:题目要求
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
(1)能够自动生成四则运算练习题;
(2)可以定制题目数量;
(3)用户可以选择运算符;
(4)用户设置最大数(如十以内、百以内等);
(5)用户选择是否有括号、是否有小数;
(6)用户选择输出方式(如输出到文件、打印机等);
(7)最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)。
二:任务分工
此次结对作业的任务分配为:
驾驶员:李德龙,负责编写代码,对同伴做出评价;
领航员:邓好,辅助驾驶员完成代码,设计单元测试用例,对同伴做出评价。
三:代码内容
1.结果显示
2.审查表
四:单元测试
1.选择测试工具
本次作业选择用C编写,利用VS2017自带的单元测试工具进行单元测试,VS2017单元测试基本框架如下:
#include "pch.h"
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
}
};
}
2.测试代码
#include "pch.h"
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
int op[7] = {1,9,5,2,2,8,5};
int fuhao = 1;
int maxnum = 10;
int smallnumber = 0;
int bracket = 0;
int printstyle = 0;
char fuhao [1] = { '+' };
char output[14] = { 0 };
int i=0,j=0;
if (smallnumber == 0)
{
if (printstyle == 0)
{
if (bracket == 0)
{
for (i = 0, j = 0; i < 14; i++, j++)
{
output[i] = op[j] + '0';
if (i < 14)
{
output[i + 1] = fuhao [j];
}
i++;
}
}
}
}
char result[14] = { '1','+','9','+','5','+','2','+','2','+','8','+','5','=' };
Assert::AreEqual(result, output);
}
TEST_METHOD(TestMethod2)
{
int op[7] = { 3,7,8,9,8,5,3 };
int fuhao = 1;
int maxnum = 10;
int smallnumber = 0;
int bracket = 0;
int printstyle = 0;
char fuhao [1] = { '+' };
char output[14] = { 0 };
int i = 0, j = 0;
if (smallnumber == 0)
{
if (printstyle == 0)
{
if (bracket == 0)
{
for (i = 0, j = 0; i < 14; i++, j++)
{
output[i] = op[j] + '0';
if (i < 14)
{
output[i + 1] = fuhao [j];
}
i++;
}
}
}
}
char result[14] = { '3','+','7','+','8','+','9','+','8','+','5','+','3','=' };
Assert::AreEqual(result, output);
}
};
}
3.测试结果
测试:
四:总结
1.对驾驶员的评价
李德龙的编码能力非常强,几乎可以在第一时间发现错误并改正。通过第一次结对编程中对他提出的问题在这次编程任务中也有了很大的改进,总体来说两次结对编程任务完成的都非常顺利。
2.总结
本次结对编程才让我真正的体会到合作的意义,这并不是单单的任务分配,而是非常考察两个人的思维和协作的契合性。
本次结对编程的担任的角色是领航员,驾驶员是李德龙。我们在编程初期对整个问题进行了初步分析,确定了编程方向以及想要实现的功能的具体参数后就开始进行编程了。在编程的过程中并没有遇到非常大的问题,编码过程中出现的一些小错误李德龙也能在第一时间将其纠正。进行代码测试时,因为有了第二次个人作业的经验,我省去了不少时间,尽可能快的进行测试路径的分析进而完成了代码的单元测试。整个编码过程以及测试过程都在预计时间内完成。
随着第二次作业的结束,结对编程任务接近尾声,在结对编程中提高的不仅仅了我的编码能力,分析能力,同时也提高了我的合作编程能力。在接下来的团队合作中,希望可以继续发挥自己所学,弥补自己的不足。
五:工作记录表
项目 | 预计 | 实际 |
---|---|---|
设计时间 | 2h | 1h40m |
编码时间 | 2h | 1h15m |
测试时间 | 40m | 40m |
代码行数 | 300 | 242 |
测试代码行数 | 100 | 77 |
错误数量 | 5 | 4 |
错误修复时间 | 1h | 30m |
开发总时间 | 5h40m | 4h5m |