201871010116-祁英红 实验三 软件工程结对项目
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客 |
这个作业要求连接 | 作业链接 |
我的课程学习目标 | (1)体验软件项目开发中的两人合作,练习结对编程。 (2)掌握Github协作开发程序的操作方法。 (3)加深对D{0-1}问题的解法的理解 (4)熟悉PSP流程 |
这个作业在哪些方面帮助我实现学习目标 | 在结对编程过程中完成学习目标(1), |
结对方姓名-学号 | 帖佼佼-201871010119 |
结对方本次博客作业链接 | 作业链接 |
本项目Github的仓库链接地址 | 仓库地址 |
-
任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
- 完成情况:已按要求完成
(1)代码风格规范:就是代码格式的一些要求。主要有以下几个方面:
缩进、行宽、括号、断行与空白的{}行、分行、命名、下划线、大小写、注释
代码风格规范的原则是简明、易读、无二异性。
(2)代码设计规范:不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式等方方面面。主要体现在以下几个方面:
函数
goto
错误处理:参数处理、断言、
如何处理C++中的类:类、class vs.struct、公共/保护/私有成员(public、protected和private)、数据成员、虚函数、构造函数、折构函数、new和delete、运算符(Operators)、异常(Exceptions)、类型继承(Class Inheritance)
(3)代码复审:查看代码是否符合代码规范,找出软件开发过程中的错误,降低软件开发后期维护的难度,提高软件的质量和可靠性。
(4)结对编程:结对编程中有两个角色:领航员和驾驶员。在个人编写的过程中,很多人喜欢根据个人喜好来规定代码规范,而且存在的bug自己难以发现,因此,在结对编程时,我们可以互换角色,在开始写代码之前,规定两个人都认可的一套代码规范,并且不间断地进行复审,以减少软件中存在的问题,修复bug,提高软件质量。
- 完成情况:已按要求完成
-
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
- (1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
完成情况:已按要求完成,结对方实验二作业博客链接:(https://www.cnblogs.com/-8tjj/p/14576097.html)
- (2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
完成情况:按要求测试结对方的代码,运行截图如下:
复审同伴项目代码并记录:
1、概要部分
(1)代码符合需求和规格说明么?
代码符合需求
(2)代码设计是否考虑周全?
考虑较周全
(3)代码可读性如何?
可以顺利读下去
(4)代码容易维护么?
比较容易维护
(5)代码的每一行都执行并检查过了吗?
是的,都可以执行
2.代码规范部分
修改的部分符合代码标准和风格么?
符合
3.可读性
代码可读性如何?有没有足够的注释?
可以顺利读取
4.可测试性
可以测试运行出来结果
- (3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
- (1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
-
任务3:采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台,使之具有以下功能:
(1)平台基础功能:实验二 任务3;
(2)D{0-1}KP 实例数据集需存储在数据库;
(3)平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;
(4)人机交互界面要求为GUI界面(WEB页面、APP页面都可);
(5)查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);
(6)附加功能:除(1)-(5)外的任意有效平台功能实现。
结对编程项目实施要求及代码部分评分细则(30分):
结对编程讨论照片:
结对编程开发进度计划的要求:在项目正式之前,预估本次结对项目任务的PSP环节的消耗时间,并在PSP过程中统计实际耗时,填写PSP表格。
psp表格:
PSP3.1 | 任务内容 | 计划共完成需要的时间(h) | 实际完成需要的时间(h) |
---|---|---|---|
Planning | 计划 | 5 | 7 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 6 | 9 |
Development | 开发 | 15 | |
Analysis | 需求分析 (包括学习新技术) | 2 | 6 |
Design Spec | 生成设计文档 | 2 | |
Design Review | 设计复审 (和同事审核设计文档) | 10 | |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | |
Design | 具体设计 | 22 | |
Coding | 具体编码 | 34 | |
Code Review | 代码复审 | 11 | |
Test | 测试(自我测试,修改代码,提交修改) | 2 | |
Reporting | 报告 | 2 | |
Test Report | 测试报告 | 2 | |
Size Measurement | 计算工作量 | 1 | |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 1 |
- 任务4:完成结对项目报告博文作业(30分,以下给出评分细目)
总结:其实结对编程做起来很简单也很有趣,两个人不断的交流,整个的设计思想两个人都能体会理解。一个人操作,一个人观看,由于人的思维速度是快于输入代码的速度的。那么观看的人可以有空闲的时间做额外的思考,观察代码写的有没有问题,结构有没有问题,完成了更高质量的代码。程序编的不那么容易出BUG,而且代码也写得更为优雅和紧凑。在结对过程中相互转换位置,两个人都能熟悉每个模块,如果单独工作,在遇到困难的时候,并不是所有人都立刻积极地去解决问题,但结对编程有一种相互督促的作用,在一边工作疲惫状态不好使,另一边会起一个鼓励和激发斗志的作用。在结对过程我也看到了自己能力上的缺陷,以前学习的时候重视理论课而疏于实践课,导致和别人在动手实践上面的差距,需要及时的弥补自己,由于编程能力弱,最后没有设计实现这次的实验内容。