1、Fork仓库的Github项目地址:
https://github.com/linlkg/PairProject2018
2、预估各个模块开发耗费的时间:
PSP2.1 | PersonalSoftware Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
-Estimate | -估计这个任务需要多少时间 | 20 | 20 |
Development | 开发 | 230 | 303 |
-Analysis | -需求分析(包括学习新技术) | 20 | 25 |
-Design Spec | -生成设计文档 | 20 | 25 |
-Design Review | -设计复审(和同事审核设计文档) | 5 | 8 |
-Coding Standard | -代码规范(为目前的开发制定合适的规范) | 10 | 10 |
-Design | -具体设计 | 25 | 25 |
-Coding | -具体编码 | 120 | 150 |
-Test | -测试(自我测试,修改代码,提交修改) | 30 | 60 |
Reporting | 报告 | 80 | 105 |
-Test Report | -测试报告 | 20 | 20 |
-Size Measurement | -计算工作量 | 30 | 35 |
-Postmortem&Process Improvement Plan | -事后分析,并提出过程改进计划 | 30 | 50 |
- | 合计 | 330 | 428 |
3、计算模块接口的设计与实现过程:
-第一步:相关类设计
- 读取输入输出文件类IOfile用于定义用户输入/输出的文件名和路径;
- 单词类Word用于存储单词提取以及单词词频统计;
- 词组类Phrase用于存储词组提取以及词组频度;
- 接口类UserInterface用于存储用户输入的参数值;
- 相关类图如下:
- 第二步:相关操作函数
- 提取单词函数getWord()用于根据分隔符将文件流中的单词提取出来并存储;
- 统计单词频率函数countWord();
- 排序输出单词频度函数sortWordOutput();
- 提取指定长度词组getPhrase();
- 统计词组频率函数countPhrase();
- 排序输出词组频度函数sortPhraseOutput();
4、计算模块接口部分性能改进
-性能分析图(由VS 2017/JProfiler的性能分析工具自动生成)
5、计算模块部分测试结果
6、计算模块部分异常处理说明
读文件时若读取文件失败则抛异常
//读入TXT文件
try {
File file = new File(args[0]);
Scanner input = new Scanner(file);
String path = input.next();
List
7、关键代码分析
//单词的词频统计
//按value的大小进行排序并输出词频最高的前十个
//统计行数
8、描述结对的过程
结对体会:
- 结对中汪璟玢充当领航员(Navigator)角色,林静充当驾驶员(Driver)角色。先是一起讨论做了大体类的设计和算法流程设计,接着林静就开始编程。两个人编程还是比一个人来的效率高些,有问题一起讨论,错误也第一时间被指出,特别是一开始的讨论,就先定义和封装了几个要用到的函数,避免了后期推翻修改,提高了开发效率。不过缺点也是有的,就是一个人在编程的时候,另一个人不好打扰,默默滴看,后面发现没有完全按照领航员的设计来实现。函数没有完全按照预期抽象出来,导致效能分析处有问题!设计当中的接口和新增功能未实现,但类图当中的设计将其抽象出来方便了后续的代码优化。
- 这次的体会真的很深,实打实的结对,两人分工合作完成一个看似不难的任务,实际执行过程中还是遇到不少困难,结对的最大好处就在此处体现:在遇到困难的时候总是可以通过提醒和讨论解决之!
原文地址:https://www.cnblogs.com/linlkg/p/9286543.html
时间: 2024-10-18 15:01:09