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+1>2\)的效果,如果是单独一个人完成本次实验,难度会大很多。我与我的结对伙伴——陈鹏昱的项目开发经验都不是很成熟,这次实验完成的不是很好,在以后的学习过程中,我们还需要多向他人学习、请教。
  2. 这次实验内容需要在上次的基础上完成,增加了需要用GUI界面或Web页面展示项目的功能,难度更大;
  3. 实验时间与上次一样,都是两周,但对于这种比较复杂的实验任务,时间并不宽裕;
  4. 这次实验是由两个人结对编程完成,虽然两人合作可以解决更多的难题,但实验难度大,项目开发过程中依然遇到了很多难题;
  5. 本次实验需要将结对方的实验二的项目下载到本地运行,实验三完成后也需要上传到Github,由于网络原因,进入Github非常慢,在执行这一操作时花费了大量时间。
  6. 这次实验内容多、难度大,需要花费很多时间完成,而且需要用到相关算法的知识以及数据可视化的知识,综合性强,最重要的是让我体验了开发一个软件项目的流程,本次实验收获很多,还有部分设计未能实现,需要继续努力。
posted @ 2021-04-14 09:05  caopanpan  阅读(78)  评论(0编辑  收藏  举报