第三次作业------结对编程

作业地址 :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.

posted @ 2019-04-05 17:18  Gonewiththe_Wind  阅读(134)  评论(2编辑  收藏  举报