结对作业——WordCount进阶版
1.作业地址及结对伙伴
- 博客作业要求地址:https://www.cnblogs.com/happyzm/p/9626779.html
- 结对伙伴:
- 姓名:贾海涛
- 学号:201621123027
- 博客地址:http://www.cnblogs.com/jiahaitao/p/9750427.html
- 码云团队项目地址:https://gitee.com/Fogram/PairProject-Java
- 码云提交记录:
- 讨论照片
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.解题思路
- 本次程序要求基本同上一次类似,但在上一次的基础上新增以下内容:输出排名前n的单词的数量;输入参数格式;对词组进行统计;根据参数将统计结果输出到文件;
- 输出排名前n的单词的数量:这一要求可以通过将参数中的该部分数值取出,加入for循环中即可,但需考虑不同单词数若低于这一指定值的情况。
- 输入参数格式:对于输入参数,分析过后发现无非就是一个指令后再跟着一个参数值,不同种指令之间有固定的模式,去除
WordCount.exe
后,正确的参数的长度只有4和6两种,指令只有“-n/-m/-i/-o”四种且都为“-n/-m”开头,出于实现便利的考虑,设置为“-n/-m”不同时出现,"-o"则自主决定是否跟在参数尾,分析过后这样对于参数的判断就比较简单了。 - 对词组进行统计:词组的获取方式利用将单词按指定个数筛选拼接为一个长字符串,再按类似处理单词的方法进行统计,难以实现的是若要判断以非空格符分割的前后单词不能拼接为词组,考虑可以将字符也存入数组,在拼接的时候进行字符判断决定是否拼接。
- 根据参数将统计结果输出到文件:前面第3点提到了“-o”自主决定是否跟在参数尾,若有该参数,则将统计结果写入文件,无该参数则不写。写入文件该部分也较为简单。
4.设计实现过程
- 后台Servlet在编写时,主要设计为
Main
类与FileDeal
两个类,Main
类主要涉及一部分参数的筛选,并决定执行调用FileDeal
类的什么方法。 FileDeal
类中包含了FileDeal()
构造方法,用于一部分参数的设定;FileNotExist()
向前端界面输出报错信息;getConnection()
建立与文件的连接;getChars()
获取字符总数;getLines()
获取行数;getWords()
获取单词数;getWordsSort()
统计单词出现次数并排序;getGroups()
统计词组出现次数并排序;wordstoString()
输出单词统计结果,并写入文件;groupstoString()
输出词组统计结果,并写入文件。- 本次实验是结对编程,且要求有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. 覆盖率测试
参数为
-n 10 -i d:\1.txt -o d:\output.txt
,正常执行并输出到文件时。
参数为
-m 3 -i d:\1.txt -o d:\output.txt
,正常执行并输出到文件时。
参数为
10 3 d:\1.txt
,错误参数不通过时。
6.结对感受
1. 本次结对感觉优劣并存
- 优点
- 工作量:结对有一定的分工,明确各自的任务后,工作量会少很多,比一个人写全部要轻松一些。
- 代码规范:结对编程时可以一定程度上改善自己对于代码规范的问题,虽然可能最终也并不是很规范。
- 问题分析:"一千个读者就有一千个哈姆雷特"。对待同一个问题,不同的人有不同的见解,结对编程分析问题时,就会有不同的考虑问题解决问题的方式,就不像单人那样过于闭塞,有多个不同的解决方案的时候就有选择的余地,队友也可以从其他的角度指出自己的方案是否存在不足。遇到自己解决不了的问题时,可能队友就是一盏明灯。
- 缺点
- 代码规范:队友之间的编程习惯不同,阅读上有时会有一定难度,不理解的话就不好下手写自己的部分。
- 问题分析:分析问题各执己见时,容易陷入两难境地。
转载于:https://www.cnblogs.com/Fogram-c/p/9749501.html
结对作业——WordCount进阶版相关推荐
- 《软件工程实践》第五次作业-WordCount进阶需求 (结对第二次)
在文章开头给出结对同学的博客链接.本作业博客的链接.你所Fork的同名仓库的Github项目地址 本作业博客链接 github pair c 031602136魏璐炜博客 031602139徐明盛博客 ...
- 结对第2次作业——WordCount进阶需求
软工实践第五次作业 写在前面 本次作业题目链接 本次作业Github仓库链接 031602237吴杰婷博客链接 031602636许舒玲博客链接 具体分工 两个人一起在实验室完成的,有什么问题都当面沟 ...
- 软件工程(2019)第一次结对作业
审查人以及代码信息 (1)结对人:张斯豪 (2)项目代码地址:代码地址 (3)项目代码功能:游戏 审查代码细节汇总 按照C++代码审查表审查汇总如下 功能模块名称 简单的游戏框架 审查人 高钰清 审查 ...
- 软件工程实践2017结对作业
1.结对成员 031502643 朱晓健 031502626 孙浩楷 2.需求分析 Need 每到开学的时候,各大部门就会挤满青春广场通过各种方式来招收新成员.新生顶着烈日填写完申请表交由部门筛选,部 ...
- 结对项目-WordCount
结对作业: 成员:201631062115(me),201631062613(partner) 代码地址:https://gitee.com/ackary/WordCount 作业的链接地址:http ...
- 系统分析与设计结对项目———Wordcount
系统分析与设计结对项目---Wordcount 合作者:201631062513.201631062511 本次作业要求链接地址:https://edu.cnblogs.com/campus/xnsy ...
- 结对项目--wordCount
结对作业: 成员:201631062115(partner),201631062613(me) 代码地址:https://gitee.com/ackary/WordCount 作业的链接地址:http ...
- 第6次结对作业--郑锦伟古维城
第6次结对作业 在线英语学习平台客户端原型 1.结对成员 郑锦伟 2015034643034 古维城 2015034643033 2.原型设计工具实现-Photoshop 3.需求分析 使用NABCD ...
- spark使用中的一些总结-进阶版
太久没写博客了,我,回来了. 忙完毕业,写点啥呢,写点实习中的东西吧,主要关于spark的使用相关,相当于之前spark-scala的进阶版?惯例,我主要是做个笔记自己看的,如有雷同,算我抄你的. r ...
最新文章
- 同时删除两张表的数据_把数据表中对应工作表的数据首先删除,然后导入数据...
- JavaScript 变量的作用域和生命周期
- Kubernetes 和 Docker,到底什么关系?
- VS2008无法下断点调试的原因
- window安装python报错_win10下Python安装pycrypto报错
- 小沙的长路(图论+数学)
- cmd指令-快捷查看电脑ip地址
- C# 使用RestSharp库实现POST请求
- 设置win7一直以管理员身份运行
- 数据处理(一)数据清洗
- linux sftp ftp 速率,linux上ftp和sftp简要操做命令
- Linux Kernel 6.0 CXL Core Regs.c 详解
- 【大功率摄影灯/舞台灯RGB调光驱动方案】DC-DC降压恒流LED双路调光芯片FP7126,共阳极高辉无频闪调光,调光深度可达万分之一
- 尤雨溪和Vue的那些事
- 「经济理财」跟简七学理财之理财训练营(上)
- Matlab运算于内部函数,java后端校招面试题
- php封装协议查看zip,支持的协议和封装协议
- HOLUX M1200-E 蓝牙GPS轨迹记录器的历史轨迹数据读取
- DHU 9 长整数加法运算
- 自然语言处理(NLP)之求近义词和类比词<MXNet中GloVe和FastText的模型使用>