软件的概念:与计算机系统操作有关的计算机程序、文件、文档以及数据
软件开发流程演变:传统瀑布模型→敏捷开发模型→DevOps模型
瀑布模型
瀑布模型流程:需求分析→设计→编码→实现→软件测试→完成→维护
瀑布模型特点:线性
瀑布模型优点:阶段清晰、强调早期计划和需求调查、适合需求稳定产品
瀑布模型缺点:增加开发风险、错误发现晚
敏捷开发模型
敏捷开发模型:包含XP、SCRUM
极限编程-XP
螺旋式编程,分多个周期
编程方法:简单设计、结对编程、测试驱动开发、重构
小组实践:代码集体所有、编码标准、稳定高速的步伐、持续集成、隐喻
交付和管理:小规模发布、计划游戏、完整的团队、现场客户
SCRUM
产品backlog、sprint计划会议、sprint backlog→2-4周sprint、潜在交付产品增量
敏捷模型特点:增量迭代、小步快跑
DevOps
DevOps:开发、测试、运维
DevOps生命周期:持续开发、持续测试、持续集成、持续部署、持续监控
DevOps特点:减少变更范围、加强发布协调、自动化
持续集成、持续交付与DevOps
持续集成(CI)
是一种软件开发实践。每天可能会发生多次集成,每次集成通过自动化的构建来验证,根据测试结果可以确定新代码和原有代码能否正确集成在一起。
持续交付(CD)
是一种软件工程手法。软件产品的产出在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况,目标在于让软件的构建、测试与发布变得更快以及更频繁。可以减少软件开发的成本与时间,减少风险。
持续交付(CD)与DevOps的关系
DevOps的范围更广,是软件交付过程所涉及的多个团队之间的合作,并且将软件交付的过程自动化。持续交付是一种自动化交付的手段,关注点在于将不同的过程集中起来,并且更快、更频繁地执行这些过程。DevOps可以是持续交付下的一个产物,持续交付的成果直接汇入DevOps模型。