信息技术发展至今,企业的IT部门面临的一大挑战是如何才能迅速调整应用软件,以便紧跟企业业务的变化,即使是在一个高度不确定性的环境中。为了应对这种日益重要的挑战,程序工程师们开发了新的程序设计模式,例如极限编程(Extreme Programming,是一套能快速开发高质量软件所需的价值观、原则和活动的集合,使软件能以尽可能快的速度开发出来并向客户提供最高的效益),迭代开发模式(iterative development是往复进行的、增量的,“极限编程”的一种形式)。所有的新技术应用目的都是一样的:尽可能的缩短软件开发的周期,同时满足更多的限制条件,并且能够在同一个模式下面不断的升级。与此同时,一些新的架构技术也开始进入我们的视野,这些技术都是以服务或者企业的流程为导向的。而且,面向服务的架构技术——SOA和面向流程管理架构的技术——BPM逐渐开始成为主要的引导技术,而实践证明这两种技术是满足企业“随需应变”的最好的两种武器。
很不幸的是,在许多的软件开发和系统设计中,企业 “随需应变” 的要求并没有得到很好的满足。这也不能完全怪企业的CIO目光短浅,因为很多企业不断减少自己的IT预算,而要求却是大幅增加,企业的IT系统能够维持目前的现状已经是很不错了,哪里还有什么精力和资源去满足“随需应变”的要求呢。问题也不是程序开发人员的技术不能达到企业项目的要求,而是在于现在通行的软件开发(或者升级)模式根本就没有办法满足现代商业环境所提出的要求。
具体的情况我们接下来详细的说明。传统的软件开发都是建立在这样的模式上面的:从用户那里把需求都收集在一起,制定满足这些需求的计划,并且在软件开发的过程中得以实施,然后通过结构化的设计模式和软件程序变更的方式来进行调整,以满足新的需求。但是这种传统的软件开发模式已经不能满足新环境下企业的需求:
传统的开发模式不能全面地、正确地定义这些企业的需求,因为企业的需求是在不断变化的(一般来说,并不是企业自己要不断更改自己的需求,而是他们所面临的商业环境的变化迫使他们不得不做出相应的变化);
在高度不确定的环境中,企业甚至有可能在软件设计还没有结束的时候就要改变整个系统;
出于紧急需要,变化的要求会不按平常规定的时间提出;
面对激烈的竞争和不断变化的环境,企业几乎不会提供什么额外的设计时间或者计划来创建更多的参数选择,本来这些参数选择可以让业务部门能够有效的对系统进行调整而不需要IT部门的协助。
事实上,企业及其IT系统面临的最大的挑战来自于企业的业务流程。所有的人都希望自己的系统能够自动的调整并且不断优化自己的流程,但是不考虑自己的流程是否内置于传统的应用里,还是为企业某功能(例如客户管理)定制开发的单一流程。
对于企业的流程来说,高度的不确定性是其最本质的一个特点之一。现在,大多数企业的流程已经成为业务环境中的一个组成部分,这并不是企业经过周密的计划得到的,而仅仅是对做好事情的一个自然的反应。企业的流程一般都是贯穿于企业的系统之中的,通过流程加强系统与企业中的个体员工之间的联系。并且流程通常都是按照一定的规律来进行调整以便满足新的客户和新的业务环境的要求。对于开发人员来说,流程的这种改变并不像他们改变数据库查询条件那么简单。相反的,这些改变可能是关于工作的顺序以及由谁来负责完成的变化。事实上,企业对流程的关注可以从市场上流程平台——BPM产品热度的上升可以看出。