把这两个词汇放到一起,绝对不是为了炒概念。

最近遇到几个项目,就是有这个问题。先说明一下,我认为的敏捷的概念,其最本质在于迭代的价值交付!每个交付版本,必须有交付价值,而不是简简单单的完成某个功能。价值是相对客户来说的。

那么,一个架构复杂的系统,他的迭代交付价值如何来划分呢?

核心版?演示版?预览版?测试版?

如果我们采用的是传统的分层式架构,甚么数据层、逻辑层、界面层,那么你的迭代版本,必然很难划分。

我们注意到新兴的SOA架构,这不光光是一个架构那么简单,如果你把他用来划分子系统,每一个Service都是一个独立的系统。这个系统是可以独立运行和使用的。系统的耦合性会降低非常多。而且大家能够注意到,这个时候,如果来划分交付价值,就可以按照Service的交付顺序,来进行划分。

比如,组织结构的Service、授权管理的Service、工作流的Service、表单配置的Service、数据模型的Service,这些Service都可以独立交付,那么敏捷的作用也就越来越能发挥作用。

最关键的是:进度清晰可保障、人员激励可持续、产品交付可预测。

当我们还在研究和体验敏捷开发的时候,应该同时研究什么样的系统架构,和敏捷开发是相合的。至少从目前来看,SOA和Agile就是一对好兄弟!