一、实验目的与要求
- 1.体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
- 2.掌握Github上增量发布软件的操作方法。
二、实验内容和步骤
任务1:两两自由结对,对结对方的《实验二 软件工程个人项目》的项目成果进行评价
(一)具体要求如下:
-
1.对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究。
-
2.克隆结对方项目源码到本地机器,阅读并测试运行代码,结合运行结果评论程序代码,评论要点包括:软件结构、代码规范、功能实现、人机交互等。
-
3.尝试利用github中的Fork、Clone、Push、Pull request、Merge pull request对结对方仓库中的源码进行合作修改。
(二)过程如下:
所点评的结对方的博客园地址链接 | https://www.cnblogs.com/tanglu/p/10562403.html |
点评内容 | 首先从博文结构来看,你的总体结构还算工整,但是博文的排版不够规范,比如说各级标题看着不够清晰,还有PSP表格的制作也是错误的;其次从博文内容来看,你的内容相对于比较简单,尤其是对该程序的功能设计和设计实现比较简单,比如说没有指出该程序中用了哪些类及这些类的功能;再者从功能实现来看,没有完全实现该程序的功能,比如说柱状图这一功能没有实现,还有没有将单词及词频数按字典顺序输出到result.txt文件中;再还有从软件结构和代码规范来看,你的软件结构和代码整体还算规范,唯一美中不足的就是没有添加注释;还有就是从你上传到GitHub的代码来看,该项目的src文件未上传到GitHub上;最后从你的PSP展示可以看出,你在“开发”和“具体编码”这两个阶段的“计划完成所需要的时间”和“实际完成所用的时间”相差较大,原因可能是你的Java编程能力相对比较薄弱。希望以后的博文中注意这些问题,好好学习,再接再厉,加油! |
结对方GitHub链接地址 | https://github.com/tanglu007/lu |
点评心得 | 首先从结对方的博客可以看出,我们在实验过程中均存在很多问题,而且在遇到问题时,我们没有很快的解决问题,归其原因也是因为我们的专业知识太差,所以才导致后来我们没有在老师规定思维时间内完成该系统的所以功能;其次,我们存在的最大的问题就是Java的编程能力太薄弱,所以此次任务对于我们来说还是比较困难,但我们会尽量自己找资料,自己抽时间学习来弥补自己的不足;最后,我意识到结对合作对开发一个系统的重要性,明白了一个人的力量是有限的,所以两人合作很好的解决了这一问题。 |
任务二:采用两人合作方式,设计开发一个英文文本统计分析软件。
(一)需求分析:
-
1.实验2要求的功能;
-
2.单词频数可视化柱状图要求是以下样式:
-
3.统计该文本行数及字符数;
-
4.各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms);
-
5.可处理任意用户导入的任意英文文本;
-
6.人机交互界面要求GUI界面(WEB页面、APP页面都可)。
(二)核心功能代码展示:
- 高频词的统计
- 柱状图的实现
- 行数与字符数的统计
(三)程序运行结果:
- 词频统计
- 柱状图实现
- 行数与字符数实现
- 将统计结果返回到result.txt文档中
(四)描述结对的过程,提供两人在讨论、细化和编程时的结对照片。
-
1.结对过程:首先在看到老师发布的实验任务书时,我先是找到我的结对方,接下来就开始了我们的计划。因为结对编程在开发过程中,需要有两个角色,分别是“驾驶员”和“领航员”,且驾驶员的作用是控制鼠标和键盘的使用,即负责编码工作,而领航员得作用是坐在驾驶员一旁观察和思考,即负责检查错误、考虑解决方案。但鉴于我们两个的Java编程能力都比较薄弱,一人完成不了编码的任务,所以在整个开发过程中,我们都是采用两人互相合作的方式,这两个角色的任务没有那么分工明确,但在开发过程中,两个人均付出了自己的努力。
下面就是我们此次结对编程的步骤:首先我们在拿到题目后,根据老师的需求,我们通过坐在一起讨论的方式,明确了设计思路,并编写了需求分析(由于老师在实验任务书中的需求分析写的比较明确,所以这个阶段用时不是很多);紧接着就是具体编码这一步骤了,这一阶段对我们来说是最困难的,在这一阶段中,我们互相吸取结对方比较好的意见并采用,在遇到技术盲区时,我们也是各自先查找资料,各自先学习,在两个人都查找完成后,再坐在一起发表各自的想法,最后再用于项目中;然后就是代码复审和测试阶段,在这一阶段中我是负责代码复审的工作,而结对方负责项目的测试阶段,在双方的工作都完成后,再坐在一起说出自己的意见,即我们发表一下我们觉得这个项目有什么不足的地方,且有哪些地方是可以改进的;最后就是撰写设计报告了,即写博文,这一阶段我们先是自己写自己的,在双方都写完后,再坐在一起互相看对方的博文,并指出结对方的博文的不足之处,再总结一下这一项目的开发对我们的学习作用。通过以上结对编程步骤,我们这一组的结对编程任务就完成了,当然在这一过程中,我们遇到了很多不懂的问题,最后的任务完成的也不是很完美,但我们会继续努力。 -
2.下面是我们两人在讨论、细化和编程时的结对照片:
(五)此次结对作业的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编程能力都比较薄弱,需要学习新的知识,所以导致我们用时最多。在开发过程中,我们相互讨论,互相帮助,互相吸取对方好的建议和意见,这也锻炼了我们的责任心,包容心,因为在这个过程中,难免两人会有不同的想法,这就需要两人相互沟通,交流,统一意见。
整个实验下来,我也深刻感受到结对编程的好处:首先可以增强我们的沟通能力和团队凝聚力;其次可以增加代码的质量,在开发过程中减少代码的错误率;最重要的一点是可以学习自己以前没接触过的新的知识。所以此次实验对我们的帮助很大,希望以后还可以一起进步!
任务三:博文简要信息表:
项目 | 内容 |
作业所属课程:软件工程 | 任课教师博客主页链接:https://www.cnblogs.com/nwnu-daizh/ |
作业要求 | 作业链接地址:https://www.cnblogs.com/nwnu-daizh/p/10569690.html |
课程学习目标 | 熟悉软件开发整体流程,提升自身能力 |
本次作业在哪个具体方面帮助我们实现目标 | 第一次体验一个完整的工程 |