软件工程基础结对编程作业
一.幸福生活
1.结对伙伴
姓名:向恒越
学号:201831061327
2.幸福结晶--如下
二.PSP表格
Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 半天 | 半天 |
估计这个任务需要多少时间 | 5天 | 6天 |
开发 | 2天 | 2天半 |
需求分析 (包括学习新技术) | 一天 | 一天半 |
生成设计文档 | 一小时 | 一小时半 |
设计复审 (和同事审核设计文档) | 半小时 | 半小时 |
代码规范 (为目前的开发制定合适的规范) | 一小时 | 一小时 |
具体设计 | 半天 | 半天 |
具体编码 | 一天 | 一天 |
代码复审 | 半天 | 半天 |
测试(自我测试,修改代码,提交修改) | 一小时 | 一小时 |
报告 | 一小时 | 一小时 |
测试报告 | 半小时 | 半小时 |
事后总结, 并提出过程改进计划 | 半小时 | 半小时 |
合计 | 五天 | 6天 |
三.懵逼全过程
1 运行效果
input文档
运行效果
output文档
2.关键模块与函数设计
由于函数很多,为了减少主程序的阅读负担,我与同伴将大部分函数写成了一个word模块,下面剖析其中奥妙:
a.计算字符数,字母数,数字数量
b.计算行数
c.将读取的字符串的单词存入列表,以便后续操作
如单词的个数计算在主函数中通过len()函数计算
d.'-m'命令的实现
按照用户需求将刚刚存入列表的单词分成词组存入新列表列表,进行嵌套
将嵌套列表散列为元组,以该元组作为键,其出现次数为键值,封装成字典
d.'-n'命令的实现
调用自带的模块collection 中的Counter类,实现正确指定的数量的词频单词及其次数
3.代码更改的痛楚
我和同伴虽然函数是分工写的,但主函数是由我写的,所以后面由他改的时候很费劲,因为要维持程序有一定的健壮性,就很繁琐,为此也学习了一些新知识填补未知,如:
这是为了命令保证其准确性,又如
为了确保打开文件失败时不会直接导致程序的崩溃,像这样的该正可谓声势浩大的“工程"
4.单元测试
运用python自带的unittest模块对每个函数进行测试,这个过程由于我与伙伴写函数时编写边改,最后测试时,基本没什么大问题
四.获奖感言
本次结对的过程让我感受到了两人默契的重要性,因为和伙伴是一起开黑的送分兄弟,所以我们互相写的部分都能被对方很好的接手。由于没学过python,所以我主要负责的就是算法实现,顺便也学了些python的知识,很是受用。