软件开发流程
软件
- 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。
软件开发流程的演变
| 传统瀑布模型| ==》|敏捷开发模型| ==》|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 模型