WordCount优化-第四周小组作业
一、基本功能
GITHUB项目地址:https://github.com/LongtermPartner/ExtendWordCount
PSP表格填写:
| 
 PSP2.1  | 
 PSP阶段  | 
 预估耗时 (分钟)  | 
 实际耗时 (分钟)  | 
| 
 Planning  | 
 计划  | 
 20  | 
 20  | 
| 
 · Estimate  | 
 · 估计这个任务需要多少时间  | 
 10  | 
 5  | 
| 
 Development  | 
 开发  | 
 160  | 
 100  | 
| 
 · Analysis  | 
 · 需求分析 (包括学习新技术)  | 
 30  | 
 20  | 
| 
 · Design Spec  | 
 · 生成设计文档  | 
 20  | 
 10  | 
| 
 · Design Review  | 
 · 设计复审 (和同事审核设计文档)  | 
 20  | 
 0  | 
| 
 · Coding Standard  | 
 · 代码规范 (为目前的开发制定合适的规范)  | 
 30  | 
 10  | 
| 
 · Design  | 
 · 具体设计  | 
 10  | 
 10  | 
| 
 · Coding  | 
 · 具体编码  | 
 50  | 
 50  | 
| 
 · Code Review  | 
 · 代码复审  | 
 20  | 
 30  | 
| 
 · Test  | 
 · 测试(自我测试,修改代码,提交修改)  | 
 60  | 
 100  | 
| 
 Reporting  | 
 报告  | 
 30  | 
 30  | 
| 
 · Test Report  | 
 · 测试报告  | 
 30  | 
 40  | 
| 
 · Size Measurement  | 
 · 计算工作量  | 
 10  | 
 10  | 
| 
 · Postmortem & Process Improvement Plan  | 
 · 事后总结, 并提出过程改进计划  | 
 20  | 
 10  | 
| 
 合计  | 
 500  | 
 455  | 
对接口的实现——output:
输出功能的实现是整个基本功能部分最简单的模块,将count and sort模块产生的计数结果输出到指定文件或默认文件,只需要利用以下代码即可:
public class Output {
    public static void output(ArrayList<Entry<String, Integer>> list, File outputFile) throws IOException{
          if(outputFile==null){
             outputFile=new File("result.txt");
             }
            //FileWriter fW=new FileWriter(outputFile,true);
          FileWriter fW=new FileWriter(outputFile);
             BufferedWriter bw=new BufferedWriter(fW);
        bw.close();
    }
}
需求说明中对输出的要求:输出单词词频从高到低排序的前100个(从1到100),每行分别给出一个单词及其词频,单词按小写形式给出,单词和词频之间空一格。对于单词词频相同的情况,按照单词所包含的每个字母从a到z的次序依次排列。输出文件末尾多余的换行符应去除。
在output模块中进行的有输出词频前100个,和计数排序模块一样使用简单的map工具,其他功能在主函数中实现。
测试用例的设计:
输出模块功能比较简单,由于本程序已经指定输出文件,故测试内容主要集中于从countandsort模块输入的内容多样性,包括:
①输入的单词-词频组数为零个、一个、多个时,针对需求说明又有>100组,=100组等。
②输入的单词-词频是否字母/词频数相同。针对词频数和单词分别测试。
③对词频数相同的情况进行分类测试。


