作业地址:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2879
GIT仓库地址:https://github.com/pg7go/SchoolAssignment_WordCount.git
一. PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
||
· Estimate |
· 估计这个任务需要多少时间 |
180 | 122 |
Development |
开发 |
||
· Analysis |
· 需求分析 (包括学习新技术) |
10 | 12 |
· Design Spec |
· 生成设计文档 |
0 | 0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 | 0 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
0 | 0 |
· Design |
· 具体设计 |
5 | 3 |
· Coding |
· 具体编码 |
90 | 75 |
· Code Review |
· 代码复审 |
10 | 0 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 | 20 |
Reporting |
报告 |
||
· Test Report |
· 测试报告 |
10 | 7 |
· Size Measurement |
· 计算工作量 |
0 | 0 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
10 | 5 |
合计 |
145 | 122 |
二.结对讨论
昨天晚上何婷同学和我说又有新作业后,我就简单看了下作业要求,我俩就讨论了一下
讨论图↑
首先都是团队成员,我俩接触项目也不少了,这种需求基本上是上手就来,不需要查太多资料准备什么的
接下来是分工
我负责主代码方面,她这边负责代码测试和复审,做单元测试等等
我和她简单分析后简单画了下结构图
基本上是这样了,所有功能都囊括进去了
讨论很简短,可能10分钟不到,毕竟大家都有经验
三.开发过程
1.GIT的fork和clone,这个步骤太简单就没截图了
2.代码编写
两个难点吧,统计英文单词那里,还有排序那里,不过有以往经验,还是写得挺快的
写完何婷这边就进行审查和测试
3.何婷这边的测试
首先我们选了一个几十万字(算字数是10W多字,算字符是50多W,这是用msword统计的结果,老师指出后修正)的英文反乌托邦小说《1984》作为测试数据
这里可以看到一个bug,就是程序把空白算进去了
何婷给我说的时候,马上我就意识到哪里的问题了
这里少了个判断
加上
完成
4.复测
经过改正后,基本上没有问题了
5.加入新功能
6.单元测试
这方面也是一次通过,实际上是验证一下数据在正确性,结果也是正确的
7.性能测试
可以看出,占比最多的是CountWord函数,就是分析统计单词频率的这个函数
这是一个正常的结果
8.异常处理
这个在最早编码的时候就已经考虑进去了,这里只贴一张图
新改后也加入了相关的输入正确性判断
9.GIT提交
顺便把测试样例上传,方便大家做测试
四.总结
1. 结对编程特别适合学习新知识,帮助开发者快速熟悉自己所不熟悉的领域,对于新加入的成员,能很快学习到经验
2.结对编程的时间要求比较高,要两者都有时间才行
3.对于这种很小的项目,结对编程效率反而不高