一种大粒度构件的平台相关模型及其代码自动生成方法

文档序号:6483492阅读:216来源:国知局
专利名称:一种大粒度构件的平台相关模型及其代码自动生成方法
技术领域
本发明涉及模型驱动的企业应用软件开发方法,尤其涉及一种基于大粒度 构件平台相关模型的软件开发方法,属于信息技术领域。
技术背景面对全球范围内激烈的市场竞争,企业总是持续完善其业务模式以提高其自 身的竞争力,企业管理软件也必须能够快速有效地适应不断变化的业务需求。 然而当前的企业应用软件存在研发成本高、实施成本高、实施周期长等问题, 严重阻碍了快速低成本地开发具有随需应变能力的构件化软件系统。模型驱动的软件体系结构(Model Driven Architecture, MDA)与软件开发被认为是开发此类软件的一种有效途径。MDA的目标是通过关注点的结构性分离来 实现复杂抽象系统不同层面的可实施性、互操作性和可重用性,将大型软件系 统的开发分解为不同层面、分而治之,降低了系统整体设计和开发的难度,有 效地提高了复杂系统开发的成功性。MDA的基本思想是将系统的需求、功能规 约与其在特定技术平台上的实现规约相分离,分别建立描述业务需求的计算无 关模型、描述软件系统设计方案的平台无关模型和描述具体实现机制的平台相 关模型(Platform Specific Model, PSM),通过各层次模型要素的映射和转换实 现逐层精化以及软件系统自动生成,其中建模与模型转换是MDA研究的两个 核心问题。平台相关模型PSM向上需要承接软件设计内容并将其转换为特定运 行平台上的系统实现模型,向下它是模型转换与自动生成代码的基础,其正确 性与优化程度决定了软件的性能。模型驱动的软件开发只有在代码生成技术相对成熟的基础上才能真正得以 实现。代码生成器的主旨是利用计算机程序来编写计算机程序,代码生成是提 高软件开发效率的有效手段之一。最初的用途是从高级语言编译后生成汇编代 码、机器指令,是语言转换、编译的不可缺少的工具。代码生成研究一直关注 于代码编译,早期的基于Graham-Glanville方法的代码生成器来替换C语言编 译器,通过构造一种描述目标代码的表格经过模式匹配输出生成的代码。之后代码生成技术被引入基于高级语言的软件开发领域,支持由可视化模型生成可 执行代码。代码生成类型可以归为下列形式代码重塑、内联代码展开、混合 代码生成、局部类生成、层次化生成、全领域语言描述等。随着模型驱动体系 结构技术的发展,代码生成技术被广泛应用于企业应用软件的开发,支持从平 台相关模型到可执行代码的自动转换。其中,通过模式化构件共性以提高其抽 象度和复用度,采用基于模式的代码生成方法可以有效提高PSM模型到代码的 转换效率和正确性。在长期的软件开发与应用过程中,人们抽象出多种软件模
式,如软件架构中的Client/Server模式、多层结构模式、MVC、管道过滤器等; 软件开发划分为基于概念模式规约的问题域,基于设计模式的设计域和实现概 念模式的解空间,采用设计模式指导概念模型到服务程序的生成;或建立基于 XML模式的柔性代码生成器以生成分布式系统;或基于XSLT和Velocity模板 引擎实现业务模型到程序的转换。
虽然,MDA思想改变了传统的软件开发进程,将软件开发者从繁杂的编程 中解放出来,提升为以模型为中心,进行模型构造、转换和精化,并通过代码 自动生成来开发系统。但是尚缺乏一种系统性具体化的企业应用软件建模方法, 来指导具体的软件开发。并且已有的代码生成方案和工具也存在扩展性和可集 成性差的不足。大多数代码生成器生成的程序缺乏灵活性, 一旦生成代码,用 户难以改变其结构和风格。生成工具难于广泛使用,导致用户需要根据自己的 模型,设计开发特定的代码生成工具。

