GIT地址 | git地址 |
---|---|
结对伙伴 | 201831061218 +201831061220 |
伙伴学号 | 201831061220 |
伙伴博客地址 | 伙伴博客地址 |
一.PSP表格
PSP2.1 | Personal Software Process Stages | ||
---|---|---|---|
·Planning | 计划 | 预估耗时(分钟) | 实际耗时(分钟) |
·Estimate | · 估计这个任务需要多少时间 | 1400 | 1500 |
·Development | 开发 | 1300 | 1290 |
·Analyse | · 需求分析 (包括学习新技术) | 50 | 80 |
· Design Spec | · 生成设计文档 | 60 | 80 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 40 | 30 |
Design | · 具体设计 | 100 | 120 |
Coding | · 具体编码 | 700 | 800 |
· Code Review | · 代码复审 | 60 | 50 |
Test | · 测试(自我测试,修改代码,提交修改 | 100 | 100 |
Reporting | 测试报告 | 30 | 30 |
· Test Report | · 测试报告 | 30 | 20 |
· Size Measurement | · 计算工作量 | 40 | 40 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 30 |
合计 | 1700 | 1900 |
二.接口实现和过程设计
设计
见如下思维导图
因为这个结对编程作业篇幅有点长,我和我的伙伴通过一起慢慢读题,搞了好久才读懂题目,然后画出思维导图,当把思维导图画出来后,我们就感觉此次作业的需求一目了然,以及两人对代码的分工合作变得清晰很多。
各类关系
count里面装了完成程序的函数。
main里面执行主函数,集成所有功能。接受字符“-i,-o,-m,-n”,根据不同的字符来执行不同的功能。这个功能因为时间有限,加上我们两个都不太懂命令行传参的形式运行,很遗憾没能完成
实现
关键函数:
void charsum();//统计字符数
void cizu();//统计单词总数
void line();//统计有效行数
void sum();//统计前十高频词汇并且以小写格式输出
工程里面主要文件:
我们两个通过讨论,以及根据作业要求分析,初步将几个功能模块确定下来,分别分配给两个人,然后分工完成自己的功能模块,最后两个人一起写main.cpp从而进行汇总。
三.代码复审
在复审途中,存在最多的就是这个错误,多个cpp中定义了同一个变量。
解决方法是我们将重复命名的变量进行了修改。
四.程序分部运行结果
字符统计:统计文中字符总数
有效单词统计:统计单词长度大于3的数量
行数统计:统计有效行数
词频统计:频率最多的十个单词输出单词和词频
将运行结果录入到text.txt中
最后将每个功能模块汇总,实现截图:
五.单元测试
效能分析
可以从图中看出,cpu占比最多的那部分就是完成高频词统计那一块儿,我们两个认为这是因为存在多个字符串比较。
样本分析报告
六.结对过程及我的感想
这次结对编程并不顺利,中途遇到很多问题,一开始读题都读不懂,很我的伙伴花了很长时间才明白作业内容,因为没用过命令行参数输入,也查了很多资料学习,但是因为时间关系也没能把它做好,感觉很遗憾。
在此特别感谢我的伙伴,我们在调试bug的时候,两个人一起合作,相互鼓励,互相指点,解决了许多bug。这让我真切地感受到1+1>2。此外,不仅是技术方面伙伴能够提供非常大的帮助,在精神层面上,伙伴间也能相互鼓励,还能弥补一个人思维的局限性,让两个人对问题想得更加全面。这次作业让我意识到自己有多么多么的菜,需要学的东西还有很多啊,希望自己能永远不忘最初时的热爱,最后也能不负期许。