201871030117-李亚楠 实验四 团队作业1:软件研发团队组建

项目 内容
课程班级博客链接 课程班级
这个作业要求链接 作业要求
团队名称 零基础619
团队的课程学习目标 (1)团队成员之间互相交流,学习对方的优点,反思自己的不足;
(2)熟悉团队之间的合作过程,保证每个成员发挥最大作用;
(3)体会团队合作的重要性;
这个作业在哪些方面帮助团队实现学习目标 (1)团队之间的合作,集合每个人的智慧,使得整体效率大大提高;
(2)团队之间的磨合与交流,体会团队合作的必要性;
团队博客链接 团队博客

任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业,任选一个你认为完成质量较高的小组项目成果,继续以实验三结对学习方式完成以下任务,具体要求如下:

(1)对博文作业进行阅读,并结合评分要求进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系,PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探讨,给出这个结对小组在进度计划方面可以提高的具体建议。将以上评论内容发布到博客评论区:

(2)克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程-构建之法》4.4.3节核查表复审项目代码并记录。

  • 克隆源码到本地机器

  • 阅读并运行代码

  • 代码存在的5个bug

    • 程序执行到get_ipython().run_line_magic('matplotlib', 'inline') 会发生如下错误

      get_ipython().run_line_magic('matplotlib', 'inline')
      NameError: name 'get_ipython' is not defined
      

      该代码只能在 jupyter notebook 或者 ipython 下使用,不可以使用 python直接执行

    • 程序执行的时候必须先选择1 读取数据集,然后才可以继续下面2 绘制散点图,3 按第三项进行价值:重量比非递增排序;如果直接选2 绘制散点图就会发生错误,经过我们分析可能是由于数据没有导入进去

      Traceback (most recent call last):
        File "E:/PyCharm/file/shishi2.py", line 229, in <module>
          main()
        File "E:/PyCharm/file/shishi2.py", line 205, in main
          Scatter()
        File "E:/PyCharm/file/shishi2.py", line 126, in Scatter
          profit_weight = pd.DataFrame(profit_int, columns=['profit'])
      NameError: name 'profit_int' is not defined
      
    • 选择5退出的时候,应该是会退出,但是会输出一个最优解和一散点图

    • 算法执行过程中,选择动态规划算法解决问题,然后只会显示最优解,不会显示最优解向量

    • 没有把遗传算法放进去,只有动态规划算法和回溯算法,但是这两个算法都可以实现

  • 核查表

    部分 要求 记录
    概要部分 1.代码是否符合需求和规格说明?
    2.代码设计是否考虑周全?
    3.代码的可读性
    4.代码的维护性
    5.每行代码是否都被执行和检查?
    1.代码符合需求和规格说明;
    2.代码设计考虑到位;
    3.代码具有较强的可读性,程序表达清晰,结构完整,有必要的注释;
    4.代码的维护性较强,模块之间的联系很密切;
    5.程序每行都被执行和检查;
    设计规范部分 1.设计是否遵从一定的项目模式?
    2.有没有硬编码或字符串/数字?
    3.代码是否可移植?
    4.代码是否用已有的Library/SDK/Framework中得功能实现?是否有类似功能可以调用?
    5.有没有无用代码?
    1.设计了一定的项目模式;
    2.有字符串和数字;
    3.代码可移植;
    4.没有类似功能可以调用;
    5.程序中没有无用代码;
    代码规范部分 1.修改的部分符合代码规范和风格吗? 1.修改的部分解决了问题,但是在代码规范和风格方面还优点欠缺;
    具体代码部分 1.是否对错误进行了处理?调用外部函数,是否检查返回值和处理异常?
    2.参数有无错误?字符串的长度是字节长度还是字符长度,从0/1开始计数?
    3.边界条件如何处理?switch和default如何处理?是否有死循环?
    4.有无断言保证我们认为不变的条件得到满足?
    5.资源利用在哪里申请?哪里释放?有无优化空间?
    6.数据结构中有无没有的元素?
    1.对错误进行了处理,处理了异常和检查返回值;
    2.参数没有错误;字符串长度是按字符长度计数,从1开始;
    3.边界处理得当;没有switch和default,无死循环;
    4.没有断言;
    5.没有资源的释放,无优化空间;
    6.数据结构中没有无用的元素;
    效能 1.代码的效能如何?最坏情况怎样?
    2.代码中,特别是循环中是否有可优化的部分?
    3.对系统和网络的调用是否会超时?如何处理?
    1.代码的效能体现的还不错;
    2.代码中无可优化的循环;
    3.对系统和网络调用不会超时;
    可读性 1.可读性如何?有无注释? 1.代码的可读性较好,思路很清晰,有明确的注释,帮助读者阅读;
    可测试性 1.代码是否需要更新或创建新的单元测试? 1.代码需更新或创建新的单元测试

