软件工程第四次作业——结对编程
一、结对编程队友
GITHUB地址 | https://github.com/xxxy7280/WordCount |
---|---|
结对编程队友 | 201831061307 |
好友博客 | https://www.cnblogs.com/xxxy7280/p/11660510.html |
二、psp表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟 | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多长时间 | 3天 | 5天 |
Development | 开发 | 60 | 80 |
Analysis | 需求分析(包括学习新技术) | 30 | 45 |
Design Spec | 生成设计文档 | 60 | 80 |
Design Review | 设计复审(和同事审核设计文档) | 30 | 35 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 10 | 15 |
Design | 具体设计 | 30 | 30 |
Coding | 具体编码 | 600 | 720 |
Code Review | 代码复审 | 60 | 80 |
Test | 测试(自我测试、修改代码、提交修改) | 120 | 130 |
Reporting | 报告 | 30 | 40 |
Test Report | 测试报告 | 30 | 50 |
Size Measurement | 计算工作量 | 20 | 30 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 60 | 55 |
合计 | 1170 | 1420 |
三、结对编程
1、计算模块接口的设计与实现过程
思维导图
除主函数外,此程序设计了六个基本模块,
Characres():实现字符统计
Word_s():统计单词
Line():统计行数
All():实现所有输出功能
Output():输出结果到文件
对关键函数-统计词频函数按如下思维
2、代码复审
代码规范:
1、在进行变量名和函数名的定义的时候加上必要的注释,注明其作用与功能
2、在函数代码中,在必要的地方添加说明,便于理解查错
3、全局变量必须定义在开头,使用时便于知道其意义
4、缩进时使用tab键(有的时候需要自己缩进)
5、括号的使用很有必要,标注优先级
6、再给变量赋值时,一个变量一行
7、再有意义相同变量时,在其结尾添加数字用于区分
参考网址:C语言代码规范(编程规范)
两人互审中发现的问题:
我:
1.定义变量时有时候不解释其意义
2.关键功能处不加以说明,同伴阅读困难
3.有的时候忘了缩进,代码不雅观
队友:
1.多定义了一些变量,未使用也未删除
2.编写函数时不解释其功能
3、效能分析及其改进
效能分析图片
改进
从图片上分析来看,算是达到了预期,也尝试过进行改进,但都没有什么办法可以有效地改进(知识面狭窄)。
4.计算模块单元测试
计算模块部分单元测试展示
测试单词个数
此时向Word_s中添加如下代码
errno_t err;
err = fopen_s(&fp, "D:\\WordCount\\201831061307\\Count\\input.txt", "r+");
测试代码:
#include "stdafx.h"
#include "CppUnitTest.h"
#include"D:\WordCount\201831061307\Count\Count\Count.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace CountUnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
Cal x;
int count = 107;
Assert::AreEqual(x.Word_s(),count);// TODO: 在此输入测试代码
}
};
}
测试行数
TEST_METHOD(TestMethod3)
{
Cal x;
int count = 5;
Assert::AreEqual(x.Lines(), count);// TODO: 在此输入测试代码
}
测试字符数
TEST_METHOD(TestMethod2)
{
Cal x;
int count = 505;
Assert::AreEqual(x.Characters(), count);// TODO: 在此输入测试代码
}
5、单元测试异常介绍
这里直接使用队友的博客https://www.cnblogs.com/xxxy7280/p/11660510.html
6、结队编程过程
这一次作业,两个人全程交流,一起解决问题,发现问题,但也各自承担着应有的责任,从分析到作业结束两个人一直参与。
四、总结
在这次结对编程中,两个人的力量确是也比一个人大得多,虽然也有困难,但两个人解决困难总归要比一个人解决困难来的快来的轻松,但就我个人而言,算是拖了队友的后腿(差点就把腿拖断了),在这里我要感谢我的队友,感谢大哥带我学习。从队友那里我也学到了不一样的解决问题的思路,真切的感受到了1+1>2的感觉