CN101482817B - 基于黑盒的大粒度Java构件组装方法 - Google Patents

基于黑盒的大粒度Java构件组装方法 Download PDF

Info

Publication number
CN101482817B
CN101482817B CN2008101633951A CN200810163395A CN101482817B CN 101482817 B CN101482817 B CN 101482817B CN 2008101633951 A CN2008101633951 A CN 2008101633951A CN 200810163395 A CN200810163395 A CN 200810163395A CN 101482817 B CN101482817 B CN 101482817B
Authority
CN
China
Prior art keywords
component
assembling
black box
java
particle
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
CN2008101633951A
Other languages
English (en)
Other versions
CN101482817A (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 CN2008101633951A priority Critical patent/CN101482817B/zh
Publication of CN101482817A publication Critical patent/CN101482817A/zh
Application granted granted Critical
Publication of CN101482817B publication Critical patent/CN101482817B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明属于软件工程领域,尤其是指一种基于黑盒的大粒度Java构件组装方法。一种基于黑盒的大粒度Java构件组装方法,包括以下步骤:1)将外部的第三方应用软件包进行构件设计,并把设计好的构件导入到构件库中;2)用可视化的方法将构件库中的构件的进行黑盒组装,其中,所述步骤1)中的构件设计使用了采用Java语言来实现的胶水代码。本发明可以可视化地对构件进行组装,和现在的一些方法相比,该方法在系统可扩展性,运行效率和调试支持上都有更好的表现,并且对组装正确性进行了验证,有效地减少了软件开发中的误操作,提高了软件开发的效率和质量。

Description

