含有描述信息的构件及函数库的构建方法

文档序号:6581503阅读:119来源:国知局
专利名称:含有描述信息的构件及函数库的构建方法
技术领域
本发明涉及信息处理方法,尤其是涉及一种含有描述信息的软件构件及函数库的构建方法。
背景技术
构件(Component)是面向软件体系架构的可复用软件模块,是可复用的软件组成成份, 可被用来构造其他软件。构件可以是被封装的对象类、类树、 一些功能模块、软件框架 (Framework )、软件构架(或体系结构Architectural )、文档、分析件、设计模式(Pattern) 等。1995年,Ian.oraham给出的构件定义如下构件(Component)是指一个对象(接口规 范、或二进制代码),它被用于复用,接口被明确定义。
构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。因此,开发者 可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。软件构件技术是 软件复用的关键因素,也是软件复用技术研究的重点。
由于构件种类和规范众多,如微软提出的ACTIVEX和COM组件、SUN公司提出的 JAVA组件、CORBA提出的组件规范;并且,构件就像函数库一样是对代码的二进制封装, 如果缺乏文档和源码, 一大堆构件对使用者使用起来无所适从。为改变这一状况,目前软件 构件从规范众多、标准不一向标准化发展,如目前标准化的Web Services。 Web Services可 以通过标准的语言和协议进行描述和发布,使用者也可以使用标准的协议进行远程调用。
但是,Web Services本身不是自描述的。并且当前函数库还被大量软件使用,也需要增 加自描述特性。因此,有必要对构件和函数库构建自描述特性以便于使用。

发明内容
本发明提出一种含有描述信息的软件构件及函数库的构建方法,通过使用XML、 WSDL 或UDDI语言对构件或函数库的自描述来解决目前构件和函数库不带描述信息的技术问题。
为解决本发明的技术问题,本发明公开一种含有描述信息的软件构件及函数库的构建方 法,其包括
获取构件或函数库的对外接口的注释信息;
将注释信息转换处理为构件或函数库的描述信息;
将描述信息与构件或函数库的源码文件一起打包封装。
其中,注释信息为借助工具从构件或函数库的源码文件中读取,或由用户在构建构件或 函数库时的输入信息。
其中,注释信息位于构件或函数库的源码文件的头部。 .其中,构件或函数库的源码的对外接口注释信息采用XML语言描述,且描述信息也采 用XML语言描述。
其中,描述信息包括基本描述信息和对外接口描述信息。基本描述信息包括函数库或 构件的名字、版权人信息、厂家信息、创建者信息、使用的编译器瓦基于的操作系统、使用 平台、发布日期、版本或修订历史记录的其中一项或多项。对外接口包括定义函数接口名 称及函数接口的传递参数、传递参数的定义、传递参数的数据类型的定义;而对外接口描述信息对应包括对外接口的操作定义、对外接口操作中传递参数的定义;传递参数包含具体 参数的数据类型的定义。
其中,描述信息使用WSDL语言或UDDI语言描述;函数库或构件中只封装指向由 WSDL语言或UDDI语言对该函数库或构件的描述信息的URL地址。
与现有技术相比,本发明具有如下有益效果
本发明提出了使用XML、 WSDL或UDDI语言对构件或函数库的自描述方法和源码接 口的注释方法,采用本发明可以方便的从源码中构建构件或函数库的描述信息,并与构件或 函数库打包封装到一起,使用户方便的从构件或函数库中得到相应的描述信息和如何使用的 指导信息,从而能够在软件中使用该构件或函数库,不会造成可能丢失或没有公开源码的构 件或函数库的资源和智力的浪费,有利于推进构件或函数库在软件开发中的更广泛使用。


