第三次作业
一.
作业地址:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2879
GIT仓库地址:https://github.com/softwareXS/WordCount
二.PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
20 |
· Estimate |
· 估计这个任务需要多少时间 |
|
|
Development |
开发 |
100 |
100 |
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
80 |
· Design Spec |
· 生成设计文档 |
|
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
60 |
60 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
30 |
20 |
· Design |
· 具体设计 |
40 |
40 |
· Coding |
· 具体编码 |
300 |
300 |
· Code Review |
· 代码复审 |
60 |
40 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
30 |
30 |
Reporting |
报告 |
|
|
· Test Report |
· 测试报告 |
|
|
· Size Measurement |
· 计算工作量 |
|
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
10 |
10 |
|
合计 |
710 |
690 |
三. 计算模块接口的设计与实现过程
此次作业我定义了一个接口,该接口有6个方法,如下图
然后我用doCount类去实现该接口,其中核心方法是Dictionary<string,int> CountFrequency(string path);
//计算文本中每个单词的频数
以及
void WriteToTxt(string path,string outPath);//将结果写入文件
这两个方法也是我花了大量时间去编写的,其中计算频数那个地方一开始不知道怎么存得到的单词和频数的关系,在网上学习了一下别人的看法。发现用dictionary来存,刚好key对应单词的值,value对应单词的频数。
我的类项目的主要结构如下:
同时在主函数调用方法输入各种参数那个地方,我刚开始也不知道如何实现,学习过程中,也是我第一次了解并运用了Main(String【】 args)这里面的参数的用法。我用迭代提取出args里面的每一个参数,找到特定的参数就完成特定的功能。
四. 代码复审阶段
我和我的结对伙伴在编码结束后,互相审查了对方的变量取名是否符合规范,代码运行结果是否符合预期要求。虽然制定了编码规范,但问题是我们实际写代码过程中还是可能忘记,我们互相审查的工程中将不规范的代码互相指出并修改了。工作结束后我们将代码架构到一个项目,完成了综合测试。
五.计算模块部分单元测试展示
测试的文本文件,我是从网上找了两篇英语文章进行的测试
结果单元测试都通过
同时,实际测试也可以达到预期的效果
写入的文件:
六.计算模块部分异常处理说明
我处理了main 函数传入参数有误的情况,此时会提醒输出参数有误,要求重新输入。
七.描述结对的过程,提供非摆拍的两人在讨论的结对照片。
本次实验中,我完成了doCount类和count接口的编写,唐林完成了主函数的调用和测试类的编写。
以下是代码提交截图
上传成功
八.作业小结
通过这次作业,我学会了结对编程,两个人之间的合作与配合,以及两个人之间的任务分配,理解了1+1>2.同时,又一次对GitHub进行了提交,对GitHub的提交越来越熟练了。
最后,对代码的理解层面,我也是第一次理解并学会exe文件的编写,与用main(string【】 args)对exe文件传参,完成了一次exe文件的编写。