随着企业实施的计算机应用软件的不断增多、范围逐渐扩大,同时企业也越来越多地将注意力集中在面向业务过程问题时,企业应用集成变成了企业和软件供应商必须面对和加以解决的非常复杂的技术与管理问题。
1.企业应用集成的现状和问题
企业应用集成(EAI)是当前计算机在企业应用的一个主要问题,成为最近国内外研究的一个十分活跃的领域。企业应用集成主要是解决横亘于企业或政府的“信息孤岛”问题,顺畅企业或政府的信息流程,为企业带来更大的利益,为政府带来更好的服务人民的能力。当企业运行的计算机应用软件系统多于一个,并且系统相互间要进行数据、信息和业务交流时就有不同系统的集成问题。而且,随着企业实施的计算机应用软件的不断增多、范围逐渐扩大,同时企业也越来越多地将注意力集中在面向业务过程问题时,企业应用集成变成了企业和软件供应商必须面对和加以解决的非常复杂的技术与管理问题。 EAI包括的内容很复杂,涉及到结构、硬件、软件以及流程等企业系统的各个层面。目前EAI的研究和应用已经取得了良好的成果,在集成的层次上提出了:业务过程集成、应用集成、数据集成、构件集成和平台集成,其中基于中间件解决方案的主要有四个类型:用户界面集成、数据集成、业务流程集成、函数或方法集成。EAI实现的关键技术包括消息中间件技术、工作流技术、XML数据格式以及Web服务技术。 但是,目前的企业应用集成技术和产品还有局限性,无法在大系统级别、在企业级别圆满地解决各种计算机应用软件的集成问题。 实际上,EAI的核心问题是其解决方案没有提供完整的、系统的软件开发方法,它只是应用了目前的软件技术和软件工程的部分研究成果。因此,用EAI开发和集成出来的软件系统在体系结构方面存在缺陷,这就给以后的软件维护和扩展造成了困难。在目前市场竞争增加、要求产品快速上市的条件下,越来越多的企业级信息系统是从多个商用软件产品或套件中组装而成。但是,如果系统的整体结构、子系统之间的交互、全局数据流、功能分布、物理配置等体系结构范围的高层设计不能清楚地描述和说明,无法在系统或子系统级别上分析和评估整个系统的质量和功能,甚至验证系统是否满足用户的需求,这对于最终用户来说都是难以接受的。特别地,在选择和挑选企业应用整体解决方案时,企业高管人员的作用日益突出。深入计算机底层的EAI技术不能突出计算机应用系统的体系结构,不能提供与这类高管人员关注的、相应的信息系统的抽象层次。而这些正是软件体系结构所要解决的关键问题。 软件体系结构的研究和应用目前在计算机软件理论与软件工程领域十分活跃,它从软件体系结构的角度、在系统的高层次来描述、分析、选择、评价、开发和维护复杂的软件系统,指导软件开发与维护过程中的所有活动,对解决目前的EAI问题有很大作用。
2软件体系结构
软件体系研究的是软部件、部件之间的联系,以及系统构造、方式、约束、语义、分析、属性和系统需求。软件体系结构是设计过程的一个层次,它处理超越算法和数据结构的设计,研究整体结构设计和描述方法。体系结构包括软件的组织结构、全局控制结构、通信和同步以及数据存取、设计元素的功能、物理分布和组织、设计方案的选择、评估和实现等。软件体系结构研究和应用的最终目的是减少大型、复杂软件系统开发的时间和成本、提高系统开发的质量。 体系结构开发的基本过程(如图所示)不同于传统的软件开发。它从软件体系结构的角度集中在软件的设计和维护,主要作用是用软件体系结构体现系统的质量如性能、安全性、可修改性和可靠性。软件体系结构不但影响了设计者对大型、复杂系统的控制,也影响了软件开发过程自身,它建议甚至决定了开发过程中的工作分配、软件集成计划、软件测试计划、配置管理和软件文档。总之,软件体系结构是软件开发生命周期所有活动的蓝图。 软件体系结构可以为软件开发和维护发挥重要的作用:
- 通过认识和理解软件体系结构可以使系统的高层次关系得到全面的表达和理解,对于复杂系统的高层次性能的分析至关重要。
- 获得正确的软件体系结构是软件设计的关键,有助于设计者在复杂的问题面前做出正确的选择,可以从源头避免软件开发的结构性错误。
- 严谨、规范的软件体系结构的描述可以使软件设计人员和用户一致、方便地交流和沟通,准确地把握用户的需求,尽早地发现对系统的理解分歧。
- 软件体系结构的描述文档是贯穿软件开发与维护过程的基石,有助于软件设计、实现、测试和维护人员之间快速、方便地交流和沟通。
- 正确地认识和理解软件体系结构、规范地描述软件体系结构有助于发现和提炼高层次的可重用软部件、模板或应用框架;同时,也可以在软件的系统设计中就采用这些可重用软件元素。
- 在软件体系结构全局思想指导下的任何系统维护、升级和扩充,不会因修改和更新而破坏系统的整体性和一致性。
3基于软件体系结构的EAI
基于软件体系结构的企业应用集成(SABID)方法主要是利用两个同在系统级别上处理软件的企业应用集成和软件体系结构的原理、方法、技术和工具来共同完成项目的目标。
- 软件元素的粒度SABID是在子系统和系统级别上设计和构造软件系统,这是一个完全不同于以往的、在指令行层次的程序设计的方法。SABID的重点在于构建、组装和集成的方法,是目前面向对象设计/编程(OOD)技术与面向部件软件开发(CBSD)的延续。当然,如果系统组装的部件不存在、不可配置或者不合适,那么,还是需要部件级别上的软件开发。因此,SABID是对目前软件开发技术与方法的补充。
- 有别于传统的系统设计体系结构设计可以作为传统的系统设计的一部分。目前的研究认为,软件系统必须从多个角度或视图来描述,包括:描述系统结构的概念模型、描述子系统/部件交互的控制模型、描述数据走向的全局数据流模型、说明子系统如何分解的开发模型以及子系统/模块如何分配的物理模型,等。如何规范地建立、分析和在实现中应用这些模型、正是软件体系结构的基本任务。软件体系结构比传统的系统框图等更加清晰、严格、准确、全面。
- 目标与目的SABID方法论的出发点是出于现代快速多变的市场压力以及客户不断变换的、个性化的需求,即要保证快速地满足用户的需求、提高产品的质量,又要延长应用软件的生命周期和总体应用成本(Total Application Cost,TAC),在体系结构原理的指导下、采用组件技术和基于COTS的快速软件开发方法,既要满足眼前利益,又要满足长远目标。
u 提高客户参与程度联合开发方法JAD因为加强了客户与软件开发者的沟通与交流,允许可户尽早地加入软件开发阶段,而成为现代软件开发的一个重要管理方法。但是,面向对象设计、基于组件的软件开发、Web技术、分布式机制CORBA等现代复杂的软件技术对JAD方法和客户提出了严峻的挑战。目前,客户与软件开发者都不会在程序或者模块的细节上研讨,双方的代表分别是业务专家、高管人员和软件构架师。软件体系结构正是维系系统层次客户与软件开发者沟通的基石。
- 系统层次专用软件复用在企业应用领域利用专业的领域分析获得专用的系统模式、应用框架和体系结构风格,可以在系统层次上提高软件的重用率。而且,结合了应用领域的知识和软件体系结构的深入研究,有可能实现从用户需求分析、经过软件体系结构的规范说明到全部或部分可执行程序代码的自动/半自动生成。
- 应用系统的动态性与维护应用软件具有生命的动态特征,软件维护、更新和完善不可避免,SABID用体系结构作为整个软件开发过程及其所有活动的核心,是强调面向维护、面向变化的软件技术。严格、规范的体系结构有助于在系统开发的早期就分析、模拟和评价系统的质量特性,避免需求的遗漏和严重的逻辑性错误;设计稳定的体系结构使随后的软件维护成为部件的更新、参数调整、和系统配置。这些都提高了软件的可维护性。
以软件体系结构作为系统开发的指导,结合现在比较成熟的面向部件的开发方法,将部件运行平台作为组装和运行支持,利用工具支持的自动转换机制,提供一套从系统高层设计到最终实现的系统化解决方案。基于软件体系结构的EAI过程如下图所示。
4软件体系结构与企业应用集成的互补作用
企业应用集成和软件体系结构的原理、方法、技术和工具来共同完成项目的目标,这两个方法不是矛盾和对立的,而是相互补充的。 在软件实现的细节方面:EAI技术注重应用程序代码的编写和改造,特别是对不同厂家不同应用软件如ERP、CRM、PLM都要编写不同的适配器。这是一种可配置的软件组件,实现把数据或查询从一种模式转变成另一种模式和解偶应用。而且,目前的EAI技术主要专著在软件的部件或模块级别上完成数据和应用的连接,缺乏从整个企业应用体系的角度考虑。面向代理的中间件或者Web服务技术仅仅是封装了单个功能块或数据,对系统的整体功能、性能和构架没有改善。一个企业应用体系通常包括多个结构复杂、功能独立、封装了业务流程和数据(库)的子系统构成,软件体系结构则重视软件的重用,采取软件构造或组装技术,可以是基于黑箱(使用COTS)、也可以是基于白箱的软件实现技术。 在处理的侧重点方面:EAI和软件体系结构都是关注软件部件的接口,包括应用通讯和数据格式,利用中间件技术和面向部件的开发技术。EAI利用适配器中间件封装部件的功能和数据,使用消息中间件或信息总线传递部件的通讯;而软件体系结构的重点在于从部件之间的协调、合作、通讯和交互,通过分析系统的结构发现整个系统的稳定性、安全性、性能等性质,改善系统设计,提高系统结构以及整个系统的质量。 在系统的生命周期方面:目前的EAI技术主要是对已经存在应用软件的改造,它或者是将独立功能的应用根据业务需要在数据或函数级别上连接起来,或者是使用统一的用户界面如基于Web浏览器的企业信息门户,整合各个应用程序的用户界面。对于未来要增加的独立功能的应用软件,EAI的主要技术是信息总线和各式各样的适配器。EAI技术和理论无法在整个系统结构方面提供支持。在软件维护方面,EAI技术可以比喻成头疼医疼、脚疼治脚的方式。而基于体系结构的俄爱EAI不仅仅关注软件生成,在软件设计、集成的时候就从系统体系结构的高度考虑,可以避免上述的问题,基于体系结构的开发方法是面向维护的,因为,良好的软件体系结构是提高软件生命周期、减少软件维护成本的关键。 在对待软件重用方面:EAI是软件重用部件和技术的受益者,正是由于基于重用软件工程原理、方法以及具体基于部件的软件开发技术,EAI的各种关键技术和产品,如应用服务器、适配器、消息中间件等才可能成为独立的产品被反复应用,大大提高了企业应用集成的时间,降低了集成工作的成本。基于体系结构的软件开发完全不仅是利用重用原理、基于部件的软件开发,还采用了面向COTS的软件组装方法。同时,软件体系结构的开发过程也包括从大量现有的系统中提取公共部分,整理抽象成体系结构模式、业务框架等体系结构风格,供新系统开发时应用。 |