夏热握火

导航

201871010125 王玉江 实验三 软件工程结对项目

项目内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/14604444.html
我的课程学习目标 1.熟悉PSP流程 
2. 熟悉github操作 
3.加深对D{0-1}问题的解法的理解
4.熟悉java语言开发程序的一般流程
5.体验软件项目开发中的两人合作,练习结对编程
这个作业在哪些方面帮助我实现学习目标

1. 更加熟练git的相关操作 
2. 熟练markdown编辑器的使用方法

 

结对方学号-姓名 201871010124  王生涛
结对方本次博客作业链接 https://www.cnblogs.com/ws-t/p/14600409.html
本项目Github的仓库链接地址  

博客正文

任务1:

阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;

 

  

 

 

 

 

 

 

 

 

名词内容
代码风格规范 主要是文字上的规定。(1)代码风格的原则是:简明、易读、无二义性;(2)对于缩进、行宽、括号、分行、命名、下划线、注释、大小写以及断行与空白的{}行的处理;(3)缩进限定为100字符;(4)复杂的条件表达式中,用括号表示逻辑优先级;(5)有清晰的断行和分行;命名应该遵循规则,简洁易懂。
代码设计规范 (1)牵扯到程序设计、模块之间的关系、设计模式等。(2)针对函数:只做一件事,并且要做好。可以使用goto实现单一的出口;(3)还有错误处理方面的一些内容,比如断言的正确使用等规范;(4)错误处理的时间更甚于程序功能的实现;(5)所有的参数都要验证其正确性,验证正确性使用断言。
代码复审 (1)形式:自我复审、同伴复审、团队复审;(2)目的:找出代码错误、发现逻辑错误、发现算法错误、发现潜在的错误和回归性错误、发现可能需要改进的地方、传授经验;(3)代码复审后把记录整理出来:更正明显的错误、记录无法很快更正的错误、把所有的错误记在自己的一个“我常犯的错误”表中,作为以后自我复审的第一步。
结对编程概念 角色:驾驶员:控制键盘输入;领航员:起到领航、提醒的作用。好处:(1)在开发层次,可以提供更好的设计质量和代码质量,两人合作解决问题的能力更强。(2)对开发人员,带来更多的信心,高质量的产出带来更高的满足感。(3)企业管理层次上,有效地交流,相互学习和传递经验,分享知识,取得更高的投入产出比。

任务2:

两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
(1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。

 

 

 

(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。

任务3:

采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台;

要求实现的具体功能如下:

 

 

 

设计前期知识:

遗传算法:
  • 遗传算法是根据生物进化的模型提出的一管优化算法。
  • 原理:遗传算法将生物进化原理引入待优化参数形成的编码串群体中,按着一定的适值函数及一系列遗传操作对各个体进行筛选,从而使适值高的个体被保留下来,组成新的群体,新群体包含上一代的大量信息,并且引入了新的优于上一代的个体。这样周而复始,群体中各个体适值不断提高,直至满足一定的极限条件。此时,群体中适值最高的个体即为待优化参数的最优解。
  • 特点:
    (1)遗传算法是对参数的编码进行操作,而非对参数本身。
    (2)遗传算法是从许多点开始并行操作,并非局限于一点,从而可有效防止搜索过程收敛于局部最优解。
    (3)遗传算法通过目标函数计算适值,并不需要其它推导和附加信息,因而对问题的依赖性较小。
    (4)遗传算法的寻优规则是由概率决定的,而非确定性的。
    (5)遗传算法在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索。
    (6)遗传算法对所求解的优化问题没有太多的数学要求。
    (7)遗传算法具有并行计算的特点,因而可通过大规模并行计算来提高计算速度。
  • 基本操作:遗传、变异和交叉。
  • 1、需求分析:遗传算法作为当今一个比较热门的研究方向,在解决最优化问题上有着良好的作用。遗传算法利用基因编码,对其进行生成、杂交、变异、选择等操作,产生不同的基因序列,使解一步一步向最优解逼近,未来发展前景也是相当不错的。
  • 2、设计说明:
  • 3、软件实现:
  • 4、程序运行:
  • 5、结对的过程

     

     

  • 6、结对编程PSP:
任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
计划 50 60
· 估计这个任务需要多少时间,并规划大致工作步骤 25 30
开发 500  
需求分析 (包括学习新技术) 45  
· 生成设计文档 30 30
· 设计复审 (和同事审核设计文档) 100  
代码规范 (为目前的开发制定合适的规范) 100  
具体设计 300  
具体编码 300  
· 代码复审 100  
· 测试(自我测试,修改代码,提交修改) 70  
报告 80  
· 测试报告 30  
计算工作量 40 50
· 测试报告 25 20
· 事后总结 ,并提出过程改进计划 25 25

7、小结感受
这次实验的结对编程给我带来了很大的启发,人合作真的能够带来1+1>2的效果。首先,在软件开发的过程中,结对编程可以提高软件开发效率的;其次,它还可以减少软件中的错误与漏洞。两个程序员在一个工作台上共同参与、合作。就好像一个开车一个做导航员,而且最好经常是互换角色。 这种合作可以增加纪律性,写出更好的代码,更有利于促进程序员自身的提高。

posted on 2021-04-14 09:36  夏热握火  阅读(72)  评论(1编辑  收藏  举报