模式化大粒度构件的可复用性研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模式化大粒度构件的可复用性研究
冯锦丹,战德臣,徐晓飞,李海波
(哈尔滨工业大学 企业智能计算与服务技术研究中心,黑龙江 哈尔滨 150001)
摘 要:针对大粒度构件虽然复用效率高但相对小粒度构件复用度低的问题,为提高企业应用软件
的开发效率,基于对大粒度构件的组成及复用效率影响因素的分析,提出模式化大粒度构件的概念,并基于大粒度构件的可配置特性,在大粒度构件生命周期的各阶段给出其相应的生产和复用方法。

最后,以企业相关领域的大粒度构件为例,验证了提高大粒度构件复用度方法的实用性,增强了对业务需求变化的适应性。

关键词:大粒度构件;模式化;复用;配置
中图分类号:TP317 文献标识码:A
Reuse of the large-grained component based on pattern
FENG Jin-dan, ZHAN De-chen, XU Xiao-fei, LI Hai-bo
(Center of Intelligent Computing of Enterprises & Service, Harbin Institute of Technology, Harbin 150001,
China)
Abstract:Although the large-grained component was reused efficiently, reuse degree was lower than the one of the fine-grained component in the enterprise management software. Aiming to enhance the adaptability for the business requirement change and improve the development of enterprise application software, the paper focused on analyzing the structure and factors which effected on the efficiency of reusing the large-grained component, put forward the large-grained component based on pattern. The configurable character of the large-grained component was discussed, and proposed the generation method based on pattern and reuse method through configuring in the phases of component’s life cycle. The tool set supporting the large-grained component reuse was developed to demonstrate the feasibility and efficiency of the method, was applied in the software development based on the CERP architecture.
Key words:large-grained component; pattern; reuse; configuration
0 引言
在软件开发过程中普遍存在研发成本高、实施成本高、集成成本高、实施周期长等问题,在ESA(Enterprise Service Architecture)管理软件开发过程中这些问题尤为突出。

为了解决这些问题,软件开发方法也经历了几次的变革,从程序与数据库相分离,发展到面向问题,非过程性的4GL(Fourth Generation Language)编程语言,之后发展到面向对象为主流的开发技术,其中基于构件的软件开发
基金项目:国家自然科学基金资助项目(60773064);国家863计划资助项目(2006AA01Z167,2006AA04Z165,2006AA04 Z150,2007AA01Z128)。

Foundation item:Project supported by the National Natural Science Foundation,China(No.60773 064),and the National High-Tech Research and Development Plan ,China(No.2006AA01Z167, 2006AA04Z165, 2006AA04 Z150, 2007AA01Z128).
作者简介:冯锦丹(1980-),女,辽宁锦州人,哈尔滨工业大学企业智能计算与服务技术研究中心博士研究生,主要从事软件工程、软构件和代码生成技术等的研究。

E-mail:fjd1127@。

成为降低软件开发成本的重要方法之一[1]。

在工业界,应用比较成熟的构件技术有微软公司的COM/DCOM、SUN公司的JavaBeans/EJB或OMG组织的CORBA等,而当前业务构件的开发大多是基于这些商用构件开发并组装而成[2]。

构件的粒度一般用来衡量其包含功能的多少,业务构件的粒度可以很大,比如对整个表单的处理,也可以很小,如增加一个数据项操作。

小粒度构件的优点是易于定义和开发,粒度小通用范围广,可在较多应用中进行复用,但其众多小粒度构件的组装过程较为繁琐,会导致复用效率低。

反之,构件的粒度越大,构件组装时需要的步骤就越少,可复用效率越高,但其复用范围越受限[3],例如以采购订单的处理作为整个构件则很难再用于其他单据。

如果采用大粒度构件组装系统的同时又能提高其复用度,这无疑可以大大改善软件的开发效率。

