结对第2次作业——WordCount进阶需求
时间:2018-10-13 01:01:03
收藏:0
阅读:398
软工实践第五次作业
写在前面
具体分工
两个人一起在实验室完成的,有什么问题都当面沟通解决+使用github多人协作的形势,一人写一部分函数然后传到github上面去,通过git pull更新本地仓库
- 吴杰婷:词数统计部分,词频统计部分,代码整合,文档撰写,单元测试,性能分析
- 许舒玲:爬虫部分,字符统计,行数统计,附加题部分,代码整合,文档撰写,性能分析
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) |
---|---|---|
Planning | 计划 | 10 |
? Estimate | ? 估计这个任务需要多少时间 | 10 |
Development | 开发 | 700 |
? Analysis | ? 需求分析 (包括学习新技术) | 30 |
? Design Spec | ? 生成设计文档 | 5 |
? Design Review | ? 设计复审 | 5 |
? Coding Standard | ? 代码规范 (为目前的开发制定合适的规范) | 10 |
? Design | ? 具体设计 | 20 |
? Coding | ? 具体编码 | 500 |
? Code Review | ? 代码复审 | 70 |
? Test | ? 测试(自我测试,修改代码,提交修改) | 60 |
Reporting | 报告 | 20 |
? Test Repor | ? 测试报告 | 5 |
? Size Measurement | ? 计算工作量 | 5 |
? Postmortem & Process Improvement Plan | ? 事后总结, 并提出过程改进计划 | 10 |
合计 | 730 | 1014 |
解题思路描述与设计实现说明
爬虫使用
- 使用java jsoup包,jsoup最主要用到的就是的elements类和select()方法。elements类相当于网页元素中的标签,而select()方法用于按一定条件选取符合条件的标签,组成符合条件的标签数组。element支持转成字符串或者文本等。
- 打开网页查看元素-选择代码行-右键-copy-copy selector 获取便签
如://#content > dl > dt:nth-child(2935)获得链接
Document document = Jsoup.connect("http://openaccess.thecvf.com/CVPR2018.py").userAgent("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)").get(); Element main = document.getElementById("content"); //#content > dl > dt:nth-child(0) Elements url = main.select("dl").select("dt:nth-child(0)"); for(Element question:url) { String URL = question.attr("abs:href"); Document document2 = Jsoup.connect(URL).get(); //#papertitle Elements title = document2.select("#papertitle"); //#abstract Elements Abstract = document2.select("#abstract"); }
代码组织与内部实现设计(类图)
说明算法的关键与关键实现部分流程图
- 计算行数(linesCount.java)
- 获取有效文本(HandleContent.java)
- 计算字符数(charsCount.java)
- 计算单词数(wordsCount.java)
- 输出单词排序(WordsCount.java)
- 计算行数(linesCount.java)
附加题设计与展示
设计的创意独到之处
实现思路
实现成果展示
关键代码解释
单元测试
代码覆盖率
测试文本部分截图
测试结果/时间截图
性能分析
展示性能分析图
通过java虚拟机的javaConsole显示性能分析情况
- 结合单元测试,可见Weighttest(权重统计)和wordtest(词组总数统计)所耗费的时间更长,原因出在权重统计时涉及了暴力排序。
Github代码签入记录
遇到的代码模块异常或结对困难及解决方法
关于github多人协作问题
- 问题描述:一开始在做的时候,不知道如何一起协作完成一份代码,并且对github多人协作的功能一头雾水。
- 做过的尝试:一开始我在网上找了资料,资料上采用的方法是添加contributors,然后创建分支,再合并分支到master的方法,但是步骤繁琐,而且我们一般是把代码整合后测试再上传,一般不会发生冲突,然后舒玲也提出了一个方法是让我folk她那边的项目,然后我提交到我本地folk的仓库再提交给她,不过本次尝试以不知道如何同意合并结束……
- 是否解决:已经解决。经过向大佬的请教,我们决定采用在舒玲的github仓库上添加contributor的方式,只用一个master分支,这样方便了我们的提交。只需要git add,git commit,git push即可
- 有何收获:一个人硬着头皮找资料的做的很容易心态爆炸,两个人一起商量显然效率很高(而且开心),掌握了几种github团队协作的开发方式!
关于代码合并问题
- 问题描述:两个人的代码风格不同,舒玲写在接口里,然后在主函数调用。我写在Class里,然后直接调用Class的某个函数。
- 做过的尝试:互相研究对方的代码,统一在Main函数调用。本来我想写在舒玲的接口里,不过引用的时候总是出错,最后直接引用我的类了……
- 是否解决:已经解决。在Main函数里调用舒玲的接口和我的类,不过有些地方需要统一,比如文件读入读出这里。
- 有何收获:统一代码规范很重要
评价你的队友
值得学习的地方
- 有耐心
- 逻辑清晰
- 代码基础好
需要改进的地方
- 反应可以快一点
学习进度条
第 N 周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) |
---|---|---|---|---|
1 | 460 | 460 | 6 | 6 |
2 | 0 | 460 | 3 | 9 |
3 | 346 | 806 | 5 | 14 |
原文:https://www.cnblogs.com/xsl-/p/9780981.html
评论(0)