201871010106-丁宣元 实验四 团队作业1:软件研发团队组建之个人博客

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/14660499.html
团队名称 永远的Ace
团队的课程学习目标 1.掌握如何更好地组建团队,合作发挥每个人的优势;
2.通过沟通合作组建团队;
3.进行代码审查,取长补短。
这个作业在哪些方面帮助团队实现学习目标 1.熟练Github的基本操作;
2.通过理论学习,组建团队进行沟通合作,最大化地发挥个人优势,更好地推动团队协作;
3.建立企业微信群进行沟通,并开通团队博客。
团队博客链接 链接

一、实验目的与要求

(1)实验三作业互评。

(2)组建软件项目研发团队。

二、实验内容和步骤

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

    1. 阅读博文,进行评论。

    评价博客链接 评论作业的Github项目仓库链接
    链接 仓库链接1 仓库链接2
    2. 克隆任务3项目源码到本地机器,阅读并运行代码,找出项目代码的5个以上bug,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。
    • clone项目源码:在clone的过程中经常出现Github等待超时的问题。
      (注:仓库链接2是私有的,通过与同学沟通后成功运行。)


    • 运行代码
      • 平台功能
      • 代码核查表
1. 概要部分 代码能符合需求和规格说明么?
代码设计是否有周全的考虑?
代码可读性如何?
代码容易维护么?
代码的每一行都执行并检查过了吗
符合需求
基本周全,但有一些细节暂未考虑到
可读性好
比较容易维护
已每行都进行执行检查
2.设计规范部分 设计是否遵从已知的设计模式或项目中常用的模式?
有没有硬编码或字符串/数字等存在?
代码有没有依赖于某一平台,是否会影响将来的移植?
开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
有没有无用的代码可以清除?
遵循
没有
代不依赖某一单一平台
有类似功能可以直接调用
没有
3.代码规范部分 修改的部分符合代码标准和风格么? 符合
4.具体代码部分 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
边界条件是如何处理的?Switch语句的Default是如何处理的?循环有没有可能出现死循环?
有没有使用断言(Assert)来保证我们认为不变的条件真的满足?
对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露?有没有可能优化?
数据结构中是否有无用的元素?
处理了错误
参数传递无错误
未发现死循环
没有
没有资源泄露
没有
5.效能 代码的效能(Performance)如何?最坏的情况是怎样的?
代码中,特别是循环中是否有明显可优化的部分?
对于系统和网络调用是否会超时?如何处理?
效能良好,达到了具体任务的要求
暂无
不会超时
6.可读性 代码可读性如何?
有没有足够的注释?
可读性好
注释足够
7.可测试性 代码是否需要更新或创建新的单元测试? 暂时不需要
  • 在阅读代码后,我觉得该小组代码非常规范。但是个人觉得有关软件的运行方法阐述较少,如果把软件如何运行的文档写的更详细一些会更好。
    bug:

    1.在遗传算法中没有保存日志文件;
    2.绘制散点图时,若数据区间过大,但坐标较小时,数据的位置可能会超出坐标轴的范围;
    3.测试的代码类型较单一;
    4.暂未完成遗传算法解决D{0-1}背包问题。