在提高构件的复用度方面,Vitharana等人提出了一种基于业务策略的构件设计模型[4],刻画影响复用性能的多个指标以实现复用最优化的目标函数;也有研究将模式概念引入构件复用领域,通过模式化构件共性以提高其抽象度和复用度,文献[5]利用预定义的模式进行构件识别和选择提高复用效率,文献[6]提出一种基于模式的元模型优化建模方法。

部分研究也开始关注大粒度业务构件的复用性能,Peter Herzum和Olivers Sims从企业级软件开发的视点提出了基于大中粒度业务组件的软件开发思维框架[7]。

文献[8] 认为业务构件是位于分布式系统体系结构不同层次上软构件的集成体,并提出一种基于分层的业务构件元模型。

文献[9]提出基于形态、层次、描述三个维度的可复用构件模型,用其优化构件的描述、规约和实现模型,指导企业软件的系统性复用。

文献[10]提出一种基于跨业务领域的功能构件复用方法,给定编译与运行参数实例化成特定领域和具体功能的构件。

除此之外,Ali Arsanjani等人通过领域分解抽象出企业构件,建立了具有可配置性的体系结构风格以适应需求变化性[11]。

上述各种方法通过不同抽象层次提取构件,优化构件模型设计来提高构件复用性能。

这些方法存在的问题在于:(1) 构件优化偏重于细粒度对象层次[4,5,6],不能适用于大粒度构件的复用,而大粒度构件具有复用效率高的特点,其复用的灵活性同样重要,当前的研究并未侧重这一点;(2) 对大粒度构件的抽象层次越高,虽然扩大了可复用范围,但适配工作量增大,复用效率随之降低。

(3) 大多数研究是统计分析构件使用频率,对可使用性方面的优化,对有用性的关注较少,优化程度有限,也缺乏对大粒度构件开发效率的改善。

为使基于构件组装的ESA软件能够适应更广泛的业务变化,需要保证构件具有较高复用效率和较大有用性,需要提高大粒度构件复用度。

为此,本文通过分析大粒度构件的复用特点,提出其模式化的特征和概念,提高大粒度构件的开发效率和开发的正确性;根据构件的生命周期,提出一种分阶段的大粒度构件配置方法,提高大
粒度构件的复用度,最后通过实例验证本文提出的方法。

1 模式化大粒度构件
1.1 大粒度构件的概念
ERP/SCM等ESA软件基本上都是以单据、报表及其处理为中心的。

ESA软件的设计都是从单据的分析入手,分析每张单据的数据结构与数据依赖、操作、单据之间的衔接与集成关系。

我们把企业日常处理的表单、报表等称作业务对象(Business Object,简称为BO)。

从用户角度而言,BO是指用户所采集、传递和处理的单据、报表等信息实体,以及在其上的状态处理和操作处理的集成体。

从系统角度,BO是指具有独立标识的、具有一定生命周期的、由若干数据集和操作集构成的一个集成对象。

定义1 业务对象可以表示为BO=(ID, DS, OP, S, Act, T),其中:
(1)ID为该业务对象的唯一标识;
(2)DS为BO的数据集,其中DS=(CDS, ADS),即包括核心数据集CDS和辅助数据集ADS,核心数据集CDS对应一个核心操作集COp,ADS是若干个辅助数据集ADs i(i=1,2,…,n) 的集合,并且分别对应若干个辅助操作集AOp i (i=1,2,…,n);
(3)OP是BO业务操作集合,由核心操作集COp和若干AOp i构成,i=1,2,…,n;
(4)S为BO的状态集合,刻画了BO属性的取值特征,S=(LS,AS)表示BO的状态集是由生命周期状态集LS和其他辅助状态集AS构成,s(BO)表示BO的当前状态;
(5)Act为BO的业务活动act i(i=1,2,…,m)集合,act i是一个角色不间断地执行的一组业务操作op j (j=1,2,…,m)的集合,并使BO的状态发生变迁;
(6)T表示BO的生命周期状态变迁集合,表示成s i→s j。

