201871010131-张兴盼 实验四 团队作业1:软件研发团队组建

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/14660499.html
团队名称 The Superego
团队课程学习目标 1.思维方面,有利于构建软件项目合作意识。
2.学习经验方面,学会如何去完成结对软件项目。
这个作业在哪些方面帮助团队实现学习目标 1.熟悉软件项目结对合作开发流程,并开发出本次软件项目。
2.通过阅读完成质量较高的项目小组的代码,了解其思想,进行代码复审,进而提高自身能力。
团队博客链接 团队博客链接

实验内容

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

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

    • 点击这里查看被评论作业的博客链接;

    • 点击这里查看被评论作业的Github项目仓库链接。

  • 克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
    • 项目克隆
    • BUG总结
      1.绘制散点图更新不及时,有浏览器缓存
      2.回溯算法求解过程太长,用户体验不是很友好
      3.没有算法测评报错信息,用户提交成功后需要长时间等待
      4.在无工作人员的介绍下,用户不能轻松的运行其该项目
      5.算法求解时间过长,时间复杂度高
    • 代码核查表如下:
复审内容 复审结果
1.概要部分
代码符合需求和规格说明么? 基本符合
代码设计是否考虑周全? 考虑周全
代码可读性如何? 采用了优秀的设计框架,代码可读性好。
代码容易维护么? 对于不同的功能模块,分别存储在不同的类中,维护较为容易。
代码的每一行都执行并检查过了吗? 是的
2.设计规范部分
设计是否遵从已知的设计模式或项目中常用的模式? 采用了MVC设计模式
有没有硬编码或字符串/数字等存在?
代码有没有依赖于某一平台,是否会影响将来的移植?
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?
有没有无用的代码可以清除? 没有
3.代码规范部分
修改的部分符合代码标准和风格吗? 符合规范
4.具体代码部分
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? 没有处理异常值
参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度是以0开始计数还是以1开始计数? 没有
边界条件是如何处理的? switch语句的default分支是如何处理的?循环有没有可能出现死循环? 未使用switch语句;循环不会出现死循环。
有没有使用断言( Assert)来保证我们认为不变的条件真的得到满足? 未使用断言。
数据结构中有没有用不到的元素?
5.效能
代码的效能(Performance)如何?最坏的情况是怎样的? 运行效率较低。
代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string的操作是否能用StringBuilder来优化)?
对于系统和网络的调用是否会超时?如何处理? 没有对网络的调用
6.可读性
代码可读性如何?有没有足够的注释? 关键语句都有注释,可读性高
7.可测试性
代码是否需要更新或创建新的单元测试? 不需要
  • 阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务:
    • A. 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片;
      a.绘制散点图

      b.回溯法求解

      c.动态规划求解

      d.动态测评

    • B. 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
      a.基本解决了。
      b.优缺点如下:
      1)数据量:可对任意一个数据集都可以实现相关要求;
      2)界面:区分了四个功能模块,但界面美观程序还有待加强;
      3)功能:基本功能基本实现,但对于算法部分还有待提高。
      c.改进意见:对于遗传算法的实现还有待优化,前端页面的人机交互还有待加强,对于该项目使用的Spring boots框架,只使用了其中一点点的特性,在后续的学习中还要好好学习研究。

    • C. 从职业、学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求是什么?
      a.职业:学生或相关算法研究人员
      b.学历:本科及以上
      c.年龄:15岁以上
      d.专业:与算法设计相关的专业
      e.爱好:编程、算法
      f.收入:不限
      g.表面需求:D{0-1}算法求解以及可视化分析
      h.潜在需求:回溯算法、动态规划算法以及遗传算法的对比分析

  • 给评价作业选择一个结论:
    • d) 好,不错,此次核查评论的过程也给予了我很大的启发。
  • 结合评论体会,迭代改进本小组实验三的任务3。
    • 已对任务三进行改进。

