201871030108-冯永萍 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/2018CST |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/14660499.html |
我的课程学习目标 | 完成课程要求的基础上,对软件工程有系统的理解 |
团队的课程学习目标 | 1.建设团队文化,申请开通团队博客; 2.完成所有实验任务; 3.了解队员之间的优缺点,进行更契合地合作。 |
这个作业在哪些方面帮助我实现学习目标 | (1)总结了前段时间的学习内容 (2)通过作业互评发现了自己作业的不足和他人作业中值得学习的地方 |
团队博客链接 | 团队博客链接 |
1. 实验目的与要求
(1)实验三作业互评。
(2)组建软件项目研发团队。
2. 实验内容
任务1:
浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务,具体要求如下:
(1)对博文作业进行阅读,并结合评分要求进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,给出这个结对小组在进度计划方面可以提高的具体建议。将以上评论内容发布到博客评论区。
(2) 克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
克隆代码:
bug:
Bug1:在实现遗传算法的时候,运行的结果不能出现在前端的页面中。(点击遗传算法,显示结果未出现在前端页面中)
Bug2:代码实现登录后台的页面中,可以连接一下数据库,实现:当用户名和密码一致的时候,登录至后台页面。
Bug3:在文件“dbservlet.java”文件中,作者写了数据的添加,删除,修改等操作,可以将其在前端页面实现,会让功能更加丰富。
Bug4:文件读取数据的部分,可以采用另外一种方式:实现多行的按行读取,这样会使数据的读取更加方便。
Bug5:散点图部分的画坐标轴部分:纵坐标的具体数据没有显示,上箭头部分的位置需要进行调整。
复审项目代码并记录:
项目的开发者:陈鑫莲、陈荟茹
项目的复审者:冯永萍、王芬
1、概要部分
(1)代码符合需求和规格说明么?
代码符合需求和规格说明
(2)代码设计是否考虑周全?
考虑周全
(3)代码可读性如何?
可以顺利读下去
(4)代码容易维护么?
比较容易维护
(5)代码的每一行都执行并检查过了吗?
是的,都可以执行
2.设计规范部分
(1)设计是否遵从已知的设计模式或项目中常用的模式?
- 遵从
(2)有没有硬编码或字符串/数字等存在?
- 有
(3)代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)?
- 没有,不会影响移植,任何平台都可以
(4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
- 可以用
- 存在,有些代码是可以调用的
(5)有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码)
- 基本清除完毕了
3.代码规范部分
修改的部分符合代码标准和风格么?
- 符合,全都按照代码标准修改的
4.具体代码部分
(1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
- 对错误都进行了处理,没有异常
(2)参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
- 无错误
- 本项目中字符串以0开始计数
(3)对资源的利用是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有优化的空间?
- 在对数据库进行操作之前申请数据库连接资源,操作完毕之后释放申请的资源
- 不会导致资源泄露
- 可以优化使用断言来保证我们认为不变的条件
(4)数据结构中有没有用不到的元素?
- 没有
5.效能
(1)代码的效能(Performance)如何?最坏的情况如何?
- 达到了具体任务的要求
(2)代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?
- 没有,已经比较优化了
(3)对于系统和网络调用是否会超时?如何处理?
- 目前没有出现超时的现象。假如出现了可以杀毒;整理系统,减少运行的进程,释放内存、cpu,释放c盘空间等方法处理 这些问题;
6.可读性
代码可读性如何?有没有足够的注释?
- 可以顺利读取
- 代码有足够的注释让我们读懂
7.可测试性
代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库、网页、多线程等),可以整理专门的核查表。
- 可以继续开发,摆脱传统的命令行方式,更为实用
(3)阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务:
A. 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片;
软件的使用过程:
第一步:进入登录页面:
第二步:登陆成功后进入后台页面:
第三步:测试散点图功能:
第四步:测试排序功能:
第五步:测试算法最优解:
第六步:测试遗传算法(无法显示在人机交互页面):
使用软件的照片:
B. 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
任务三完成的功能有:
人机交互页面、排序、散点图、最优解、遗传算法
评价:基本实现了要求的功能软件;
优缺点:
数据量:
优点:基本能满足老师给出的大部分数据;
缺点:任然有少部分数据无法被正确处理;
界面:
优点:界面简洁美观,使用方便;
缺点:如果搭配其他功能会更好;
功能:
优点:人机交互页面清晰简洁;
缺点:没有实现日志功能;
改进意见:
希望可以修改程序中的bug并完善日志部分,会更完美。
C. 从职业、学历、年龄、专业、爱好、收入等方面概括任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求是什么?
职业:医生,学生
学历:本科及以上
年龄:老少皆宜
专业:生物学,计算机
爱好:计算机,编程,软件开发
收入:无限制
表面需求:满足基本的功能:数据库存储、排序、日志、遗传算法、散点图等
潜在需求:简单有效使用该软件
(4)经过(1)—(3)的工作,你们一定有充分的理由给评价作业选择一个结论: a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
-
结论:e)非常推荐。
-
功能方面:通过运行该案例代码,我们一致觉得该软件项目功能很齐全,老师所要求的功能基本上都实现了。而且人机交互页面的设计也非常简单人性化。唯一的不足可能就是希望给出用户名、密码的提示或者将用户的注册信息写进数据库,用户就可可以更方便的登录。
-
博文方面:博客在我们的学习生活中很有用处,无论是对项目的总结回顾还是对软件的设计思路的引导和记录,该组分享总结写的特别好,突出重点又兼顾全面,可以让我很快找到我想找到的那部分的内容,博文的撰写上也很值得我学习。
-
进度计划方面:总体来说,PSP时间差相差并不大,该结对小组应该在编程前在软件功能设计等各方面做了充分的规划,这一点非常值得我学习。
总结:无论从功能、博文还是进度计划上面,该份软件工程实验报告都是一份值得推荐的作业,故确定最终结论为:e)非常推荐。
(5)结合(1)—(3)的评论体会,迭代改进本小组实验三任务3。
根据我们的自我反思与本次结对小组讨论我们组项目的不足,最终确定我们小组迭代方向为:
1:实现将txt文件放进项目中,目前只能先将txt文件下载到本地并更改文件读取路径才能使用,或者采用上传的方式;
2:将散点图和遗传算法在GUI人机交互页面实现;
3:HTML页面写了结果展示部分,但并未将结果显示在该部分;
4:代码中无回溯算法代码;
5:在博客介绍中写到做了代码检测功能,但是实际只检测了“请输入您检测的第几组数据”不为空,当其他部分为空时,会出现bug,这部分仍需要改进。
- github的forks页面:
- github的Pulse页面:
任务2:
参见团队博客
任务3:
3.1任务2完成情况
已完成。3.2任务3完成情况
已完成。3-3.记录完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间
任务名称 | 计划用时(min) | 实际用时(min) | 团队分工 |
---|---|---|---|
任务1 | 360 | 300 | 荟茹+永萍 |
任务2 | 100 | 120 | 鑫莲+芬 |
任务3 | 80 | 60 | 全体成员 |
3-4.本次作业的感受和体会
在本次作业中,首先,通过作业互评,我深刻认识到自己在软件开发过程中的不足,无论是在前期规划还是代码功能实现上,自己仍然存在很多欠缺,要多向优秀的团队学习,多多请教。其次,通过团队组建,我也第一次深刻地去思考自己到底希望在开发中承担怎样的角色,差不多三年的时间里自己又真正掌握了多少编程的知识。最后,四人团队的组建是一次新的开始,四人的沟通,合作都将变得不同,期待之后的合作,也期待自己将来的成长。