结对编程-第9小组

Posted linlkg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程-第9小组相关的知识,希望对你有一定的参考价值。

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)角色。先是一起讨论做了大体类的设计和算法流程设计,接着林静就开始编程。两个人编程还是比一个人来的效率高些,有问题一起讨论,错误也第一时间被指出,特别是一开始的讨论,就先定义和封装了几个要用到的函数,避免了后期推翻修改,提高了开发效率。不过缺点也是有的,就是一个人在编程的时候,另一个人不好打扰,默默滴看,后面发现没有完全按照领航员的设计来实现。函数没有完全按照预期抽象出来,导致效能分析处有问题!设计当中的接口和新增功能未实现,但类图当中的设计将其抽象出来方便了后续的代码优化。
  • 这次的体会真的很深,实打实的结对,两人分工合作完成一个看似不难的任务,实际执行过程中还是遇到不少困难,结对的最大好处就在此处体现:在遇到困难的时候总是可以通过提醒和讨论解决之!












以上是关于结对编程-第9小组的主要内容,如果未能解决你的问题,请参考以下文章

20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

20172319 结对编程练习_四则运算第一周阶段性总结

20172319 结对编程练习_四则运算第二周阶段性总结

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

20172316 结对编程-四则运算 第二周 阶段总结