201871030106-陈鑫莲 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客 |
这个作业要求链接 | 作业要求 |
团队名称 | 天线宝宝突击队 |
团队的课程学习目标 | 1.建设团队文化,申请开通团队博客; 2.完成所有实验任务; 3.了解队员之间的优缺点,进行更契合地合作。 |
这个作业在哪些方面帮助团队实现学习目标 | 1.组建团队企业微信群,并且开通博客园的团队博客; 2.进行团队特色描述,言简意赅的描述团队特点或核心竞争力,团队各个成员擅长的技术及优缺点; 3.了解队员之间的优缺点,进行更契合地合作。 |
团队博客链接 | 团队博客链接 |
1、实验目的与要求
(1)实验三作业互评。(2)组建软件项目研发团队。
2、实验内容与步骤
任务1
浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务,具体要求如下:
2-1.博客评论
点评链接,具体点评如图1:
2-2.克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
A.克隆步骤如下
(1)进入原作者的仓库,如图2:
(2)点击clone,复制链接,如图3:
(3)输入git clone 原作者的链接,如图4:
B.项目代码的5个以上bug
bug1:没有实现将txt文件放进项目中,只能先将txt文件下载到本地并更改文件读取路径才能使用,如图5:
bug2:未将散点图和遗传算法在GUI人机交互页面实现,如图6:
bug3:HTML页面写了结果展示部分,但并未将结果显示在这里,如图7:
bug4:代码中无回溯算法代码,希望可以添加进去,如图8:
bug5:在博客介绍中写到做了代码检测功能,但是实际只检测了“请输入您检测的第几组数据”不为空,其余为检测,当其他部分为空时,就不会出现结果,如图:9-1,9-2:
C.代码核查表
项目的开发者:冯永萍、王芬
项目的复审者:陈鑫莲、陈荟茹
-概要部分
(1)代码能符合需求和规格说明么?
答:基本符合,就是有些代码可能是因为平台的问题,有些语句显示时有一点问题。
(2)代码设计是否有周全的考虑?
答:在switch语句使用时没有运用Default。
(3)代码可读性如何?
答:可读性很好。对类,方法还有变量都做了相关注释。
(4)代码容易维护么?
答:比较容易 。
(5)代码的每一行都执行并检查过了吗?
答:是的,检查过。
-设计规范部分
(1)设计是否遵从已知的设计模式或项目中常用的模式?
答:是。
(2)有没有硬编码或字符串/数字等存在?
答:有一部分。
(3)代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)
答:没有依赖
(4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
答:可以实现,不存在
(5)有没有无用的代码可以清除?(很多人想保留尽可能多的代码,因为以后可能会用上,这样导致程序文件中有很多注释掉的代码,这些代码都可以删除,因为源代码控制已经保存了原来的老代码。)
答:没有。
-代码规范部分
(1)修改的部分符合代码标准和风格么(详细条文略)?
答:符合代码标准和风格。
-具体代码部分
(1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
答:有错误处理,并且处理了异常。
(2)参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
答:无错误,字符串的长度是字节的长度,以0开始计数。
(3)边界条件是如何处理的?Switch语句的Default是如何处理的?循环有没有可能出现死循环?
答:针对需要的操作进行Switch,在目前代码中没有发现Default。经测试代码不会出现死循环。
(4)有没有使用断言(Assert)来保证我们认为不变的条件真的满足?
答:没有。
(5)对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有可能优化?
答:资源都是在类中申请,在类中释放,对资源都有一定的控制,不会导致资源泄露。
(6)数据结构中是否有无用的元素?
答:没有。
-效能
(1)代码的效能(Performance)如何?最坏的情况是怎样的?
答:经检查,代码正确,并且功能都已实现,暂无错误。
(2)代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?
答:循环中暂无,但在柱状图的设置部分需要优化。
(3)对于系统和网络调用是否会超时?如何处理?
答:不会超时。
-可读性
(1)代码可读性如何?有没有足够的注释?
答:代码可读性较好,对类,方法和变量都进行了注释。
-可测试性
(1)代码是否需要更新或创建新的单元测试?还可以有针对特定领域开发(如数据库、网页、多线程等)的核查表。
答:希望用较多的数据对代码进行测试。
2-3.阅读《现代软件工程—构建之法》第12章内容,完成了以下分析任务:
A. 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片;
1.软件的操作过程步骤如下:
(1)结对小组所使用的软件为MyEclipse10,在自己的笔记本下载该软件,将对方的项目clone到本地并打开MyEclipse10,如图10:
(2)选择需运行项目,右键单击,选择运行,将运行的链接复制到浏览器中,查看结果,如图11:
2.运行项目显示结果:
(1)前端页面,如图12:
(2)散点图页面,如图13:
(3)遗传算法页面,如图14:
(4)求解最优解页面,如图15:
(5)数据库中的数据导入页面,如图16:
B. 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
1.关于功能软件的解决:
(1)结对小组所使用的软件为MyEclipse10,实现了老师的基本功能,但是在人机交互页面只实现了运用动态规划法和遗传算法等算法求解最优解和求解时间。
(2)结对小组在求解最优解和求解时间时,没有运用回溯算法,但是老师要求的任务中有,希望博主在后期可以添加进去。
(3)结对小组没有实现将txt文件放进项目中,只能先将txt文件下载到本地并更改文件读取路径才能使用。
2.软件在数据量/界面/功能上各有什么优缺点:
(1)数据量:
界面:数据量较小。
功能:数据量较大。
(2)界面:
优点:界面简单大方,客户易于操作。
缺点:散点图部分没有与web前端相结合。且可以将前端做功能更加丰富一些。
(3)功能:
优点:实验任务的功能基本实现。
缺点:没有运用回溯法求解最优解和求解时间。
3.对该软件产品功能的改进意见:
(1)希望结对小组成员可以完善前端的功能,完善人机交互页面,提高用户的可读性。
(2)希望结对小组成员在后期可以运用回溯法求解最优解和求解时间。
4.本小组任务3的Github项目仓库链接、项目迭代改进要点说明、项目仓库的Fork、Clone、Push、Pull request、Merge pull request数据变化情况:
4-1.Fork
(1)点击原作者仓库github右上角的fork按钮,就会在你自己的github中新建一个同名仓库,如图17:
4-2.Clone
(1)进入原作者的仓库,如图18:
(2)点击clone,复制链接,如图19:
(3)输入git clone 原作者的链接,如图20:
4-3.本地库与原始库关联
(1)进入我们的项目文件夹: cd d01fypwf,如图21:
(2)添加与原始库的关联,命名为upstream,此地址是原项目开发者的项目主页上的clone的地址:这是专门用来与主开发者保持相同进度的方法,如图22:
(3)从原始库中抓取最新的更新,如图23:
4-4.Push过程
(1)把Test文件夹下面的文件都添加进来,查看,如图24:
(2)git commit -a -m"提交信息",如图25:
(3)git push https://github.com/cxl369/d01fypwf.git (原作者仓库地址) ,如图26:
4-5.Pull request
(1)在项目主页上,代码目录左上方有如图所示的图表,点击拉取要求的图标,然后就可以比较你的版本和源中代码的差别,然后就可以选择发送一个Pull request给主开发者,添加修改的原因描述。然后就等待主开发者去merge了,如图27:
C. 从职业、学历、年龄、专业、爱好、收入等方面概括任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求是什么?
职业:学生,教师,计算机相关从业人员
学历:本科及以上
年龄:老少皆宜
专业:计算机相关专业
爱好:计算机,编程,软件开发
收入:无限制
表面需求:通过进行本次实验设计的平台,解决D{0-1}背包问题求解这一类问题,即可以实现利用TXT中的数据导入数据库并进行相关操作,可以画出散点图,对数据(价值,重量比)的排序和用户通过动态规划法、回溯法和遗传算法求出最优解和时间。
潜在需求:通过本次实验,可以解决D{0-1}背包问题相关问题。
2-4.作业评价
结论:e)非常推荐。功能方面:通过运行该团队代码,我和我的合作伙伴一致认为该软件项目功能齐全,老师所要求的基本功能都实现了,而且人机交互页面的设计也非常简单人性化。唯一的不足之处就是在人机交互页面中既然留出了算法结果显示的地方,但是却没有将结果放在那个地方,使之有些留白,降低了可读性。
博文方面:博客在我们的学习生活中很有用处,无论是对项目的总结回顾还是对软件的设计思路的引导和记录,该组分享总结写的特别好,突出重点又兼顾全面。但是博文整体上感觉有点混乱,文字较多,有些地方没有突出重点,可读性略差,希望在今后的试验作业中可以注意一下。
进度计划方面:总体来说,PSP时间差相差并不大,该结对小组应该在编程前在软件功能设计等各方面做了充分的规划,这一点非常值得我学习。
综上所述,无论从功能、博文还是进度计划上面,该份软件工程实验报告都是一份值得推荐的作业,故确定最终结论为: e)非常推荐。
2-4.迭代改进本小组实验三任务3
已迭代项目路径
任务2
团队博客已发表,具体见团队博客。
任务3
3-1.任务2完成情况
已完成。3-2.任务3完成情况
已完成。3-3.记录完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间
任务名称 | 计划用时(min) | 实际用时(min) | 团队分工 |
---|---|---|---|
任务1 | 360 | 300 | 荟茹+永萍 |
任务2 | 100 | 120 | 鑫莲+芬 |
任务3 | 80 | 60 | 全体成员 |
在任务1中,由于项目环境与本地环境不符合,即结对小组与本小组用到的开发软件不同,所以在项目的环境部署上花费的时间较多,任务2是团结队开发过程,相对于任务1更容易点,所以较任务1所花费的时间相对较少,而在任务3中,由于项目可以直接在浏览器中运行,所以花费的时间比任务2要更少。
3-4.本次作业的感受和体会
在本次作业中,通过和其他小组结对项目时分析,发现了自己在时间分配上的不足,但也对代码的阅读和克隆等技术有了一定的练习,从中知道了代码规范的重要性。随后通过阅读书籍《构建之法》,对软件项目团队的特点,模式还有瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型的特点以及TSP原则有了一定的学习,在后面的任务3中通过阅读项目团队发布的一系列博客,又对团队合作,敏捷流程和TSP原则有了进一步的了解,通过本次的学习,希望能够在后期的团队项目中对这些知识再有一个很好的应用。
团队精神是一切事业成功的基础,没有团结协作,一切都只能各自为政,一盘散沙。个人的成长与团体就像鱼与水紧密联系。经过这次两个小组结对完成实验,使我明白了培养团队精神的重要性,其重要性在于:1、有利于塑造良好的个性人格。2、有利于个人综合素质的提高。在此次实验项目中,我有幸成为团队的一员。一个团队不是一个人的团队,而是大家的团队。刚开始进行团队组建时,不太顺利,但是经过后期的沟通和了解,我们没有气馁,而是相互鼓励,互相理解,这使我明白了,团队精神强调的不仅仅是一般意义上的合作与齐心协力,而是团结协作,优势互补,利用个性和本事差异,发挥进取协同的效应。在接下来的项目开发中,都是小组成员一起进行试验,所以我将会扬长避短,使自己做得更好。