基于黑盒的大粒度Java构件组装方法
技术领域
本发明属于软件工程领域,尤其是指一种基于黑盒的大粒度Java构件组装方法。
背景技术
软件构件是可以独立部署,易于第三方整合的软件结构单元。基于构件的软件开发,不同于传统的软件开发方法,它强调通过可复用构件设计与构造软件系统。通过使用高质量的构件,可以在加快软件开发效率的同时,提高软件的开发质量,并同时降低软件的开发成本。而构件组装技术则是基于构件软件开发中的一个核心技术,它负责将各个构件组装成一个软件应用。现在的构件组装方法大致可以分为白盒组装、黑盒组装和灰盒组装三类。黑盒组装的一个优点在于,用户可以专注于构件的接口组装,而不必关心构件的内部实现,这有效地降低了软件开发的复杂度,并且可以让用户专注于软件所要实现的业务功能。
但是,目前基于黑盒组装的软件开发还存在很多问题:如黑盒组装所用的构件类型单一,只能从系统所提供的基础构件进行扩展,无法集成企业中现有的其他软件资产;构件组装应用采用解释运行,运行效率低;及缺乏构件运行时分析工具等问题。
发明内容
为解决以上问题,本发明提供了一种可以支持更大粒度的构件,且构件组装运行效率高的基于黑盒的大粒度Java构件组装方法。
一种基于黑盒的大粒度Java构件组装方法,包括以下步骤:
1)将外部的第三方应用软件包进行构件设计,并把设计好的构件导入到构件库中;
2)用可视化的方法将构件库中的构件的进行黑盒组装,
其中,所述步骤1)中的构件设计使用了采用Java语言来实现的胶水代码。
进一步的,所述构件为原子构件或复合构件。
进一步的,所述步骤1)包括如下步骤:
(1)编写胶水代码,将外部的第三方应用软件包进行组装,提取出构件;
(2)构件接口提取;
(3)构件接口配置文件生成;
(4)把设计好的构件导入到构件库中。
更进一步的,所述第三方应用软件包为通用方法或面向领域的业务流程。
进一步的,所述步骤2)中构件模型包括原子构件、构件端口、连接子和复合构件,其中原子构件为最基本的可组装单元,构件端口为构件的输入端口或输出端口,连接子为用于连接各个构件端口的连接子,复合构件是由多个构件组装而成,并整体作为一个复合体出现的构件。
进一步的,所述步骤3)是在构件组装IDE环境下用连接子对构件进行连接,其中构件组装IDE环境包括构件设计工具,构件可视化组装界面,组装有效性验证模块,组装代码生成引擎,构件执行引擎,构件运行时分析引擎,构件部署引擎。
进一步的,所述组装方法的执行是根据构件组装脚本直接生成代码,以编译代码的形式运行的。
更进一步的,所述构件组装脚本,包括构件的逻辑组装脚本和可视化组装脚本两个部分。
进一步的,所述构件运行时分析引擎,是指用于测试构件组装应用的正确性和性能瓶颈的模拟框架。
本发明公开了一种基于黑盒的大粒度Java构件组装方法,不同于传统的软件开发方法,通过该方法,可以可视化地对构件进行组装,形成一个应用。开发过程中不需要考虑构件的具体实现,只需要对构件的接口进行品拼接即可,该构件开发方法比传统的方法相比,可以支持更大粒度的构件,如面向某个应用领域的构件。该构件组装方法,涉及了基于构件软件开发的整个生命周期,是一套完整了构件开发解决方案。和现在的一些方法相比,该方法在系统可扩展性,运行效率和调试支持上都有更好的表现,并且对组装正确性进行了验证,有效地减少了软件开发中的误操作,提高了软件开发的效率和质量。
附图说明
图1是构件组装方法示意图
图2是黑盒组装构件模型
具体实施方式
以下是该组装方法实施所涉及的各项内容:
1.构件模型
该构件模型如图2所示,它有三个基本要素,即原子构件AtomicComponent、构件端口Port、连接子Connector。AtomicComponent对应某个具体构件(该构件模型中复合构件CompoundComponent可以作为原子构件来使用,因此可以把复合构件作为一种比较特殊的原子构件来看待,或者说复合构件是原子构件的一个子集),它里面有多个端口,包括输入端口和输出端口。Port分为输入端口和输出端口。其中,每个输入端口对应一个方法调用,可以往里面传入参数列表;输出端口对应的为一个输出参数列表。Connector用于连接各个构件的端口。
2.构件设计工具
该构件组装方法中,构件的设计分为四个步骤:
1)编写胶水代码,将外部的第三方应用软件包进行组装,提取出较通用的,或者面向某个应用的构件,当然也可以不依赖于第三方软件包,而直接编写一些较通用的胶水代码。该过程可以将一些通用方法或者面向领域的业务流程进行封装。
2)构件接口提取,该阶段将提取胶水代码的接口,并对这些接口进行配置,选择暴露哪些接口,以何种形式暴露,如接口可以暴露为输出端口、输入端口。
3)构件接口配置文件生成,该过程将根据第2步的构件接口提取设置,生成构件配置文件,该文件中将包含构件的接口信息。
4)在构件设计的最后阶段,系统会自动把设计好的构件导入到系统的构件库中。
由于在该组装方法中,在构件设计阶段时,使用了胶水代码,它可以对企业现有的软件资源进行灵活的组装整合。原则上这里的胶水代码可以采用任何语言来实现,而这里采用的是Java语言,因为这样就可以充分利用现有的Java软件资源,该方法支持将EJB,JavaBean,dll,jar,COM,和WebService等整合到大粒度的业务构件之中。从而可以充分地使用企业内部和开源世界中的软件资源,同时具备了很大的灵活性和可行性。这对构件组装的可扩展性是很大的一个提升。
3.构件组装过程
该构件组装过程,用到了构件组装IDE环境。这些构件都是以黑盒形式出现的,这些黑盒构件都是基于上述黑盒构件模型的,因为这些构件的内部实现对用户来说是隐藏的,用户所能看到的只是构件的总体说明,用途,可靠性等声明,用户还可以看到的这些黑盒构件接口的详细说明,包括接口类型,接口参数等信息,这些信息便于用户在进行构件的黑盒组装时,了解构件的接口功能。
在构件组装阶段,可用可视化的方法进行构件的黑盒组装,组装的过程,就是用连接子对构件进行连接,具体的步骤如下所示:
1)添加构件,该过程即从待组装构件里面选择要添加的构件,将其放到构件组装区,此时构件组装区就会可视化地显示该构件,及构件的各种组装相关信息。
2)添加连接子,添加连接子的时候,需要选择源接口和目标接口,这样就可以把构件的两个接口进行组装。
3)构件删除,选择要删除的构件进行删除操作,会删除该构件和与该构件接口连接的所有连接子。
4)连接子删除,选择要删除的连接子进行删除操作。
5)构件适配:在添加连接子的时候,可能会发生构件失配的情形,此时可以调整传入参数的顺序(一种较常见的失配),或者通过代码,对构件的接口进行适配。
6)构件组装验证,在构件适配完成之后,将对构件的组装进行验证,根据构件的功能属性,和连接属性,对组装的正确性进行验证,若发现构件组装出错,则给出出错信息,这有效地较少了构件组装时的一些误操作。
该构件组装过程也支持复合构件的组装,支持将一个组装好的应用保存为一个复合构件。其操作的具体步骤如下所示:
1)为一个构件组装应用添加端口,这些端口即为之后复合构件所暴露的接口。
2)用连接子连接步骤1所加端口和组装应用中的接口。
3)将这个复合构件保存到构件库。
4)该复合构件,现在的使用方法和原子构件的组装方法完全相同,可以通过以上构件组装步骤进行组装。
4.构件组装脚本
本组装方法中的构件组装脚本,包括两个部分:一个是构件的逻辑组装脚本,另外一个是构件的可视化组装脚本。把组装脚本划分为两个部分,有利于实现业务层组装和构件组装可视化的分离。
构件的逻辑组装脚本,记录的是构件之间的逻辑组装信息,即哪个构件和其他构件相连,这个接口和其他构件的哪个接口相连这些具体的构件组装信息。如下为逻辑组装脚本的描述方式:首先在脚本中声明参与组装的构件,每个构件有唯一的构件id,可以自定义构件显示名称,还有该构件对应的实现代码;后面的连接子,则表达了这些参与组装的构件,具体是如何进行组装的,这里每个连接子也有唯一的id,连接子需说明连接的起始端口和目的端口,这里的端口表达为Component ID#PortID的形式,ComponentID表示的是这个端口所在的构件,PortID则是该端口在构件中对应的ID号。
<AtomicComponent id=″1″name=″url″source=″string.Trim″/>
<Connector id=″1″from=″1#51″to=″2#01″mapped=″false″byValue=″false″/>
可视化组装脚本,记录的为构件组装的界面信息,如参与组装的各构件在组装界面中的具体位置和布局等。其描述方式如下所示:它描述了连接子和构件在界面上的显示效果。
<jtcomponent id=″1″type=″Connectors″>
  <polyline From=″151″id=″1″title=″Connector1″stroke-width=″1.5″points=″536,203 546,203
               546,203628,203″To=″201″/>
