Python 测开28期 - WL - 学习笔记 - 软件开发流程

软件开发流程

软件

  • 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。

软件开发流程的演变

| 传统瀑布模型| ==》|敏捷开发模型| ==》|DevOps开发模型|

瀑布模型

  • 软件开发的各项活动严格按照线性方式进行
  • 当前活动接收上一项活动的工作成果
  • 当前活动的工作结果需要进行验证
    需求分析 → 设计 → 编码 → 实现 → 软件测试 → 完成 → 维护

优点

  • 开发的各个阶段比较清晰
  • 强调早期计划及需求调查
  • 适合需求稳定的产品开发

缺点

  • 由于开发模型是线性的,怎加了开发的风险
  • 早期的错误可能要等到开发后期阶段才能发现

敏捷模型

XP - 极限编程

  • 编程方法:简单设计、结对编程、测试驱动开发、重构
  • 小组实践:编码标准、代码集体所有、持续集成、隐喻、稳定高速的步伐
  • 交付和管理:小规模发布、计划游戏、完整的团队、现场客户

SCRUM

  • 产品BACKLOG:产品概要稳定,管理需求
  • SPRINT计划会议
  • SPRINT BACKLOG
  • SPRINT:2-4周,每日站会
  • 潜在可交付产品增量

敏捷模型总结

  • 增量迭代
  • 小步快跑

DevOps

  • Development:SoftWare Engineering,开发
  • QA:Quality Assuarance,测试
  • Technology Operations,运维

DevOps 生命周期

  • 持续开发
  • 持续测试
  • 持续集成
  • 持续部署
  • 持续监控

DevOps 对发布的影响

  • 减少变更范围
  • 加强发布协调
  • 自动化

CI/CD

持续集成:Continuous Integration,缩写为 CI

  • 一种软件开发实践。
  • 团队开发成员每天可能会发生多次集成。
  • 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
  • 根据测试结果确定新代码和原有代码能否正确地集成在一起。

持续交付:Continuous Delivery,缩写为 CD

  • 是一种软件工程手法。
  • 让软件产品的产出过程在一个短周期内完成。
  • 保证软件可以稳定、持续的保持在随时可以发布的状况。
  • 目标:
    • 让软件的构建、测试与发布变得更快以及更频繁。
    • 减少软件开发的成本与时间,减少风险。

CD 与 DevOps 的关系

  • DevOps 的范围更广,是软件交付过程所涉及的多个团队之间的合作,并且将软件交付的过程自动化
  • 持续交付是一种自动化交付的手段,关注点在于将不同的过程集中起来,并且更快、更频繁的执行这些过程
  • DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型