发明内容
本发明的目的是提供一种大粒度构件的平台相关模型及其代码自动生成方 法,以解决目前缺乏一种系统性具体化的企业应用软件建模方法和现有技术生
成的软件缺乏灵活性和可变性的缺陷。它通过下述步骤实现 一、从已有的、 企业业务内容相同的多个软件中,各抽象出若干个业务构件的典型软件模式, 并获取基于模式的非实例化构件文本;二、建模阶段:从步骤一获取的多个业务 构件的典型软件模式中选定软件模式,从而获取业务构件的平台相关模型;三、 开发阶段:将业务构件的平台相关模型自动生成为干业务构件程序;四、部署阶 段:将干业务构件面向特定需求实例化为复用业务构件程序,从而产生最终的源 程序代码;在最终的软件系统中复用业务构件通过解析配置文件来动态适应企业的业务需求。
基于本方法生成的软件系统具有适应企业业务需求不断变化的能力,存在 三种途径来适应企业的变化性需求途经之一,当业务变化围绕权限或个性化 的相关需求时,通过动态配置的方式调整部署配置文件或个性化配置文件信息 以实现对业务构件的复用和软件功能的调整。途经之二,当业务变化不能通过 动态配置方式予以满足时,可部分修改构件程序实现对业务构件的适配和复用。 途径之三,当业务变化较大,上述两种途径均不适用时,可通过重新建立大粒 度构件模型再生成为新业务构件的方式满足新的软件业务需求。由此解决了现 有技术生成的程序缺乏灵活性和可变性的缺陷。本发明将软件的适应性分解到 多个阶段予以实现,确保了高效快速的构件化开发和复用。


