项目 内容
课程班级博客链接 课程班级博客链接
这个作业要求链接 作业要求链接
团队名称 佩琪小分队
团队的课程学习目标 1、通过团队项目学习软件工程
2、通过团队项目对软件开发有更深的认识
3、通过团队项目学习GitHub的一些团队操作
4、通过团队项目体会团队合作的优势
这个作业在哪些方面帮助团队实现学习目标 1、通过对完成质量较高的小组项目进行克隆并查找bug,对背包问题有了更深的理解;
2、通过团队合作学习对软件工程课程有更深的认识
3、明白了团队合作开发对软件项目的帮助;
4.、理解了一个团队中目标统一的重要性;
团队博客链接 团队博客链接

任务1:浏览班级博客园中提交《实验三 软件工程结对项目》作业

  • 克隆源码

#导入时间包,便于记录动态规划法和回溯法所用时间
import time
#导入pandas,需使用dataframe类型
import pandas as pd
#导入可视化包,用于绘制散点图
get_ipython().run_line_magic('matplotlib', 'inline')
import matplotlib.pyplot as plt
  • 运行代码

  • 项目bug

    1. 遗传算法没有保存数据日志;
    2. 回溯算法求解过程太长,时间复杂度较大;
    3. js、css、html接口存在问题,运行时出现错误;
    4. 绘制散点图时点较多时难以区分,点的面积较大;
    5. 没有实现前端功能。
  • 项目复审核查表

    复审核查项 评价
    代码能符合需求和规格说明么?
    代码设计是否有周全的考虑?
    代码可读性如何? 较好
    代码容易维护么? 容易维护
    代码的每一行都执行并检查过了吗?
    设计是否遵从已知的设计模式或项目中常用的模式?
    有没有硬编码或字符串/数字等存在?
    代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)?
    在本项目中是否存在类似的功能可以调用而不用全部重新实现?
    有没有无用的代码可以清除? 没有
    修改的部分符合代码标准和风格么(详细条文略)? 符合
    有没有对错误进行处理? 没有
    参数传递有无错误? 没有错误
    循环有没有可能出现死循环? 没有
    有没有使用断言(Assert)来保证我们认为不变的条件真的满足? 没有
    有没有可能导致资源泄露? 有可能
    数据结构中是否有无用的元素?
    代码中,特别是循环中是否有明显可优化的部分?
    对于系统和网络调用是否会超时?
    代码是否需要更新或创建新的单元测试?
  • 阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务:

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

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

      • 任务三所要求的功能已经基本实现,但也有个别功能不够完善,比如各项功能无法在前端实现;
      • 数据处理简单有效,值得学习,但是界面友好程度不足,遗传算法不够成熟;
      • 改进界面的友好程度,进一步改进遗传算法,对于每个算法的时间复杂度较大,很是占用资源,希望可以改进;
    3. 从职业、学历、年龄、专业、爱好、收入等方面概括任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求是什么?

      • 职业:算法初学者
      • 学历:大学二年级
      • 专业:计算机相关专业
      • 爱好:喜欢研究算法
      • 收入:无要求
      • 表面需求:D{0-1}KP算法求解以及前端设计;
      • 潜在需求:回溯算法、动态规划算法以及遗传算法的时间、空间复杂度对比分析
  • 经过(1)—(3)的工作,你们一定有充分的理由给评价作业选择一个结论:

  • 结合(1)—(3)的评论体会,迭代改进本小组实验三任务3。

    • 算法复杂度较高,对于时间复杂度可以通过减少无用变量等方法降低时间、空间复杂度
    • 界面的友好程度可以继续改进
    • 学习克隆小组的数据处理方法,降低复杂度
    • 完善自己团队的要求功能

任务二:团队组建

  • 团队共有的特点
    (1)团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作;
    (2)团队成员有一定的分工,互相依赖合作,共同完成任务。

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

  • 瀑布模型以及各种变形

    • 特点:重计划、重事先设计、重文档表达。
    • 统一流程工作流:
      业务建模——需求——分析和设计——实现——测试——部署——配置和变更管理——项目管理——环境——初始阶段——细化阶段——构造阶段——交付阶段
    • TSP原则
      1. 使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的;
      2. 团队的各个成员对团队的目标、角色、产品都有统一的理解;
      3. 尽量使用成熟的技术和做法;
      4. 尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定;
      5. 制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定;
      6. 增加团队的自我管理能力;
      7. 专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作。
  • 队名;

    • 佩琪小分队
      img
  • 团队成员组成,按以下列表形式给出,个人博客地址需加超链接,在备注中标记团队组长(PM);

    成员学号 成员姓名 个人博客地址 备注
    30109 *诚 https://www.cnblogs.com/hc82/ 组长
    30133 *作朝 https://www.cnblogs.com/zuochao/ 开发
    30140 *婷婷 https://www.cnblogs.com/ztt0808/ 文档
    30118 *云云 https://www.cnblogs.com/lyy-942 测试
  • 成员风采:介绍每位队员的风格、擅长技术、编程兴趣、希望的承担的软工角色(文档、开发、测试、PM等)、一句话宣言等;

    成员 风格 擅长技术 编程兴趣 希望承担的软工角色 宣言
    *诚 动手能力较强,善于沟通,乐于交际 python 爬虫 PM 我曾踏足山巅,也曾进入低谷,二者都让我受益良多
    *作朝 认真严谨,韧性十足,有较强的团队精神 python python 开发 只要路是对的,就不怕路远
    *婷婷 积极向上,善于思考,有较强的上进心,具有吃苦耐劳的精神,做事细心谨慎,责任心强。 Python web前端 文档 人生在勤,不索何获
    *云云 仔细认真,积极主动,性格开朗,待人友好,良好的沟通能力 python python 测试 两粒种子,一片深林
  • MSF(Microsoft Solution Framework):微软解决方案框架,也就是微软推荐的软件开发方法。

    • 9点基本原则
      1. 推动信息共享与沟通(Foster open communications)
      2. 为共同的远景而工作(Work toward a shared vision)
      3. 充分授权和信任(Empower team members)
      4. 各司其职,为项目共同负责(Establish clear accountability and shared responsibility)
      5. 交付增量的价值(Deliver incremental value)
      6. 保持敏捷,预期和适应变化(Stay agile,expect and adapt change)
      7. 投资质量(Invest in quality)
      8. 学习所有的经验(Learn from all experiences)
      9. 与顾客合作(Partner with internal and external customers)
  • 团队成员绩效

    • 在MSF团队模型中,任何技术项目都必须达到特定的关键质量目标,才能够被认为是成功的项目。任何一个角色无法实现其目标,都将危机整个项目。因此,每个角色都被认为是同等重要的,重要的决定都要共同做出。
  • 团队特色描述,言简意赅的描述团队特点或核心竞争力;

    • 清晰的目标
    • 相互的信任
    • 成熟的技能
    • 良好的沟通

任务3:完成《实验四 团队作业1:软件研发团队组建》博文作业

  • 记录完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间;:

    任务 完成时间(h)
    任务一 3
    任务二 2
    任务三 1

任务4:总结

通过本次实验,我了解了团队模式以及MSF,同时组建了一支团队,对于初创团队,我认为信任与分工甚是重要,需要根据每个成员的擅长领域,性格特征来分配团队任务,完成团队项目,这对每个成员都要求具有较强的团队精神与合作意识。同时通过查找别人作业bug,能够很清楚的认识自己的不足,能够很好地量化作业完成度,希望再以后的学习中再接再厉,继续加油!