图1是本发明的流程示意图。
具体实施例方式
本发明是采用XML( Extensible Markup Language,即可扩展标记语言)、或者使用WSDL (Web Services Description Language, 网纟备月艮务4苗述"i吾言)或UDDI (Universal Description Discovery and Integration,统一描迷、发现和集成协议)对函数库或构件的对外接口进行描 述,然后进行封装处理为含有描述信息的构件或函数库,使用户能够方便的从函数库或构件 中得到相应的描述信息和如何使用的指导信息,从而在软件中使用该函数库或构件。
如图l所示,本发明采用如下方式来实现
步骤S101、读取构件或函数库的源码中用户添加的接口注释信息,或在构建构件或函 数库时由用户输入有关构件或函数库的对外接口的注释信息。
步骤S102、将注释信息转换处理,按预定的格式生成构件或函数库的对外接口的描述信息。
构件或函数库的对外接口的描述信息包括但不限于如下信息函数库或构件名字、函 数库及构件描述、版权所有者信息、厂家信息、创建者信息、使用的编译器及基于的操作系 统、使用平台、发布日期、版本、修订历史记录、对外接口描述和注释信息等。
步骤S103、封装处理将构件或函数库的对外接口的描述信息、构件或函数库的源码 编译的结果一并封装成含有描述信息的软件构件或函数库;当然,构件或函数库的对外接口 的描述信息也可以编码封装,也可以原封不动的封装到函数库或构件之中。
实施例l
本实施例采用XML语言对函数库或构件的对外接口进行描述。
借助工具从构件或函数库源码中读取必要的注释信息,或者由用户输入必要的注释信 息。这时就要求构件或函数库的源码中对接口的注释采用标准的注释规格以及一致的关键词 词条,比如,也使用以上描述相仿的XML^式进行描述。
XML对源码的描述包括两部分注释信息, 一部分为基本注释信息描述, 一部分为对外 接口注释描述信息,都由XML语言进行描述。
基本注释信息描述如下
< xml version="1.0" encoding-"GBK" ><lib name="mygui">< Description >gui库对夕卜才妄口的4苗述</ Description >< Copyright name="skyworth" address =,,shenzhen,, /〉 <Corporation name="skyworth" address="shenzhen7> <Creator name-"王五"address="shenzhen'V> <Compiler name=,,gcc3.4,V><OS name=,,linux2.6" /> <Platform name="ST7101"/> <issue date="2009-7-217> 〈Version value="1.07>〈Revise history〉<Item revise No=,, 1" Issue—date="2008-01-20" /><Item revise No=,,2" Issue—date="2008-02-20" /></ Revise history >/lib>Author=,,张三,,review=,,李四,,description-"问题描述1, Autho产,,张三"review="李四"description=,,问题描述2,基本信息注释中注释了该库的库名字、版权人信息、厂家信息、创建者信息等信息, 以及得到所使用的编译器为gcc3.4,运行的操作系统为linux2.6,平台为ST7101,发布日期为 2009-7-21,版本为l.O,该库的修订记录有两条等信息。而构件或函数库的对外接口的注释信息也采用XML语言描述如下< xml version-" 1.0" encoding="GBK" ><Interfacc><Type>〈element name="result,, type="int"> 〈element name="rect" type="RECT,,>〈element name="x', type="int,V> 〈dement name="y,, type=,,int'7> 〈element name="dx" type="int"/> 〈element name=''dy" type="int7> </dcmcnt> 〈element name="bm" type=,,BITMAP,,><element name-"r" type=" RECT'V〉</clcmcnt> </Type>〈Message name="draw—rect_msg"><Part name ="rect,V> <Part name=" bm,7> </Message ><Operation name="Draw—Rect—Cmd">< input message ="draw—rect—msg'V></Operation > </Interfacc>从上述接口XML注释信息中注释了接口的用法信息,包括三个部分Operation部分定 义构件或函数库的对外接口名称及要传递的参数;传递的参数在Message部分定义,其中 每一个part对应一个参数;参数的数据类型在Type部分定义。从源码注释信息中通过获取上述对外接口的注释信息后,生成如下所示由XML语言描 述的构件或函数库的接口描述信息,并打包到构件或函数库中。当然如果源码中没有相应的 XML注释信息,可以根据用户输入的上述信息进行构件或函数库的打包。< xml version="1.0" encoding="GBK" 〉<lib name="mygui"><BaseInfo>< Description > gui函数库对外接口的描述</ Description >< Copyright name=''skyworth" address ="shenzhen,, /> (Corporation name="skyworth" address=',shenzhen'7> <Creator name-"王五"address="shenzhen'V〉 〈Compiler name="gcc3.4"/><OS name=,,linux2.6" /〉 〈Platform name="ST7101,7> <issue date="2009-7-217> <Version value="1.07> <Revise history><Item revise No=,T, Author="张三"review="李四"description-"问题描述1" Issue_date="2008-01-20" /><Item revise No="2" Author=,,张三"review="李四"description-"问题描述2" Issue—date="2008-02-20" /></ Revise history >/BaseInfo><Interface><Typc><element name="Rect" type="RECT"> 〈element name:"x" type="int"/> 〈element name="y,' type="int"/> 〈element name="dx" type=,,int"/> 〈element name="dy" type="int"/〉 </clcmcnt><element name="color" type="RGB"> <element name="r" type="unsigned char'V> 〈element name="g" type="unsigned char 7><element name="b" type="unsigned char "/> </clcmcnt>〈element name="bm" type="BITMAP,,> <dement name="r" type=" RECT'7> </clcm6nt><demcnt name=',result'' type=int> </Type><Message name="draw—rect—msg"> <Part name="Rect7> <Part name="color7> </Message ><Message name="result—msg"> <Part name ="result'V> </Message ><PortType name="Gui(3uotePortType"> <Operation name=" Send一Draw一Rect_Request"> <input message-" draw—rect—msg'V〉 </Operation ><Operation name="Draw—Rect一Cmd"〉< input message ="draw—rect—msg'V><output message =" result一msg 7>(/Operation >/PortTyp6></Interface></lib〉从上述XML描述代码可以看出,构件或函数库的描述信息包括两部分信息 一部分为 基本描述信息, 一部分为对外接口描述信息。基本描述信息中我们可以得到函数库的库名字(对应代码libname)为"mygui"、版 权人(对应代码为Copyright name )信息为"skyworth"、厂家(对应代码为Corporation name) 信息为"skyworth"、创建者(对应代码为Creator name)信息为"王五"等信息,以及得到 所使用的编译器(对应代码为Compilername)为gcc3.4.6,运行的操作系统(对应代码为OS name)为limix2.6,平台(对应代码为Platform name)为ST7101,发布日期(对应代码为issue date)为2009-7-21,版本(对应代码为Version value)为l,O,该函数库的修订记录(对应代 石马为Revise history)有两条等4言息。而从函数库的对外接口描述信息中,可以看出该函数库的对外接口包括两个操作 一个 发送一条消息,没有返回结果的操作; 一个发送一条消息,并返回结果的操作。而函数库的对外接口的操作在代码PortType中定义,PortType是对外接口的容器,由 一个个操作operation构成,接口才喿作中传递的参数采用消息Message进行封装,Message又 是元素element的容器,Message由一个个元素element构成,元素element对应要传递的具 体参数,消息Message中有几个元素,就对应操作中要传递几个参数,元素element的类型 可以由基本数据类型定义,也可以由复杂数据类型定义,复杂数据类型采用递归定义,即复用户使用打包后的构件或函数库时,就可以从中得到构件件或函数库的如上描述信息, 从而可以正确〗吏用。实施例2可以独立使用WSDL或UDDI语言对函数库或构件的描述进4于描述,而函数库或构件 中只封装指向由WSDL或UDDI语言对该函数库或构件的接口描述的URL ( Uniform Resource Locator,统一资源定位符,又称为网页地址)。比如如下描述代码由于WSDL或UDDI语言是开放标准,因此具体格式不再陈述。< xml version="1.0" encoding="GBK" ><lib name="mygui"><Wsdl><wsdl:address location="http:〃example.com/guilib.wsdl7></Wsdl><UDDI><uddi:address location="http:〃example.com/ guilib.uddi 7></UDDI>/lib>综上,本发明提出了使用XML,或者使用WSDL或UDDI语言对构件或函数库的自描 述方法,以及相应的源码接口的注释方法,采用本发明可以方便的从源码中构建构件或函数 库的描述信息,并与构件或函数库打包封装到一起,使用户方便的从构件或函数库中得到相 应的描述信息和如何使用的指导信息,从而能够在软件中使用该构件或函数库,不会造成可 能丢失或没有公开源码的构件或函数库的资源和智力的浪费,有利于推进构件或函数库在软 件开发中的更广泛使用。
权利要求
1、一种含有描述信息的软件构件及函数库的构建方法,其特征在于,包括获取构件或函数库的对外接口的注释信息;将注释信息转换处理为构件或函数库的描述信息;将描述信息与构件或函数库的源码文件一起打包封装成含有描述信息的软件构件及函数库。
2、 根据权利要求1所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 注释信息为借助工具从构件或函数库的源码文件中读取,或由用户在构建构件或函数库时的 输入信息。
3、 根据权利要求1所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 注释信息位于构件或函数库的源码文件的头部。
4、 根据权利要求1所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 注释信息采用XML语言描述,且描述信息也采用XML语言描述。
5、 根据权利要求4所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 描述信息包括基本描述信息和对外接口描述信息。
6、 根据权利要求5所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 基本描述信息包括函数库或构件的名字、版权人信息、厂家信息、创建者信息、使用的编 译器及基于的操作系统、使用平台、发布日期、版本或修订历史记录的其中一项或多项。
7、 根据权利要求5所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 对外接口包括定义函数接口名称及函数接口的传递参数、传递参数的定义、传递参数的数 据类型的定义;而对外接口描述信息对应包括对外接口的操作定义、对外接口操作中传递 参数的定义;传递参数包含具体参数的数据类型的定义。
8、 根据权利要求1所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 描述信息使用WSDL语言或UDDI语言描述。
9、 根据权利要求8所述的含有描述信息的软件构件及函数库的构建方法,其特征在于, 函数库或构件中只封装指向由WSDL语言或UDDI语言对该函数库或构件的描述信息的 URL地址。
全文摘要
本发明公开一种含有描述信息的软件构件及函数库的构建方法,其包括获取构件或函数库的对外接口的注释信息;将注释信息转换处理为由XML、WSDL或UDDI语言描述的构件或函数库的描述信息;将描述信息与构件或函数库的源码文件一起打包封装。本发明可以方便的从源码中构建构件或函数库的描述信息,有利于推进构件或函数库在软件开发中的更广泛使用。
文档编号G06F9/44GK101655797SQ20091019072
公开日2010年2月24日 申请日期2009年9月25日 优先权日2009年9月25日
发明者毛国红 申请人:深圳创维数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1