图1为本发明的流程图;图2为本发明的业务构件软件模式结构树的示意 图;图3为本发明大粒度业务构件的平台相关模型示意图;图4为本发明基于 模式的大粒度构件代码生成器工作原理图;图5为本发明的一个实施例的实现 方案图。
具体实施例方式
具体实施方式
一下面结合图1具体说明本实施方式。本实施方式由下述 步骤实现 一、从已有的、企业业务内容相同的多个软件中,各抽象出若干个 业务构件的典型软件模式,并获取基于模式的非实例化构件文本;二、建模阶 段:从步骤 一获取的多个业务构件的典型软件模式中选定软件模式,从而获取业 务构件的平台相关模型;三、开发阶段:将业务构件的平台相关模型自动生成为 干业务构件程序;四、部署阶段:将干业务构件面向特定需求实例化为复用业务 构件程序,从而产生最终的源程序代码;在最终的软件系统中复用业务构件通 过解析配置文件来动态适应企业的业务需求。
下面详细描述本实施方式中业务构件的产生、特征与分类方法
(1)通过对既有企业应用软件的分析,归纳出一种以业务单据数据为属性 集,围绕单据的处理为操作集的模式化大粒度构件。模式化大粒度构件是相对 小粒度构件而言的,小粒度构件是指在应用软件中可被明确识别的、不可再细 分的基本构成要素,如文本框、下拉列表框和单选按钮等基本控件,它具有业
6务无关性。由若干小粒度构件和其间的关联过程,按照用户的需求组装成一个
具有业务语义完整性的构件,称其为业务构件(BusinessComponent)。
(2) 业务构件遵循典型的软件模式,且具有唯一标识,稳定不变的属性和 操作以及相对可变的属性和操作。
(3) 业务构件分为干业务构件和复用业务构件两类,干业务构件(Stem Business Component)是指所包含的属性、操作的全集。复用业务构件(Reused Business Component)是将干业务构件中的可变特征变为固定特征后的构件。
所述业务构件是一种企业生产和经营过程中所处理的业务对象的软构件实 现结果,包含对象的数据信息及相关的业务活动,是一种具有完整业务语义的 模式化大粒度构件。
业务构件依据其生命周期所处阶段的不同关注点,划分为属性操作参数化的 千业务构件和依据需求被实例化后的复用业务构件。千业务构件是业务单据范 畴内的功能全集,复用业务构件是干业务构件派生出的功能子集。
业务构件模型在开发与部署过程中被分阶段的多重生成为干业务构件和复 用业务构件。在开发阶段将上述模型输入代码生成器,将与其匹配模式的非实 例化构件实例化为与模型描述一致的干业务构件可执行程序。在部署阶段,系 统自动部署工具读取部署需求,将干业务构件派生为若干个实例构件。
具体实施方式
二下面结合图2具体说明本实施方式。本实施方式与实施方 式一的不同点是在步骤二中获取的业务构件平台相关模型,采用源码级模式 描述语言定义J2EE平台上业务构件的用户模式和实现模式,其中模式描述语言 具有通用性,可适用于多种能够高级编程语言所能实现的软件模式。所述表达 方法包括
i 、软件模式分类方法,将软件模式划分为面向使用者的用户模式(User Pattem,UP)与面向软件的实现模式(RealizationPattem,RP)两类。用户模式体现为 软件与客户端用户的交互风格,实现模式是从软件开发角度表现为一种实现方 案或运行机制。前者是后者的外在表现,后者是前者的技术支撑。
ii 、源代码级的实现模式描述语言(Realization Pattern Description Language,RPDL),该语言定义为<11 01>::=<静态代码>|<动态代码><动态 代码到静态代码的转换规则〉 <静态代码>::=< 目标程序语言所描述的内容>
〈动态代码^F〈动态变量开始符x待实例化的动态变量x动态变量结束符〉 <待实例化的动态变量>::=<用程序语言A定义的变量> <动态代码到静态代码的转换规则>::=<转换规则的开始符><基于A的转换 规则内容><转换规则结束符>
具体实施方式
三下面结合图3具体说明本实施方式。本实施方式与实施
方式一的不同点是在步骤二中获取的业务构件平台相关模型用下述方法予以
表达该方法是一种基于J2EE平台(本领域公知)的业务构件PSM模型表达 方法,所述方法包括以下步骤
i 、以Brown模型(本领域公知)作为业务构件的分层体系结构模型,确 定构件由若干种小粒度构件和连接子的组装构成。各层次间的中等粒度构件由 外部连接子互连,每个层次上则有内部连接子组装成中等粒度构件。
ii、基于上述确定的体系结构,选用一系列相关的软件子模式和组装子模式 作为业务构件实现的基础。针对每个体系结构层面建立业务构件的实现模型。 依次建立表示层构件规约、应用控制层构件规约、业务逻辑层构件规约、关系 对象层构件规约和数据源层规约,以及这些层次之间的映射与关联关系,完成 一个完整的业务构件模型描述。
具体实施方式
四下面结合图4具体说明本实施方式。本实施方式与实施 方式一的不同点是步骤三和步骤四采用了一种基于模式的分阶段代码生成方 法来实现,具体的步骤三为
将业务构件的共性抽象为模式,基于模式定义非实例化的构件(模板),而 将那些面向'业务语义的个性内容描述为业务构件模型。基于模式的非实例化构 件与模型之间存在型-值关系,前者提供了基于语法的构件型描述,后者提供了 面向业务语义的构件值描述。在开发阶段,通过代码生成器将这两部分内容融 合起来,可转换得到一个具体的业务构件。
具体的步骤四为部署阶段经过两个主要步骤第一步,配置权限相关的干 业务构件成为可执行的复用业务构件。业务构件配置文件对干业务构件的复用 实现机制可采用动态或固化两种方式。动态获取配置信息是指在业务构件每次运行过程中读取配置文件内容,解析且依据其内容自动重组构件内部业务逻辑 以实现复用。固化配置信息是指将配置信息写入干业务构件的副本,给每个用 户或角色生成专用的复用业务构件。第二步,将复用业务构件安装部署到实际 系统运行环境中。基于业务构件的企业应用软件中工作流引擎在可执行工作流 模型的控制下动态组装复用业务构件来为不同用户提供不同的服务。
具体实施方式
五下面结合图5具体说明本实施方式。对本发明的技术方 案进行详细的说明。
本发明的核心思想就是将软件的可变性分解到软件开发的各个阶段,依不同 关注点在各个阶段中分别予以软件实现。在业务构件建模阶段,针对业务功能 需求建立业务构件PSM模型,在开发阶段,将源码级非实例化构件模板实例化 为干业务构件,在部署阶段,面向特定需求进一步将干业务构件派生为复用业 务构件。本方法直观显示地描述构件实现模型并转换为代码,从而加速软件的 模式化规模化自动化开发。
参见图l,首先,软件开发人员在特定软件模式基础上建立表达业务功能的 业务构付f台相关模型;将该模型输入代码生成器,转换为千业务构件可执行 程序;然后,部署阶段面向特定用户需求再将干业务构件完全实例化为复用业 务构件。本发明以基于J2EE应用服务器上的业务构件开发过程为例,进行详细 的说明。
参见图2,在软件外观层次,用户模式分别从用户界面的结构和用户操作的 流程两个方面描述软件的外特性。在软件实现层次,实现模式依据分层体系结 构各层次和其间关系模式来描述构件的实现方式。将那些用于实现父结点的模 式被称作子模式。业务构件模式是由一系列子模式(用户子模式和实现子模式) 构成的集成体,父模式与子模式之间存在包含关系,两个实现子模式之间需要 根据接口模式进行关联。
一种源代码级的实现模式描述语言RPDL (请发明人翻译或解释Realization Pattern Description Language,RPDL)从代码实现角度指导业务构件的开发。例如 表示层中数据项的实现子模式描述,如表1所示。表1是关于JSP (请发明人翻 译或解释)界面以单元格形式显示多个数据项的实现模式的代码描述,这个片 段从(2)到(5)行是采用JAVA语言定义的转换规则内容,其主要功能是对(7)行中
9由<#和#〉限定的动态代码进行初始赋值。行(5)是此模式的核心功能,表示第(7) 行中代码会依据数据源基数而多次迭代出现,每次出现时动态代码将被实例化 为不同静态代码值。
(1) <&& 〃表示转换规则的开始符号
(2) ... //定义待实例化的动态变量
(3) ... 〃获取用户指定数据集内容
(4) Iterator it - getDtateSet();
(5) while (it.hasNext()){.. 7/获取各动态变量值_
(6) &&> 〃表示转换规则的结束符号_
(7) <td><#lableName#>:<input name="<#controlID#>" type=" <#dataType#>"
value="<%=<#controlID#>%>"size="<#dataSize#>"></td> 〃基 于JSP的静态与动态代码混合体_
(8) <&&}&&>〃对应转换规则中的while {符号_
业务构件由若干个小粒度构件通过内部或外部连接子连接而组装形成。由 此,业务构件PSM模型由唯一标识、选定的构件模式、基于分层结构的核心模 型、用于支持可变性的配置模型以及外部接口模型共同组成,参见图3。表示层 是业务构件与用户直接交互的接口。 一个业务构件总是由若干个相互关联的用 户界面构成,为用户提供提交请求与反馈处理结果等服务。各用户界面之间存 在相互调用或一般性的链接关系。业务逻辑层是响应客户端的用户需求并进行 处理的核心逻辑程序。基于J2EE平台上业务逻辑层的实现模式可表述为它由 若干包和类组成,其中常规操作的方法实现可由代码生成器依据模式定义而自 动生成获取,存储在默认类文件中;那些根据用户需求在扩展机制的约束下由 程序员手工开发的方法则存储于扩展类文件中;核心控制类负责对其进行服务 编排与方法调用。数据层模型是在关系数据模式下描述业务构件的数据库外模 式模型,描述了构件业务逻辑层处理的数据视图与实际数据库中的数据视图之 间的映射关系。代码生成过程的基本原理如下所述,输入基于某种模式的业务构件模型X; 输出业务构件代码.其内容如下(l)解析业务构件模型的模式标识,在模式库 中检索并获取相应模式的非实例化构件;(2)扫描非实例化构件内容,当找到一 个动态代码时,检索X中与其对应的数据进行代码转换;(3)重复执行(1)直到非 实例化构件中不存在动态代码为止,转到(4); (4)打印最终的构件代码。代码生 成器的工作原理参见图4所示,采用基于模式的混合代码生成方式。每次启动 代码生成器时,都要在其内部构造一个为指定业务构件"量身定做"的代码书 写器,代码书写器是采用JAVA中的标准输出流"PrintWriter Out",通过Out 对象的Println (请发明人翻译或解释)方法实现在目标文件中打印字符。
业务构件生命周期内分阶段,阶段内又逐层映射、层内分组的配置方案,参 见图5。经过开发、部署和应用三个必要阶段。在每个阶段中,软件开发者所关 注的构件属性各不相同。在开发阶段,开发者将依据用户的业务需求着重定义 构件的固定部分,如数据集和操作集的构成要素、相应的业务对象必须经历的 生命周期状态集、界面风格、操作模式等;而部署和应用阶段,更关注于构件 中可变部分的实现,其中权限相关的属性和用于满足个性化需求的属性可以在 部署和应用阶段分别实例化。
在上述的业务构件建模、代码生成与部署配置过程中,通过可视化建模工具 实现业务构件模型,通过代码生成器将业务构件模型转换为干业务构件代码, 系统部署工具实现干业务构件派生为复用构件代码。
最后,还需要注意的是,以上列举的尽是本发明的一个具体实施例。显然, 本发明不限于以上实施例,还存在许多变形。本领域普通技术人员能从本发明 公开的内容直接导出或联想到得所有变形,均应认为是本发明的保护范围。
该大粒度构件(也称为业务构件)提供了一种在J2EE平台上模式化的建立 业务构件实现模型的方式,基于模式的代码生成方法提供了一种具有通用性和 扩展性的代码生成机制,依据业务构件的生命周期各阶段内的特征,将其划分 为干业务构件和复用业务构件两种类型的构件。基于本生成机制构造的代码生 成器读取用户所建的完整业务构件PSM模型即可快速获得初始实例化的干业 务构件程序,构件被部署过程中可通过动态配置方式将其进一步完全实例化为 面向特定用户需求的复用业务构件。
权利要求
1、一种大粒度构件的平台相关模型及其代码自动生成方法,其特征在于它通过下述步骤实现一、从已有的、企业业务内容相同的多个软件中,各抽象出若干个业务构件的典型软件模式,并获取基于模式的非实例化构件文本;二、建模阶段从步骤一获取的多个业务构件的典型软件模式中选定软件模式,从而获取业务构件的平台相关模型;三、开发阶段将业务构件的平台相关模型自动生成为干业务构件程序;四、部署阶段将干业务构件面向特定需求实例化为复用业务构件程序,从而产生最终的源程序代码;在最终的软件系统中复用业务构件通过解析配置文件来动态适应企业的业务需求。
2、 根据权利要求1所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于所述业务构件是一种企业生产和经营过程中所处理的业务 对象的软构件实现结果,包含对象的数据信息及相关的业务活动,是一种具有 完整业务语义的模式化大粒度构件。
3、 根据权利要求1所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于业务构件依据其生命周期所处阶段的不同关注点,划分为 属性操作参数化的干业务构件和依据需求被实例化后的复用业务构件;干业务 构件是业务单据范畴内的功能全集,复用业务构件是干业务构件派生出的功能
4、 根据权利要求1所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于歩骤二中获取的业务构件的平台相关模型采用源码级模式 描述语言定义J2EE平台上业务构件的用户模式和实现模式,其中模式描述语言 具有通用性,适用于多种能够高级编程语言所能实现的软件模式。
5、 根据权利要求4所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于,在已有业务构件体系结构与软件模式基础上,按照每个 体系结构层面的中等粒度构件进行平台相关模型的建模,并定义连接子的属性, 以组装成完整的业务构件平台相关模型。
6、 根据权利要求2所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于所述业务构件是基于业务构件的分层体系结构模型,将每 个层面上的若干小粒度构件采用内部连接子组装起来形成表示层构件、业务逻辑层构件和关系对象层构件这些中等粒度构件,再借助外部连接子实现各体系 结构层次间的组装,以形成完整的业务构件。
7、根据权利要求1所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于业务构件模型在开发与部署过程中被分阶段的多重生成为 干业务构件和复用业务构件;在开发阶段将上述模型输入代码生成器,将与其匹配模式的非实例化构件实例化为与模型描述一致干业务构件可执行程序;在 部署阶段,系统自动部署工具读取部署需求将干业务构件派生为若干个实例构
8、根据权利要求1所述的一种大粒度构件的平台相关模型及其代码自动生 成方法,其特征在于,所述的歩骤二中业务构件建模和步骤三、四中的代码自 动生成通过可视化工具完成,所述可视化工具包括业务构件平台相关模型建模 工具、代码生成器和系统自动部署器,从而支持实现从模型到代码的自动生成。
全文摘要
一种大粒度构件的平台相关模型及其代码自动生成方法,本发明涉及模型驱动的企业应用软件开发方法。它解决目前缺乏一种系统性具体化的大粒度业务构件的建模方法和现有技术生成的软件缺乏灵活性和可变性的缺陷。它通过下述步骤实现从已有的、企业业务内容相同的多个软件中,各抽象出多个业务构件的典型软件模式,并获取基于模式的非实例化构件文本;从获取的业务构件的典型软件模式中选定软件模式,基于特定软件模式建立业务构件的平台相关模型;将业务构件的平台相关模型自动生成为干业务构件程序;将干业务构件面向特定需求实例化为复用业务构件程序,产生最终的源程序代码;在最终的软件系统中业务构件通过解析配置文件来动态适应企业的业务需求。
文档编号G06F9/44GK101533349SQ200910071779
公开日2009年9月16日 申请日期2009年4月15日 优先权日2009年4月15日
发明者冯锦丹, 徐晓飞, 战德臣, 聂兰顺 申请人:哈尔滨工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1