201671010431唐璐+《英文文本统计分析》
一、实验目的与要求
- 1.体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
- 2.掌握Github上增量发布软件的操作方法。
博文简要信息表
二、实验内容和步骤
任务1:两两自由结对,对结对方的《实验二 软件工程个人项目》的项目成果进行评价
(一)具体要求如下:
1.对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究。
2.克隆结对方项目源码到本地机器,阅读并测试运行代码,结合运行结果评论程序代码,评论要点包括:软件结构、代码规范、功能实现、人机交互等。
3.尝试利用github中的Fork、Clone、Push、Pull request、Merge pull request对结对方仓库中的源码进行合作修改。
(二)过程如下:
- 点评博客:https://www.cnblogs.com/chenjing1/p/10557467.html-
- 结对方的Github地址: https://github.com/chenjingjinglove/Chenjing
- 点评内容:
读完博文后:
1.博文结构相对完整,排版规范,但最后未对PSP做总结;
2.项目实现上功能描述简单,没有实现柱状图功能;
3.源码上传GitHub出现zip格式问题;
最后java编程能力需加强,学习态度认真,继续加油! - 点评心得:
通过阅读博文和学习对方项目内容,让我深深体会到陈靖认真的学习态度,尽管编程能力欠缺,但是细心请教学长学姐,这一点是值得学习的,博文规范清晰,再反思我的项欠缺了很多,还要学习的地方太多,点评对方的项目,使我们共同学习,共同进步。
任务二:采用两人合作方式,设计开发一个英文文本统计分析软件。
(一)需求分析:
1.实验2要求的功能;
2.单词频数可视化柱状图要求是以下样式:
3.统计该文本行数及字符数;
4.各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
5.可处理任意用户导入的任意英文文本;
6.人机交互界面要求GUI界面(WEB页面、APP页面都可)。
(二)核心功能代码展示:
- 高频词的统计
- 柱状图的实现
- 行数与字符数的统计
(三)程序运行结果:
- 词频统计
- 柱状图实现
- 行数与字符数实现
- 将统计结果返回到result.txt文档中
(四)描述结对的过程,提供两人在讨论、细化和编程时的结对照片。
1.结对过程:首先在看到老师发布的实验任务书时,我先是找到我的结对方,接下来就开始了我们的计划。因为结对编程在开发过程中,需要有两个角色,分别是“驾驶员”和“领航员”,且驾驶员的作用是控制鼠标和键盘的使用,即负责编码工作,而领航员得作用是坐在驾驶员一旁观察和思考,即负责检查错误、考虑解决方案。但鉴于我们两个的Java编程能力都比较薄弱,一人完成不了编码的任务,所以在整个开发过程中,我们都是采用两人互相合作的方式,这两个角色的任务没有那么分工明确,但在开发过程中,两个人均付出了自己的努力。
下面就是我们此次结对编程的步骤:首先我们在拿到题目后,根据老师的需求,我们通过坐在一起讨论的方式,明确了设计思路,并编写了需求分析(由于老师在实验任务书中的需求分析写的比较明确,所以这个阶段用时不是很多);紧接着就是具体编码这一步骤了,这一阶段对我们来说是最困难的,在这一阶段中,我们互相吸取结对方比较好的意见并采用,在遇到技术盲区时,我们也是各自先查找资料,各自先学习,在两个人都查找完成后,再坐在一起发表各自的想法,最后再用于项目中;然后就是代码复审和测试阶段,在这一阶段中我是负责代码复审的工作,而结对方负责项目的测试阶段,在双方的工作都完成后,再坐在一起说出自己的意见,即我们发表一下我们觉得这个项目有什么不足的地方,且有哪些地方是可以改进的;最后就是撰写设计报告了,即写博文,这一阶段我们先是自己写自己的,在双方都写完后,再坐在一起互相看对方的博文,并指出结对方的博文的不足之处,再总结一下这一项目的开发对我们的学习作用。通过以上结对编程步骤,我们这一组的结对编程任务就完成了,当然在这一过程中,我们遇到了很多不懂的问题,最后的任务完成的也不是很完美,但我们会继续努力。
下面是我们两人在讨论、细化和编程时的结对照片:
(五)此次结对作业的PSP展示:
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成所需要的时间(min) |
---|---|---|---|
Planning | 计划 | 12 | 8 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 10 |
Development | 开发 | 600 | 800 |
Analysis | 需求分析(包括学习新技术) | 15 | 10 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审(审核设计文档) | 15 | 20 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 15 | 20 |
Design | 具体设计 | 15 | 20 |
Coding | 具体编码 | 600 | 900 |
Code Review | 代码复审 | 20 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 50 | 70 |
Reporting | 报告 | 50 | 60 |
Test Report | 测试报告 | 30 | 40 |
Size Measurement | 计算工作量 | 15 | 20 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 | 30 |
(六)小结感受:
通过此次实验,我们发现在整个项目开发过程中遇到的问题还是很多。从我们的PSP展示可以看出来,在开发和具体编码阶段,我们计划所需要的时间和实际完成需要的时间相差太大,也用时最多,原因是我们两人的Java编程能力都比较薄弱,需要学习新的知识,所以导致我们用时最多。在开发过程中,我们相互讨论,互相帮助,互相吸取对方好的建议和意见,这也锻炼了我们的责任心,包容心,因为在这个过程中,难免两人会有不同的想法,这就需要两人相互沟通,交流,统一意见。
整个实验下来,我也深刻感受到结对编程的好处:首先可以增强我们的沟通能力和团队凝聚力;其次可以增加代码的质量,在开发过程中减少代码的错误率;最重要的一点是可以学习自己以前没接触过的新的知识。所以此次实验对我们的帮助很大,希望以后还可以一起进步!