3. 阅读《现代软件工程—构建之法》第12章内容:
  • 《现代软件工程—构建之法》第12章是用户体验。这是在我的学习中首次关注到软件的使用者的感受,通过学习,我的收获非常大。总结核心内容如下:

    (1)应该考虑的问题:目标用户是谁?第一次体验时提高用户的满意度。
    (2)站在用户的角度考虑:“同理心”;
    (3)用户体验设计:分阶段设计和讨论;
    (4)评价标准:尽快提供可感触的反馈;系统界面符合现实惯例;用户有控制权;一致性和标准化;适合各种类型的用户;帮助用户识别诊断并修复作用;有必要的提示或帮助文档

  • 任务
    A. 体验任务3实现软件功能,使用软件的照片;
    编辑器使用Idea。

    • 第一组排序
    • 散点图

    • 测试代码
    • 遗传算法

    B. 总结任务3要求的功能软件,软件在数据量/界面/功能上的优缺点并对该软件产品功能提出改进意见。

    功能 界面 意见
    基本实现,但遗传算法只实现了0-1背包问题 页面也比较美观,操作简单方便 散点图可以绘制的更美观一些
    该组任务3要求的功能基本实现,但遗传算法只实现了0-1背包问题。除此之外,软件功能较全面,页面也比较美观,操作简单方便,可以绘制散点图、排序。通过运行代码后发现,绘制散点图时,有时候数据会过于集中,我觉得散点图可以绘制的更美观一些。

    C. 概括任务3所研发软件产品的典型用户群特征。

职业 学历 年龄 专业 收入 表面需求 潜在需求
编程能力的学生或编程业余爱好者 本科或研究生 20+ 多为计算机 5000+ 了解D{0-1}背包问题,测试代码,动态规划算法,回溯算法,遗传算法 拓宽思维,学习写更好性能的代码
4. 评价作业的结论:

(d)非常推荐。该小组无论是在完成度还是在代码规范上都具有很好的学习价值,故推荐。

5. 结合1—3的评论体会,迭代改进本小组实验三任务3。
  • 本小组任务3的Github项目仓库链接、项目迭代改进要点说明。

    • 本小组在借鉴其他团队的优秀作业后,对项目进行修改功能如下:
      (1)美化页面,可以自适应; (2)显示已开发的项目。


    • 小组Github项目仓库链接:链接
  • 任务2:团队组建

    1. 在实验三结对基础上,结对小组两两自由组合,组建软件项目研发团队;
    2. 申请开通团队博客,点击以下链接提交团队信息,将团队博客加入到班级博客;
    • 开通团队博客:已开通,详见团队博客;
    • 提交团队信息:已提交,详见团队博客;
    • 加入班级:已加入,详见团队博客。
    3. 阅读《现代软件工程—构建之法》第5章内容。
    • 《现代软件工程—构建之法》第5章是团队和流程。总结核心内容如下:

    (1)软件团队模式:主治医师模式,明星模式,社区模式,业余剧团模式,特工模式,秘密模式,交响乐模式,爵士乐,功能团队,官僚模式。
    (2)开发模式:改了再改,瀑布,RUP,老板驱动,渐进交付。
    (3)RUP:初始阶段,细化阶段,构造阶段,交付阶段。

    • 完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间;
    任务 花费的时间(h)
    任务1 4
    任务2 1
    任务3 1

    总结:通过本次实验,我们成功组建了小组,并对优秀的作业进行了代码审查。使我感受最深的是核查其他项目组的代码。切身体验了“一千个读者就有一千个哈姆雷特”,并且理解他人的代码思路困难较多,但这也拓宽了我的思维,发现自己的不足。在后续的学习中,要不断改进。

附录:研读任务2中的第5,7,17章内容

第5章:团队和流程,内容详解

(1)软件团队模式:主治医师模式,明星模式,社区模式,业余剧团模式,特工模式,秘密模式,交响乐模式,爵士乐,功能团队,官僚模式。
(2)开发模式:改了再改,瀑布,RUP,老板驱动,渐进交付。

开发模式 详情
写了再改 一窝蜂,难以符合实际需求
瀑布 单项不可逆,后修改
RUP 将各个阶段整合在一个框架
老板驱动 由行政领导主导,或老板主导
渐进交付 不断演进循环

(3)RUP:初始阶段,细化阶段,构造阶段,交付阶段。

第7章:实战中的软件工程

MSF:微软解决方案框架
MSF的9条原则:

MSF团队模型:

MSF过程模型:

第17章:人、绩效与职业道德


posted @ 2021-04-21 08:49  PuddingXiao  阅读(78)  评论(0编辑  收藏  举报