一、软件开发流程
软件开发流程的演变
传统的瀑布模型——>敏捷开发模型——>DevOps开发模型
模型:是在软件开发过程中总结出来的经验
模型名称 | 模型流程 | 模型特点 | 模型优点 | 模型缺点 |
瀑布模型 | 1. 软件开发的各项活动严格按照线性方式进行 2. 当前活动接受上一项活动的工作结果 3. 当前活动的工作结果需要进行验证 |
1. 开发的各个阶段比较清晰 2. 强调设计和早期调查 3. 适合需求稳定的产品开发 |
1. 由于开发模型是线性的,增加了开发的风险 2. 早期的错误可能要等到开发后期才能发现,增加了修改成本 |
|
敏捷开发模型-XP(极限编程) | 结对编程:代码由两人一起完成,一个人输入代码,而另一个人审查他输入的每一行代码。 测试驱动开发:先编写测试代码,再开发能通过测试代码的开发代码 隐喻:帮助团队的每一个人去理解需求所提出的一个具体的比喻 |
1. 在更短的周期内,更早地提供具体、持续的反馈信息 2. 在迭代的进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断的发展它 3. 依赖于自动测试程序来监控开发进度,并及早地捕获缺陷 4. 依赖于口头交流、测试和源程序进行沟通 5. 倡导持续的演化式设计 6. 依赖于开发团队内部的紧密协作 |
1. 对团队的小组协作、沟通、即时反馈要求很高。难实现 | |
敏捷开发模型-SCRUM | 产品backlog:管理产品的需求文档,按照商业价值排优先级 sprint计划会议:挑选优先级高的需求文档 sprint backlog: 此次迭代周期需要实现的需求 sprint:一个迭代周期 每日站会:检查迭代周期的进度,及时调整 |
1、快速适应需求的变化并且按时发布 2、提高测试生产率 3、降低过程进度控制风险 4、提升产品质量 |
1、对分布式开发环境的支持非常弱 2、缺乏对大型复杂软件的支持 |
|
DevOps | |
生命周期: 1. 持续开发 2. 持续测试 3. 持续集成 4. 持续部署 5. 持续监控 |
1. 降低了发布风险 2. 加强了发布协 |