• 第三次作业结对编程


    作业地址 :https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2879
    GitHub项目地址:https://github.com/pbnbpb/WordCount.git
    结对伙伴博客地址:https://www.cnblogs.com/XiaoPB/p/10658874.html

    01. PSP表格

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

     10  15

    · Estimate

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

     10  15

    Development

    开发

     200  300

    · Analysis

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

     30  100

    · Design Spec

    · 生成设计文档

     30  0

    · Design Review

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

     30  0

    · Coding Standard

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

     25  25

    · Design

    · 具体设计

     10  15

    · Coding

    · 具体编码

     180  300

    · Code Review

    · 代码复审

     30  45

    · Test

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

     15    25

    Reporting

    报告

     20  30

    · Test Report

    · 测试报告

     10  20

    · Size Measurement

    · 计算工作量

     30  0

    · Postmortem & Process Improvement Plan

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

     10  25
     

    合计

     515  915

    02.结对讨论

     我这次结对编程作业是和我室友庞斌同学组队完成的,由于我编程基础没有他的好,所以他负责编码工作,我在一旁帮他分析与他一同讨论,编码后的测试环节和性能分析环节由我完成。具体编码信息在我搭档的博文当中,而其他的在我的博文当中。

    合作过程照片:

    03.  计算模块接口的设计与实现过程:

    看到这个作业要求我和队友都一头雾水,类似于统计文本字数的编程我只在大一时用C语言编过很简单的小程序,但是像这次这么多用户需求的程序我们两人找不到好的解决办法,于是在网上查阅了很多的资料,有将文本信息导入到 dictionary 函数中的方法,还有就是用hashtable的方法,我室友选择了后者。同是他讲编程的思路画了一张设计图如下:

    具体的过程在我室友的博文当中。我就不过多描述了。

    04.代码复审过程

    我们用的是一片英文小说------《失物之书》进行文本的调用。

    他写完代码过后,我与他经过不断的调试,将代码完善。

    《遇到的问题》: 1.最开始我发现我们输出的结果 Word数并不正确,原因在于我们输出的是单词的种类,并不是他的总个数,于是他进行了代码的修改,最终输出正确答案。

     最初输出结果:

    修正过后输出结果:

      2. 我发现他的代码有些地方构思很巧妙,我看了很久才看懂,比如通过ArrayList以及插入排序实现了对其频数的降序排序等等。

    05.单元测试部分:

    《遇到的问题》:1.他的很多方法的调用都在主函数当中进行,而单元测试的引用并不能从主函数当中直接调用,所以我将情况和他说明过后和他新建立了一个Test()类,将主函数中的类的调用写在Test()类中,而再由主函数来调用Test()类;代码如下:

    public static void Main(string[] args)
    
    
            {
                Program pro = new Program();
                pro.Test();
            }
            public void Test()
            {
                string path = @"E:\Text\失物之书.txt";
    
                StreamReader txt = new StreamReader(path);//读取文件内容
    
                ArrayList AKEYS = new ArrayList(ht.Keys);
    
                string outpath = @"E:\Text\txt1.txt";
                int line, letcount, n;
                int wordcount = 0;
                Console.WriteLine("列出前n个频数的单词");
                n = int.Parse(Console.ReadLine().ToString());
    
                line = LineCount(path);//行数统计
                letcount = letterCount(path);//字符数统计
                ht = WordCount(path, ht);//单词频数统计
                wordcount = WordCount1(path, tmep);//单词总数统计
                AKEYS = oreder(ht);//单词频数降序排列
                outPut(path, ht, outpath, n, line, letcount, AKEYS, wordcount);//输出至文本内
                txt.Close();
                Console.WriteLine(ht[0]);
                Console.ReadKey();
            }

    2. 他在很多类当中申明了许多临时变量,无法再测试函数中引用,所以又将有的变量改为全局变量,而后完成了测试。

    0.6 性能分析

    这是我做的Cpu性能分析:

    从图中我们可以看到 函数 WordCount 消耗的时间最多,CPU所占比例也很大,但是我不知道怎么改进。

    0.7我与他商量定制的代码规范:

    1.关键的代码,方法后要有注释,能清晰表达其作用。

    2.代码缩进要有条理,让人明白大体结构。

    0.8 提交项目 

    0.9 总结

    这次两人合作的项目我们遇到了不少的困难,很多就是不懂,需要去查找资料,自己学习弄明白,在找资料的过程中花费了很多的时间,我认为我的搭档非常的认真和负责,很好地完成了他的工作并协助我完成我的工作。我从这次结对编程中体会到合作的重要性与难度,希望自己能在这种合作当中不断成长进步,能与自己的队友相处良好,多沟通,多交流,毕竟 1+1>2.

  • 相关阅读:
    错误提示窗口-“操作系统当前的配置不能运行此应用程序”
    打印机无法打印的10种解决方法
    开发进度三
    人月神话阅读笔记二
    开发进度二
    开发进度1
    人月神话阅读笔记一
    库存物资管理系统
    四则运算
    动手动脑5
  • 原文地址:https://www.cnblogs.com/Xl2248570171/p/10636087.html
Copyright © 2020-2023  润新知