(3)阅读《现代软件工程-构建之法》第12章内容,完成以下分析任务:

  • 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片;

    • 使用过程

      • 将源代码克隆到本地机器,用相应的集成开发环境打开;

      • 执行.py文件时发现没有pandas库,所以首先安装相应库文件;

      • 安装好相应的库文件,运行程序,发生了以下错误

        get_ipython().run_line_magic('matplotlib', 'inline')
        NameError: name 'get_ipython' is not defined
        

        经过查阅资料,发现这段代码只能在ipython上执行,在python里无法直接执行,所以将这句话注释,才可以继续执行下去;

      • 之后执行程序就可以成功了,但是注意每次执行必须先选择1 读取数据集,不然下面的2 绘制散点图,3 选择算法求得最优解都无法实现

    • 使用软件图片


  • 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该产品功能有什么改进意见?

    • 要求的功能软件都可以解决,可以选择数据集,可以进绘制相应数据集的散点图,可以将回溯法或者动态规划法求得的最优解存在txt文本文件中同时也可以按按第三项的价值:重量比非递增排序。功能实现的很好,很全面,用户体验感很不错。

    • 在数据量/界面/功能的优缺点

      • 优点:无论数据量有多大,其功能都可以实现,而且菜单可以很好的提示如何操作,动态规划法和回溯算法可以准确的解决这个问题;
      • 缺点:程序运行只有菜单模式,没有找见图形用户界面,但是这不影响用户使用,因为这个程序中制作的菜单模式也可以很好的方便用户使用;作业要求可以添加数据和连接数据库,这个点我们没有发现。
    • 改进意见

      折扣{0-1}背包问题的基本功能已经实现,底层建设已经完成,并且完成的很好,可以准确的求得最优解,也可以很精确的绘制散点图,达到了作业的要求;如果需要改进的话,有一个美观的图形用户界面,可能会更好,因为这样更方面用户使用,很好的提升用户体验感。

  • 从职业、学历、年龄、专业、爱好、收入等方面概括任务3所研发软件产品的典型用户群特征,它们表面需求,潜在需求是什么?

    • 用户群特征:可能会是学生和老师,在决策问题中,这无疑不是一个很好的平台,老师的口授可能不会使学生感觉到最优决策问题的重要性,但是学生可以通过实际使用来体会最优决策的求解结果,从而加深理解和启发思考;也可能是旅行家,因为背包容量有限,所以要考虑多重因素来达到最大价值比。
    • 表面需求:表面需求就是学习的基础上体会,在理论的基础上实践,需要的是一组数据的最优解。
    • 潜在需求:潜在需求就是使自己的背包的达到最大价值比,使自己的利益达到最大化。

(4)经过(1)-(3)的功能,你们一定有充分的理由给评价作业选择一个结论:a)非常不推荐 b)不推荐 c)一般 d)好,不错 d)非常推荐

  • d 我选择非常推荐,因为程序实现的功能很全面,算法很简明,容易读懂。总的来说,这个程序量还是挺大,尤其是将各部分模块组织在一起,就显得很不容易,因此,这份作业值得我学习,也值得大家使用。

(5)结合(1)-(3)的评价体会,迭代改进本小组实验任务3

  • pull request记录

任务2:团队组建

  • 进行了团队组建,并且完成了一些基础工作

任务3:完成博文作业

  • 记录完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间
任务 时间(h)
任务1 8
任务2 3
任务3 2
  • 小结
    这次作业是在上次的作业基础上完成的,我们选择了一份完成质量较好的作业进行了学习及评价,阅读了他们的代码,发现了他们程序的功能很强大,程序也很注意代码设计规范和代码风格规范,完成本次作业,我深刻意识到自己编程能力很弱,很难将各个模块组织到一起,底层知识欠缺,而且每次作业可能开始的比较晚,导致最后的结果很差强人意,所以,之后的每次作业我们应该认真对待,竭尽全力做到最好的程度。本次作业还进行了团队建设,因为每个人之间的差异性,整个合作过程可能会发生很多异议,所以在每次发生矛盾的时候,能够听取别人的建议和意见也是非常重要的一部分。
posted @ 2021-04-21 09:41  201871030117-李亚楠  阅读(229)  评论(0编辑  收藏  举报