zoukankan      html  css  js  c++  java
  • 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原则,以及绩效管理等各种关于团队的内容,使我受益颇多。本次组建团队的过程中,我们也是费了一定的功夫,我们意识到组建一个合适的团队不仅要考虑各成员的学习能力,还要考虑对方性格方面是否适合、学习态度是否端正等多方面因素。本次组建团队之后,也让我更加下定决心要在之后的学习中多提升自己的能力,成为一个对自己有用、对团队有用、对社会有用的人。

  • 相关阅读:
    Effective java 读书笔记
    python测试api接口
    Git 提交后开始自动构建
    修改docker的默认存储位置
    golang实现ios推送
    NSRangeFromString 测试
    Container View Controller
    ios自定义View自动布局时计算大小
    Java执行groovy脚本
    gradle使用eclipse debug 代码
  • 原文地址:https://www.cnblogs.com/zxp19990614/p/14660825.html
Copyright © 2011-2022 走看看