zoukankan      html  css  js  c++  java
  • 结对编程(第7组)

    1、Github项目地址:https://github.com/Ahusbj/PairProject2018

    2、PSP表格

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

    180

     

    · Estimate

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

       

    Development

    开发

    120

    180

    · Analysis

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

    10

    10

    · Design Spec

    · 生成设计文档

       

    · Design Review

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

    20

    20

    · Coding Standard

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

       

    · Design

    · 具体设计

    20

    20

    · Coding

    · 具体编码

    80

    120

    · Code Review

    · 代码复审

       

    · Test

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

    20

    20

    Reporting

    报告

       

    · Test Report

    · 测试报告

    10

    10

    · Size Measurement

    · 计算工作量

       

    · Postmortem & Process Improvement Plan

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

    50

    60

     

    合计

    330

    440


    思路:3、解题思路描述

    (1)对于统计字符和行数来说,首先通过遍历文档找中每一个字符(符合特定ASCII范围)和换行符的个数,从而进行统计。

    (2)统计单词个数的时候,首先遇到字符的时候,考虑其是不是首个字母(直接与分隔符相连),如果是的话,则开始计算在遇到下一个分割符的时候,中间相隔几个字符(从而判断是否符合单词的长度定义)

    (3)当确定单词之后,在将其存入到Hashmap中,从而获取单词的出现的频率。

    4、设计实现过程

    考虑到如下五个主要的核心功能:统计有效行数、统计字符数、统计单词数、统计文件中各单词的出现次数,最终只输出频率最高的10个、按照字典序输出到文件。

    (1) Compoment design schema

    软件构件的设计设计如下三个构建:

    WordCountCore构件用于实现系统的核心功能:统计有效行数、统计字符数、统计单词数、统计频率最高的TopTen单词。

    OutputModule输出部分作为一个单独的构件进行设计。

    UnitTestModule考虑到单元测试,该模块作为一个单独的构件设计用于来充分对WordCountCore的四个核心功能进行针对性测试。

    (2) Class design

    WordCountCore构件可以以动态库dll的形式完成,其实现通过WordOperation类来进行实现。

    四个核心功能在类中设计为public函数,方便其他模块的调用,并同时考虑到重用。

    其他支持性功能在类中设计为private函数。

    5、记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。

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

    (1)通过逐行读取文档中字符的内容,以换行符为标记获取行数,此外,在读取每行的字符内容的过程中,进行字符的判断,判读其是否属于我们所设定的字符范围内,以便进行字符个数的统计。

    (2)在字符统计的过程中,首先判断在每个单词中,首字母(该字符的前一个字符是分隔符)的位置,然后获取结束字符的位置(该字符的下一个字符是分割符),然后进行两次判断:

    A、判断结束字符与首字符之间的间隔小于4个字符长度,则直接忽略(不是我们需要的单词),接下来执行下面的步骤B;

    B、然后判断这个“单词”是不是以连续的四个英文字符开头,符合要求则是我们需要的单词,然后将其存储到hashmap中,否则,直接忽略,直接进行下一个的单词判断。

     

    C、通过对hashmap中的单词进行sort排序,从而输出频率出现最多的m个单词信息。

    7、结合在构建之法中学习到的相关内容与结对项目的实践经历,撰写解决项目的心路历程与收获。

    通过此次的结对编程,深刻理解到了两人结对对工作效率的重要性,相对于单个人的编程,在面对于较大的工作量的时候,有时候便难以胜任,通过两人的合作,一个人编写,另一人监督指导,既可以减少在代码书写过程中的错误,也可以进行一些思想思路上的帮助(当遇到编程思路障碍的时候)。

  • 相关阅读:
    Matching「CEOI2011」
    中位数之中位数「NOIP多校联考 2019」
    积木「CSP-S全国排位赛第一场」
    序列「CSP-S全国排位赛第一场」
    GT考试「HNOI2008」
    动物园「NOI2014」
    Radio Transmission「BOI2009」
    小Z的袜子「国家集训队」
    BZOJ3624: [Apio2008]免费道路
    BZOJ1190: [HNOI2007]梦幻岛宝珠
  • 原文地址:https://www.cnblogs.com/ahusbj/p/9285262.html
Copyright © 2011-2022 走看看