201871030102_崔红梅 实验四 团队作业1:软件研发团队组建(个人博客)
项目 | 内容 |
---|---|
课程班级博客链接 | 课程班级博客链接 |
这个作业要求链接 | 作业要求链接 |
团队名称 | 吃货团 |
团队的课程学习目标 | 1.由项目经理组织项目开展工作 2.根据文档和团队交流确立开发流程 3.团队相互学习交流提升个人技术水平 4.多发挥个人思维为项目提有用意见 5.尽个人所能完成工作 |
这个作业在哪些方面帮助团队实现学习目标 | 1.组建了项目团队,并形成项目组长; 2.有助于取长补短,节省项目完成所需时间; 3.相互了解彼此的特长兴趣便于以后的合作 |
团队博客链接 | 团队博客 |
一、实验目的与要求
(1)实验三作业互评。
(2)组建软件项目研发团队。
二、实验内容与步骤
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务,具体要求如下:
(1)对博文作业进行阅读,并结合评分要求进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,给出这个结对小组在进度计划方面可以提高的具体建议。将以上评论内容发布到博客评论区。
被评论的博客连接:https://www.cnblogs.com/xiaobeike/p/14630491.html
被评论作业的Github项目仓库链接:https://github.com/beike666/bag_client
评论内容:
(2)克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
克隆实验三:
复审项目:
复审原则 | 复审结果 |
---|---|
概要部分 | |
代码符合需求和规格说明么? | 符合 |
代码设计是否考虑周全? | 考虑周全 |
代码可读性如何? | 很好 |
代码容易维护么? | 容易维护 |
代码的每一行都执行并检查过了吗? | 检查过了 |
设计规范部分 | |
设计是否遵从已知的设计模式或项目中常用的模式? | 遵从 |
有没有硬编码或字符串/数字等存在? | 没有 |
代码有没有依赖于某一平台,是否会影响将来的移植? | 没有,不会影响将来的移植 |
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现? | 可以 |
有没有无用的代码可以清除? | 没有 |
代码规范部分 | |
修改的部分符合代码标准和风格吗? | 符合 |
具体代码部分 | |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 使用回溯求解大数据时会出现内存溢出的异常 |
参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度是以0开始计数还是以1开始计数? | 没有 |
边界条件是如何处理的? switch语句的default分支是如何处理的?循环有没有可能出现死循环? | 没有出现死循环 |
有没有使用断言( Assert)来保证我们认为不变的条件真的得到满足? | 没有 |
数据结构中有没有用不到的元素? | 没有 |
效能 | |
代码的效能(Performance)如何?最坏的情况是怎样的? | 达到了具体任务的要求 |
代码中,特别是循环中是否有明显可优化的部分(string的操作是否能用StringBuilder来优化)? | 没有 |
对于系统和网络的调用是否会超时?如何处理? | 没有出现超时的现象 |
代码可读性如何?有没有足够的注释? | 可读性很好, 有足够的注释 |
可测试性 | |
代码是否需要更新或创建新的单元测试? | 可以更新 |
老师的任务 | |
“任务一:阅读《现代软件工程—构建之法》第3-4章内容”是否完成? | 完成 |
任务二 | |
“对项目博文作业进行阅读并进行评论”是否完成? | 完成 |
“隆结对方项目源码到本地机器,阅读并测试运行代码以及复审同伴代码”是否完成? | 完成 |
“用github的Fork、Clone、Push、Pull request等操作对同伴个人项目仓库的源码进行合作修改“是否完成? | 完成 |
任务三 | |
”D{0-1}KP 实例数据集需存储在数据库“是否完成? | 完成 |
”平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据“是否完成? | 完成 |
”开发人机交互界面要求为GUI界面”是否完成? | 完成 |
“查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求”是否完成? | 完成 |
该项目不足之处:
(1)在动态规划和回溯算法中,没有给出解向量。
(2)代码测试功能提交的代码文件类型单1
(3)遗传算法没有保存日志文件
(4)代码测试功能中如果提交的代码错误或者不符合规范时,没有错误提示
(5)散点图数据区间过大时如果出现坐标较小的数据时显示的位置可能会超出坐标轴的范围.
(3)阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务:
A. 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片;
1、将数据读取存储到数据库中:
数据库中:
2、绘制散点图:(经过测试证实,我们可以绘制任意一组数据的散点图)
3、对项集排序:(经过测试证实,我们可以对任意一组数据排序)
4、算法求解:(经过测试证实,我们可以对任意一组数据采取动态规划算法和回溯算法求最优解,并将最优解写入日志)
5、遗传算法:
B. 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
软件功能:
经过上述测试,该软件功能有:
(1)将数据写入数据库
(2)绘制散点图
(3)对数据项集排序
(4)求解0/1背包问题最优解
(5)将求解结果写入文件
该软件将任务3要求的功能软件解决了
优点:
(1)人机交互页面简单整洁,便于使用
(2)各个功能都实现了,即功能完善
(3)数据库设计较好,很好的存储了大量数据
(4)存储最优解等使用弹出框,使用效果较好
缺点:
(1)遗传算法有待完善
(2)散点图的点过于大,数据多的情况下重复点过多
功能方面的意见:
(1)可以添加更多的算法,满足更多用户的需求
(2)设置一个登陆页面,完善软件的使用
(3)算法中求出解向量,使人一目了然
C. 从职业、学历、年龄、专业、爱好、收入等方面概括任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求是什么?
(1)职业:学生和编程人员
(2)学历:本科以上
(3)年龄:20~25
(4)专业:计算机系(或涉及编程的其他专业)
(5)爱好:喜欢研究各种算法
(6)收入:5000+
(7)表面需求:获取一些算法的代码进行研究
(8)潜在需求:用Java语言实现动态规划等算法,研究其代码,掌握许多算法,提升自己的编程能力。
(4)经过(1)—(3)的工作,你们一定有充分的理由给评价作业选择一个结论: a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
e) 非常推荐
经过上边的测试,可以看出他们这组的项目做的很出色,各个功能都实现了,人机交互页面对用户很友好,非常值得推荐。
(5)结合(1)—(3)的评论体会,迭代改进本小组实验三任务3。
本小组改进的地方:
(1)人机交互页面改进许多,用bootstrap组件美化页面。
(2) 将回溯算法和动态规划算法的解向量求解出来
(3)再研究一下遗传算法,研究他们的遗传算法,将我们的遗传算法实现。
(6)本小组任务3的Github项目仓库链接、项目迭代改进要点说明、项目仓库的Fork、Clone、Push、Pull request、Merge pull request数据变化情况。
本小组任务3的Github项目仓库链接:https://github.com/chmcll/shiyan3
项目迭代改进要点说明:在我们项目提交的过程中,我们会提交多次,每次提交的都是我们改动或新添加的代码。我们这次在上次的基础上添加了新功能,包括将数据的解写到文件中,将数据库中的数据显示在前端等。
项目仓库的Fork、Clone、Push、Pull request、Merge pull request数据变化情况:
fork
clone
push
Pull request