基于本体的主动构件库系统研究

2014-07-28 05:44彭如香丁建华杨涛
电脑知识与技术 2014年18期
关键词:本体

彭如香++丁建华++杨涛

摘要:目前,基于构件的软件开发方法(CBSD)在软件工程研究与软件开发领域变得越来越重要。该文提出了一种主动构件库系统系统,在传统构件库SourceForge的基础上,该系统根据开发者的实际需求,主动的将构件推送给用户。该方法通过构建领域本体,创建构件库访问代理,实时代码分析,并结合用户个性化信息,在上述基础上实现了基于本体的构件检索与推送。方法有效的整合了构件库、构件检索、构件查询,并同开发过程进行了无缝整合。试验表明,在开发过程中应用该方法,可以提升构件查询的准确度,并有效地降低获取构件的成本。

关键词:主动构件库;本体;基于构件的软件开发

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)18-4301-04

1 介绍

CBSD(基于构件的软件开发方法)被公认为是提高软件开发效率的有效方法[4-5],增强了软件复用能力[9]。但是在实际应用中,存在以下几个因素影响了CBSD的使用:首先,目前应用较广的构件库中缺少统一的构件标识、构件搜索引擎以及用户接口,用户很难快速的找到合适的构件[7-8];其次,构件执行需要不同的运行环境,实际构件调用过程需要处理复杂的设置工作;最后,由传统开发方法转换成CBSD所带来的时间、资金以及人力的开销难以评估,也使得CBSD的应用成为一种挑战。

本体(Ontology)作为一种领域基础知识,通过对领域中相关概念的词汇表进行定义,并给出了词汇表中术语的属性和关系,可以实现对领域知识的共享和理解[6]。目前,本体已经成为了很多应用的基础,包括知识服务、信息管理和集成系统、电子商务等,基于本体的构件检索方法[1-2]也在构件检索过程中起到了较大的作用。

CodeBroker是一种主动查询并提供构件的方法。该方法从底层将CBSD与构件库结合,自动识别和获取适用于开发者的构件,从而使得开发者获得构件的难度和成本大幅下降。

2 基于本体的主动构件库系统

本文提出了一种基于本体的主动构件库系统,该系统通过如下机制[10]来进行的基于本体的构件发现和推送。

1)创建包括构件描述和用户查询语义的领域本体;

2)开发从网络构件库(SourceForge.net)中检索构件并通过领域本体对构件进行标注的网络构件库访问代理;

3)同IDE集成,从正在编辑的源文件中发现用户潜在需求的代码分析方法;

4)可以对用户个性化特性、查找历史和执行环境进行集成和分析的个性化获取模型;

5)通过代码分析结果和个性化信息,调用构件库访问代理,查找合适的构件,然后将结果直接通过代码编辑器呈现给用户。

2.1 构建领域本体

领域本体包括三个部分。第一部分如图1所示,即CBSD领域的领域元本体。它以通过“Action-Object”形式描述软件开发过程中的函数的原型,其中Action表示函数的主要功能,Object表示函数的目标。第二部如图2部分,为描述构件的元本体,由Profile和Interface组成,Profile为构件的主要内容,它包括三个部分:Description、Relationship、Building;Interface是构件函数接口的详细描述。通过使用这两类元本体,用户可以方便的描述构件和构件查询。

第三部分为用户个性化特征描述元本体。个性化特征元本体使用四种属性展示用户的个性化特征:

1) 环境属性:指的是从用户编程环境中自动获取的特征;

2) 应用属性:指的是开发中的程序信息,这些信息也可从源代码中自动产生。

3) 历史查询:系统自动记录的数据,记录了用户历史查询和结果。

4) 用户习惯:从用户操作习惯和编程偏好中分析得到的特征。

2.2 构件库访问代理

SourceForge是目前使用最为广泛的网络构件库,为了从SourceForge中动态获取所需构件,我们开发了一套支持读取构件库信息、构件查询和下载的代理工具,这种工具拥有两种主要的功能。第一,提供从SourceForge获取构件信息的功能,获取的信息包括关键词、URL以及接口函数描述,然后将这些信息使用预先定义好的构件描述结构保存到本地数据库中;第二,提供构件查询和获取方法,用户可以查询所需的构件列表,并能从SourceForge自动下载被选中的构件或通过浏览器预览构件信息。

