1.1.2 从瀑布到敏捷

DevOps思想可以说是敏捷开发思想的延伸和扩展,接下来我们来回顾一下敏捷开发思想的发展历程,以便更好地理解DevOps和软件工厂的理念。

谈敏捷开发思想就不得不谈瀑布模型。瀑布模型的问题在于,它假设项目只经历一个过程,而且架构是优秀且易于使用的,设计是合理可靠的,编码实现在测试过程中是可以随时修改和调整的。换句话说,瀑布模型假设错误全发生在编码实现阶段,因此在单元测试和系统测试中修复代码缺陷很容易。瀑布模型的价值交付方式如图 1-1 所示,在系统验证完成之前,瀑布模型的价值交付是基本处于不可用状态的半成品,对最终用户而言价值为零,无法及时反馈。随着时间的推移,在整体系统交付客户的阶段才体现出可用价值,但是往往在这个阶段会暴露出很多前期阶段隐藏的问题和缺陷,这些问题和缺陷很难在后期阶段进行更改,尤其是需求、架构层面的问题和缺陷。

图1-1 瀑布模型的价值交付方式

从项目管理的角度来看,它将各种工作角色隔绝,人们无法看到各个职责之间的关联性,更侧重于将工作扔到“瀑布”下游团队。因此,各个团队更像“我们与他们”式的独立团队,这带来的结果就是,“现在的”工作是“我们的”,“以后的”工作是“他们的”。