项目 内容
课程班级博客链接 2022年春软件工程课程班(2019计算机科学与技术)
这个作业要求链接 实验四 团队作业1:软件研发团队组建
团队名称 夏日限定
我的课程学习目标 (1)实验三作业互评。(2)组建软件项目研发团队。
这个作业在哪些方面帮助我实现学习目标 1.通过理论学习,组建团队进行沟通合作,最大化地发挥个人优势,更好地推动团队协作;2.建立企业微信群进行沟通,并开通团队博客;3.发现每个人的闪光点,明确我们团队的优势。
团队博客链接 summer-limmit

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

1.对博文作业进行阅读,并结合评分要求进行评论

评论博客链接

2.克隆任务3项目源码到本地机器,阅读并运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审项目代码并记录。

  • 代码复审的核查表
项目 内容
概要部分 代码符合需求和规格说明么? 符合
代码设计是否考虑周全?
代码可读性如何? 可读性好
代码容易维护么? 容易维护
代码的每一行都执行并检查过了吗?
设计规范部分 设计是否遵从已知的设计模式或项目中常用的模式?
有没有硬编码或字符串/数字等存在?
代码有没有依赖于某一平台,是否会影响将来的移植?
开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以通过调用而不用全部重新实现?
有没有无用的代码可以清除?
代码规范部分 修改的部分符合代码标准和风格么? 符合
具体代码部分 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? 无错误
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数
边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环?
有没有使用断言来保证我们认为不变的条件真的得到满足?
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间?
数据结构中有没有用不到的元素?
效能 代码的效能如何?最坏的情况是怎么样的? 效能较好
代码的效能如何?最坏的情况是怎么样的?
对于系统和网络的调用是否会超时?如何处理?
可读性 代码可读性如何?有没有足够的注释? 可读性较好;有
可测试性 代码是否需要更新或创建新的单元测试?

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

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

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

    • 任务3要求的功能软件已解决
    • 软件数据量:软件数据量来自文件的数据量
    • 软件界面:软件界清晰整洁,容易操作,具有良好的人机交互界面
    • 软件功能:软件给你完整,能实现所要求的功能
  • C. 从学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?

    • 学历:大专及以上
    • 年龄:18及以上
    • 专业:计算机相关专业
    • 爱好:喜欢编程、算法等
    • 收入:中等水平
    • 表面需求:实现最好选择
    • 潜在需求:算法的掌握

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

  • e) 非常推荐

5.结合1-3的评论体会,迭代改进本小组实验三的任务3。

任务2:团队组建

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

团队名称 夏日限定
团队链接 summer-limmit

2. 团队成员组成

成员学号 成员姓名 个人博客地址 备注
201971010235 阮凯 阮凯博客地址 PM
201971010146 杨凯 杨凯博客地址
201971010233 潘晴 潘晴博客地址
201971010230 孟姣姣 孟姣姣博客地址

3. 成员风采

成员姓名 擅长技术 编程兴趣 希望承担的角色 宣言
阮凯 web前端 web前端和python PM 做好每一件事
杨凯 java 前端 测试 从现在开始
潘晴 c语言 前端开发 文档 虽然很菜,但是努力不在菜
孟姣姣 java 后端开发 开发 星光不问赶路人,时光不负有心人

