一、基本功能

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优化-第四周小组作业的更多相关文章

  1. HUST软测1504班第4周小组作业成绩:WordCount优化

    说明 本次公布的成绩为第四周作业的结果: 第4周小组作业:WordCount优化 博客推荐:本次作业有一位同学完成有创意,推荐优秀博客.(优秀博客不会对成绩带来正面或者负面影响)PS:做任何创新的任务 ...

  2. 第四周小组作业:Wordcount优化

    1.小组github地址 https://github.com/muzhailong/wcPro 2.PSP表格 PSP2.1 PSP阶段 预计耗时(分钟) 实际耗时(分钟) Planning 计划 ...

  3. 软件测试第4周小组作业:WordCount优化

    一.基本任务:代码编写+单元测试 1.Github地址: https://github.com/Wegnery/New_WordCount 2.PSP2.1表格 PSP2.1 PSP阶段 预估耗时 ( ...

  4. 第四周WordCount优化

    一.GitHub地址 https://github.com/kawoyi/Advanced-WordCounter最终由组长整合的组长github 二.psp表格 三.个人模块及实现 我负责的是输入模 ...

  5. 第4周小组作业:WordCount优化

     Github项目地址:https://github.com/chaseMengdi/wcPro stage1:代码编写+单元测试 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分 ...

  6. WcPro项目(WordCount优化)

    1 基本任务:代码编写+单元测试 1.1 项目GitHub地址 https://github.com/ReWr1te/WcPro 1.2 项目PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实 ...

  7. WordCount优化

    Github 地址:chaosrings/wcPro 1.PSP2.1表格 psp 2.1 psp阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这 ...

  8. WordCount 优化版测试小程序实现

    Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...

  9. WordCount优化版测试小程序实现

    Github地址:https://github.com/hcy6668/wordCountPro.git PSP表格: PSP  PSP阶段  预估耗时(小时)  实际耗时(小时)  Planning ...

随机推荐

  1. BZOJ - 4196 软件包管理器 (树链剖分+dfs序+线段树)

    题目链接 设白色结点为未安装的软件,黑色结点为已安装的软件,则: 安装软件i:输出结点i到根的路径上的白色结点的数量,并把结点i到根的路径染成黑色.复杂度$O(nlog^2n)$ 卸载软件i:输出结点 ...

  2. BZOJ5341: [Ctsc2018]暴力写挂

    BZOJ5341: [Ctsc2018]暴力写挂 https://lydsy.com/JudgeOnline/problem.php?id=5341 分析: 学习边分治. 感觉边分治在多数情况下都能用 ...

  3. C# 保护进程不被结束(源代码)防任务管理器结束进程

    C# 保护进程不被结束(源代码)防任务管理器结束进程 Posted on 2013-03-25 16:03 快乐家++ 阅读(3173) 评论(3) 编辑 收藏 闲来无事,英语又学的太痛苦.看到我妈妈 ...

  4. Poj 2395 Out of Hay( 最小生成树 )

    题意:求最小生成树中最大的一条边. 分析:求最小生成树,可用Prim和Kruskal算法.一般稀疏图用Kruskal比较适合,稠密图用Prim.由于Kruskal的思想是把非连通的N个顶点用最小的代价 ...

  5. vijos1264:神秘的咒语

    描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法 ...

  6. du 命令 -目前的目录所占的磁盘空间

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  7. Java-API-POI-Excel:XSSFWorkbook Documentation

    ylbtech-Java-API-POI:XSSFWorkbook Documentation 1.返回顶部 1. org.apache.poi.xssf.usermodel Class XSSFWo ...

  8. 转:MySQL InnoDB Add Index实现调研

    MySQL InnoDB Add Index实现调研 MySQL Add Index实现 MySQL各版本,对于add Index的处理方式是不同的,主要有三种: Copy Table方式 这是Inn ...

  9. oracle sql 函数

    (7)查询日期之间的数据 例如查询student表中出生日期(birthday)在’2016-01-01’ 和’2017-01-01’之间的数据: select * from student wher ...

  10. CIA泄露资料分析(黑客工具&技术)—Windows篇

    背景 近期,维基解密曝光了一系列据称来自美国中央情报局(CIA)网络攻击活动的秘密文件,代号为“Vault 7”,被泄露文件的第一部分名为“Year Zero”,共有8761个文件,包含7818个网页 ...