BO映射到实现层就是软构件,由于其具有业务语义完整性,和传统意义上的构件相比粒度较大。

大粒度构件是相对小粒度构件而言的,小粒度构件是指在应用软件中可被明确识别的、不可再细分的基本构成要素,如文本框、下拉列表框和单选按钮等基本控件,它具有业务无关性。

由若干小粒度构件和其间的关联过程,按照用户的需求组装成一个具有业务语义完整性的构件,可称其为业务构件(Business Component,简称为BC)。

这种大粒度构件是业务语义与软构件技术的结合体,具有业务相关性和自治性[11]。

ESA系统则可以看成由这些大粒度构件及其处理和处理顺序组成,如图1所示,因此基于大粒度构件的企业软件开发和复用效率较高。

图1 应用系统的构件组成
大粒度构件,作为属性和操作的集成体,包括固定部分和可变部分。

也正是因为这些可变部分才使大粒度构件具有可复用性。

例如,采购订单构件,不同角色复用订单的不同属性,那么,这些属性对于用户角色来说就是可变部分。

因此,提高大粒度构件的复用度就是要复用这些可变部分。

因此,从复用角度,大粒度构件的形式化定义如下:
定义2大粒度构件可以表示成元组BC=(BCID, BO.ID, FP, VP),其中
(1)BCID为该业务构件的唯一标识;
(2)BO.ID为构件BC对应的业务对象BO的标识;
(3)FP为构件固定部分,是属性和操作的集合,FP=(DS F, OP F):
(4)VP为构件可变部分,是属性和操作的集合,VP=(DS V, OP V),满足:DS F∩DS V=∅, DS F∪DS V = DS, OP F∩OP V = ∅, OP F∪ OP V = OP。

例如采购订单构件,订单编码属于固定部分的属性,而依据编辑人员和发放人员权限的不同,订单的其他内容属于可变部分属性,这两种角色能进行的操作也不同,前者能对订单内容进行增加、修改和删除操作,后者只能做查询和下达操作,这些操作均属于可变部分的操作。

通过上述分析,大粒度构件是属性和操作的全集,只有当运行时才复用其中的一部分属性或操作。

所以我们把大粒度构件(或业务构件)分为干业务构件和复用业务构件两类,干业务构件(Stem Business Component, SBC)是指所包含的属性、操作的全集。

复用业务构件(Reused Business Component, RBC)是将干业务构件中的可变特征变为固定特征后的构件,如为特定用户分配好权限后,用户就能访问其权限范围内的属性和操作,如图2所示。

大粒度构件是企业中业务单据与其处理的一种软构件实现,其可由表示层、业务逻辑层和数据层组成的三层架构予以实现。

对企业用户而言,大粒度构件就是其通过表示层界面所体验到的一系列功能或服务的集合。

在软件内部,每一项功能都是由一系列语义相关的属性与操作组合而成。

因此,干业务构件的可变特性与其备选值的多少决定了构件包含的业务功能的多少。

在正确完备识别业务对象的基础上,相应的干业务构件就
是包含该对象的常用功能的全集。

应用构件时将面临一些特定的用户需求,包括权限约束需求和因人而异的个性化需求。

基于这些特定的需求将干业务构件中可变特征实例化后的复用业务构件,则只包含该业务对象的部分功能。

图2 大粒度构件的复用
1.2 大粒度构件的模式化特征
对于模式,较早的提出者Christopher Alexander曾提出“每个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心,这样,你就能一次一次地使用该方案而不必做重复劳动”[12]。

事实上,软件工程里存在着多种模式,如软件架构中的Client/Server模式、三层以及多层结构模式;企业应用软件的构造技术,如MVC模式、工作流技术;在具体的开发技术层面也包含很多模式,如数据源架构模式、对象延迟加载模式等。

各种各样的软件模式都是人们在长期的软件开发与应用过程中抽象出来,并应用于更加广泛的领域。

组装成ESA的业务构件也包含许多模式。

