201871010202-曹盼盼 软件工程结对项目
201871010202-曹盼盼 软件工程结对项目
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客 |
这个作业要求链接 | 作业要求 |
我的课程学习目标 | 1.修改完善上一次项目中的不足之处,完成本次实验新增加的内容。 2.体验与他人结对合作完成项目的乐趣。 3.将程序设计、数据库、算法设计中学过的内容与软件工程中所学的知识结合起来。 |
这个作业在哪些方面帮助我实现学习目标 | 1.开发相应的软件项目,完成作业博客的撰写。 2.通过开发软件项目这种实际动手能力更强的练习,体验这样的方法与传统的书面作业有何区别。 |
结对方学号-姓名 | 201871010203-陈鹏昱 |
结对方本次博客作业链接 | 结对方博客 |
本项目Github的仓库链接地址 | GitHub仓库 |
1. 实验目的与要求
(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
(2)掌握Github协作开发程序的操作方法。
2. 实验内容
任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念
第3章的主要内容是软件工程师的成长,第4章的主要内容是两人合作。
本次实验的内容与第4章练习更加紧密。软件工程师的成长主要包括个人能力的衡量与发展、软件工程师的思维误区、软件工程师的职业发展、技能的反面等内容;两人合作主要包括代码规范、代码风格规范、代码设计规范、代码复审、结对编程、两人合作的不同阶段和技巧等内容。
- 代码风格规范:就是代码格式的一些要求。主要有以下几个方面:
- 缩进
- 行宽
- 括号
- 断行与空白的行
- 分行
- 命名
- 下划线
- 大小写
- 注释
代码风格规范的原则是简明、易读、无二异性。
- 代码设计规范:不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式等方方面面。主要体现在以下几个方面:
- 函数
- goto
- 错误处理
- 参数处理
- 断言
- 如何处理C++中的类
- 类
- class vs.struct
- 公共/保护/私有成员(public、protected和private)
- 数据成员
- 虚函数
- 构造函数
- 折构函数
- new和delete
- 运算符(Operators)
- 异常(Exceptions)
- 类型继承(Class Inheritance)
- 代码复审:查看代码是否符合代码规范,找出软件开发过程中的错误,降低软件开发后期维护的难度,提高软件的质量和可靠性。
- 结对编程:结对编程中有两个角色:领航员和驾驶员。在个人编写的过程中,很多人喜欢根据个人喜好来规定代码规范,而且存在的bug自己难以发现,因此,在结对编程时,我们可以互换角色,在开始写代码之前,规定两个人都认可的一套代码规范,并且不间断地进行复审,以减少软件中存在的问题,修复bug,提高软件质量。
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
克隆项目源代码有多种不同的方式,可以根据实际情况选择。
(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
任务3:采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台,使之具有以下功能:
(1)平台基础功能:实验二 任务3;
项目的基本功能已在实验二中实现,需要注意的是本次需要用图形用户界面或web界面实现。
(2)D{0-1}KP 实例数据集需存储在数据库;
我们计划用SQL Sever,Mysql,Oracle中的一种来存储数据。
(3)平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;
D{0-1}KP可以用多种算法实现,我们需要学习每一种算法。
(4)人机交互界面要求为GUI界面(WEB页面、APP页面都可);
我们计划用C#完成GUI界面。
(5)查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);
遗传算法在以前的算法设计与分析课中没有学习过,需要通过阅读课外资料、网上查找相关资 料实现。
(6)附加功能:除(1)-(5)外的任意有效平台功能实现。
任务4:完成结对项目报告博文作业
在完成项目的开发、测试后,最后进行了写博客,只要项目开发出来,这一过程就比较简单了,主要是对项目的需求分析,项目的运行结果等内容,写完后已发布到博客园平台。
3. PSP
PSP中每个项目的实际完成时间基本都大于等于计划时间,以后还要继续努力,争取在计划时间内完成。
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
· Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 30 |
Development | 开发 | 213 | 253 |
·· Analysis | 需求分析 (包括学习新技术) | 20 | 30 |
· Design Spec | · 生成设计文档 | 20 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 30 |
· Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 3 |
· Design | 具体设计 | 10 | 10 |
· Coding | 具体编码 | 120 | 150 |
· Code Review | · 代码复审 | 10 | 10 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 12 | 12 |
·· Test Report | · 测试报告 | 5 | 5 |
· Size Measurement | 计算工作量 | 2 | 2 |
· Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 5 | 5 |
4. 小结感受:两人合作真的能够带来1+1>2的效果吗?通过这次结对合作,请谈谈你的感受和体会。
- 两个人合作不是简单的把各自的成果累加起来,通过两个人的合作、交流可以达到\(1+1>2\)的效果,如果是单独一个人完成本次实验,难度会大很多。我与我的结对伙伴——陈鹏昱的项目开发经验都不是很成熟,这次实验完成的不是很好,在以后的学习过程中,我们还需要多向他人学习、请教。
- 这次实验内容需要在上次的基础上完成,增加了需要用GUI界面或Web页面展示项目的功能,难度更大;
- 实验时间与上次一样,都是两周,但对于这种比较复杂的实验任务,时间并不宽裕;
- 这次实验是由两个人结对编程完成,虽然两人合作可以解决更多的难题,但实验难度大,项目开发过程中依然遇到了很多难题;
- 本次实验需要将结对方的实验二的项目下载到本地运行,实验三完成后也需要上传到Github,由于网络原因,进入Github非常慢,在执行这一操作时花费了大量时间。
- 这次实验内容多、难度大,需要花费很多时间完成,而且需要用到相关算法的知识以及数据可视化的知识,综合性强,最重要的是让我体验了开发一个软件项目的流程,本次实验收获很多,还有部分设计未能实现,需要继续努力。