14组结对项目总结

1. 14组结对项目github项目仓库地址:

https://github.com/daizuhua123/PairProject2018

2. PSP表格

PSP2.1

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

5

3

·       Estimate

·  估计这个任务需要多少时间,并规划大致工作步骤

2

2

Development

开发

135

110

··       Analysis

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

10

5

·       Design Spec

·  生成设计文档

20

5

·       Design Review

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

5

5

·       Coding Standard

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

10

5

·       Design

  具体设计

20

10

·       Coding

  具体编码

30

30

·       Code Review

·  代码复审

20

20

·       Test

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

20

30

Reporting

报告

40

15

··       Test Report

·  测试报告

20

10

·       Size Measurement

  计算工作量

10

5

·       Postmortem & Process Improvement Plan

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

10

40

3.解题思路如下:

(1)使用英文单词词频统计+ java作为关键词搜索获得原型程序;

(2)结对分析原型程序代码,比较结对项目要求与原型程序功能的差异;

(3)在原型程序基础上,进行代码的补充与完善,以满足结对项目任务中主要的统计功能要求;

(4)使用刘乾助教提供的测试文件进行程序的功能测试。

(5)进一步细化完成运行程序交互参数的技术实现。

4. 设计实现过程。

      程序只有一个类wordCount,根据任务需求,按照模块化分解,类中服务列表如下:

//集合数据排序服务

public static ArrayList<Map.Entry<String,Integer>>  SortMap(Map<String,Integer> oldmap)

//数据集合数据

public static void outputResult(ArrayList<Map.Entry<String,Integer>> list,PrintWriter ps )

//统计集合数据的单词

public static int CountWords(Map<String,Integer> oldmap)

//统计字符个数

public static int CountCharacters(String line)

类中主函数依次调用以上函数完成文本中字符数据统计、文本行数统计、单词统计等功能。

结对任务要求无复杂计算任务,无须绘制流程图。

单元测试从指定文件读入短文本数据,根据程序运行结果测试程序功能正确性。

6. 代码说明。展示出项目关键代码,并解释思路与注释说明。

关键代码如下:

//逐行读入文本文件,按任务要求逐行统计字符、单词与行数

while((readLine = br.readLine()) != null){

    rowNumbers++;//统计行数

    characterNumbers+=CountCharacters(readLine);

    String[] wordsArr1 = readLine.split("[^a-zA-Z]");  //分解单词 

            for (String word : wordsArr1) { 

                if(word.length() != 0){  //去除长度为0的行 

                    lists.add(word); //

                } 

            } 

        } 

        br.close(); 

         

    Map<String, Integer> wordsCount = new TreeMap<String,Integer>();  //存储单词计数信息,key值为单词,value为单词数      

         

     //单词的词频统计 

    for (String li : lists) { 

    if(wordsCount.get(li) != null){ 

    wordsCount.put(li,wordsCount.get(li) + 1); 

     }else

  wordsCount.put(li,1)

            } 

    } 

 结对编程总结:

        结对编程可有效突破单人编程的思维局限性,通过快速、有效地的口头交流对要解决问题的求解方案达成一致的看法和认识。结对双方在编码时,一人出声描述代码构造思路,另一人认真聆听编程者的设计思路和意图,可快速诊断编码存在的缺陷与不足。结对编程可有效诊断被程序员熟视无睹的代码误写问题。例如本次任务,编码者误将运算符“+=“写为”=+“,编码者一直未诊断出此错误,而结对方则在代码走查时,根据程序执行结果迅速定位错误。

原文地址:https://www.cnblogs.com/nwnu-daizh/p/9286116.html