</jtcomponent>
<jtangcomponents id=″3″type=″Components″>
  <component transform=″translate(37 166)″type=″block″id=″4″name=″password″>
  <port transform=″translate(030)″type=″inpin″id=″1″name=″TRIM″title=″TRIM″>
  <path class=″portStyle″d=″M-10,0 L0,0 M0,-5 L0,5 L5,0 L0,-5Z″fill=″#000000″/>
   <text class=″portTextStyle″y=″4″x=″6″>
         TRIM
   </text>
   </port>
</jtangcomponents>
5.代码生成引擎
本构件组装方法不同于其他构件组装方法,它的执行不是通过脚本解释运行的,而是通过直接生成代码,以编译代码的形式运行的,因而可以提升构件组装应用的执行效率。
该代码生成引擎将根据构件组装脚本,自动生成构件组装Java代码,该Java代码描述了构件的连接关系和执行序列。当修改组装之后,可以根据新的构件组装描述生成构件组装Java代码,该方法在提升了构件组装应用执行效率的同时,也不影响业务的快速变更。
6.构件执行引擎
本组装方法中的构件执行引擎,是指构件组装应用执行所需的软件框架,代码生成引擎所产生的构件组装Java代码的执行即依赖于该构件执行引擎。
7.构件运行时分析引擎
本组装方法中的构件运行时分析引擎,是指构件组装应用运行时进行模拟的一套框架,它通过解析构件的组装脚本,对构件的运行进行模拟操作,用户可以使用该引擎对构件的运行时进行分析,以测试构件组装应用的正确性和性能瓶颈。
8.构件部署引擎
该引擎负责将构件组装应用部署到计算机上,形成一个独立可运行的软件实体,或者也可以通过接口调用这个组装应用。整个部署过程采用向导的方式进行,整个过程配置非常方便。
9.构件库管理
本方法中的黑盒构件以构件库的形式进行管理,构件库中保留了构件实体,及构件的依赖信息。构件库分为两个部分,一个为在线构件库,包含各种构件,其中也包含了黑盒构件。另外一个部分,即本地构件库,或者也可称为待组装黑盒构件库,这些是可以直接在可视化IDE中进行组装的构件。构件库提够,构件的增加、删除及更新的功能,支持对构件的演化进行追踪管理。

