CN101446895B - 基于语法重构的代码级构件组装方法 - Google Patents

基于语法重构的代码级构件组装方法 Download PDF

Info

Publication number
CN101446895B
CN101446895B CN2008101633966A CN200810163396A CN101446895B CN 101446895 B CN101446895 B CN 101446895B CN 2008101633966 A CN2008101633966 A CN 2008101633966A CN 200810163396 A CN200810163396 A CN 200810163396A CN 101446895 B CN101446895 B CN 101446895B
Authority
CN
China
Prior art keywords
syntax
assembling
grammer
code level
assembly method
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101633966A
Other languages
English (en)
Other versions
CN101446895A (zh
Inventor
李莹
赵琳
邓水光
吴健
尹建伟
吴朝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2008101633966A priority Critical patent/CN101446895B/zh
Publication of CN101446895A publication Critical patent/CN101446895A/zh
Application granted granted Critical
Publication of CN101446895B publication Critical patent/CN101446895B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及软件工程技术领域,尤其是指软件开发中基于语法重构的代码级构件组装方法。一种基于语法重构的代码级构件组装方法,包括如下步骤:1)将程序语言的语法规范进行扩展,建立使该语言可构件化、可组装化的新语法规范;2)对依据所述新语法规范创建的代码级构件进行组装。本发明具有语言独立的优点,可用于各类领域中的软件复用。结合领域构件库,可支持不同应用领域的业务流程集成、复用,以及面向用户的个性化服务的定制和集成。

Description

