其他分享
首页 > 其他分享> > 201871010101-陈来弟《软件工程课程》实验三 软件工程结对项目

201871010101-陈来弟《软件工程课程》实验三 软件工程结对项目

作者:互联网

项目 内容
课程班级博客链接 班级博客
作业要求链接 作业要求
我的课程学习目标 1、能够在这次的结对编程中体验软件项目开发中的两人合作,并能够很好地练习结对编程(Pair programming)。
2、掌握Github协作开发程序的操作方法。
这个作业在哪些方面帮助我实现学习目标
结对方学号-姓名 201871010107-公海瑜
结对方本次博客作业链接
本项目Githubde的仓库链接地址

一、实验目的与要求

(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。

(2)掌握Github协作开发程序的操作方法。

二、实验内容和步骤

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

软件开发流程不仅仅包括团队的流程,还包括了个人的开发流程,团队是由每个人组成的,在软件开发流程中,是由每一个团队成员具体的个人在做开发,测试,UI,管理,交流等工作。在软件工程的术语中,我们把这些单个的成员叫做IC。

    1.通过交流,实验,快速原型等方法,理解问题,需求或任务。

    2.提出多种解决办法并估计工作量(其中包括寻找以前的解决方案,因为很多工作室重复性的)

    3.与相关角色交流解决问题的提案,决定一个可行的方案

    4.执行,把想法变成实际中能工作的代码,同时验证方案的可行性和其他特性(程序的效能)

    5.和团队的其他角色合作,在测试环境中测试实现方案,修复缺陷。

    6.在解决方案发布出去之后,对结果负责

    1.积累软件开发相关的知识,提升技术技能

    2.积累问题领域的知识和经验

    3.对通用的软件设计思想和软件工程思想的理解

    4.提升职业技能(自我管理,表达和交流,与人合作,按质按量完成任务的执行力)

    5.实际成果

    1.任务有多大(代码行数/功能点个数)

    2.花了多少时间?

    3.质量如何?(交付的代码中有多少缺陷)

    4.是否按时交付?(从标准方差上看,因为团队工作中需要的是稳定,一致的交付时间)

    1.交流

    2.说到做到

    3.接收团队赋予的角色并按角色要求工作

    4.全力投入团队的活动。

    5.按照团队流程的要求工作

    6.做好每次的准备工作

    7.理性地工作

名称 形式 目的
自我复审 自己和自己 用同伴复审的标准来要求自己。不一定最有效,因为开发者对自己总是过于自信。如果能持之以恒,则对个人有很大好处。
同伴复审 复审者和开发者 简便易行
团队复审 团队和开发者 有比较严格的规定和流程,适用于关键的代码,以及复审后不再更新的代码。覆盖率高——有很多双眼睛盯着程序,但效率可能不高(全体人员都要到会)。
 2).代码复审的步骤:

    在复审前——

       1.代码必须成功地编译, 在所有要求的平台上,同时要编译Debug | Retail版本。编译要用团队规定的最严格的编译警告等级(例如C/C++中的W4)。

       2.程序员必须测试过代码。什么叫测试过?最好的方法是在调试器中单步执行。

       3.程序员必须提供新的代码, 以及文件差异分析工具。用Windif或VSTS自带的工具都可以。VSTS中可以通过Shelveset 来支持远程代码复审。在复审中,复审者可以选择面对面的复审、独立复审或其他方式。

       4.在面对面的复审中,一般是开发者控制流程,讲述修改的前因后果。但是复审者有权在任何时候打断叙述,提出自己的意见。

       5.复审者必须逐一提供反馈意见。注意,复审者有权提出很多看似吹毛求疵的问题,复审者不必亲自调查每一件事,开发者有义务给出详尽的回答。
       
       6.开发者必须 负责让所有的问题都得到满意的解释或解答,或者在TFS中创建新的工作项以确保这些问题会得到处理。

       7. 对于复审的结果,双方必须达成一致的意见。

             1)打回去——复审发现致命问题,这些问题在解决之前不能签人代码;

             2)有条件地同意一发现了一些小问题,在这些问题得到解决或记录之后,代码可以签人,不需要再次复审;

             3)放行——代码可以不加新的改动,签人源码控制服务器。

 3).代码复审的目的在于:

        1、找出代码的错误,比如:

                     1)编码错误,比如一些碰巧骗过了编译器的错误

                     2)不符合团队代码规范的地方

       2、发现逻辑错误, 程序可以编译通过,但是代码的逻辑是错的

       3、发现算法错误, 比如使用的算法不够优化,边界条件没有处理好等

       4、发现潜在的错误 和回归性错误——当前的修改导致以前修复的缺陷又重新出现

       5、发现可能需要改进的地方

       6、教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识

任务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;

(2)D{0-1}KP 实例数据集需存储在数据库;

(3)平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;

(4)人机交互界面要求为GUI界面(WEB页面、APP页面都可);

(5)查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);

(6)附加功能:除(1)-(5)外的任意有效平台功能实现。

关键步骤如下:

(1)基因编码:在这个过程中,尝试对一些个体的基因做一个描述,构造这些基因的结构,有点像确定函数自变量的过程。

(2)设计初始群体:在这里需要造一个种群出来,这些种群有很多生物个体但基因不同。

(3)适应度计算:这里对那些不符合要求的后代进行剔除,不让他们产生后代。否则他们产生的后代只会让计算量更大而对逼近目标没有增益。

(4)产生下一代:有3种方法,即:直接选择,基因重组,基因突变

而后回到步骤(3)进行循环,适应度计算,产生下一代,这样一代一代找下去,直到找到最优解为止。

遗传算法流程图:

要采用遗传算法,则首先确定以下几个要素:染色体的编码方法、适值函数、染色体交叉和变异采用的方案、选择策略

标签:201871010101,复审,函数,代码,陈来弟,软件工程,物品,遗传算法,团队
来源: https://www.cnblogs.com/wing2438/p/14604921.html