2.3 代码分析方法

一般来说,开发人员在编写代码的时候,代码中包含了很多功能方面的信息。例如,用户编写如下一个函数:

BooleanuserLogin(String strName, String strPasword)

通过函数名称可以看到,该函数实现了一个通过用户名和密码登录系统的功能。

代码分析主要对三类代码进行分析:名称、备注以及详细代码。名称分析包括文件名、类名、函数名等,从这些名称中获取函数的语义内容;备注分析使用NLP工具去获取备注中的关键词,再通过本体映射获取它的语义内容;详细代码分析通过分析代码中对象的创建和调用状态(如new()为对象创建代码,user.Login()为调用代码),然后产生对象之间的关联关系,帮助系统识别应用属性和用户个性化特征。表1为一段代码分析的示例。

2.4 个性化特征获取

通常,每个开发者的编程环境和编程习惯都是独一无二的,这种情况下,代码分析的结果将不一致,从而将影响构件库的搜索和构件的使用。例如,在Linux环境下Java工程的函数名使用的构件将完全不同于Windows环境下的C#工程。还有,对于数据库应用的开发来说,熟悉JDBC的程序员与熟悉hibernate的程序员将使用不同的构件编写代码。endprint

在用户使用主动构件库的过程中,用户的个性化特征将被系统记录和分析,通过个性化特征元本体进行规整和存储,主动构件库的检索引擎将以用户的个性化参数来对构件的搜索结果进行过滤和排序。

2.5 基于本体的构件检索与推送方法

构件检索和推送是主动构件库向开发者提供构件服务的主要步骤。通过构件库访问代理获得的构件通过本体注释和领域本体构件描述的形式记录到构件数据库中[11],通过代码分析和个性化特征获得的查询参数也以本体格式组织,并使用本体匹配技术进行构件检索。

构件获取分为两个阶段。第一阶段是基于本体的查询引擎使用代码分析的结果,然后在本地数据库中查询符合条件的构件;第二阶段是利用用户个性化特性,筛选和排序搜索结果列表中的构件。

在完成构件获取后,构件库访问代理将自动调用构件库的下载接口,从SourceForge自动下载筛选后的的构件,或使用浏览器展示构件详细信息,系统同时将记录开发者后续的操作,来补充和完善用户个性化特征。

3 基于本体的主动构件库原型系统

本文基于上述的基于本体的主动构件库构建方法,基于Eclipse平台和其插件模型,完成了一套基于本体的主动构件库原型系统[3],简称OntoAR,系统的整体结构图如图3所示。

在OntoAR系统中,使用Eclipse和SourceForge作为系统开发IDE和构件库,本地构件库为SourceForge构件列表的本地缓存,由构件库访问代理填充数据。本地构件库的主要数据包括:构件索引、构件的语义参数以及SourceForge上的构件URL。

OntoAR开发环境为java 1.7,采用MySQL作为本地数据库。本地数据库服务器配置为Intel Core i7、4GBRAM,操作系统为Windows Server 2003,并安装了构件库访问代理。客户端PC配置为Intel Core i5、2GB RAM,操作系统为Windows7,开发工具为Eclipse,OntoAR通过Eclipse的插件形式安装在Eclipse中。

构件库访问代理从SourceForge上获取所有同构件有关的项目,将项目信息保存在本地数据库中,并通过领域本体进行标签标注。为了验证原型系统的能力,我们使用2.3节中示例文件名和代码列表创建一个空工程和一个java文件。构件匹配初始找到130种结果,在包含过开发者个性化特性的环境下过滤后,结果数量削减到63种,结果中包含同开发环境相适配的构件如“SQLRunner”和“IBAccess”。而如果直接通过SourceForge在数据库分类直接查询“user profile”参数,将会得到587种结果,最匹配我们开发所需的合适构件位于第3页。可见,原型系统在辅助开发者查询相关构件的方面,大大降低了开发者的工作。

4 存在问题和未来研究

