201971010247—谢宇涵 实验四 团队作业1:软件研发团队组建
课程班级博客链接 | 详细内容请点击查看 |
作业要求链接 | 详细内容请点击查看 |
团队名称 | 花开富贵! |
团队课程学习目标 | (1)实验三作业互评。 (2)组建软件项目研发团队。 |
这个作业在哪些方面帮助团队实现学习目标 | (1)初步了解软件项目组建的基本流程 (2)理解MSF的九个基本原则 (3)通过阅读完成质量较高的项目小组的代码,了解其思想,进行代码复审,进而提高自身能力 |
团队博客链接 | 详细内容请点击查看 |
任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务,具体要求如下:
(1)博文评论
(2)克隆任务3项目源码到本地机器,阅读并运行代码,并参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录
-
克隆项目
*阅读并运行代码
-
核查表复审
核查表 | 执行情况 |
---|---|
概要部分 | |
代码符合需求和规格说明么? | 代码设计虽然已经实现了一些功能,但其相对应的遗传算法未能实现 |
代码设计是否考虑周全? | 考虑不够周全,其未将用户的一些需求考虑进去 |
代码可读性如何? | 注释有点少,不易于非专业人士进行解读 |
代码容易维护么? | 不容易维护 |
代码的每一行都执行并检查过了吗? | 是的,可执行。 |
设计规范部分 | |
设计是否遵从已知的设计模式或项目中常用的模式? | 遵从。 |
代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)? | 没有,不会影响移植,任何平台都可以。 |
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? | 可以用;存在,有些代码是可以调用的 |
有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码) | 有。 |
代码规范部分 | |
修改的部分符合代码标准和风格么? | 修改的部分不符合代码标准和风格。 |
具体代码部分 | |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 对错误都进行了处理,没有异常。 |
参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数? | 无错误;本项目中是以0开始计数。 |
边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环? | switch语句的default分支返回false,没有出现死循环。 |
有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足? | 无。 |
对资源的利用是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有优化的空间? | 都在内存中完成,很有可能泄露 |
数据结构中有没有用不到的元素? | 无,整体比较简洁 |
效能 | |
代码的效能(Performance)如何?最坏的情况如何? | 达到了具体任务的要求。 |
代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)? | 有 |
对于系统和网络调用是否会超时?如何处理? | 没有出现超时现象 |
可读性 | |
代码可读性如何?有没有足够的注释? | 可以顺利读取;代码有足够的注释 |
可测试性 | |
代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库、网页、多线程等),可以整理专门的核查表。 | 可以继续开发,增加更多的功能 |
(3)阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务:
A. 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片
- 首先要将{0-1}KP 实例数据集需存储在数据库中(以beibao0.in为例)
- 运行程序可以看到三级人机交互界面
- 一级界面
- 二级界面
- 三级界面
- 输入对应的文件名和数据编号,若正确选择散点图绘制功,则可以绘制出相应的散点图
- 选择数据排序功能,则可以对所选数据组的数据进行价值重量比排序
- 接着选择4,可进行算法选择,对问题进行求解(此处以拓展的遗传算法为例)
B. 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
软件功能是否完善 | (1)图形界面、遗传算法求解以及价值/重量比折线图的绘制完成得相当好。 (2)数据查询以及数据日志的保存板块存在缺失 |
软件在数据量/界面/功能上的优缺点 | (1)数据量:对于文件数据的读取十分清晰,但不足之处是数据日志并不能保存 (2)界面:界面美观简洁,但是可以做一个返回按钮,这样就不用每次执行其他功能的时候都要退回,重新进入 (3)功能:基本完成了要求的功能,还利用Python可视化做了一个拓展的折线图 |
改进意见 | (1)数据查询以及数据日志的保存板块存在缺失,应当努力去完善 (2)图形界面可以做一个返回按钮,联系三级界面 (3)代码可以多一些注释,方便阅读 |
C. 从学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?
学历 | 在校大学生、编程爱好者等 |
年龄 | 18岁以上 |
专业 | 计算机专业 |
爱好 | 喜爱计算机编程、网站开发以及算法设计 |
收入 | 8000以上 |
表面需求 | 能通过编程实现几种不同算法解决0-1背包问题 |
实际需求 | 人机交互界面的设计能力以及较强的算法编程能力 |
(4)经过(1)-(3)的工作,你们一定有充分的理由给评价作业选择一个结论:a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
经过对于该项目的使用,发现其界面设计和主要功能的完成度都不错,但是也有一些小的方面需要完善,例如数据读取以及数据日志更新,故我给的结论是d).
(5)结合(1)—(3)的评论体会,迭代改进本小组实验三的任务3。
- 通过对对方项目的修改,实现了动态保存数据结果
- 修改代码部分如下:
def saveTxt(fileName, num, maxWeight, maxValue, sunTime):
file = open('../查询结果.txt', 'a')
file.write('文件名:\n' + fileName + '\n')
file.write('第几组数据:\n' + str(num) + '\n')
file.write('背包容量:\n' + str(maxWeight) + '\n')
file.write('求解的最大价值:\n' + str(maxValue) + '\n')
file.write('运行时间:\n' + str(sunTime) + 's\n')
file.write('解向量:\n')
for item in endPath:
file.write(item + '\n')
file.close()
任务2:团队组建
任务已全部完成,点击查看团队博文
任务3:完成《实验四 团队作业1:软件研发团队组建》博文作业
1. 完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间
任务内容 | 计划共完成的时间(min) | 实际完成时间(min) |
---|---|---|
团队初步组建 | 20 | 15 |
成员了解及确认组长 | 20 | 15 |
团队建成 | 80 | 85 |
实验流程规划 | 40 | 50 |
创建企业微信群 | 6 | 3 |
开通团队博客 | 60 | 80 |
报告撰写 | 300 | 290 |
博客互评 | 50 | 55 |
运行结对方实验三项目 | 90 | 120 |
阅读《构建之法》 | 70 | 60 |
博客园内容分工 | 30 | 40 |
博客园编写 | 60 | 100 |
反思及总结 | 30 | 15 |
2. 总结
在本次作业中这次作业是在上次的作业基础上完成的,我选择了一份完成质量较好的作业进行了学习及评价,阅读了她们的代码,发现了她们程序的功能很强大,程序也很注意代码设计规范和代码风格规范,非常值得我去学习。同时我也了解到了组建软件项目研发团队的一些基本环节,以及如何评估一个项目。