基于语法重构的代码级构件组装方法
技术领域
本发明涉及软件工程技术领域,尤其是指软件开发中基于语法重构的代码级构件组装方法。
背景技术
构件是指具有相对独立功能和可复用的软件模块,它使得软件开发人员在开发新系统时能够充分利用过去的经验和功能模块,而不必重复“制造轮子”,从而避免了软件开发中的重复劳动。随着CBSE(Component-Based Software Engineering,基于构件的软件工程)成为一种重要的中间件技术以来,在金融、教育、电子商务、电子政务、医疗卫生等应用领域中得到了大量应用,为提高软件利用程度和软件开发的效率发挥了很好的作用。
作为基于构件的软件开发的核心技术,构件组装技术的研究已得到了广泛开展。构件组装方法一般分为“黑盒”、“白盒”、“灰盒”三种,其中“灰盒”组装方法-直备受关注。其研究重点主要集中在基于框架的方法、基于连接子的方法和基于胶合代码的方法等,本发明提出的基于语法重构的代码级构件组装方法与其中的胶合代码的方法相近。
在软件开发过程中,选择使用哪种程序语言往往是依据领域需求而定。例如,在流程处理较为明显的软件系统中,通常使用面向过程的语言(如C,Pascal,COBOL等)来编程,而在信息处理较为常见的软件系统中,则多数采用面向对象的语言(如C++,Java等)。程序语言的分类不只这两种,但目前存在的大多数程序语言普遍都有一个缺陷,那就是不支持代码的构件化和组装,而这将大大阻碍代码片断的复用。而今,许多粗粒度构件的复用已经得到了大量的研究,而程序语言缺乏内建的可重用和可组装机制这一缺憾,无疑阻碍了针对细粒度的代码级构件的复用研究。
发明内容
为解决以上问题,本发明提出了一种灵活,开放,且独立于各类语言的基于语法重构的代码级构件组装方法。
一种基于语法重构的代码级构件组装方法,包括如下步骤:
1)将程序语言的语法规范进行扩展,建立使该语言可构件化、可组装化的新语法规范,其中,所述将程序语言的语法规范进行扩展为在任一个语法项目下添加语法子项,作为组装时的插槽;
2)对依据所述新语法规范创建的代码级构件进行组装。
进一步的,所述步骤1)具体包括以下步骤:
(1)从程序语言的语法规范中分离出抽象语法和具体语法;
(2)在任一个语法项目添加可用来作为之后构件组装时的插入口的新的语法子项,成为新的语法项目,并针对新的语法项目,分别编写其抽象语法与具体语法;
(3)根据扩展后的语法规范,创建其语法识别及分析器,
其中,所述抽象语法是对语法树的层次和语法节点间的关联关系进行描述;所述具体语法是编译器可用的语法规则。
进一步的,所述步骤2)具体包括以下步骤:
①建立符合所述新语法规范的代码级构件;
②进行图形化的构件组装,以组装节点的形式展示构件,以连接线的形式展示组装过程;
③在组装脚本的执行阶段中针对相应的组装图形,后台自动生成组装脚本。更进一步的,所述步骤②中图形化的构件组装,包括各个构件的关联和对各个构件类型进行匹配验证。
本发明提出了一种在现有的程序语言中添加可构件化以及可复用性的方法,对程序语言的固有语法进行拓展,从而能够依据此新语法,创建并组装代码级构件,增加代码片断的可重用性,快速生成新的程序。首先对程序语言的语法模型进行扩展,建立一套促进该语言可构件化、可组装化的新语法规范,进而对依据新语法规范创建的代码级构件进行组装,保证代码级构件的可复用性。
本发明的方法,同一个构件在不同应用中复用时,只要拥有相同的程序语言拓展基础,就能方便地起到构件复用的效果;在保持组装图形不修改的情况下,只要构件名称和类型未经改动,其他构件内的变更都可实时反映到组装结果中,这对于程序的开发、集成、演化具有十分重大的意义。本发明具有语言独立的优点,可用于各类领域中的软件复用。结合领域构件库,可支持不同应用领域的业务流程集成、复用,以及面向用户的个性化服务的定制和集成。
附图说明
图1为本发明所述的组装方法整体方案图
图2为本发明一实施例的组装过程示意图
具体实施方式
以下结合附图和具体实例对本发明进行详细说明。
一种基于语法重构的代码级构件组装方法,如图1,包括两大步骤,一是对程序语言的语法进行抽象和拓展,二是通过语法重构的方式对代码级构件进行组装。其中,前者是后者得以成功进行的基础,后者则体现了前者的功用。
由于本方法具有语言独立的优点,在本实例中,我们暂以流行的Java语言为例,将其语法进行拓展后,针对Java语言的代码级构件实现组装。
接下来,依序对本实例的各个步骤进行说明。
Java语言语法拓展部分:
步骤一、抽象出Java语言的语法规范,分别列出其抽象语法与具体语法。
由于Java语言的语法结构相当庞大,本例中仅抽取其中较为简单的语法片断为例子,对其进行拓展。以类的成员变量声明语法片断为例,我们抽取出其相对应的抽象语法和具体语法分别如下:
如上是成员变量声明(AttributeDeclaration)的抽象语法,其中Modifier类型是一个语法终结符,即各类修饰符,如public,private,protected,final,static等;Identifier是一般字符串类型。
如上是以EBNF规范表达的具体语法,以正则表达式的方式确定了AttributeDeclaration的具体书写规范。
步骤二、针对AttributeDeclaration这一节点,我们对其进行扩展。首先在其下增加一个新的语法子项AttributeSlot,作为组装时的插槽,并为之编写相应的抽象和具体语法。
Figure GSB00000358786900033
如上是AttributeSlot的抽象语法,表明AttributeSlot同时继承自Java语法(先前定义的Java语法)中的AttributeDeclaration属性以及一个Slot属性(本方法已内建了Slot语法的定义)。
如上是AttributeSlot的具体语法,要求其在代码中书写为“《name:type》”形式。
步骤三、从拓展后的语法生成相应的语言解析器,此步骤可通过一些编译器框架实现。
在本例中我们采用了ANTLR框架实现。
Java代码级构件组装部分:
步骤四、创建符合新的Java语法规范的代码构件。在语法完备的情况下,所有的Java文件应该都可以作为新规范的代码级构件。但根据组装的需要,我们在Java构件中添加了相应的Slot语法,作为组装时的插槽,如下即是一个相对简单的Java构件片断,用作组装时的宿主构件:
其中,《myAttribute:java.AttributeDeclaration》句便是符合AttributeSlot规范的一个组装插槽定义,并且规定了可插入此处的代码必须符合AttributeDeclaration语法规范。
接下来,准备一个符合AttributeDeclaration规范的代码片断,如下所示:
 private Engine engine;
步骤五、对两个代码级构件进行组装。根据本发明,可以设计出多种不同的组装方法,从最基本的插入组装,到可依据用户需求定制的其他组装(抽取、声明、调用等)均可实现。以下我们介绍最基本的插入组装,此类组装要求将一个代码级构件插入到一个指定类型的Slot中(即前者的代码类型与后者Slot中指定的类型相同)。
出于用户操作便利性的考虑,本发明中提供了图形化的组装方式,以组装节点的形式展示构件,以连接线的形式展示组装过程。
如图2所示,从代码级构件Engine指向Car构件中的MyAttribute这个Slot,即构成了我们的插入组装,并且将组装后的Car输出到一个NewCar文件中。
第六步、针对相应的组装图形,后台自动生成组装脚本,脚本的内容是依照组装图形自动转换的。如上图中,相应的组装脚本如下:
Figure GSB00000358786900042
执行组装脚本后,即进行组装,最终的组装结果如下:
Figure GSB00000358786900051

Claims (4)

