软工网络16个人作业2
1:码云项目地址
https://gitee.com/Lunter-zst/PersonalProject-Java
2:PSP表格
PSP2.1 | 个人开发流程 | 预估耗费时间(分钟) | 实际耗费时间(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 6 |
· Estimate | 明确需求和其他相关因素,估计每个阶段的时间成本 | 3 | 0 |
Development | 开发 | 180 | 150 |
· Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | 生成设计文档 | 10 | 5 |
· Design Review | 设计复审 | 10 | 10 |
· Coding Standard | 代码规范 | 0 | 0 |
· Design | 具体设计 | 30 | 10 |
· Coding | 具体编码 | 90 | 80 |
· Code Review | 代码复审 | 10 | 3 |
· Test | 测试(自我测试,修改代码,提交修改) | 20 | 50 |
Reporting | 报告 | 10 | 10 |
· | 测试报告 | 5 | 2 |
· | 计算工作量 | 5 | 2 |
· | 并提出过程改进计划 | 3 | 1 |
3:解题思路描述
- 看到题目是统计单词个数,于是想到学Java时写过一个类似的程序(依次输入若干单词然后给出出现次数最多的几个单词)。那个程序使用了map,于是想到用map来写。
- 从文件读取即用到文件的输入输出流。使用readLine()函数依次按行读取,以行作为基本单位进行操作。
- 在每行中按空格、符号等进行分割出单词,然后对每个单词进行相应的判断再将他们入map。
- 最后将map中的键值对按要求进行输出即可。
- 要求中的字符数可以通过读取每行的长度相加获得,单词数则可以通过对分割后的单词进行计数获得,行数则在进行readLine时加一即可。
4:代码说明
-
进行字符数、单词数及行数的统计
-
对map进行输出
5:单元测试
- 对大量数据文件进行测试
-
对存在空白行的文件进行测试
-
对空文件进行测试
6:代码覆盖率
7:心路历程与收获
- 刚开始看见题目我发现好像写过于是准备偷懒翻出以前的代码进行改造,改着改着发现以前的代码完全不能满足这次的需求,最终推翻全部的代码重新来写。
- 在进行单词数统计代码编写时,判断是否存在下一行时使用了read()函数,结果进行测试时发现每次字符数都会比正确的少,我以为是换行符等问题造成的,查了半天才发现是因为read()在进行判断时会"吃掉"首字符,于是改用readLine()结果就正确了。
- 通过这次实验的单元测试及代码覆盖率测试让我知道了一个好的程序不单单要能够运行,还要考虑他的各种性能。还学会了从计划到开发再到测试等各项工程来完成一个项目,使得项目的开发更完整化,也更贴近现代企业里的开发流程。