任务二:团队组建

  • 在实验三结对基础上,结对小组两两自由组合,组建软件项目研发团队

    • 已根据小组情况,与陈来弟、公海瑜组建了软件项目研发团队。
  • 申请开通团队博客,点击链接提交团队信息,将团队博客加入到班级博客

    • 已开通团队博客并加入到了班级博客,团队信息已提交,详情可点击这里在团队博客中查看。
  • 阅读《现代软件工程—构建之法》第5章内容

    • 团队模式的几种形式
      1.一窝蜂模式:最初的一窝蜂形式的软件团队模式,经过一段时间的演变将转变为其他模式;
      2.主治医师模式:首席程序员负责主要模块的设计与编码,其他成员从不同角度提供支持;
      3.明星模式:主治医师模式运用的极点,团队“明星”的能力掩盖了团队所有人的缺陷与优点;
      4.社区模式:成员分布不受时间空间的限制,所有人根据喜好选择项目进行开发,一般不要求报酬;
      5.业余剧团模式:没有固定的团队,且成员在不同的项目中没有固定的工作分配,所有成员由“中央指挥”指示;
      6.秘密团队:秘密状态下进行,无外界干扰,团队肩负独特使命,内部成员自由度与热情较高;
      7.特工团队:团队由专业人士组成,负责一些紧急问题的解决;
      8.交响乐团模式:较多大型软件公司采用,成员与领导者能力较强且有相似的项目开发经验,所有成员各司其职但统一受领导者指挥;
      9.爵士乐模式:与交响乐团模式对立,较为松散,领导者完成框架,其他成员在此基础上创作,最后再由领导者收尾;
      10.功能团队模式:没有固定的团队,由不同能力的成员进行组合,协作完成某一项目,项目完成后成员重新组织进行其它不同项目;
      11.官僚模式:脱胎于大机构的组织架构,几人向小头目报告,小头目向大头目报告。容易形成恶性竞争。

    • 瀑布模型及其各种变形
      1、瀑布模型是一个经典的软件生命周期模型,也叫预测型生命周期、完全计划驱动型生命周期。在这个模型里,在项目生命周期的尽早时间,要确定项目范围及交付此范围所需的时间和成本。
      2、瀑布模型的变形有生鱼片模型和大瀑布带着小瀑布。
      a.生鱼片模型

      b.大瀑布带着小瀑布

    • 渐进交付流程
      渐进交付流程是 Steve McConnell 在1996 年总结的,但是它其实已经很接近现在大家谈论的比较多的迭代式开发流程。在系统的主要需求和架构明确之后, 软件团队进入了一个不断变化的evolution 循环中: [开发 -> 发布 -> 听取反馈 -> 根据反馈做改进 ]

    • TSP原则:
      1.使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的;
      2.团队的各个成员对团队的目标、角色、产品都有统一的理解;
      3.尽量使用成熟的技术和做法;
      4.尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定;
      5.制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来);
      6.增加团队的自我管理能力;
      7.专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。

  • 感受和体会:在本次作业中,我选择了李岩松小组项目成果进行测试、复审,他们这组的作业代码功能实现的完整性比较高。所以于我而言此次复审的过程就是一个学习的过程,让我充分认识到了自己的不足,也更加意识到应该多向优秀的同学看齐。在阅读《构建之法》这本书时,我了解到了什么是团队和非团队、TSP原则,以及绩效管理等各种关于团队的内容,使我受益颇多。本次组建团队的过程中,我们也是费了一定的功夫,我们意识到组建一个合适的团队不仅要考虑各成员的学习能力,还要考虑对方性格方面是否适合、学习态度是否端正等多方面因素。本次组建团队之后,也让我更加下定决心要在之后的学习中多提升自己的能力,成为一个对自己有用、对团队有用、对社会有用的人。

posted @ 2021-04-21 00:19  201871010131-张兴盼  阅读(62)  评论(0编辑  收藏  举报