论文部分内容阅读
【摘 要】Internet构件种类繁多、各类资源间的关系复杂,单一的模型很难满足多方面的需要;针对上述问题,提出一种可扩展的构件库数据模型CLM (extensible Component Library data Model) 。CLM定义了各种基本的信息,并且给出了如何对模型进行扩展的机制。CLM既囊括了描述Internet上构件及相关资源所必需的基本元素,又能够根据需要对模型进行规范地扩展。利用该模型,可以为从Internet获取信息的工作提供基础。
【关键词】构件库;Internet;构件获取;关联关系识别;构件检索
1.模型概述
为了有效地发挥构件库的作用,构件库模型大致可分为两类:一是面向构件库基本数据结构来进行描述的模型;二是为实现构件库之间互操作提出的模型。基于现有的各种构件库数据模型的分析,提取其中的核心内容,本文提出的可扩展的构件库数据模型CLM共由19类元素组成,分为三个部分,即基本描述部分、分类法描述部分和关系描述部分。
2.基本描述部分
基本描述部分包含了模型中的最基本的构成元素。构件库对象(Component Library Object,表示为CLObject)处于整个层次结构的最上层,它表示的是构件库中管理的对象,因此,是所有元素的父元素。CLObject包含了模型中所有元素所共有的属性:名称(Name)和用来唯一标识元素的ID。
综合以往的各种模型,模型中必需包含的基本元素有:构件库(Library),构件库用户(User),构件库中的软件资产(Asset)及资产的构成成分(Ingredient)。另外,构件库中的各种元素往往满足某些约束或属于某种分类框架,可以利用这类信息更好地描述各种元素。为此,CLM定义了规约元素(Specification)来表示约束和描述机制。而引用规约元素则包含了对Specification的各种实例化信息。
(1)Library元素
Library元素记录是构件库自身所包含的信息,来帮助用户对整个库有概要性了解。在Library中,包括了对外提供的访问构件库的地址。为了对构件的入库和管理进行指导,Library元素通过一些文本类型的属性提供了介绍性的信息,包括关于构件的验证方法、构件库的度量原则和库的分类机制。
(2) User元素
构件库用户使用User元素进行描述,它记录用户的各种联系方式(如Address、Fax等)和登录相关的信息(LastLoginTime,Password等)。
Library元素和User元素之间的Contacts关系表示该用户是构件库的联系人。User元素与Asset元素和Specification元素间的IsPublishedBy关系表明用户是构件库中软件资产和规约的发布者。
(3) Asset元素
Asset元素表示构件库中的构件和其他有用的各类软件资产。它包含了软件资产的版本相关的信息、实现工具及对外界依赖相关的信息以及与使用相关的信息。
(4) Ingredient元素
Ingredient元素描述资产成分的类型和格式。另外,对于Web Service等服务型式构件,构件库中并不存放构件的实现体而是提供构件的访问点。
(5) Specification元素
Specification描述构件库中的规范和约束等信息,它包含描述信息和相关联的远端描述和使用说明。
(6) ReferencedSpecifications元素
ReferencedSpecifications元素包含对Specification的各种实例化信息的引用。它是CLObject的组成部分,用来具体描述元素。
3.分类法描述部分
构件的有效分类对于构件的检索和获取起着非常重要的作用,是软件復用成功的关键。在构件分类的方法中,有四种常见的分类法: 关键词分类法、属性-值分类法、枚举分类法和刻面分类法。CLM将分类法元素进行扩展,将四种分类法同时引入。同时将四种分类法使用的术语/值或关键词也引入到模型中,并和相应的分类法建立整体—部分关系,能够为构件提供分类信息的描述,能满足不同场景的需要。这些术语或关键词属于构件库需要管理的对象,但是不能视为软件资产或资产的成分,因此,它们直接继承CLObject。
4.关系描述部分
构件关系不仅可以用于有效地组织构件,也是软件开发中可以使用的有效信息,更是软件体系结构中的基本元素。因此,构件库也需要管理与维护构件关系。传统的构件库模型中往往缺乏对关系表示的支持,或者是由构件库提供一些预定义的关系类型来对构件关系进行描述。用户仅能依赖预定义的关系类型来建立构件之间的关系,这样不易于为构件关系的描述提供灵活的支持[6]。
CLM将构件之间的一个具体的关系称为关系实例(RelationInstance)。不同的关系实例可能具有相同的属性和表示。因此,可以把它们抽象为同一类型的关系,并用关系类型(RelationType)来进行描述。同样,不同的关系类型可能隶属于相同的应用范畴,CLM利用关系空间(RelationSpace)来界定不同的应用范围。
在构件库中,用户可以针对不同的应用领域建立独立的关系空间,并在该关系空间下建立起一系列适用于该领域的关系类型。最后,引用这些关系类型来定义关系实例并描述构件关系。这样就可以清晰、灵活地描述构件间的关系。
使用上述的关系表示模型不仅能够清楚描述构件的关系,还能够为构件库中的实体之间的关系提供统一的描述。基于本模型来管理关系的构件库可以支持用户自定义关系类型,并且支持关系类型的定义和关系实例使用相分离的管理模式,使关系管理具有更大的灵活性,从而具有较高的可扩展性。 5.针对Internet常见资源进行的扩展
利用CLM的扩展机制来给出针对Internet常见资源进行的扩展,主要包括在模型中加入新的元素,以及加入新的元素属性。
在收集Internet上各类资源的过程中,除了构件本身之外,构件往往还会有相应的示例信息、配置管理信息、作者信息、项目信息和错误跟踪管理信息。这些信息对于开发人员了解、使用构件也有着很重要的作用。因此,针对Internet上构件关联的各类资源,本文在CLM的基础上增加了五个元素,这五个元素均继承了Ingredient元素。
DocumentationInfo记录构件的说明信息,起到了构件使用说明的作用。这些说明信息在复用者使用构件的过程中,可以起到说明书的作用,帮助复用者完成任务。DocumentationInfo元素中记录了名称信息,关于该元素的概述信息,以及更为详细的参考信息。
BugInfo记录构件相关的错误跟踪管理信息,包括了该构件在版本演化过程中出现的各种Bug。通过这些信息,复用者可以了解该构件目前还存在哪些未修订的错误,还可以利用己修订的Bug来掌握如何修订错误、避免在开发过程中出现类似的错误。考虑到一个构件在演化过程中会出现若干Bug,一个Asset元素可以关联任意个BugInfo元素。
复用者在使用构件的过程中,经常会希望能从构件的开发者处获得支持。通过构件开发人员的信息,也有助于帮助复用者从可信性和可靠性的角度出发来了解构件,挑选构件。因此,CLM中同样加入了关于构件开发者信息的元素AuthorInfo。在该元素中,包含了作者的姓名,作者的email,作者在配置管理系统、错误跟踪系统中注册的ID以及关于该用户的描述性信息。
从Internet上收集的一些构件属于开源项目,关于这些项目的介绍同样可以对复用者选择、使用构件有帮助。CLM加入了对开源项目信息进行描述的ProjectInfo元素。该元素中包括了该构件所属项目的名称,所在的网址以及对该项目进行简要介绍的描述性信息。
6.总结
隨着软件复用和Internet技术的发展,在Internet上可用的构件的数目日益增多,种类也日益丰富。为了利用Internet上的构件来促进软件复用的进行,需要提供一种高效的构件收集机制,而且需要提供信息模型来描述Internet上的各类资源。本文提出了一种结合Web搜索引擎和对特定网站抓取的信息获取方法,并针对Internet上的资源情况,给出了可扩展的数据模型CLM。CLM既囊括了描述构件的各种基本元素,又根据Internet上的情况,增加了新的元素,丰富了构件的描述信息,为复用者检索、了解、使用构件提供了支持。
参考文献:
[1] 郭玉辉 软件构件库检索优化工具的设计与实现[D] 北京大学硕士论文 2010/5.
[2]郑晓霞 一种支持多构件库的服务检索与选择方法[D]北京大学硕士论文 2010/5.
[3]曾祥勇 王睿 基于对等网络的构件库互联设计 计算机工程与设计[J]2011/4.
【关键词】构件库;Internet;构件获取;关联关系识别;构件检索
1.模型概述
为了有效地发挥构件库的作用,构件库模型大致可分为两类:一是面向构件库基本数据结构来进行描述的模型;二是为实现构件库之间互操作提出的模型。基于现有的各种构件库数据模型的分析,提取其中的核心内容,本文提出的可扩展的构件库数据模型CLM共由19类元素组成,分为三个部分,即基本描述部分、分类法描述部分和关系描述部分。
2.基本描述部分
基本描述部分包含了模型中的最基本的构成元素。构件库对象(Component Library Object,表示为CLObject)处于整个层次结构的最上层,它表示的是构件库中管理的对象,因此,是所有元素的父元素。CLObject包含了模型中所有元素所共有的属性:名称(Name)和用来唯一标识元素的ID。
综合以往的各种模型,模型中必需包含的基本元素有:构件库(Library),构件库用户(User),构件库中的软件资产(Asset)及资产的构成成分(Ingredient)。另外,构件库中的各种元素往往满足某些约束或属于某种分类框架,可以利用这类信息更好地描述各种元素。为此,CLM定义了规约元素(Specification)来表示约束和描述机制。而引用规约元素则包含了对Specification的各种实例化信息。
(1)Library元素
Library元素记录是构件库自身所包含的信息,来帮助用户对整个库有概要性了解。在Library中,包括了对外提供的访问构件库的地址。为了对构件的入库和管理进行指导,Library元素通过一些文本类型的属性提供了介绍性的信息,包括关于构件的验证方法、构件库的度量原则和库的分类机制。
(2) User元素
构件库用户使用User元素进行描述,它记录用户的各种联系方式(如Address、Fax等)和登录相关的信息(LastLoginTime,Password等)。
Library元素和User元素之间的Contacts关系表示该用户是构件库的联系人。User元素与Asset元素和Specification元素间的IsPublishedBy关系表明用户是构件库中软件资产和规约的发布者。
(3) Asset元素
Asset元素表示构件库中的构件和其他有用的各类软件资产。它包含了软件资产的版本相关的信息、实现工具及对外界依赖相关的信息以及与使用相关的信息。
(4) Ingredient元素
Ingredient元素描述资产成分的类型和格式。另外,对于Web Service等服务型式构件,构件库中并不存放构件的实现体而是提供构件的访问点。
(5) Specification元素
Specification描述构件库中的规范和约束等信息,它包含描述信息和相关联的远端描述和使用说明。
(6) ReferencedSpecifications元素
ReferencedSpecifications元素包含对Specification的各种实例化信息的引用。它是CLObject的组成部分,用来具体描述元素。
3.分类法描述部分
构件的有效分类对于构件的检索和获取起着非常重要的作用,是软件復用成功的关键。在构件分类的方法中,有四种常见的分类法: 关键词分类法、属性-值分类法、枚举分类法和刻面分类法。CLM将分类法元素进行扩展,将四种分类法同时引入。同时将四种分类法使用的术语/值或关键词也引入到模型中,并和相应的分类法建立整体—部分关系,能够为构件提供分类信息的描述,能满足不同场景的需要。这些术语或关键词属于构件库需要管理的对象,但是不能视为软件资产或资产的成分,因此,它们直接继承CLObject。
4.关系描述部分
构件关系不仅可以用于有效地组织构件,也是软件开发中可以使用的有效信息,更是软件体系结构中的基本元素。因此,构件库也需要管理与维护构件关系。传统的构件库模型中往往缺乏对关系表示的支持,或者是由构件库提供一些预定义的关系类型来对构件关系进行描述。用户仅能依赖预定义的关系类型来建立构件之间的关系,这样不易于为构件关系的描述提供灵活的支持[6]。
CLM将构件之间的一个具体的关系称为关系实例(RelationInstance)。不同的关系实例可能具有相同的属性和表示。因此,可以把它们抽象为同一类型的关系,并用关系类型(RelationType)来进行描述。同样,不同的关系类型可能隶属于相同的应用范畴,CLM利用关系空间(RelationSpace)来界定不同的应用范围。
在构件库中,用户可以针对不同的应用领域建立独立的关系空间,并在该关系空间下建立起一系列适用于该领域的关系类型。最后,引用这些关系类型来定义关系实例并描述构件关系。这样就可以清晰、灵活地描述构件间的关系。
使用上述的关系表示模型不仅能够清楚描述构件的关系,还能够为构件库中的实体之间的关系提供统一的描述。基于本模型来管理关系的构件库可以支持用户自定义关系类型,并且支持关系类型的定义和关系实例使用相分离的管理模式,使关系管理具有更大的灵活性,从而具有较高的可扩展性。 5.针对Internet常见资源进行的扩展
利用CLM的扩展机制来给出针对Internet常见资源进行的扩展,主要包括在模型中加入新的元素,以及加入新的元素属性。
在收集Internet上各类资源的过程中,除了构件本身之外,构件往往还会有相应的示例信息、配置管理信息、作者信息、项目信息和错误跟踪管理信息。这些信息对于开发人员了解、使用构件也有着很重要的作用。因此,针对Internet上构件关联的各类资源,本文在CLM的基础上增加了五个元素,这五个元素均继承了Ingredient元素。
DocumentationInfo记录构件的说明信息,起到了构件使用说明的作用。这些说明信息在复用者使用构件的过程中,可以起到说明书的作用,帮助复用者完成任务。DocumentationInfo元素中记录了名称信息,关于该元素的概述信息,以及更为详细的参考信息。
BugInfo记录构件相关的错误跟踪管理信息,包括了该构件在版本演化过程中出现的各种Bug。通过这些信息,复用者可以了解该构件目前还存在哪些未修订的错误,还可以利用己修订的Bug来掌握如何修订错误、避免在开发过程中出现类似的错误。考虑到一个构件在演化过程中会出现若干Bug,一个Asset元素可以关联任意个BugInfo元素。
复用者在使用构件的过程中,经常会希望能从构件的开发者处获得支持。通过构件开发人员的信息,也有助于帮助复用者从可信性和可靠性的角度出发来了解构件,挑选构件。因此,CLM中同样加入了关于构件开发者信息的元素AuthorInfo。在该元素中,包含了作者的姓名,作者的email,作者在配置管理系统、错误跟踪系统中注册的ID以及关于该用户的描述性信息。
从Internet上收集的一些构件属于开源项目,关于这些项目的介绍同样可以对复用者选择、使用构件有帮助。CLM加入了对开源项目信息进行描述的ProjectInfo元素。该元素中包括了该构件所属项目的名称,所在的网址以及对该项目进行简要介绍的描述性信息。
6.总结
隨着软件复用和Internet技术的发展,在Internet上可用的构件的数目日益增多,种类也日益丰富。为了利用Internet上的构件来促进软件复用的进行,需要提供一种高效的构件收集机制,而且需要提供信息模型来描述Internet上的各类资源。本文提出了一种结合Web搜索引擎和对特定网站抓取的信息获取方法,并针对Internet上的资源情况,给出了可扩展的数据模型CLM。CLM既囊括了描述构件的各种基本元素,又根据Internet上的情况,增加了新的元素,丰富了构件的描述信息,为复用者检索、了解、使用构件提供了支持。
参考文献:
[1] 郭玉辉 软件构件库检索优化工具的设计与实现[D] 北京大学硕士论文 2010/5.
[2]郑晓霞 一种支持多构件库的服务检索与选择方法[D]北京大学硕士论文 2010/5.
[3]曾祥勇 王睿 基于对等网络的构件库互联设计 计算机工程与设计[J]2011/4.