本文提出了一种基于本体的主动构件库的构建方法,通过整合了构件领域本体、构件库访问代理、代码分析、个性化特征获取以及基于本体的构件检索与推送这五个步骤,使得系统可以主动的分析用户需求,根据用户的个性化特性信息为其检索并提供相关的构件。作者还开发了OntoAR原型系统,通过Eclipse插件的方式,将构件库访问、代码分析、自动构件查询和构件检索整合在一起,给开发者提供服务。

我们今后将在如下两个方面对本方法开展进一步研究。

1)完善基于本体的主动构件库原型系统,通过实际的开发评估系统的实用性,提高查询精度。

2)支持SourceForge以外其他不同种类的构件库。

参考文献:

[1] 赵朝阳.基于本体语义的构件检索[D].南昌:南昌大学,2009.

[2] 乔晓英.基于语义的构件检索技术研究与实现田[D].南昌:江西师范大学,2009.

[3] 闰伟,曹宝香,张永红.基于本体的构件功能检索的设计与实现[J].计算机技术与发展, 2009,5(19).

[4]AlnusairAwny,ZhaoTian.ComPonentSearehandReuse:AnOnt-ology-based approach[C].UsVegas,IEEEIRI,2010.

[5] Li Wenjing,GuoYuCheng, Liao Weizhi. Research on Ontology Component Description Model Based on the Semantic Web[C]. IEEE Asia-Pacific Services Computing Conference,2008

[6] 杨明华.基于本体的构件描述关键技术研究[D].上海:复旦大学,2006.

[7] Wang Shunya,Wang Yanwen. Research on Active Services Componet Library Based on Ontology[C].Macao:Information Technology for Manufacturing System,2010.

[8] 习兴丽.基于本体构件资源库的构件检索方法研究[D].武汉:武汉理工大学,2010.

[9] Ye Y, Fischer G,Reeves B.Integrating active information delivery and reuse repository systems[J].ACM SIGSOFT Software Eng. Notes, 2000,25: 60-68.

[10] Paquette G, Masmoudi A. Ontology-based software component aggregation[J].Comp. Eng.: Concepts, Methodol. Tools Appli., Vol,2011,223.

[11] Pande J, Bisht R K.Pant D.On some quality issues of component selection in CBSD[J].J. Software Eng. Appli., 2010,3: 556-560.endprint

在用户使用主动构件库的过程中,用户的个性化特征将被系统记录和分析,通过个性化特征元本体进行规整和存储,主动构件库的检索引擎将以用户的个性化参数来对构件的搜索结果进行过滤和排序。

2.5 基于本体的构件检索与推送方法

构件检索和推送是主动构件库向开发者提供构件服务的主要步骤。通过构件库访问代理获得的构件通过本体注释和领域本体构件描述的形式记录到构件数据库中[11],通过代码分析和个性化特征获得的查询参数也以本体格式组织,并使用本体匹配技术进行构件检索。

构件获取分为两个阶段。第一阶段是基于本体的查询引擎使用代码分析的结果,然后在本地数据库中查询符合条件的构件;第二阶段是利用用户个性化特性,筛选和排序搜索结果列表中的构件。

在完成构件获取后,构件库访问代理将自动调用构件库的下载接口,从SourceForge自动下载筛选后的的构件,或使用浏览器展示构件详细信息,系统同时将记录开发者后续的操作,来补充和完善用户个性化特征。

3 基于本体的主动构件库原型系统

本文基于上述的基于本体的主动构件库构建方法,基于Eclipse平台和其插件模型,完成了一套基于本体的主动构件库原型系统[3],简称OntoAR,系统的整体结构图如图3所示。

在OntoAR系统中,使用Eclipse和SourceForge作为系统开发IDE和构件库,本地构件库为SourceForge构件列表的本地缓存,由构件库访问代理填充数据。本地构件库的主要数据包括:构件索引、构件的语义参数以及SourceForge上的构件URL。

OntoAR开发环境为java 1.7,采用MySQL作为本地数据库。本地数据库服务器配置为Intel Core i7、4GBRAM,操作系统为Windows Server 2003,并安装了构件库访问代理。客户端PC配置为Intel Core i5、2GB RAM,操作系统为Windows7,开发工具为Eclipse,OntoAR通过Eclipse的插件形式安装在Eclipse中。