通过对ERP系统中的各种单据及其业务处理的研究发现,几乎所有的表单处理都存在许多共性的内容。

例如,很多表单都是通过对数据的查询、增加、删除、修改这几个基本操作完成表单处理,都是一个主表附带若干子表,如订单。

这些共性的特征形成了业务构件的各种处理模式。

而这些模式应该如何抽象,并能够高效地实现构件复用呢?基于模式化特征,本文研究的核心内容之一就是如何模式化大粒度构件问题。

从用户角度,面向用户的共性特征形成了用户模式(User Pattern,简称UP),它体现了一种构件的界面风格,以及对该界面的操作风格和控制风格。

从软件实现角度,实现模式(Realization Pattern,简称RP)体现了特定用户模式构件的一种共性实现方案和技术。

用户模式和实现模式共同构成大粒度构件的模式。

用户模式必须具有相应的实现模式,实现高效地模式化软件开发过程,否则模式化的意义就不大。

对于用户模式,本文归纳了ESA软件中大粒度构件的典型模式,以不同的界面风格为其命名如图3所示,包括:(1)仅索引模式,构件的用户界面只提供查询单据的功能;(2)索引且选择模式,除查询检索外还支持用户选择定位一个或多个单据的构件模式;(3)索引编辑紧耦合模式,检索选择单据与编辑单据内容的用户使用区并存于同一界面中;(4)索引编辑分离模式,检索选择与编辑单据的用户使用区分别位于两个可相互访问的独立界面。

图3 大粒度构件的各种用户模式
因此,模式化大粒度构件就是指遵循一定用户模式与实现模式的大粒度构件。

定义3 模式化大粒度构件可定义为PBC=(ID, BO, P, FP, VP),其中P=(UP, RP)表示PBC采用的模式,其他元素含义和定义2相同。

如何实现这些用户模式?对于实现模式,根据大粒度构件的定义,大粒度构件的复用效率高,是因为支持复用的可变特征多,而更多的可变特征恰恰也是大粒度构件开发、组装难度增加的主要原因,如何解决这一矛盾呢?大粒度构件的固定部分直接复用,大粒度构件中的可变部分通过参数化与配置转化为不变特征,完成复用,而构件的生产和组装则可以根据不同的用户模式,借助于代码生成器生成,最终完成大粒度构件的实现模式。

关于基于模式的大粒度构件代码生成技术,本文不做详细阐述,下节将介绍大粒度构件的复用方法和过程。

2 基于配置的大粒度构件复用方法
2.1 大粒度构件的可配置性
大粒度构件功能复杂,内部对象多,附属于这些对象的可变属性多,从构件的结构层次角度可将这些可变属性划分为三种类型,表示层可变性、业务逻辑层可变性和数据层可变性。

其中,表示层刻画了用户模式,其可变性主要包括布局和操作模式可变属性,前者影响构件用户界面的显示风格和效果,如数据控件的显示顺序、可显性,可写性等布局信息,后者则用于控制和规范用户操作流程;业务逻辑层可变性主要包括与权限控制相关的属性,如控制数据存取范围的权限信息。

数据
层可变性主要提供了可变的外部数据接口定义,可以通过变更构件的数据定义或结构以适应同一构件到不同企业数据表的映射。

通过上述分析,构件结构的各层次中均包含一类可被配置的属性,专门用于控制构件的数据集和操作集,称作配置属性。

定义4模式化大粒度构件的配置属性可表示为ca=(N, Vs, BC, DS V, OP V),其中
(1)N为该配置属性ca的名称;
(2)Vs为配置属性ca取值的集合;
(3)BC为ca所在的构件;
(4)DS V和OP V分别为BC中的可变数据集和可变操作集,受相应配置属性的控制。

依据配置属性各自的取值,控制相应的数据集和操作集。

