APP下载

基于青鸟接口规约的全领域模型系统

2014-07-03潘中奎廉士弟

计算机与现代化 2014年7期
关键词:青鸟规约树形

潘中奎,廉士弟,赵 琪

(1.平邑县科学技术局科学技术信息中心,山东 临沂 273300;2.临沂市科学技术局科学技术开发中心,山东 临沂 276000)

0 引言

随着对软件复用及应用研究的深入,可复用的软件构件作为软件复用的核心和基础已越来越得到产业界和学术界的重视[1]。分析构件、设计构件、代码构件是程序开发中经常用到的构件。代码构件是其中很重要的一种形式,但代码构件多年来一直发展得很缓慢。

现有的构件模型主要关注构件的交互接口、交互时序关系、构件之间的连接信息等,封装构件的内部实现细节,但缺乏对应用变化的描述和支持[2],致使在代码构件(以下简称构件)的开发中,构件的粒度大小难以控制。

基于软件开发中通常使用的树形程序的结构特点,在《基于青鸟JBCOM/E的柔性构件模型的研究与实现》的基础上[3],进一步研究,提出一种针对树形程序的基于青鸟接口规约的全领域构件模型系统,整个系统由全领域构件模型及相应的二次加工工具系统组成,用以开发能满足不同业务需要、粒度适中的构件。

1 程序开发中模块的组织情况

按程序中模块的组织情况可分为:树形结构、网格结构、网状结构。

如图1所示,在树形结构中,只有一个根模块,对任一子模块,只有一个父模块,同一层的模块间没有任何关系。

图1 树形结构

网格结构是一个半序的连通有向图[4]。如图2所示,具有这种结构的程序,可以通过共享模块的重用转化为树形结构。这种网格结构的树形转化不影响程序的可靠性。

图2 网格结构转换成树形结构

如图3所示,在网状结构中,模块间没有上下级关系,任何模块间都可能发生相互关系,无法分出层次。

因为网状结构会使整个程序错综复杂,所以在客户应用系统的开发中,通常使用树形结构,而不是网状结构[5]。

图3 网状结构

2 全领域构件模型系统的概念

2.1 领域中应用系统的特征情况

领域是一组具有相似或相近软件需求的应用系统所覆盖的功能区域[6]。在整个领域的范围内,有些特征是所有系统都具有的特征,有些特征是部分系统和个别系统所具有的特征,体现为领域中系统的本质特征和变化特征。根据在不同系统中呈现出的状况,可以将变化特性分为以下3类[7]:

1)单个可选的:有些系统具有这类特性,不是每个系统都有。将来开发的系统可能有此特性,也可能没有此特性。

2)成组可选的:以成组的形式出现的可选的变化性。

3)多选一的:一组特性之间存在互斥关系,一个特定系统只能选其中的一项特性。

2.2 当前常用的构件模型

UniCon[8]、Wright[9]、C2[10]、CORBA[11]、青鸟 JBCOM、EJB[12]等为常用的构件模型。它们都从组装方式、接口时序关系、动态系统配置等方面对构件的特性进行了描述,但没有对领域的变化性进行描述。

为了对领域的变化性进行描述,并把领域的共性与变化性的描述实现为构件的子模块,为此,本文对青鸟接口规约进行了扩充,在青鸟构件模型接口规约的基础上添加对子模块的描述,提出全领域构件模型系统的概念。

2.3 全领域构件模型系统的概念

构件模型是对现实构件世界(问题空间和设计空间)的抽象,是实现系统化复用的第一个关键因素[13]。全领域构件模型系统由全领域构件模型和二次加工工具系统组成。

全领域构件模型以青鸟构件模型为蓝本,适当修改而成。全领域构件模型能对领域中共同的特征和变化的特征进行描述。按该模型开发的构件,首先把同一领域中一族共同的特征和变化的特征进行代码实现,然后把这些代码实现作为子模块按“并联”的方式组合成构件。构件使用范围的拓展和粒度的增大及构件总数量的减少是以子模块的冗余来实现的。这种以“并联”方式组建的构件可以方便地添加还没有实现或升级的子模块,也就是把子模块实现后再按“并联”的方式组合到构件中。

使用此构件组装客户应用系统时,能利用筛选出的客户数据精确地标识出该客户的应用系统所需要的全部子模块。

二次加工工具系统是一种能依据标识出的客户的应用系统实际所需要的全部子模块,来对全领域构件进行二次加工的系统,剔除构件中冗余的子模块,重新生成特定客户的专用构件。

3 全领域构件模型

为了使构件能够被较为广泛地复用,构件应该具有较强的通用性和灵活性[14]。基于此,模型结构如下。

3.1 模型构造

该模型由外部接口、内部子模块结构及临时记录调用模块3个部分组成,如图4所示。

图4 全领域构件模型

3.2 模型采用的接口和接口规约

接口是构件的唯一访问入口,它仅定义了一系列操作的集合,而不提供任何实现的方法[15]。全领域构件模型的接口采用与青鸟构件模型相同的接口,即“接口连接式体系结构”中的接口和“插头插座式体系结构”中的接口[16]。它们在构件集成时,不用关注构件内部的具体实现,能在规约层面上进行集成。对于复杂的构件可由简单的构件组合而成,这些相应的简单构件理应被看作子模块。

对青鸟构件模型的接口规约略做扩充,添加对子模块(sub-module)的描述,即得到全领域构件模型相应的接口规约如下:

模型中的记录调用模块是临时模块,在接口规约中不进行描述。

