一.Github地址

https://github.com/Adogssky/WordCountGroupWork

二.psp表格

PSP2.1表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

   

· Estimate

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

300  370

Development

开发

   

· Analysis

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

 30  30

· Design Spec

· 生成设计文档

 60 45 

· Design Review

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

 30 20 

· Coding Standard

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

 30 30 

· Design

· 具体设计

 30 30 

· Coding

· 具体编码

 45 30 

· Code Review

· 代码复审

 30 30 

· Test

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

 60 75 

Reporting

报告

   

· Test Report

· 测试报告

 60 45 

· Size Measurement

· 计算工作量

 20 20 

· Postmortem & Process Improvement Plan

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

 30 30 
 

合计

 350 375 
### 三.接口实现 个人负责的是词频统计模块,与单词分割模块和输出模块对接。 从单词分割模块接受一个字符串数组作为本模块的输入 ``` ArrayList input = new ArrayList(); Map map = new HashMap(); List> list = new ArrayList<>(); public void setInput(ArrayList i){ this.input = i; } ```

获取输入之后进行词频统计,算法原理非常简单,不在此赘述,代码很短,如下

public void count(){
		for(String p:input){
			if(map.get(p) == null){
				map.put(p,1);
			}
			else{
				int tmpCount = map.get(p) + 1;
				map.remove(p);
				map.put(p,tmpCount);
			}
		}
		for(Map.Entry<String, Integer> entry : map.entrySet()){
             list.add(entry); 
        }

        list.sort(new Comparator<Map.Entry<String, Integer>>(){
              @Override
               public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                    return o2.getValue()-o1.getValue();} 
                   //逆序(从大到小)排列,正序为“return o1.getValue()-o2.getValue”
        }); 
        
        for(Map.Entry<String, Integer> entry: list){
              System.out.println(entry);
        }

	}

四.测试用例

本人负责模块只接受一种输入,也就是字符串数组,测试全部采用黑盒测试
首先是常规输入

@Test
	void WCwordcountTest_1(){
		WCwordcount wc = new WCwordcount();
		wc.input.add("assd");
		wc.count();
	}

	@Test
	void WCwordcountTest_2(){
		WCwordcount wc = new WCwordcount();
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.count();
	}

	@Test
	void WCwordcountTest_3(){
		WCwordcount wc = new WCwordcount();
		wc.input.add("p_wq");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.count();
	}

之后又测试了转义字符与空格作为数组项的输入

@Test
	void WCwordcountTest_5(){	
		WCwordcount wc = new WCwordcount();
		wc.input.add("oqpwq");
		wc.input.add("\n");
		wc.input.add("owowo");
		wc.count();
	}
	@Test
	void WCwordcountTest_6(){
		WCwordcount wc = new WCwordcount();
		wc.input.add("  ");
		wc.input.add("\n");
		wc.input.add("a");
		wc.count();
	}
	@Test
	void WCwordcountTest_7(){
		WCwordcount wc = new WCwordcount();
		wc.input.add("a");
		wc.input.add(" ");
		wc.input.add("owowo");
		wc.count();
	}

最后是综合测试

@Test
	void WCwordcountTest_13(){
		WCwordcount wc = new WCwordcount();
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.input.add("assd");
		wc.input.add("aa");
		wc.input.add("owowo");
		wc.count();
	}

五.运行截图

运行截图如下

六.小组贡献

完成了词频统计的核心功能
贡献度0.22

扩展任务

七.规范理解

开发文档:《阿里巴巴Java开发手册》
《阿里巴巴java开发手册》对于变量命名和OOP规约都有很严格的规定,我自己在开发的时候变量命名不够规范,没有复合严格的OOP规约,同时我也没有做到很好的注释所写的代码

八.代码评价分析

评价对象:游晨宇 17119 负责模块:单词分割模块
变量命名没有按照《开发手册》
没有良好的注释

九.静态代码分析工具

使用的工具:checkstyle
下载地址:https://sourceforge.net/projects/checkstyle/files/checkstyle/

十.分析结果

十一.小组代码问题

前期沟通不够,整合时花费了较多时间,代码风格没有很好的统一起来