结对作业——WordCount进阶版
Deadline:##
2018-10-7 22:00PM,以博客提交至班级博客时间为准
要求参考来自:https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html;
https://edu.cnblogs.com/campus/buaa/BUAASummerSETraining/homework/2013;
- 实现一个能够对文本文件中的单词的词频进行统计的GUI程序。
- 进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。
- 进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。
- 使用源代码管理系统 (码云)。
Task1:编码要求##
- Fork 码云项目 https://gitee.com/SE-net16/PairProject-C;
https://gitee.com/SE-net16/PairProject-Java 到自己的仓库,在自己的码云仓库中新建一个学号命名(两人学号的末尾3位)的文件夹。 - 在开始实现程序之前,在PSP表格[附录1]记录下你估计在程序开发各个步骤上耗费的时间,在你实现程序之后,在PSP表格记录下你在程序的各个模块上实际花费的时间。
- 使用C++或者Java语言实现,C++请使用Visual Studio Community 2017进行开发,Java请使用,运行环境为64-bit Windows 10。
- 编写的代码遵守代码规范
- 使用码云来管理源代码和测试用例,代码有进展即签入码云,可以看到两人的提交信息。签入记录不合理的项目会被助教抽查询问项目细节。
- 使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标;并写出至少10个测试用例确保你的程序能够正确处理各种情况。
- 在完成结对项目后,请正确发起一个Pull Request,并确保自己的代码最终成功签入到 https://gitee.com/SE-net16/PairProject-C;
https://gitee.com/SE-net16/PairProject-Java 中。(如果成功签入会在原始项目主页看到自己学号为名的文件夹)
Task2:博客要求##
- 在文章开头给出博客作业要求地址
- 给出结对小伙伴的学号、博客地址,结对项目的码云地址。
- 给出结对的PSP表格。
- 解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。
- 设计实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?单元测试是怎么设计的?
- 代码说明。展示出项目关键代码,并解释思路与注释说明。
- 结合在构建之法中学习到的相关内容与结对项目的实践经历,描述结对的感受,是否1+1>2?
注:结对共同部分,可在其中一个人的博客给出(另一个人给出链接),不同部分分别写在自己的博客。
Task3:WordCount 结对项目要求##
在个人项目的基础上,增加新的功能。
第一步,增加新功能###
我们希望各位在个人项目的基础上,添加一些新的功能:
- 词组统计:能统计文件夹中指定长度的词组的词频
- 自定义输出:能输出用户指定的前n多的单词与其数量
为了实现上述软件,我们首先要在个人项目基础上增量改进,实现一个Core模块,并基于Core模块实现在命令行测试程序中支持下述命令行参数(原有命令行参数不变)
1. -i 参数设定读入的文件路径
格式如下
wordCount.exe -i [file]
一个例子如:
wordCount.exe -i input.txt
2.-m 参数设定统计的词组长度
格式如下
wordCount.exe -m [number]
词组定义:m个由分隔符隔开的单词组成一个词组
-m参数与数字配套使用,用于设置词组长度
命令行中使用-m参数,例:
wordCount.exe -m 3 -i input.txt
/*
*要求程序统计input.txt中长度为3的词组,最终输出
*例:input文件中内容为"Monday Tuesday Wednesday Thursday"
*则输出如下
*/
characters: 33
words: 4
lines: 1
Monday Tuesday Wednesday: 1
Tuesday Wednesday Thursday: 1
3. -n参数设定输出的单词数量
格式如下
wordCount.exe -n [number]
-n参数与数字搭配使用,用于限制最终输出的单词的个数
表示输出最多的前[number]个单词
命令行中使用-n参数,例:
wordCount.exe -n 1 -i input.txt
/*
*程序会输出文件中出现次数最多的那个单词
*/
4. -o 参数设定生成文件的存储路径
格式如下
wordCount.exe -o output.txt
则将统计信息输出到文件 output.txt中。
第二步,设计单元测试###
请使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标;另外,请准备至少10个测试用例确保程序能够正确处理各种情况,并且不会崩溃。
第三步,回归测试##
请使用个人作业2中设计的测试用例对该程序进行回归测试。
第四步,GUI程序设计###
将基于控制台的程序设计成具有图形界面的程序(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的)
评分基准##
博客评分###
本次博客作业总分 20分,由以下部分组成:
- 在文章开头给出结对的小伙伴博客地址,码云项目地址。(2')
- 在开始实现程序之前,在下述PSP表格记录下估计将在程序的各个模块的开发上耗费的时间。(1')
- 功能改进的设计与实现过程。 改进包括代码是否重构,如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的改进思路(不必列出源代码),以及独到之处。(8')
- 功能改进模块部分单元测试展示。 展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(4')
- 回归测试部分展示。 (3')
- 描述结对的过程,提供非摆拍的两人在讨论的结对照片。(1')
- 在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。(1')
程序评分###
本次程序作业总分40分,由以下部分组成:
- 正确性(30')
- GUI(10‘)
注:
- 如能积极响应助教和老师的反馈并在评论2天内做出相应修改,会在已有评分上有一定加分,但原则上获得分数不超过本次作业总分。
- 如对分数有意见,只给一次向助教申诉的机会
- 迟交一周扣实际分数的一半
- 迟交两周或以上,不给分
- 抄袭倒扣分
参考资料##
结对作业——WordCount进阶版的更多相关文章
- 结对作业-WordCount进阶版
1.在文章开头给出博客作业要求地址. 博客园地址:https://www.cnblogs.com/happyzm/p/9559372.html 2.给出结对小伙伴的学号.博客地址,结对项目的码云地址. ...
- 第二次结对作业-WordCount进阶需求
原博客 队友博客 github项目地址 目录 具体分工 需求分析 PSP表格 解题思路描述与设计实现说明 爬虫使用 代码组织与内部实现设计(类图) 算法的关键与关键实现部分流程图 附加题设计与展示 设 ...
- 结队第二次作业——WordCount进阶需求
结队第二次作业--WordCount进阶需求 博客地址 051601135 岳冠宇 博客地址 051604103 陈思孝 博客地址 Github地址 具体分工 队友实现了爬虫功能,我实现了wordco ...
- 结对第2次作业——WordCount进阶需求
作业题目链接 队友链接 Fork的同名仓库的Github项目地址 具体分工 玮哥负责命令参数判断.单词权重统计,我只负责词组词频统计(emmmm). PSP表格 预估耗时(分钟) 实际耗时(分钟) P ...
- 结对作业二——WordCount进阶版
软工作业三 要求地址 作业要求地址 结对码云项目地址 结对伙伴:秦玉 博客地址 PSP表格 PSP2.1 个人开发流程 预估耗费时间(分钟) 实际耗费时间(分钟) Planning 计划 10 7 · ...
- 《软件工程实践》第五次作业-WordCount进阶需求 (结对第二次)
在文章开头给出结对同学的博客链接.本作业博客的链接.你所Fork的同名仓库的Github项目地址 本作业博客链接 github pair c 031602136魏璐炜博客 031602139徐明盛博客 ...
- 软工实践第五次作业-WordCount进阶需求
软工实践作业(五) GitHub 作业链接 结对博客 031602240 具体分工 PSP表格 代码规范 解题思路与设计说明 爬虫使用 代码组织与内部实现设计(类图) 算法关键 实现方法 流程图 附加 ...
- 软工实践——结对作业2【wordCount进阶需求】
附录: 队友的博客链接 本次作业的博客链接 同名仓库项目地址 一.具体分工 我负责撰写爬虫爬取信息以及代码整合测试,队友子恒负责写词组词频统计功能的代码. 二.PSP表格 PSP2.1 Persona ...
- 结对作业(1.0版)(bug1已修复)
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing ...
随机推荐
- iDigital2019数字营销广告主峰会
iDigital 数字营销品牌广告主峰会是定向邀请形式的闭门社交峰会, 现已成长为享誉亚洲的营销广告行业活动, 致力于帮助品牌营销官, 决策者和业界同行在日益整合的数字商业时代下获得战略远景.组委会邀 ...
- mac系统maven spring mvc小试牛刀
转: https://blog.csdn.net/Hitourlee/article/details/77930309和https://www.cnblogs.com/xiaowenbo/p/6980 ...
- Rest和Restful & http
Rest :Representational State Transfer 表述性状态转移 Restful: Rest+ful形容词,遵循Rest原则的应用程序或设计 Rest原则: 1. 网络上的所 ...
- 20190404用户及用户组管理(week1_day4)
useradd userdel usermod groupadd groupdel 用户管理 为什么需要有用户? 1. linux是一个多用户系统 2. 权限管理(权限最小化) 用户:存在的目录是为了 ...
- openwrt修改hosts
不同于标准linux主机,openwrt使用dnsmasq来管理dns和dhcp. 修改dnsmasq的配置文件 vi /etc/config/dhcp 在config dnsmasq这组下面添加 l ...
- python学习笔记:深浅拷贝的使用和原理
在理解深浅拷贝之前,我们先熟悉下变量对象和数据类型 1.变量和对象 变量-引用-对象(可变对象,不可变对象) 在python中一切都是对象,比如[1,2],'hello world',123,{'k1 ...
- Java实现简单的RPC框架
一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用) ...
- SIP 编解码器
编解码器,编码器 - 解码器的简称,做两个基本操作 - 首先,它将模拟语音信号转换为其等效数字形式,以便可以容易地发送. 此后,它将压缩的数字信号转换回其原始模拟形式,以便可以重放. 市场上有许多编解 ...
- eclipse的springboot插件
eclipse的springboot插件官网下载地址还喜欢捉迷藏,正确的下载路径修改方法: 点击zip,然后复制出官网路径如下 http://download.springsource.com/rel ...
- Redis setnx命令 分布式缓存
setnx命令 将 key 的值设为 value,当且仅当 key 不存在. 若给定的 key 已经存在,则 SETNX 不做任何动作. SETNX 是SET if Not eXists的简写. re ...