zoukankan      html  css  js  c++  java
  • 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)

                } 

        } 

     结对编程总结:

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

  • 相关阅读:
    比赛-h47学长的训练赛 (27 Aug, 2018)
    比赛-OBlack学长的训练赛2 (26 Aug, 2018)
    比赛-OBlack学长的训练赛 (25 Aug, 2018)
    比赛-xxxxxyt学姐的训练赛 (25 Aug, 2018)
    比赛-一场训练赛
    比赛-wxh学长的训练赛 (23 Aug, 2018)
    比赛-sparrow学长的训练赛2 (22 Aug, 2018)
    深入JVM内核--JVM简介
    GitHub之初始化
    B-Tree索引
  • 原文地址:https://www.cnblogs.com/nwnu-daizh/p/9286116.html
Copyright © 2011-2022 走看看