单元测试的运行:
对输出模块编写了脚本进行测试,所有用例均通过。
测试质量评价:
由于输出模块功能较为简单,用例针对性可能会有重复。
覆盖率较高,但效率可能不尽如人意。
待测模块能够满足用户的功能需求。
小组贡献分:0.22
二、拓展功能
本小组使用java完成此任务,故选用的开发规范文档是《阿里巴巴Java开发手册》,实际使用的是 手册中编程规约目录下(一)命名风格、(二)常量定义、
(三)代码格式、(四)OOP规约
代码中的规范化问题有:
①在修改代码的过程中有增删,导致代码缩进不够规范。
②对"{"和"}"的使用不够规范,每个大括号没有另起。
③删减修改造成的冗余空白行。
④不规范的空格使用。
⑤变量命名采用缩写时大小写不规范。
代码如下:
    public static void output(ArrayList<Entry<String, Integer>> list, File outputFile) throws IOException{
           //输出实现
           if(outputFile==null){
                 outputFile=new File("result.txt");
             }
            //FileWriter fW=new FileWriter(outputFile,true);
          FileWriter fW=new FileWriter(outputFile);
             BufferedWriter bw=new BufferedWriter(fW);
           String str="";
所遵循的好的规范:
因为并不是一个有良好编码习惯的人,从前基本没有了解过这方面的规范,所以代码中规范性问题更多些。
所使用的静态代码检查工具:PMD
对上述代码进行扫描。
整个小组代码出现的问题整合及解决方法:
上述问题在其他同学的代码中也有出现,因为进行到此的时候已经是假期了所以没有来得及整合。
有了相关信息了解,加强规范化意识,养成良好的编码习惯就可以规避其中很大一部分。
三、高级功能
以下测试由小组成员讨论完成
测试数据集:

如图,测试数据集使用了一个1600多行的文本文件test.txt,其中包含了各类单词。
处理时长:

如图,经过多次试验,处理此测试数据集的时间在300ms~400ms左右。
同行评审:
每位小组成员都作为作者、讲解员、评审员、记录员等身份进行了评审。
经过评审,我们得出结论:影响程序性能的主要因素是计数和排序两个模块,即计数时对单词的判定方法和排序的算法快慢。
实际测试:
通过测试,我们发现制约程序性能指标的主要因素是计数和排序两方面,即和同行评审结果相似。
软件开发、软件测试、软件质量的关系:
本次作业中,在完成了基本功能也就是初期代码的编写后,我们就编写了测试用例进行了测试,通过测试发现问题和漏洞,再对代码进行改进,重复此过程直到所有的测试用例全部通过。
可以说,软件测试贯穿了这次开发的整个过程,一次次改善了软件质量,最终以一个更好的状态完成开发。
WordCount优化-第四周小组作业的更多相关文章
- HUST软测1504班第4周小组作业成绩:WordCount优化
		
说明 本次公布的成绩为第四周作业的结果: 第4周小组作业:WordCount优化 博客推荐:本次作业有一位同学完成有创意,推荐优秀博客.(优秀博客不会对成绩带来正面或者负面影响)PS:做任何创新的任务 ...
 - 第四周小组作业:Wordcount优化
		
1.小组github地址 https://github.com/muzhailong/wcPro 2.PSP表格 PSP2.1 PSP阶段 预计耗时(分钟) 实际耗时(分钟) Planning 计划 ...
 - 软件测试第4周小组作业:WordCount优化
		
一.基本任务:代码编写+单元测试 1.Github地址: https://github.com/Wegnery/New_WordCount 2.PSP2.1表格 PSP2.1 PSP阶段 预估耗时 ( ...
 - 第四周WordCount优化
		
一.GitHub地址 https://github.com/kawoyi/Advanced-WordCounter最终由组长整合的组长github 二.psp表格 三.个人模块及实现 我负责的是输入模 ...
 - 第4周小组作业:WordCount优化
		
Github项目地址:https://github.com/chaseMengdi/wcPro stage1:代码编写+单元测试 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分 ...
 - WcPro项目(WordCount优化)
		
1 基本任务:代码编写+单元测试 1.1 项目GitHub地址 https://github.com/ReWr1te/WcPro 1.2 项目PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实 ...
 - WordCount优化
		
Github 地址:chaosrings/wcPro 1.PSP2.1表格 psp 2.1 psp阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这 ...
 - WordCount 优化版测试小程序实现
		
Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...
 - WordCount优化版测试小程序实现
		
Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP PSP阶段 预估耗时(小时) 实际耗时(小时) Planning ...
 
随机推荐
- UVA - 11916 Emoogle Grid (组合计数+离散对数)
			
假如有这样一道题目:要给一个M行N列的网格涂上K种颜色,其中有B个格子不用涂色,其他每个格子涂一种颜色,同一列中的上下两个相邻格子不能涂相同颜色.给出M,N,K和B个格子的位置,求出涂色方案总数除以1 ...
 - HNOI2004 宠物收养所 (平衡二叉树)
			
题目链接 平衡树基础题,用于测试各种平衡树的性能(雾) treap: #include<bits/stdc++.h> typedef long long ll; using namespa ...
 - JavaWeb框架_Struts2_(一)----->Struts2 框架入门
			
1. 框架入门 2.1 Struts2简介 (1). Struts2是一种基于MVC模式的的轻量级Web开发框架. MVC模式:MVC全名是Model View Controller,是模型(mo ...
 - FPGA中竞争冒险问题的研究
			
什么是竞争冒险? 1 引言 现场可编程门阵列(FPGA)在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能. FPGA可以替代其他PLD或者各种中小规模数 ...
 - java List 等份截取
			
/** * 描述: 等份截取 * @author eyesmooon * @param list * @param size * @return * @date:2018年11月8日 下午8:00:3 ...
 - 使用base64对图片的加密解密
			
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOu ...
 - Linux驱动中获取系统时间
			
最近在做VoIP方面的驱动,总共有16个FXS口和FXO口依次初始化,耗用的时间较多.准备将其改为多线程,首先需要确定哪个环节消耗的时间多,这就需要获取系统时间. #include <linux ...
 - js页面埋点
			
页面埋点的作用,其实就是用于流量分析.而流量的意思,包含了很多:页面浏览数(PV).独立访问者数量(UV).IP.页面停留时间.页面操作时间.页面访问次数.按钮点击次数.文件下载次数等.而流量分析又有 ...
 - L3-001. 凑零钱(dfs或者01背包)
			
L3-001. 凑零钱 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现 ...
 - paramiko远程
			
安装paramiko后,看下面例子: 复制代码代码如下: import paramiko #设置ssh连接的远程主机地址和端口t=paramiko.Transport((ip,port))#设置登录名 ...