项目 | 内容 |
---|---|
课程班级博客链接 | 班级链接 |
这个作业要求链接 | 作业要求链接 |
我的课程学习目标 | 1.掌握代码风格规范、设计规范,写出规范的代码及语句 2.了解什么是汉堡包法 3.对结对编程有进一步的了解 |
这个作业在哪些方面帮助我实现学习目标 | 1.通过阅读“构建之法”,从而理解代码风格规范、设计规范等相关概念及对应的原则 2.通过浏览关于的阐述参见,在进行项目交流时,利用该法来促进两人之间的沟通 3.通过互换角色来进一步的了解结对编程 |
结对方学号-姓名 | 201871010118-唐敬博 |
任务1: 阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握
代码风格规范、代码设计规范、代码复审、结对编程概念; 代码规范: 代码设计规范,牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则。
代码设计规范: 代码设计规范不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式 等方方面面,这里又有不少内容与具体程序设计语言息息相关(如C、C++. Java、C#),但 是也有通用的原则,这里主要讨论通用的原则。
代码复审目的:
找出代码的错误
(1) 编码错误,比如一-些碰巧骗过了编译器的错误
(2) 不符合团队代码规范的地方
结对编程:
在结对编程模式下,一对程序员肩并肩地、平等地、互补地进行开发工作。两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起写文档等。
任务2:对结对方的项目成果进行评价
对项目博文作业进行阅读并进行评论
认真阅读了结对方的项目博文作业,并从博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因四个方面进行了评论。
复审同伴项目代码
概要部分:
代码基本符合需求,设计考虑的不够周全,同伴的代码中包括动态规划算法和回溯算法求解0-1背包问题的过程,用户可以选择其中的一种算法进行求解,但是要求的部分功能还未实现。代码的可读性比较好,且易于维护。
设计规范部分:设计遵从项目中常用的模式,存在一小部分无用的代码可以清除。
代码规范部分:修改的部分符合代码标准和风格。
具体代码部分:对于调用的外部函数检查了返回值,参数传递无错误。
可读性:代码可读性较好,而且有必要的注释,易于理解。
任务3:采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台
需求分析陈述
通常用户处理数据时的数据量比较大,而且不同的用户可能会使用不同的方法求解问题的解,所以,为了方便用户使用不同的方法求出0-1背包问题的最优解,提高处理大量数据的效率,我们需要设计开发一款D{0-1}KP 实例数据集算法实验平台。
D{0-1}KP 实例数据集算法实验平台具有的功能如下:
软件设计说明
在个人项目中绘制了一组数据的散点图,实现了对价值与重量之比进行排序,完成了用动态规划算法求解0-1背包问题,并计算出了运行的时间,此次结对项目是在个人项目的基础上进行了进一步的完善。
增加使用回溯算法求解0-1背包问题
back_tracking函数:
进行回溯,在搜索的过程中可进行剪枝操作。当不选择此物品时,若此时所能达到的最大价值小于当前的最优价值,则进行剪枝操作,即不在继续向下搜索这个结点的子树。如果选择此物品,则判断背包的剩余重量是否大于当前物品的重量,如果小于当前物品的重量,则不装入。
此函数最后返回记录物品是否装入的数组与最优价值。
上界函数bound:
判断当前物品下所能达到的最大价值。
对动态规划算法进行修改
在个人项目中,动态规划算法求解的最大价值是正确的,但是选择的物品出现了错误,进行修改之后能求得正确的结果。
可以选择不同的方法求解问题
从键盘输入一个字符,若它的值为”1“,则使用动态规划法求解,若为”2“就用回溯法求解,否则输出一条错误提示语句。
将求解的结果保存在txt文件中
学习并尝试使用遗传算法求解0-1背包问题
GA是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法通过数学的方式,利用计算机仿真运算,将问题的求解过程转换成类似生物进化中的染色体基因的交叉、变异等过程。在求解较为复杂的组合优化问题时,相对一些常规的优化算法,通常能够较快地获得较好的优化结果。遗传算法已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。
结对作业的PSP
任务内容 | 计划共完成需要的时间(h) | 实际完成需要的时间(h) |
---|---|---|
计划 | 0.5 | 0.5 |
• 估计这个任务需要多少时间 | 0.5 | 0.5 |
开发 | 64.5 | 74 |
• 需求分析 | 1 | 1.5 |
• 生成设计文档 | 2 | 2 |
• 设计复审 | 3 | 3.5 |
• 代码规范 | 1 | 2 |
• 具体设计 | 2.5 | 3 |
• 具体编码 | 35 | 40 |
• 代码复审 | 8 | 7 |
• 测试 | 12 | 15 |
报告 | 1.9 | 2.6 |
• 测试报告 | 0.3 | 0.5 |
• 计算工作量 | 0.6 | 0.6 |
• 事后总结及过程改进计划 | 1 | 1.5 |