第三次作业 结对编程
结对编程完成WordCount
合作者:201731062301 201731062304(学号)
本次作业链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882
一.Github项目地址及作业地址
1.结对使用的Github项目地址:https://github.com/qili12/WordCount.git
2.结对伙伴的作业地址:https://www.cnblogs.com/qi-li/p/10656808.html
二.结对过程及填写PSP表格
1.结对过程
先找好结对的小伙伴,阅读作业内容及要求,再进行商讨、做好分工以及填写 PSP表格中的预估耗时部分。本人负责实现基础功能,结对伙伴在本人的基础上负责实现新功能。完成后进行代码复审、单元测试、效能分析。
下图为两人结对编程照片:
2.填写PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
45 |
45 |
· Estimate | · 估计这个任务需要多少时间 | 45 | 45 |
Development |
开发 |
910 |
1295 |
· Analysis | · 需求分析 (包括学习新技术) | 45 | 60 |
· Design Spec | · 生成设计文档 | 30 | 45 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
· Design | · 具体设计 | 45 | 60 |
· Coding | · 具体编码 | 600 | 800 |
· Code Review | · 代码复审 | 60 | 90 |
· Test | · 测试(自我测试,修改代码,提交修改) | 80 | 150 |
Reporting |
报告 |
90 |
115 |
· Test Report | · 测试报告 | 30 | 45 |
· Size Measuremen | · 计算工作量 | 25 | 25 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 35 | 45 |
合计 |
1045 |
1455 |
总结分析:在本次项目完成后,发现预估时间和实际时间相差很大,主要表现在开发阶段,其中又主要集中在具体编码和测试、修改中。在具体编码过程中困难重重,比如统计单词总数和‘!’、‘?’等字符需要用到正则表达式。于是上网查资料并对正则表达式的使用进行了学习,又如,统计词频并按频率由高到低、字母表顺序输出,需要用到Dictionary。在后期的代码复审以及修改也花了较多时间。
三.解题思路
1.基础功能
项目要求:统计文件字符数、单词总数、有效行数以及统计词频并按照频率由高到低、字母表顺序输出。
(1)统计字符:即统计整个字符串的长度;
(2)统计行数:将文件字符一行行传入来统计行数;
(3)统计单词总数:采用正则表达式进行判断单词是否符合要求,若符合,则用列表存储;
(4)统计词频并按照频率由高到低、字母表顺序输出:用Dictionary。
2.新功能:结对伙伴博客
四.设计实现过程(见结对伙伴博客)
五.制定的代码规范(见结对伙伴博客)
六.改进(见结对伙伴博客)
七.代码说明(见结对伙伴博客)
八.单元测试(见结对伙伴博客)
九.收获
在本次结对编程过程,发现1+1>2,开发效率明显提高。在知识方面学习到很多,在结对伙伴的身上也学到很多。
1.编程方面:比如,在统计单词总数时,一起查资料,学习正则表达式的使用;
2.单元测试:本人学会了写单元测试;
3.对GitHub的push操作更加的熟练;
4.对自己的要求更高了。