4. 阅读《现代软件工程—构建之法》第5章内容

  • 什么是团队?

    • 团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力跑。团队成员有各自的分工,互相依赖合作,共同完成任务。
  • 软件团队的模式

    • 主治医师模式:这样的软件团队中有首席程序员,他负责处理主要模块的设计和编码,其他成员从各种角度支持他的工作(后备程序员、系统管理员、工具开发、编程语言专家、业务专家)。

    • 明星模式:主治医师模式运用到极点,可以退化为明星模式。

    • 社区模式:社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。

    • 业余剧团模式:在每一个项目中,不同的人会挑选不同的角色,在下一个项目中,这些人也许会换一个完全不同的角色类型。个人在团队中听从一个中央指挥的指导和安排。

    • 秘密团队:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。这种模式的好处是:团队内部以后极大的自由,较高的热情,没有外界的干扰。

    • 特工模式:软件行业的一些团队由一些有特殊技能的专业人员组成,负责解决一些棘手而有紧迫性的问题。

    • 交响乐团模式:门类齐全、各司其职。当某个软件领域处于稳定成长阶段的时候,众多大型软件公司的开发团队就会采取这种模式。

    • 爵士乐模式:强调个性化的表达,强有力的互动,对变化的内容有创意的回应。

    • 功能团队模式:很多软件公司的团队最后都演变成功能团队,具备不同能力的同事们平等合作,共同完成一个功能。

    • 官僚模式:这种模式在软件开发中会出问题,因为成员之间不光有技术方面的合作和领导,同时还混进了组织上的领导和被领导关系。

  • 开发流程
    软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。

    • 写了再改模式:这种模式不需要太多其他准备或相关知识,上来就写代码,写不出来就改,但要写一个有实际用户、解决实际需求的软件,这个方法缺点就很大。

    • 瀑布模型:他的适用范围如果产品的定义非常稳定,但是产品的正确性非常重要,需要每一步验证,产品模块之间的借口、输入和输出能很好的用形式化的方法定义和验证,使用的技术非常成熟,团队成员都很熟悉这些技术,负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流。

    • 瀑布模式的各种变形:生鱼片模型、大瀑布带小瀑布

    • 统一流程:业务建模、需求、分析和设计、实现、测试、部署、配置和变更管理、项目管理、环境、初始阶段、细化阶段、构造阶段、交付阶段

    • 老版驱动的流程:该模式的问题领导对许多技术细节是外行,未必懂得软件项目的管理,领导的权威影响了自由的交流和创造,领导最擅长的管理方式是行政命令,这未必能管好软件团队或任何需要创造力的团队,领导的精力有限,领导很忙时,团队怎么办?

    • 渐进交付的流程:很接近迭代式开发流程,当系统的主要需求和架构明确之后,软件团队进入了一个不断演进的evolution循环中:开发→发布→听取反馈→根据反馈做改进

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

5. 请阅读《现代软件工程—构建之法》第7章,理解MSF的9点基本原则

  • 推动信息共享与沟通(Foster open communications)

    • 所有信息都保留公开,同时对于涉及到技术机密以及安全性等信息采取保护措施。
  • 为共同的远景而工作(Work toward a shared vision)

    • “共同的远景”指产品的远景。
  • 充分授权和信任(Empower team members)

    • 在一个高效的团队中,所有成员都应得到充分授权。
  • 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)

    • 团队中每个角色都有自己的职责,若出现了问题,这个角色就要负责。
  • 重视商业价值

    • 如果你还没有能说清楚你的产品解决了什么问题,为谁解决问题,为什么你的产品会解决这些问题,以及客户怎样付钱让你解决问题,那你就不应该贸然创业。
  • 保持敏捷,预期和适应变化(Stay agile, expect and adapt change)

    • 软件工程,唯一不变的是变化;我们是预期变化,不是期望变化。
  • 投资质量(Invest in quality)

    • 对质量的重视,引发对质量的投资,引发对人、过程和工具的投资。
  • 学习所有的经验(Learn from all experiences)

    • 在学习过去的经验的同时,也要避免让过去的经验妨碍解决现在的问题。
  • 与顾客合作(Partner with internal and external customers)

    • MSF强调产品团队与顾客的交流和合作,因为“我觉得”和“顾客觉得”是两码事。

6. 团队企业微信

7. 团队特色

  • 团队特点:思维活跃,特点分明,分工明确。
  • 核心竞争力:团队组建的时间久,合作的范围广,相互了解。

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

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

任务 实际花费时间/h
任务一 6
任务二 5
任务三 2.5

2.谈谈完成本次作业的感受和体会。

通过此次克隆学习其他组的作业发现以前学习的时候重视理论课而疏于实践课,导致和别人在动手实践上面的差距,需要及时的弥补自己。