本文主要是介绍201971010131-李治江 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
项目 |
内容 |
课程班级博客链接 |
19卓越 |
作业要求链接 |
作业要求 |
课程学习目标 |
1.体验软件开发过程中的两人合作,学会结对编程;2.掌握GitHub团队开发软件的方法。 |
该作业在哪些方面帮助我实现学习目标 |
1.熟悉了结对编程的过程;2.能够熟练运用GitHub进行项目开发。 |
结对方学号-姓名 |
201971010135-孙得弘 |
结对方本次博客作业链接 |
201971010135-孙得弘 |
本项目Github仓库链接地址 |
仓库 |
任务一:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念
- 代码规范
项目 |
规范 |
缩进 |
使用tab 作为缩进 |
变量命名 |
(1)变量名必须以字母或者下划线开头;(2)不能中英混搭; |
每行最大字符 |
单行不超过256个 |
常量 |
常量命名全部大写,单词间用下划线隔开 |
注释 |
(1)行内注释可使用//...形式;(2)函数前部注释需使用/*内容/形式 |
空行 |
(1)引入头文件其间部分不允许空行;(2) 静态变量/常量定义后跟一空行;(3)每个函数后跟一空行,除非是最后一个函数 |
- 代码复审:看代码是否在代码规范的框架内正确地解决了问题。
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价
项目 |
内容 |
结对方博客链接 |
201971010135-孙得弘 |
结对方GitHub仓库链接 |
201971010135-孙得弘 |
- 代码核查表
- 概要部分
概要 |
|
代码符合需求和规格说明么? |
代码基本符合需求和规格说明 |
代码设计是否考虑周全? |
有周全的考虑 |
代码可读性如何? |
代码可读性较好 |
代码容易维护么? |
代码易维护 |
代码的每一行都执行并检查过了吗? |
都执行并检查过 |
- 设计规范部分
设计规范 |
|
设计是否遵从已知的设计模式或项目中常用的模式? |
代码遵从已知的设计模式或项目中常用的模式 |
有没有硬编码或字符串/数字等存在? |
|
代码有没有依赖于某一平台,是否会影响将来的移植? |
代码不依赖于某一平台,不影响移植 |
开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现? |
|
在本项目中是否存在类似的功能可以通过调用而不用全部重新实现? |
|
有没有无用的代码可以清除? |
有无用的代码可以清除 |
- 代码规范部分
代码规范 |
|
修改的部分符合代码标准和风格么? |
修改的部分符合代码标准和风格 |
- 具体代码部分
具体代码 |
|
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? |
对错误进行了处理,并检查异常 |
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 |
传递参数并无错误,从0开始计数 |
边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? |
代码无死循环 |
有没有使用断言来保证我们认为不变的条件真的得到满足? |
无 |
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? |
在内存中完成 |
数据结构中有没有用不到的元素? |
没有 |
- 效能部分
效能 |
|
代码的效能如何?最坏的情况是怎么样的? |
代码效能良好 |
代码中,特别是循环中是否有明显可优化的部分? |
无明显可优化的地方 |
对于系统和网络的调用是否会超时?如何处理? |
未出现超时现象 |
- 可读性部分
可读性 |
|
代码可读性如何?有没有足够的注释? |
代码可读性良好,有注释 |
- 可测试性部分
可测试性 |
|
代码是否需要更新或创建新的单元测试? |
不需要 |
任务三:采用两人结对编程方式,设计开发一款{0-1}KP 实例数据集算法实验平台
任务描述:
- 背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。{0-1}背包问题({0-1 }Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的一般描述为:从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大?
功能分析
- 可正确读入实验数据文件的有效{0-1}KP数据;
- 能够绘制任意一组{0-1}KP数据以价值重量为横轴、价值为纵轴的数据散点图;
- 能够对一组{0-1}KP数据按重量比进行非递增排序;
- 用户能够自主选择贪心算法、动态规划算法、回溯算法求解指定{0-1} KP数据的最优解和求解时间(以秒为单位);
- 任意一组{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。
软件设计
- {0-1}KP 实例数据集需存储在数据库;
- 平台可动态嵌入任何一个有效的{0-1}KP 实例求解算法,并保存算法实验日志数据;
- 人机交互界面要求为GUI界面(WEB页面、APP页面都可);
- 查阅资料,设计遗传算法求解{0-1}KP,并利用此算法测试要求;
PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
10 |
10 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
15 |
10 |
Development |
开发 |
400 |
450 |
Analysis |
需求分析 (包括学习新技术) |
6 |
3 |
Design Spec |
生成设计文档 |
10 |
8 |
Design Review |
设计复审 (和同事审核设计文档) |
15 |
10 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
20 |
10 |
Design |
具体设计 |
15 |
20 |
Coding |
具体编码 |
180 |
220 |
Code Review |
代码复审 |
30 |
35 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
45 |
Reporting |
报告 |
40 |
40 |
Test Report |
测试报告 |
30 |
30 |
Size Measurement |
计算工作量 |
25 |
15 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
30 |
20 |
这篇关于201971010131-李治江 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!