201871010115-马北-软件工程个人项目
-
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/14552393.html 我的课程学习目标 (1)掌握软件项目个人开发流程。(2)掌握Github发布软件项目的操作方法 这个作业在哪些方面帮助我实现学习目标 通过逐步完成老师布置的任务来一步步学习,掌握Github的使用,查阅相关资料 项目Github的仓库链接地址
任务一:阅读教师博客“常用源代码管理工具与开发工具”内容要求,点评班级博客中已提交相关至少3份作业。
-
已点评,点评链接如下
-
https://www.cnblogs.com/ws-t/p/14552466.html
-
https://www.cnblogs.com/wswyj/p/14552395.html
-
https://www.cnblogs.com/1763088787h/p/14551106.html
-
任务二:详细阅读《构建之法》第1章、第2章,掌握PSP流程
-
[x] 软件工程师的成长
- 知识
- 经验,
- 通用的软件设计思想,软件工程思想的提高
- 职业技能
-
[x] PSP的特点
-
不局限于某一种软件技术 (如编程语言), 而是着眼于软件开发的流程, 这样不同应用的工程师可以互相比较。
-
不依赖于考试, 而主要靠工程师自己收集数据, 然后统计提高。
-
在小型,初创的团队中, 高质量的项目需求很难找到,这意味着给程序员的输入质量不高,在这种情况下, 程序员的输出 (程序/软件) 往往质量不高, 然而这并不能全部由程序员负责。
-
PSP 依赖于数据
- 需要工程师输入数据, 记录工程师的各项活动, 这本身就需要不小的代价。
- 如果数据不准确或有遗失, 怎么办? 让工程师编造一些?
- 如果一些数据不利于工程师本人 (例如: 花很多时间修改缺陷), 我们怎么能保证工程师能如实地记录这些数据呢?
-
PSP的目的是记录工程师如何实现需求的效率, 而不是记录顾客对产品的满意度。工程师可能很高效地开发出一个顾客不喜欢的软件, 那这个工程师还是一个优秀的工程师么?
-
任务三:项目开发背景:
背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。{0-1}背包问题({0-1 }Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的一般描述为:从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大?
D{0-1} KP 是经典{ 0-1}背包问题的一个拓展形式,用以对实际商业活动中折扣销售、捆绑销售等现象进行最优化求解,达到获利最大化。D{0-1}KP数据集由一组项集组成,每个项集有3项物品可供背包装入选择,其中第三项价值是前两项之和,第三项的重量小于其他两项之和,算法求解过程中,如果选择了某个项集,则需要确定选择项集的哪个物品,每个项集的三个项中至多有一个可以被选择装入背包,D{0-1} KP问题要求计算在不超过背包载重量 的条件下,从给定的一组项集中选择满足要求装入背包的项,使得装入背包所有项的价值系数之和达到最大;D{0-1}KP instances数据集是研究D{0-1}背包问题时,用于评测和观察设计算法性能的标准数据集;动态规划算法、回溯算法是求解D{0-1}背包问题的经典算法。查阅相关资料,设计一个采用动态规划算法、回溯算法求解D{0-1}背包问题的程序,程序基本功能要求如下:
- 可正确读入实验数据文件的有效D{0-1}KP数据;
- 能够绘制任意一组D{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图;
- 能够对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序;
- 用户能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位);
- 任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。
-
[ ] 需求分析
- 生活中的很多问题,都需要我们得出最优解,列举法是一种比较慢的办法,在算最优解的时候,所以我们可以采用动态规划算法,在基于{0,1}背包文题的算法基础中,对实际的问题求出最优解。如在商场折扣销售活动中,设计一个项目,使得用户能够清楚地知道怎样购物才能最经济实惠,能够读取文件,表示出以重量为横轴,价值为纵轴的数据散点图
-
[ ] 功能设计
-
基本功能
可正确读入实验数据文件的有效D{0-1}KP数据;
能够绘制任意一组D{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图;
能够对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序;
用户能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位);
任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。
-
扩展功能
-
无
-
-
测试运行
-
重要代码
-
#循环将数组进行填充 for i in range(1, number+1): for j in range(1, weight+1): if j < w[i-1]: result[i][j] = result[i-1][j] else: result[i][j] = max(result[i-1][j], result[i-1][j-w[i-1]] + v[i-1])
-
PSP
任务内容 计划共完成需要的时间 实际完成的时间 计划 460 510 估计这个任务需要多长,并规划大致工作步骤 20 30 开发 40 30 需求分析 20 10 生成设计文档 30 40 设计审核 30 20 代码规范 20 20 具体设计 50 60 具体编码 120 120 代码复审 20 30 测试 30 40 报告 20 30 测试报告 30 40 计算工作量 10 20 事后总结,并提出过程改进计划 20 20