3.3 模型的临时记录调用模块

其作用是在进行测试(构件测试、组装测试、确认测试、系统测试)及用户试运行时,在库文件RecordId中记录哪些子模块已被使用过。算法如下:

记录调用模块是一个临时模块,当客户系统正式生成时,它会被剔除。

3.4 模型的子模块

模型的子模块就是对接口的代码实现,既可以是方法,也可以是小构件。这些子模块也是对领域中共性和变化性的代码实现。

记录调用模块的方法Record()用来记录构件中被调用子模块的标识符,因此在每个子模块的开始部分首先调用Record()。也就是如果该子模块是客户应用系统实际需要的,Record()就会被调用,记录下此子模块的标识符。算法如下:

4 二次加工工具系统

当客户应用系统由上述构件组装时,系统中会有很多的子模块冗余,致使系统过于臃肿。软件规模的庞大不可避免地导致软件产品质量低下、缺乏适应性和可扩展性,难于维护和演化[17]。

因此,对冗余子模块的剔除是必需要解决的问题。

4.1 非冗余子模块的标识方法

数据的选择是标识子模块最关键的一环。构件所要执行数据范围的确定要完全依据客户需求规格说明书。首先采取等价类划分的方法,把需要构件执行的输入数据按功能需求分成几个部分,从各部分中筛选出有代表性的数据执行黑盒测试;然后,把需要构件执行的数据按接口中的子模块分成几个部分,筛选出有代表性的数据执行白盒测试;随后,用通过检测的构件组装成客户系统,进行系统测试;最后让客户试用几个月。那么,通过这一系列检测、试用,对该客户系统来说,此客户在处理业务时,能用到的子模块会被全部执行到,凡被执行到的子模块就会被记录下来。未被记录到的冗余的子模块可由下面的二次加工工具系统进行剔除。

4.2 二次加工工具系统的构造

该系统的结构如图5所示。

图5 二次加工工具系统

在构件二次加工过程中,先把待加工的构件实体读入加工系统,读取构件中的全部子模块的标识符和RecordId文件中记录到的子模块的标识符,将构件中的冗余子模块确定下来,然后进行剔除,生成特定用户的具体构件,再由二次生成的构件的实体组装成用户系统,最后进行系统测试。

4.3 二次加工工具系统的算法

5 结束语

构件开发的基础是构件模型,全领域构件模型可以很好地解决代码构件开发中的复用问题及粒度问题;二次加工工具系统可以对相应的构件进行二次加工,生成特定客户的专用构件。由以上论述可知,基于青鸟接口规约的全领域构件模型系统与现有的青鸟构件系统相兼容,不影响已开发构件在实际中的应用。

[1] 陈文宇,向涛,王晓斌,等.实时可信服务的构件设计与形式化描述[J].电子科技大学学报,2011,40(1):122-127.

[2] 张潇元,韩国强,邹昆,等.基于构件的服务可扩展电子政务平台研究[J].计算机应用,2008,28(7):1875-1877.

[3] 潘中奎.基于青鸟JBCOM/E的柔性构件模型的研究与实现[D].兰州:兰州理工大学,2007.

[4] 邵维忠,杨芙清.面向对象的系统分析[M].北京:清华大学出版社,2004:89.

[5] 郑人杰,殷人昆.实用软件工程[M].第2版.北京:清华大学出版社,2002:82.

[6] 杨芙清,王千样,梅宏,等.基于复用的软件生产技术[J].中国科学(E 辑),2001,31(4):363-371.

[7] 陈兆良,王千祥,梅宏,等.面向对象领域设计中的变化性处理[J].电子学报,2001,29(11):1486-1490.

[8] Zelesnik G.The UniCon Language Reference Manual[R].School of Computer Science,Carnegie Mellon University,1996.

[9] Allen R J.A Formal Approach to Software Architecture[R].Technical Report CMU-CS-97-144,School of Computer Science,Carnegie Mellon University,1997.

[10] Medvidovic N.Formal Definition of the Chiron-2 Software Architectural Style[R].Technical Report UCI-ICS-95-24,Department of Information and Computer Science,University of California,1995.

[11] Object Management Group.CORBA Component Model Version 3.0[Z].Object Management Group,2002.

[12] Monson-Haefel R.Enterprise JavaBeans[M].3rd Edition.O'Reilly Media,2001.

[13] 《信息技术与标准化》编辑部.SJ/T 11409-2009《软件构件模型》概要[J].信息技术与标准化,2010(9):45-46.

[14] 霍霄华,韩雪燕,谷彦国.网络化指挥信息系统建设的软件构件技术[J].火力与指挥控制,2011,36(10):33-36.

[15] 孙昌爱,金茂忠,刘超.软件体系结构研究综述[J].软件学报,2002,13(7):1228-1237.

[16] 张世琨,张文娟,常欣,等.基于软件体系结构的可复用构件制作和组装[J].软件学报,2001,12(9):1351-1359.

[17] 张俊,刘淑芬,姚志林.一种基于角色的特征模型构件化方法[J].电子学报,2011,39(2):304-308.

猜你喜欢

青鸟规约树形
《青鸟之城》
苹果高光效树形改造综合配套技术
莱阳茌梨老龄园整形修剪存在问题及树形改造
电力系统通信规约库抽象设计与实现
青鸟
一种在复杂环境中支持容错的高性能规约框架
猕猴桃树形培养和修剪技术
休眠季榆叶梅自然开心树形的整形修剪
一种改进的LLL模糊度规约算法
欣赏美的眼睛——读《青鸟》有感