第4周小组作业:WordCount优化

时间:2022-12-20 08:15:41

一、基本任务:代码编写+单元测试

1、GitHub地址:

https://github.com/Wegnery/New_WordCount

2、PSP2.1表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 5

 5

· Estimate

· 估计这个任务需要多少时间

 5

 10

Development

开发

 260

 350

· Analysis

· 需求分析 (包括学习新技术)

  20

 25

· Design Spec

· 生成设计文档

 ——

 ——

· Design Review

· 设计复审 (和同事审核设计文档)

 ——

 ——

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 20

 30

· Design

· 具体设计

 30

 30

· Coding

· 具体编码

 180

 200

· Code Review

· 代码复审

 30

 60

· Test

· 测试(自我测试,修改代码,提交修改)

 60

 60

Reporting

报告

 60

 75

· Test Report

· 测试报告

 30

 30

· Size Measurement

· 计算工作量

 5

 5

· Postmortem & Process Improvement Plan

· 事后总结并提出过程改进计划

 30

 25

 

合计

 735

 905

 

3、接口的设计与接口的实现

我负责output.class部分,实现输出功能:

1.对宁宁传下来的map类型的数据进行排序,就是按map里的int进行整体排序。

2.将统计好的数组进行输出,输出到一个txt文件中。

输出:无输出,stringint写到.txt文件里即可。

 由易成龙(组员)协助完成,具体请看

http://www.cnblogs.com/yichenglongblog/p/8744031.htm

 

4、测试用例设计

5、由易成龙(组员)协助完成,具体请看

http://www.cnblogs.com/yichenglongblog/p/8744031.htm

 

5、单元测试结果

由易成龙(组员)协助完成,具体请看

http://www.cnblogs.com/yichenglongblog/p/8744031.htm

 

二、扩展功能:静态测试

1、开发文档规范

采用的邹欣老师的讲义“现代软件工程讲义 代码规范与代码复审

2、对组员代码的分析

分析了组员17020同学的代码。

 

1、 注释部分,程序段的注释相对比较精简完整,但是部分注释的内容与代码存在关联性不大的问题。复杂的注释应该放在函数头,很多函数头的注释都是解释参数的类型等的。

2、 代码整体部分都是简明,易读的。

3、 类名和函数名首字母没有大写,由多个单词组成的变量名,如果全部都是小写,很不易读,一个简单的解决方案就是用大小写区分它们。

3、静态代码审查工具

 运用的工具是FindBugsIDEA插件中安装的,安装方法如:https://blog.csdn.net/fancy_xty/article/details/51718687

 

三、高级任务:性能测试和优化

小组成员均完成高级功能

1、数据集的设计

 数据集的设计思路是一个选取的比较大的英文小说的txt,一个是自己用代码写的用规定字符随机生成的不同大小的txt.具体请看GitHub。 

  

2、同行评审

小组分工:主持人:宁宁17009    评审员:宁宁17009、朱全17031、周雨贝17011    作者:宁宁17009,朱全17031,周雨贝17011,易成龙17020  讲解员:易成龙17020       记录员:易成龙17020

我们对每个人代码规范,代码中可以提出的优化进行评审,最终认为影响性能指标的主要因素如下:

1.输入文件大小

2.输入文件中包含特殊字符比例

3.输入文件中包含由空格隔开的字符串数量

4.排序时所采用的算法是否高效。

5.硬件制约因素如:磁盘I/O,CPU性能等。

6.单词重复率,TreeMap中是否有该单词,如果一个单词重复率很高,那每次在Treemap中找单词的时间并加一的时间要比直接添加到TreeMap中的时间长。

  在原函数中,加入了三行代码,就是计算了一下时间。在文件末尾加上了运行时间,详情见上面两个txt,拉到最后,另外写了个随机生成文本的程序,可以随机生成不同长度的文 本,第一个result.txt对应的是长度为100000的,第二个1000000。

   我们得出的结论是,文件越大,时间越长,但是也不一定,如果文件中特殊字符比较多,那么一个小文件可能跑出来的时间比一个只有英文单词的大文件时间还长。这是我们组的高级功能。具体请看GitHub上传文件。

   

 

  四、小组存在的问题

因为我们小组是临时组合的一只队伍,任务时间也比较紧,导致我们对合作开发不是很理解。后来分工,四个人每个人完成一部分,单独做那一部分还好,当时当代码整合的时候就爆发出一大堆的问题。改进方法,删掉多余注释,并整体重新运行一次单元测试。

运行截图如下:

 第4周小组作业:WordCount优化

 

 

遇到错误截图:

 第4周小组作业:WordCount优化

 

 

小组贡献:0.2

参考文献:

代码规范与代码复审:

http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

FindBugs参数代表含义:

https://blog.csdn.net/fancy_xty/article/details/51718687