作业地址 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882 |
GIT仓库地址 | https://github.com/G7777777y/WordCount |
二.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 20 | 20 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 300 | 450 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 60 |
· Design Spec | · 生成设计文档 | 20 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 40 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
· Design | · 具体设计 | 60 | 100 |
· Coding | · 具体编码 | 200 | 300 |
· Code Review | · 代码复审 | 40 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | 10 | 20 |
· Test Report | · 测试报告 | 30 | 40 |
· Size Measurement | · 计算工作量 | 20 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
| 合计 | 860 | 1220 |
3.计算模块接口的设计与实现过程。
定义了许多类,参数为文本的地址。输出分别输出计算文本的字符数,行数,单词数
算法设计思路关键:
1----对于linescount类,判断每行末端的字符是否符合换行类。是则行数加1。
2---charcount类,把每个字符,非空格或换行的字符个数累加。
3---wordcount类,判断起始字符是否为字母,然后循环后面的字符直到找到不是字母的字符,将这一组单词计入单词个数。
各个类函数的关系流程图:
4.代码复审过程
和队友对于每个函数的算法逻辑讨论检查中,发现检查word数的时候有可能出现单词同样的情况,但这种情况的单词数还是累加了进去。
这是逻辑设计上的错误,因此,我们修改了检查单词数种的判断逻辑,对于每个单词。先要判断这个单词之前是否已经录入过单词数量累加中。
因为这个改动,会使前面的每个单词的累加过程中先对该单词进行一个已经加入的标签标识。通过讨论修改最后解决了这个问题。
5.计算模块接口部分的性能改进
分析测试了性能图
发现函数判断单词个数的时间消耗最大:
通过队友一起讨论,改进了单词判断重复的逻辑,之前的逻辑是把找出的单词和之前找到的单词的每个字符一一比较。
改进后:
先判断该单词的个数在之前有没有相同个数的已经找到的单词,然后再找相同字符个数的单词进行比较,若发现一个单词不相同,则直接单词数加1
6.计算模块部分单元测试展示。
测试了分别单词数的统计,字符数的统计与行数的统计
构造测试数据的时候针对测试的函数,给出几个常规的数据和特殊的测试数据。
例如 and as ad AND
7.计算模块部分异常处理说明
8.描述结对的过程
结对的代码和设计一起共同讨论完成。编码主要由我负责,队友提出建议与逻辑修改。
共同商量改进了第5步等时间效率问题
总结:
通过这次的结对编程,队友发现了自己编程过程中的错误。这是一个人编程所很难发现的问题,这次结对编程发挥了团队的作用
在今后的学习生活工作中的合作也会非常多。合作的效率也会大于单人开发的的效率。感受到了合作的重要性和必要性
所有评论(0)