但是,商业计算的情况再次发生巨大的变化 - “整合”和“灵活性”成为主要的需求。经过几十年的发展,商业计算已经不再是过去白手起家的时刻,我们已经有了很多的“历史”,那就是我们已经建立起来的这么多的系统:每个企业都有 IT 系统,少到几个、几十个,多到几千甚至上万。人类花了这么多钱、这么多时间在这些系统上,没有了这些系统,核心业务会崩溃。但这些系统也给我们带来了巨大的麻烦 -- 它们能够满足不同业务部门(Line of Business,LoB)的垂直需求,可是相互不往来、也不能或者很难相互往来,难以满足跨业务部门的水平需求,更不要说在今天这个平的世界里,如何将合作伙伴、客户连接起来,建立一个动态的商业价值网络。但是,全球化的经济结构和运作模式,互联网作为全球化的 IT 基础设施,从商业和技术两个角度,透过竞争,既给富有创新和执行能力的企业带来了一个前所未有的商业机会,又迫使跟随的企业不得不起而迎战 -- 将业务模式调整到以客户为中心,将自己内部的业务系统连接起来,水平整合业务活动成为端到端的业务流程,透过这些流程,让整个公司的员工可以自由地得到业务活动需要的信息,轻松地相互协作,从而将整个企业的运作模式转化为一个扁平的结构,打破业务部门的边界,极大地提高企业的效率,得到更好的客户满意度。即便如此,用户需求、市场情况、商业环境的快速变化作为这个时代的特点,要求企业能够快速调整自己的商业模型,因此,在整合的基础上,还要加上快速应变的灵活性要求。这就涉及到了软件的两个魔鬼:复杂度和演变。全面整合(整个企业,客户,合作伙伴)的系统,其复杂度再次提升,而灵活应变能力,在一个整合的世界里,大家都变,自己也没办法以不变应万变,究竟如何因变?所以,我们需要发展软件系统的构造方法,它既可以帮助我们将问题域进行良好的分割,分解映射为分布世界里的独立单元,又可以帮助我们灵活地将它们组合起来以完成一个完整的业务活动,这样一种新型的、富有弹性的分布式系统,是今天的商务世界所需要的,是商业计算的主要发展方向。SOA 也好,正在热吵的 Enterprise Web 2.0 也好,都是我们期望用来解决上面这个问题的方法。
虽然,我们还处在这个早期,有赖于过去多年的 EAI、分布式系统的构造实践,尤其是 Web 的发展,IT 行业积累了不少的经验和技术来求解。让我们简要地看看现在这个阶段的解的重点:一个是将业务本身作为一个独立的实体,由业务人员自己自觉(而不是自发)地以业务世界的元素,比如业务活动,业务流程,业务规则,业务性能及其测评,建立起数字化的模型,其核心概念就说所谓的“服务”。在这个模型中,我们将看到一个清晰的图景:业务活动是如何影响业务绩效的,业务模型的问题在那里,如何改善。这就是所谓的“商业科学化”,请参看我在 Service Science 方面的介绍。了解 BPR (Business Process Reengineering) 的话,应该了解这件事情会在什么状态,它的困难在哪里 :)。有了这个为基础,业务人员可以自己跟自己玩:市场需求变了(他们的需求),那业务模型怎么变化来适应?或者,有了一个市场图谋,如何变化自己的业务模型来适应?过去要猜,要靠某些精英的个人特质,有了这个模型,我们期待一个魔术的出现,就是可以用数学的方法来演算,模拟,推断,哪怕结果不是高度精确的,也可以给决策者一个合理的、基于数字的决策依据。然后,这个模型要清晰地被分解和映射到 IT 系统中的服务接口、组件和业务规则描述等等,然后将它们分配到各个应用(包括已经存在的)中,再在这个基础上,使用用例、组件(细粒度)和对象建立应用或者子系统的需求模型,我们可能需要增加新的模型,比如整合各个应用的模型,安全模型(整合情况下安全更复杂)等等。看得到,这个模型对过去的业务分析(尤其是从 BPR,或者其他以业务流程为基础的)是有继承的,但要看到,他们的出发点和追求的目标,有交叉但并不能等同,所基于的概念和方法,即使有所借用,却有很不相同的重点。站在发展的角度,我们期待着业务模型数字化、科学化的突破。
是故,我们认为 SOA 将业务建模作为一个全新的因素引入,如何建立一个好的业务模型,然后递次分解、映射到传统技术世界主导的分析和建模,如何保证其可追溯性(Tracability)将是以服务为中心的分析、建模的重要环节。