Claims (9)

1.一种基于黑盒的大粒度Java构件组装方法,包括以下步骤:
1)将外部的第三方应用软件包进行构件设计,并把设计好的构件导入到构件库中;
2)将构件库中的构件进行黑盒组装构件模型;
3)用可视化的方法将构件模型进行组装,
其特征在于:所述步骤1)中的构件设计使用了采用Java语言来实现的胶水代码。
2.根据权利要求1所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述构件为原子构件或复合构件。
3.根据权利要求1所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述步骤1)包括如下步骤:
(1)编写胶水代码,将外部的第三方应用软件包进行组装,提取出构件;
(2)构件接口提取;
(3)构件接口配置文件生成;
(4)把设计好的构件导入到构件库中。
4.根据权利要求3所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述第三方应用软件包为通用方法或面向领域的业务流程。
5.根据权利要求1所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述步骤2)中构件模型包括原子构件、构件端口、连接子和复合构件,其中原子构件为最基本的可组装单元,构件端口为构件的输入端口或输出端口,连接子为用于连接各个构件端口的连接子,复合构件是由多个构件组装而成,并整体作为一个复合体出现的构件。
6.根据权利要求1所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述步骤3)是在构件组装IDE环境下用连接子对构件进行连接,其中构件组装IDE环境包括构件设计工具,构件可视化组装界面,组装有效性验证模块,组装代码生成引擎,构件执行引擎,构件运行时分析引擎,构件部署引擎,所述构件设计工具将各种复用资源统一到大粒度Java构件平台上;所述组装有效性验证模块用于组装时,接口适配的错误提示;所述组织代码生成引擎用于生成构件组装Java代码;所述构件执行引擎是系统的基础框架,负责大粒度构件的加载和执行;所述构件运行时分析引擎,负责解释组装脚本,模拟最终系统的运行,测试组装的正确性和性能瓶颈;所述构件部署引擎负责将组装完成的软件系统从开发环境部署到实际的生产环境。
7.根据权利要求1或6所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述组装方法的执行是根据构件组装脚本直接生成代码,以编译代码的形式运行的。
8.根据权利要求7所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述构件组装脚本,包括构件的逻辑组装脚本和可视化组装脚本两个部分。
9.根据权利要求6所述的基于黑盒的大粒度Java构件组装方法,其特征在于:所述构件运行时分析引擎,是指用于测试构件组装应用的正确性和性能瓶颈的模拟框架。
CN2008101633951A 2008-12-18 2008-12-18 基于黑盒的大粒度Java构件组装方法 Expired - Fee Related CN101482817B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101633951A CN101482817B (zh) 2008-12-18 2008-12-18 基于黑盒的大粒度Java构件组装方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101633951A CN101482817B (zh) 2008-12-18 2008-12-18 基于黑盒的大粒度Java构件组装方法

Publications (2)

Publication Number Publication Date
CN101482817A CN101482817A (zh) 2009-07-15
CN101482817B true CN101482817B (zh) 2012-01-11

Family

ID=40879944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101633951A Expired - Fee Related CN101482817B (zh) 2008-12-18 2008-12-18 基于黑盒的大粒度Java构件组装方法

Country Status (1)