构件库访问代理从SourceForge上获取所有同构件有关的项目,将项目信息保存在本地数据库中,并通过领域本体进行标签标注。为了验证原型系统的能力,我们使用2.3节中示例文件名和代码列表创建一个空工程和一个java文件。构件匹配初始找到130种结果,在包含过开发者个性化特性的环境下过滤后,结果数量削减到63种,结果中包含同开发环境相适配的构件如“SQLRunner”和“IBAccess”。而如果直接通过SourceForge在数据库分类直接查询“user profile”参数,将会得到587种结果,最匹配我们开发所需的合适构件位于第3页。可见,原型系统在辅助开发者查询相关构件的方面,大大降低了开发者的工作。

4 存在问题和未来研究

本文提出了一种基于本体的主动构件库的构建方法,通过整合了构件领域本体、构件库访问代理、代码分析、个性化特征获取以及基于本体的构件检索与推送这五个步骤,使得系统可以主动的分析用户需求,根据用户的个性化特性信息为其检索并提供相关的构件。作者还开发了OntoAR原型系统,通过Eclipse插件的方式,将构件库访问、代码分析、自动构件查询和构件检索整合在一起,给开发者提供服务。

我们今后将在如下两个方面对本方法开展进一步研究。

1)完善基于本体的主动构件库原型系统,通过实际的开发评估系统的实用性,提高查询精度。

2)支持SourceForge以外其他不同种类的构件库。

参考文献:

[1] 赵朝阳.基于本体语义的构件检索[D].南昌:南昌大学,2009.

[2] 乔晓英.基于语义的构件检索技术研究与实现田[D].南昌:江西师范大学,2009.

[3] 闰伟,曹宝香,张永红.基于本体的构件功能检索的设计与实现[J].计算机技术与发展, 2009,5(19).

[4]AlnusairAwny,ZhaoTian.ComPonentSearehandReuse:AnOnt-ology-based approach[C].UsVegas,IEEEIRI,2010.

[5] Li Wenjing,GuoYuCheng, Liao Weizhi. Research on Ontology Component Description Model Based on the Semantic Web[C]. IEEE Asia-Pacific Services Computing Conference,2008

[6] 杨明华.基于本体的构件描述关键技术研究[D].上海:复旦大学,2006.

[7] Wang Shunya,Wang Yanwen. Research on Active Services Componet Library Based on Ontology[C].Macao:Information Technology for Manufacturing System,2010.

[8] 习兴丽.基于本体构件资源库的构件检索方法研究[D].武汉:武汉理工大学,2010.

[9] Ye Y, Fischer G,Reeves B.Integrating active information delivery and reuse repository systems[J].ACM SIGSOFT Software Eng. Notes, 2000,25: 60-68.

[10] Paquette G, Masmoudi A. Ontology-based software component aggregation[J].Comp. Eng.: Concepts, Methodol. Tools Appli., Vol,2011,223.

[11] Pande J, Bisht R K.Pant D.On some quality issues of component selection in CBSD[J].J. Software Eng. Appli., 2010,3: 556-560.endprint

在用户使用主动构件库的过程中,用户的个性化特征将被系统记录和分析,通过个性化特征元本体进行规整和存储,主动构件库的检索引擎将以用户的个性化参数来对构件的搜索结果进行过滤和排序。

2.5 基于本体的构件检索与推送方法

构件检索和推送是主动构件库向开发者提供构件服务的主要步骤。通过构件库访问代理获得的构件通过本体注释和领域本体构件描述的形式记录到构件数据库中[11],通过代码分析和个性化特征获得的查询参数也以本体格式组织,并使用本体匹配技术进行构件检索。

构件获取分为两个阶段。第一阶段是基于本体的查询引擎使用代码分析的结果,然后在本地数据库中查询符合条件的构件;第二阶段是利用用户个性化特性,筛选和排序搜索结果列表中的构件。

在完成构件获取后,构件库访问代理将自动调用构件库的下载接口,从SourceForge自动下载筛选后的的构件,或使用浏览器展示构件详细信息,系统同时将记录开发者后续的操作,来补充和完善用户个性化特征。

3 基于本体的主动构件库原型系统

本文基于上述的基于本体的主动构件库构建方法,基于Eclipse平台和其插件模型,完成了一套基于本体的主动构件库原型系统[3],简称OntoAR,系统的整体结构图如图3所示。