如“订单编码”的文本框控件的可显性用于控制此控件能否显示在用户界面上;订单中编辑与下达的内容虽然取自同一个数据集,但被提供给不同用户的操作集,受到配置属性的作用而不同,采购业务员和经理对数据范围的控制权限可依据对过滤条件的配置属性进行区分。

大粒度构件就是通过这些配置属性的不同取值和组合,达到复用的目的。

复用构件时,若依次给出全部配置属性,工作量很大,如一个采购订单的数据集由一个主表和若干子表构成,包括的数据项大约几十个,而对每个数据项的可显性、可写性等配置属性也不同,涉及到的配置属性非常多,同样影响复用效率。

在ESA软件中,不同的业务功能可能会要求对数据集或操作集有相同或相似的访问方式,如订单的审核和下达,同样要求数据集只读并且不包括常用的增加、修改、删除等操作。

因此,可在配置干业务构件的过程中将一些配置属性组合在一起,按组配置,简化配置工作的同时还可提高构件的复用度。

为此,给出配置组的概念。

定义 5 配置组是若干配置属性的集合,可表示为CG={(ca1, ca2,…,ca n) | ca i∈CA,1≤i≤n≤|CA|},CA表示构件BC的配置属性全集。

如前所述,业务构件是由一系列业务功能构成的实体,业务功能又是属性与操作的集合,因此业务功能也可看作是若干配置组的集合,则基于配置组的组合可构造出ESA业务构件的若干功能,其构造关系如图4所示。

图4 业务构件逐层映射的配置逻辑示意图
2.2 构件生命周期内的分阶段配置
大粒度构件的生命周期需经过开发、部署和应用三个必要阶段。

在每个阶段中,软件开发者所关注的构件属性各不相同。

在开发阶段,开发者将依据用户的业务需求着重定义构件的固定部分FP,如数据集和操作集的构成要素、相应的业务对象必须经历的生命周期状态集、界面风格、操作模式等;而部署和应用阶段,更关注于构件中可变部分VP的实现,其中权限相关的属性和用于满足个性化需求的属性可以在部署和应用阶段分别实例化。

所谓权限相关的属性是指因用户所承担的职能差异而不同的属性,因个人喜好而不同的属性可称作个性化相关的属性。

相应地,用于控制可变属性的配置属性也必须依据不同的相关性,分阶段的进行配置。

为此,本文提出一种在大粒度构件生命周期内分阶段,阶段内又逐层映射、层内分组的配置方案,也就是说,将大粒度构件的可配置性合理分配到构件开发、部署和应用的各个阶段进行配置,每个阶段内依据配置属性或者配置组构成所需要的业务功能,最终实现对可变属性的控制。

这种分阶段配置的方式使得构件开发各阶段中工作重点突出且工作量平衡,既具有技术可行性,又提高了构件在不同阶段对业务需求变化的适应能力和复用性能。

大粒度构件的分阶段配置过程如图5所示,本节将分别从开发阶段、部署阶段、应用阶段以及配置信息解析策略等方面,阐述大粒度构件的配置复用过程。

复用业务构件业务构件配置文件业务构件模型文件
基于模式的非实
例化构件(模板)干业务构件复用业务构件业务构件配置文件业务构件配置文件复用业务构件
业务构件配置文件复用业务构件
+
个性化配置文件图 5 业务构件分阶段配置过程图
(1) 开发阶段
基于对业务构件的模式化特征分析,我们抽象出典型的业务构件模式并建立其模式数据库。

其中,基于某种模式P 的软构件代码实现部分将以形式化的RP 文本予以描述,抽象共性内容并对其进行参数化以作为构件的可变部分VP ,抽取当前P 对应的特定内容作为构件的固定部分FP ,此描述文本可称作基于模式的非实例化构件。

业务构件模型是一种基于模式的构件实现模型,其依据建模人员需求描述了已选定模式的业务构件可变部分VP 的一个初步实例,其中还存在需要后续阶段才能进一步实例化的可变内容。

业务构件的模型和基于模式的非实例化构件之间存在型-值关系,基于模式的非实例化构件提供了基于语法的构件型描述,业务构件模型则是一种基于业务语义的构件值描述。