Country Link
CN (1) CN101482817B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650652B (zh) * 2009-09-17 2012-07-18 中兴通讯股份有限公司 一种业务流程开发的方法及装置
CN102236556A (zh) * 2011-08-01 2011-11-09 苏州万图明电子软件有限公司 一种软件产品的快速构建方法
CN102262555B (zh) * 2011-08-22 2013-11-20 迈普通信技术股份有限公司 加载java三方库的不同版本的方法和装置
CN102866891B (zh) * 2012-09-12 2016-09-14 惠州Tcl移动通信有限公司 一种基于Android系统的框架集成方法及系统
CN103679432A (zh) * 2012-09-17 2014-03-26 马侠安 一种支持动态构建应用平台的vnms系统
CN102999338A (zh) * 2012-11-20 2013-03-27 北京思特奇信息技术股份有限公司 业务开发方法及装置
CN103995692A (zh) * 2013-02-16 2014-08-20 马侠安 构建动态应用系统的vnms
CN103793232A (zh) * 2014-02-20 2014-05-14 浪潮集团山东通用软件有限公司 一种基于aop的构件调用和扩展框架实现方法
CN105278935B (zh) * 2014-06-25 2018-06-22 成都普中软件有限公司 一种构造界面模型的可视界面建模编辑器
CN104360859B (zh) * 2014-11-14 2017-08-25 中国建设银行股份有限公司 一种可视化的服务开发方法和系统
CN105607902A (zh) * 2015-12-16 2016-05-25 苏州同元软控信息技术有限公司 基于构件模型的系统可视化设计及代码生成系统及方法
CN110909319B (zh) * 2019-11-29 2022-03-29 Oppo(重庆)智能科技有限公司 应用处理方法及相关产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1845069A (zh) * 2006-05-19 2006-10-11 清华大学 一种网络环境下根据用户需求生成软件服务的方法
CN1916842A (zh) * 2006-09-06 2007-02-21 上海科泰世纪科技有限公司 构件化软件系统中实现反射机制的构件封装方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1845069A (zh) * 2006-05-19 2006-10-11 清华大学 一种网络环境下根据用户需求生成软件服务的方法
CN1916842A (zh) * 2006-09-06 2007-02-21 上海科泰世纪科技有限公司 构件化软件系统中实现反射机制的构件封装方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
艾萍.软件构件组装基础研究进展.《计算机工程与设计》.2003,第24卷(第12期),第6页至第11页. *

Also Published As

Publication number Publication date
CN101482817A (zh) 2009-07-15

Similar Documents

Publication Publication Date Title
CN101482817B (zh) 基于黑盒的大粒度Java构件组装方法
CA2777443C (en) Automated enterprise software development
Van Der Aalst et al. Translating unstructured workflow processes to readable BPEL: Theory and implementation
US9354904B2 (en) Applying packages to configure software stacks
CN110825362A (zh) 低代码应用软件开发系统及方法
CN107807878A (zh) 基于关键字的自动化测试引擎
CN104679488A (zh) 一种流程定制开发平台及流程定制开发方法
CN105912473A (zh) 基于bdd的移动app自动测试平台和测试方法
US8752030B1 (en) Process abstraction and tracking, systems and methods
CN106201480A (zh) 一种座舱显示控制系统软件架构管理平台
CN103744647A (zh) 一种基于工作流GPD的Java工作流开发系统及其方法
CN113826070A (zh) 工作流引擎工具
CN109766280A (zh) 软件测试方法及软件测试平台
US20210117313A1 (en) Language agnostic automation scripting tool
Cerny et al. On code analysis opportunities and challenges for enterprise systems and microservices
Martinez et al. Recovering sequence diagrams from object-oriented code: An ADM approach
CN113419969B (zh) 基于浏览器插件的界面自动化成功率保障方法
CN111176660A (zh) 一种面向分布式架构的微服务契约管理方法、装置、计算机设备、和可读存储介质
CN108287720A (zh) 软件编译方法、装置、设备及存储介质
CA2539134A1 (en) System and method for designing component based applications
D'Ambrogio et al. A Model Transformation Approach for the Development of HLA-based Distributed Simulation Systems.
CN110442395A (zh) 产品配置数据的发布方法、装置、前端服务器及后端服务器
CN115878112A (zh) 一种多方复杂商业协议智能合约生成系统及其生成方法
CN115951970A (zh) 一种异构多仿真软件集成开发环境
Pavlov et al. Framework for testing service compositions

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: 20090715

Assignee: SUZHOU LONGTANG INFORMATION TECHNOLOGY Co.,Ltd.

Assignor: Zhejiang University

Contract record no.: 2013330000112

Denomination of invention: Large-particle Java component assembly method based on black box

Granted publication date: 20120111

License type: Common License

Record date: 20130426

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: 20120111

Termination date: 20211218

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