1、Github项目地址:https://github.com/Ahusbj/PairProject2018
2、PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
180 |
|
· Estimate |
· 估计这个任务需要多少时间 |
||
Development |
开发 |
120 |
180 |
· Analysis |
· 需求分析 (包括学习新技术) |
10 |
10 |
· Design Spec |
· 生成设计文档 |
||
· Design Review |
· 设计复审 (和同事审核设计文档) |
20 |
20 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
||
· Design |
· 具体设计 |
20 |
20 |
· Coding |
· 具体编码 |
80 |
120 |
· Code Review |
· 代码复审 |
||
· Test |
· 测试(自我测试,修改代码,提交修改) |
20 |
20 |
Reporting |
报告 |
||
· Test Report |
· 测试报告 |
10 |
10 |
· Size Measurement |
· 计算工作量 |
||
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
50 |
60 |
|
合计 |
330 |
440 |
思路:3、解题思路描述
(1)对于统计字符和行数来说,首先通过遍历文档找中每一个字符(符合特定ASCII范围)和换行符的个数,从而进行统计。
(2)统计单词个数的时候,首先遇到字符的时候,考虑其是不是首个字母(直接与分隔符相连),如果是的话,则开始计算在遇到下一个分割符的时候,中间相隔几个字符(从而判断是否符合单词的长度定义)
(3)当确定单词之后,在将其存入到Hashmap中,从而获取单词的出现的频率。
4、设计实现过程
考虑到如下五个主要的核心功能:统计有效行数、统计字符数、统计单词数、统计文件中各单词的出现次数,最终只输出频率最高的10个、按照字典序输出到文件。
(1) Compoment design schema
软件构件的设计设计如下三个构建:
WordCountCore构件用于实现系统的核心功能:统计有效行数、统计字符数、统计单词数、统计频率最高的TopTen单词。
OutputModule输出部分作为一个单独的构件进行设计。
UnitTestModule考虑到单元测试,该模块作为一个单独的构件设计用于来充分对WordCountCore的四个核心功能进行针对性测试。
(2) Class design
WordCountCore构件可以以动态库dll的形式完成,其实现通过WordOperation类来进行实现。
四个核心功能在类中设计为public函数,方便其他模块的调用,并同时考虑到重用。
其他支持性功能在类中设计为private函数。
5、记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。
6、代码说明,展示出项目关键代码,并解释思路与注释说明。
(1)通过逐行读取文档中字符的内容,以换行符为标记获取行数,此外,在读取每行的字符内容的过程中,进行字符的判断,判读其是否属于我们所设定的字符范围内,以便进行字符个数的统计。
(2)在字符统计的过程中,首先判断在每个单词中,首字母(该字符的前一个字符是分隔符)的位置,然后获取结束字符的位置(该字符的下一个字符是分割符),然后进行两次判断:
A、判断结束字符与首字符之间的间隔小于4个字符长度,则直接忽略(不是我们需要的单词),接下来执行下面的步骤B;
B、然后判断这个“单词”是不是以连续的四个英文字符开头,符合要求则是我们需要的单词,然后将其存储到hashmap中,否则,直接忽略,直接进行下一个的单词判断。
C、通过对hashmap中的单词进行sort排序,从而输出频率出现最多的m个单词信息。
7、结合在构建之法中学习到的相关内容与结对项目的实践经历,撰写解决项目的心路历程与收获。
通过此次的结对编程,深刻理解到了两人结对对工作效率的重要性,相对于单个人的编程,在面对于较大的工作量的时候,有时候便难以胜任,通过两人的合作,一个人编写,另一人监督指导,既可以减少在代码书写过程中的错误,也可以进行一些思想思路上的帮助(当遇到编程思路障碍的时候)。
来源:https://www.cnblogs.com/ahusbj/p/9285262.html