业务构件模型文件与基于模式的非实例化构件通过代码生成工具融合起来就可以获得一个特定的干业务构件程序。

(2) 部署阶段
部署业务构件需要经过两个主要步骤:首先,配置权限相关的干业务构件成为可执行的复用业务构件。

同一个干业务构件通过解析不同的配置文件可以派生出具有不同业务功能的多个复用业务构件。

在这个阶段内,软件部署人员更关注于如何描述和使用构件的权限相关信息,这些配置信息将会以一个配置文件的形式被保存下来,其内容包括复用业务构件的名称、对应干业务构件的名称、复用业务构件的功能集、每个功能F i 与配置组CG i 的构成关系集、配置组CG i 与配置属性ca i 的构成关系集、可使用此构件的角色和用户集、角色可使用的功能集、具体用户的特殊功能或配置属性约束等。

部署人员利用专门的配置工具建立包含上述内容的构件配置模型,并将其转换为基于XML 的业务构件配置文件。

业务构件配置文件对干业务构件的复用实现机制可采用动态或固化两种方式。

动态获取配置信
息是指在业务构件每次运行过程中读取配置文件内容,解析且依据其内容自动重组构件内部业务逻辑以实现复用。

固化配置信息是指将配置信息写入干业务构件的副本,给每个用户或角色生成专用的复用业务构件。

动态方式的优点是便于维护、灵活度高、可复用度大,但当配置信息量过大时构件运行效率相对低。

固化方式的优点是构件运行效率高,费码率低,但在角色或用户的需求发生变化时,需重新进行配置和固化。

具体采用何种方式,用户可依据业务构件所代表的语义稳定性选择。

其次,将复用业务构件安装部署到实际系统运行环境中。

基于业务构件的ESA软件系统配置文件用于管理全局构件与角色的注册信息,工作流引擎在可执行工作流模型的控制下动态组装复用业务构件来为不同用户提供不同的服务。

复用业务构件程序与配置文件都要通过自动部署工具按照软件实施人员的需求进行封装,并安装到软件系统中的指定位置,并对当前的系统配置文件和可执行工作流模型进行更新。

(3) 应用阶段
软件系统运行过程中,由系统框架与工作流引擎根据登陆用户的权限和当前任务列表调用业务构件,业务构件解析配置文件为用户提供相应权限下的业务功能,其中一个特殊的功能是面向每个用户的个性化配置功能。

个性化配置是指用户在当前已具备的权限约束下,依据个人的业务需要、操作习惯或风格偏好等再次配置RBC的过程。

个性化配置文件采用XML文件的形式存储相关信息,面向用户的个性化配置集中体现于用户界面的配置,主要包括界面布局简化、操作风格优化、常用查询条件设置等方面。

已存在个性化配置的复用业务构件在解析配置文件时,先解析部署阶段定义的配置文件再解析个性化配置文件,后者的有效实现级别高于前者。

3 大粒度构件的复用示例
依据上述配置逻辑和方案,我们实现了基于业务构件模型和模板的代码生成工具和配置工具,并将其应用于ESA软件的开发。

本文以采购订单的编制业务为例,来说明通过大粒度构件的可配置性实现对干业务构件的复用方法。

一个采购订单的基本功能包括:(1)订单查询:为用户提供其权限内的所有订单以及单据明细信息的查询功能;(2)订单编辑:编制人员可录入、修改、删除单据信息;(3)订单审核:审核者评定业务合理性做出审核通过或拒绝的批示。

根据采购订单构件的功能需求,可选择基于“索引编辑分离模式”建立相应的采购订单构件描述模型,利用代码生成工具生成采购订单的干业务构件。

基于J2EE的干业务构件由表示层JSP文件、业务逻辑层JAVA文件和关系数据库表构成。

以采购订单的核心数据集Card为例,其包含订单。

相关文档
最新文档