互联网时代对软件交付的诉求
VUCA
volatility(易变性),uncertainty(不确定性),complexity(复杂性),ambiguity(模糊性)
软件交付面临易变性,不确定性,复杂性,模糊性
软件交付两个指标:效率,质量
传统软件交付过程的问题分析:
人员,流程,技术被【墙】阻断,Throw it over the wall
过程中:
- 需求以文档传输,缺乏沟通
- 需求描述不清,且经常变更
- 测试反馈周期长,测试占研发比重大
- 自动化测试程度低,质量把控不完善
- 运维排期紧张,上线需要等待
- 手工运维繁琐,复杂,常出错
问题:
- 效率低,存在浪费
- 反馈慢,质量保证不全
- 故障多,操作耗时
传统软件交付的困境:
代码合并,缺乏代码Review。
摆脱困境,解决问题:(使用相对应的管理后台,对开发版本,以及分支,历史版本,进行部署的控制)
- 缩短提交正式部署上线的时间,降低风险。
- 自动,快速提供反馈。
- 让软件在整个周期处于可部署状态。
- 按下按钮,可将任意版本,按照需求进行任意环境的部署。
- 能够让整个交付过程变成一种可靠,可预期,可视化的过程。
持续交付的思路:
需求拆分,小步快跑(Scrum)
尽早的,持续的测试(持续集成)
开发到运维流程打通(DevOps)
相关概念:
持续交付(Continuous Delivery)是一系列的开发时间方法,用来确保让代码能够快速,安全的部署到生产环境中。
DevOps (Development和Operations组合)是一组过程,方法与系统的统称,用于促进开发(应用程序/软件工程),技术运营和质量保障(QA)部门之间的沟通,协作与整合。
敏捷软件开发(Agile)是一种应对快速变化的需求的一种软件开发能力。
需求描述不清,且经常变更