软工实践第二次作业
前言
- 这是第一次项目实战
中途有很多次退选的想法,后面又不太想认输,就坚持做了下来
(1) 我Fork的同名仓库的Github项目地址
https://github.com/howtoloveyou/personal-project
(2) PSP表格记录估计将在程序的各个模块的开发上耗费的时间
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 40 · Estimate · 估计这个任务需要多少时间 20 40 Development 开发 1200 1400 · Analysis · 需求分析 (包括学习新技术) 200 250 · Design Spec · 生成设计文档 60 80 · Design Review · 设计复审 30 20 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20 · Design · 具体设计 40 30 · Coding · 具体编码 700 740 · Code Review · 代码复审 20 60 · Test · 测试(自我测试,修改代码,提交修改) 120 200 Reporting 报告 90 100 · Test Repor · 测试报告 20 15 · Size Measurement · 计算工作量 10 15 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 60 70 合计 1310 1540
(3) 计算模块接口的设计与实现过程
我的代码包括了一个名为Count的类,在这个类中包含了结构体的定义,结构体的构造函数,还有四个函数,分别为统计字符数目的函数,统计单词数目的函数,对结构体进行排序的函数,对结构体进行输出操作的函数。在统计单词数目时,遇到未录入结构体的单词会进行添加操作。在排序函数中,会将出现次数多的单词上浮,遇到出现次数相同的单词会将字典序靠前的单词提前。
私以为自己的函数比较简单,切参考了网上诸多优秀的博客代码,无独到之处。
代码将文本划分为一行一行进行检查,并且使用 istringstream()将单词之间按空格划分开来,但我也考虑了一些额外的情况,例如 beautiful. 加入结构体时应该为 beautiful 而非 beautiful.
(4) 计算模块接口部分的性能改进
我在统计字符的函数中将所有的字符统一转化为小写,这样规避了很多问题。通过尽可能少的循环来改进函数,这是我的改进方式。
(5) 计算模块部分单元测试展示。 展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(5')
测试内容 | 测试模块 | 测试结果 |
---|---|---|
输出单词均为小写 | 词条统计 | 修改后通过 |
输出单词最多十个 | 词条排序 | 通过 |
输出单词按字典序输出 | 词条排序 | 通过 |
结尾有标点的单词正常输出 | 词条统计 | 修改后通过 |
输出的字符数中包含换行 | 字符统计 | 通过 |
单词前三位要为英文 | 词条统计 | 修改后通过 |
给定单词过长 | 词条统计 | 通过 |
输出行数不含无效行 | 词条统计 | 通过 |
相同含义大小写单词按一个统计 | 词条统计 | 修改后通过 |
没有文本信息 | 词条统计 | 通过 |
- 这里挑选修改后通过的测试进行展示:
(6) 计算模块部分异常处理说明
- 一,没有单词
- 二,单词过长
(7) 个人所获
这是我的第一次单人项目,还是比较享受发现问题,解决问题的过程的。通过这次的项目,学到了使用命令行参数执行代码的方法,学会了使用getline来逐行分析文档,这是我之前未曾学过的内容。接下来就是结对项目了,我有信心和队友完成好接下来的任务,fighting!