首页 > 其他 > 详细

结对作业——WordCount进阶版

时间:2018-10-07 16:24:21      阅读:298      评论:0      收藏:0      [点我收藏+]

1.作业地址及结对伙伴

3.结对PSP表格

PSP2.1 个人开发流程 预估耗费时间(分钟) 实际耗费时间(分钟)
Planning 计划 60 75
· Estimate 明确需求和其他相关因素,估计每个阶段的时间成本 60 75
Development 开发 700 960
· Analysis 需求分析 (包括学习新技术) 100 120
· Design Spec 生成设计文档 60 65
· Design Review 设计复审 30 45
· Coding Standard 代码规范 30 60
· Design 具体设计 60 100
· Coding 具体编码 300 420
· Code Review 代码复审 60 80
· Test 测试(自我测试,修改代码,提交修改) 60 70
Reporting 报告 100 140
· 测试报告 45 60
· 计算工作量 25 30
· 并提出过程改进计划 30 50

3.解题思路

  1. 本次程序要求基本同上一次类似,但在上一次的基础上新增以下内容:输出排名前n的单词的数量;输入参数格式;对词组进行统计;根据参数将统计结果输出到文件;
  2. 输出排名前n的单词的数量:这一要求可以通过将参数中的该部分数值取出,加入for循环中即可,但需考虑不同单词数若低于这一指定值的情况。
  3. 输入参数格式:对于输入参数,分析过后发现无非就是一个指令后再跟着一个参数值,不同种指令之间有固定的模式,去除WordCount.exe后,正确的参数的长度只有4和6两种,指令只有“-n/-m/-i/-o”四种且都为“-n/-m”开头,出于实现便利的考虑,设置为“-n/-m”不同时出现,"-o"则自主决定是否跟在参数尾,分析过后这样对于参数的判断就比较简单了。
  4. 对词组进行统计:词组的获取方式利用将单词按指定个数筛选拼接为一个长字符串,再按类似处理单词的方法进行统计,难以实现的是若要判断以非空格符分割的前后单词不能拼接为词组,考虑可以将字符也存入数组,在拼接的时候进行字符判断决定是否拼接。
  5. 根据参数将统计结果输出到文件:前面第3点提到了“-o”自主决定是否跟在参数尾,若有该参数,则将统计结果写入文件,无该参数则不写。写入文件该部分也较为简单。

4.设计实现过程

  1. 后台Servlet在编写时,主要设计为Main类与FileDeal两个类,Main类主要涉及一部分参数的筛选,并决定执行调用FileDeal类的什么方法。
  2. FileDeal类中包含了FileDeal()构造方法,用于一部分参数的设定;FileNotExist()向前端界面输出报错信息;getConnection()建立与文件的连接;getChars()获取字符总数;getLines()获取行数;getWords()获取单词数;getWordsSort()统计单词出现次数并排序;getGroups()统计词组出现次数并排序;wordstoString()输出单词统计结果,并写入文件;groupstoString()输出词组统计结果,并写入文件。
  3. 本次实验是结对编程,且要求有GUI界面,因此分工时我负责Servlet的主要功能实现,编写完后交由贾海涛负责前端界面交互以及将servlet的Java代码修改为能输出与读取前端内容的代码,并对整合后的代码逻辑进行判断调整。完成后再协同进行数据测试,对整体逻辑再判断,减少一部分冗余代码,增强容错性。

5.代码说明及测试

1. 代码说明

1. JSP代码

  • JSP界面简单设置了一个表单,用于输入参数。
    技术分享图片

2. go代码

  • go代码部分即为编写代码时的Main函数,该部分重写doGet()方法,也包含了一部分筛选参数的语句,根据不同筛选结果将表单参数传递至后台交由Servlet的相应函数进行处理,。
    技术分享图片
    技术分享图片

3. FileDeal代码

  • getConnection()方法实现与文件建立连接
    技术分享图片
  • getWordsSort()方法通过映射(Map)比较器实现对文件中单词的统计及排序,结果返回一个包含键值对的数组infoIds
    技术分享图片
    技术分享图片
  • wordstoString()方法获取上一步获得的infoIds数组,按照格式将结果输出反馈至前台,并根据是否给定“-o”参数决定是否将统计结果输出到文件中。
    技术分享图片
  • getGroups()处理词组的方法与其他的方法等基本与处理单词的类似,此处不再贴代码及阐述。

2. 单元测试

  • 运行index.jsp时的输入界面
    技术分享图片

  • 输入参数测试
    • 含无法识别指令(-r为例):-m 10 -r d:\1.txt-n 10 -r d:\1.txt
      技术分享图片

    • 无可识别指令参数(-n/-m):10 3 d:\1.txt
      技术分享图片

    • 参数不完整(-o后缺失):-n 10 -i d:\1.txt -o-m 3 -i d:\1.txt -o
      技术分享图片

    • 参数数值小于0:-n -2 -i d:\1.txt-m -3 -i d:\1.txt
      技术分享图片

    • 指定文件不存在:-n 10 -i d:\d.txt
      技术分享图片

    • 一次传入多个指令(-n/-m):-n 10 -m 3 -i d:\1.txt -o d:\output.txt
      技术分享图片

    • 正确参数:-n 10 -i d:\1.txt-m 3 -i d:\1.txt-n 10 -i d:\1.txt -o d:\output.txt-m 3 -i d:\1.txt -o d:\output.txt。(注:由于单词判断条件为前四个为字母,所以当选定词组长度为1时,输出的结果与单词统计结果不一致)
      技术分享图片 技术分享图片

  • 文件数据测试

    • 英文文件
      技术分享图片 技术分享图片

    • 纯中文文件
      技术分享图片

    • 空白文件
      技术分享图片

3. 回归测试

  • 注:单元测试数据已经使用了上一次的测试用例并在此基础上增加了其他的测试用例,所以回归测试结果已在单元测试中。

4. 覆盖率测试

  1. 参数为-n 10 -i d:\1.txt -o d:\output.txt,正常执行并输出到文件时。
    技术分享图片

  2. 参数为-m 3 -i d:\1.txt -o d:\output.txt,正常执行并输出到文件时。
    技术分享图片

  3. 参数为10 3 d:\1.txt,错误参数不通过时。
    技术分享图片

6.结对感受

  1. 本次结对感觉优劣并存
  • 优点
    • 工作量:结对有一定的分工,明确各自的任务后,工作量会少很多,比一个人写全部要轻松一些。
    • 代码规范:结对编程时可以一定程度上改善自己对于代码规范的问题,虽然可能最终也并不是很规范。
    • 问题分析:"一千个读者就有一千个哈姆雷特"。对待同一个问题,不同的人有不同的见解,结对编程分析问题时,就会有不同的考虑问题解决问题的方式,就不像单人那样过于闭塞,有多个不同的解决方案的时候就有选择的余地,队友也可以从其他的角度指出自己的方案是否存在不足。遇到自己解决不了的问题时,可能队友就是一盏明灯。
  • 缺点
    • 代码规范:队友之间的编程习惯不同,阅读上有时会有一定难度,不理解的话就不好下手写自己的部分。
    • 问题分析:分析问题各执己见时,容易陷入两难境地。

结对作业——WordCount进阶版

原文:https://www.cnblogs.com/Fogram-c/p/9749501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!