1.一种基于语法重构的代码级构件组装方法,其特征在于:包括如下步骤:
1)将程序语言的语法规范进行扩展,建立使该语言可构件化、可组装化的新语法规范,其中,所述将程序语言的语法规范进行扩展为在任一个语法项目下添加语法子项,作为组装时的插槽;
2)对依据所述新语法规范创建的代码级构件进行组装。
2.根据权利要求1所述的基于语法重构的代码级构件组装方法,其特征在于:所述步骤1)具体包括以下步骤:
(1)从程序语言的语法规范中分离出抽象语法和具体语法;
(2)在任一个语法项目添加可用来作为之后构件组装时的插入口的新的语法子项,成为新的语法项目,并针对新的语法项目,分别编写其抽象语法与具体语法;
(3)根据扩展后的语法规范,创建其语法识别及分析器,
其中,所述抽象语法是对语法树的层次和语法节点间的关联关系进行描述;所述具体语法是编译器可用的语法规则。
3.根据权利要求1所述的基于语法重构的代码级构件组装方法,其特征在于:所述步骤2)具体包括以下步骤:
①建立符合所述新语法规范的代码级构件;
②进行图形化的构件组装,以组装节点的形式展示构件,以连接线的形式展示组装过程;
③在组装脚本的执行阶段中针对相应的组装图形,后台自动生成组装脚本。
4.根据权利要求3所述的基于语法重构的代码级构件组装方法,其特征在于:所述步骤②中图形化的构件组装,包括各个构件的关联和对各个构件类型进行匹配验证。
CN2008101633966A 2008-12-18 2008-12-18 基于语法重构的代码级构件组装方法 Expired - Fee Related CN101446895B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101633966A CN101446895B (zh) 2008-12-18 2008-12-18 基于语法重构的代码级构件组装方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101633966A CN101446895B (zh) 2008-12-18 2008-12-18 基于语法重构的代码级构件组装方法

Publications (2)

Publication Number Publication Date
CN101446895A CN101446895A (zh) 2009-06-03
CN101446895B true CN101446895B (zh) 2011-03-23

Family

ID=40742586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101633966A Expired - Fee Related CN101446895B (zh) 2008-12-18 2008-12-18 基于语法重构的代码级构件组装方法

Country Status (1)

Country Link
CN (1) CN101446895B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229616A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 语言识别方法、装置及系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110308932B (zh) * 2019-06-03 2021-06-15 南京航空航天大学 一种基于源代码的aadl功能行为模型逆向重构方法
CN113867714B (zh) * 2021-09-24 2024-06-04 安徽杰予信息科技有限公司 一种适配多语言的自动代码生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229616A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 语言识别方法、装置及系统

Also Published As

Publication number Publication date
CN101446895A (zh) 2009-06-03

Similar Documents

Publication Publication Date Title
CN101339500B (zh) 基于xml模式的数据绑定应用程序接口生成方法
AU2012203071B2 (en) Computer-implemented method, system and computer program product for displaying a user interface component
US9870311B2 (en) Mock object generation
CN101185116A (zh) 在软件程序中使用强数据类型表示语音识别语法
US20050188271A1 (en) Method and system for rule-based generation of automation test scripts from abstract test case representation
CN112860260B (zh) 一种在高校场景下基于web的跨平台应用构建工具及方法
US20080244541A1 (en) Code translator and method of automatically translating modeling language code to hardware language code
CN101887370B (zh) 创建系统用户界面的方法及装置
JP2007519105A (ja) 自動テストスクリプトの永続性を持つ抽象テストケース表現への変換のための方法、及びシステム
Prehofer et al. From internet of things mashups to model-based development
CN104407863A (zh) 抽象控件模型编程装置和方法
CN102141991A (zh) 用于web服务器的方法和系统
CN115878112A (zh) 一种多方复杂商业协议智能合约生成系统及其生成方法
CN101446895B (zh) 基于语法重构的代码级构件组装方法
CN107818146B (zh) 一种数据库架构方法和框架
CN113778897A (zh) 接口的自动测试方法、装置、设备及存储介质
CN116974620A (zh) 应用程序的生成方法、运行方法以及相应的装置
CN101231590A (zh) 基于脚本和com组件控制的ivr流程编辑解析模型
US20070169054A1 (en) Process of automatically translating a high level programming language into an extended activity diagram
US9697021B2 (en) Modifiable high-level intermediate representation of source code
CN116243893A (zh) 一种低代码出码方法
Martinez et al. Migrating c/c++ software to mobile platforms in the adm context
Prinz et al. A model-based standard for SDL
CN104142830A (zh) 通过脚本插件技术提取智能手机应用数据的方法和装置
WO2008075087A1 (en) Code translator and method of automatically translating modelling language code to hardware language code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20090603

Assignee: Enjoyor Co., Ltd.

Assignor: Zhejiang University

Contract record no.: 2013330000105

Denomination of invention: Code level component assembly method based on grammar reconstruction

Granted publication date: 20110323

License type: Common License

Record date: 20130425

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110323

Termination date: 20201218

CF01 Termination of patent right due to non-payment of annual fee