在OntoAR系统中,使用Eclipse和SourceForge作为系统开发IDE和构件库,本地构件库为SourceForge构件列表的本地缓存,由构件库访问代理填充数据。本地构件库的主要数据包括:构件索引、构件的语义参数以及SourceForge上的构件URL。

OntoAR开发环境为java 1.7,采用MySQL作为本地数据库。本地数据库服务器配置为Intel Core i7、4GBRAM,操作系统为Windows Server 2003,并安装了构件库访问代理。客户端PC配置为Intel Core i5、2GB RAM,操作系统为Windows7,开发工具为Eclipse,OntoAR通过Eclipse的插件形式安装在Eclipse中。

构件库访问代理从SourceForge上获取所有同构件有关的项目,将项目信息保存在本地数据库中,并通过领域本体进行标签标注。为了验证原型系统的能力,我们使用2.3节中示例文件名和代码列表创建一个空工程和一个java文件。构件匹配初始找到130种结果,在包含过开发者个性化特性的环境下过滤后,结果数量削减到63种,结果中包含同开发环境相适配的构件如“SQLRunner”和“IBAccess”。而如果直接通过SourceForge在数据库分类直接查询“user profile”参数,将会得到587种结果,最匹配我们开发所需的合适构件位于第3页。可见,原型系统在辅助开发者查询相关构件的方面,大大降低了开发者的工作。

4 存在问题和未来研究

本文提出了一种基于本体的主动构件库的构建方法,通过整合了构件领域本体、构件库访问代理、代码分析、个性化特征获取以及基于本体的构件检索与推送这五个步骤,使得系统可以主动的分析用户需求,根据用户的个性化特性信息为其检索并提供相关的构件。作者还开发了OntoAR原型系统,通过Eclipse插件的方式,将构件库访问、代码分析、自动构件查询和构件检索整合在一起,给开发者提供服务。

我们今后将在如下两个方面对本方法开展进一步研究。

1)完善基于本体的主动构件库原型系统,通过实际的开发评估系统的实用性,提高查询精度。

2)支持SourceForge以外其他不同种类的构件库。

参考文献:

[1] 赵朝阳.基于本体语义的构件检索[D].南昌:南昌大学,2009.

[2] 乔晓英.基于语义的构件检索技术研究与实现田[D].南昌:江西师范大学,2009.

[3] 闰伟,曹宝香,张永红.基于本体的构件功能检索的设计与实现[J].计算机技术与发展, 2009,5(19).

[4]AlnusairAwny,ZhaoTian.ComPonentSearehandReuse:AnOnt-ology-based approach[C].UsVegas,IEEEIRI,2010.

[5] Li Wenjing,GuoYuCheng, Liao Weizhi. Research on Ontology Component Description Model Based on the Semantic Web[C]. IEEE Asia-Pacific Services Computing Conference,2008

[6] 杨明华.基于本体的构件描述关键技术研究[D].上海:复旦大学,2006.

[7] Wang Shunya,Wang Yanwen. Research on Active Services Componet Library Based on Ontology[C].Macao:Information Technology for Manufacturing System,2010.

[8] 习兴丽.基于本体构件资源库的构件检索方法研究[D].武汉:武汉理工大学,2010.

[9] Ye Y, Fischer G,Reeves B.Integrating active information delivery and reuse repository systems[J].ACM SIGSOFT Software Eng. Notes, 2000,25: 60-68.

[10] Paquette G, Masmoudi A. Ontology-based software component aggregation[J].Comp. Eng.: Concepts, Methodol. Tools Appli., Vol,2011,223.

[11] Pande J, Bisht R K.Pant D.On some quality issues of component selection in CBSD[J].J. Software Eng. Appli., 2010,3: 556-560.endprint

猜你喜欢
本体
Abstracts and Key Words
灰铸铁缸体本体抗拉强度提升的研究
眼睛是“本体”
对姜夔自度曲音乐本体的现代解读
领域本体的查询扩展和检索研究
基于本体的机械产品工艺知识表示
本体在产品设计知识管理中的应用研究
《我应该感到自豪才对》的本体性教学内容及启示
一种基于本体的语义检索设计与实现
媒介生存:关于新闻史研究本体的思考