过河的卒子

我们都是过了河的卒子,不能回头!!!
构件库概说

       软件复用对于提高开发效率和软件质量有着巨大的发展潜力,目前的热点之一是提供验证合格的构件,也可以说软件复用可以通过恰当的使用构件库得以实现。在构件库支持下,软件工程师应该能够“取众家之长”,避免开发已有的软件。

一.   构件库的角色

 

如果说软件复用是“the commnication of ideas and outcomes between software engineers”(软件工程师之间交流思想和成果),那么构件库除了存储和管理构件之外(普通数据库的作用),关键是在构件的创建者和使用者之间架起一座“理解构件含义”的桥梁。

1 构件库的“桥梁”作用

 

在图1中,设计模型(design model)是设计者对构件的描述,对于相同的构件,不同的设计者可能采用不同的设计模型;使用模型(use model)是使用者通过构件库而获得的对构件的认识,同一个构件智力模型对不同的使用者可能会产生不同的使用模型;构件智力模型(mental model)是构件库中设计模型和使用模型的交换和转换的方法,它统一了对构件的认识和表示,减少构件设计模型和使用模型之间的误差。

因此,构件库的本质问题是如何建立构件的智力模型,从而用精确的方法表达构件的语义,使CBD过程中构件能够得到正确的理解和复用。

CBSE/CBD是以构件库为中心的开发模型,构件库是领域工程和应用工程两个开发过程的的桥梁。构件库系统当然是一类数据库管理系统,它具备数据库的基本特征和功能,为了向基于构件的应用系统开发提供的构件,构件库管理系统必须能够存储构件和构件相关信息:

构件的语义描述(Description):描述构件功能和用途,精确定义构件语义;

构件的分类(Classification):对构件相同特征的聚类;

构件的形态(Form):构件的类型,广义构件包括类、类树、框架、模块等;构件的技术环境,包括构件的开发工具、配置方法和部署环境等;构件的形式:包括源代码、二级制代码等;

构件的状态(Status):版本、历史等时间相关构件的属性。

为了能够管理和维护构件信息,构件库管理系统必须能够提供如下的操作:

构件的添加(insertion):主要是构件的测试和认证方法,只有合格的构件才能添加到构件之中;

构件的检索(Retrieval):也就构件的需求匹配,与一般的数据库不同,构件匹配通常不能得到完全满意的构件,对与需求相关或相近的构件,需要通过适配使之满足需求;由于构件的粒度不同,需求问题分解和构件合成是两种配合检索的方法。

其他构件库管理手段:构件的删除、备份、用户登记和存取控制、使用跟踪和统计分析、异构构件库的连接等。

[例1]青鸟构件的登记表格中有下列属性:

1 名称:每个构件都必须有一个确定的名称,该名称必须完整地标识了该构件的本质。如stack , resource manager等;

2 作者:即制作或提供该构件的单位或个人的名称,以及联络地址等相关信息;

3 制作日期:即构件制作的完成日期;

4 入库日期:即构件进入构件库的日期;

5 版本号:即该构件在一组构件演化系列中相应的版本号;

6 使用环境:即使用(包括理解/组装/修改)该构件时必须提供的硬件和软件平台。如所需的特定的硬件环境、操作系统、数据库平台和网络环境等;

7 应用领域:即该构件原来或可能被使用到的应用领域(及其子领域)的名称。如MIS,CAI等;

8 用途:即该构件在被应用的领域中所发挥的作用;

9 功能:即该构件在原有或可能的软件系统中所提供的软件功能集;

10 表示方法:即用来描述该构件内容的语言形式或媒体。如源代码构件所用的编程语言等。

11 形态:即该构件的组成成分及其相互关系。如类、类树、框架、模块等。

12 层次:即该构件相对于软件开发过程阶段的抽象层次。如分析、设计、编码等。

13 上下文环境:即该构件在组装时系统所必须提供的程序级上下文环境。

14 尺寸(size):即该构件的大小。

15 创作工具:即构件的制作者在制作该构件时所使用的软件工具。

 

由此可见,构件库理论研究的重点是构件分类与检索,即研究构件分类策略、组织模式、检索手段和构件相似性分析。

二.  构件库的分类方法

 

构件的分类和检索机制的研究一直是构件库研究的热点,目前有很多方法,从构件表示出发可以分为人工智能方法、超文本方法和信息科学方法三类;而根据复杂度和检索效果的不同则可以分为基于文本的、基于词法描述子的和基于规约的编码和检索。信息科学方法是实际复用项目中应用较为成功的一类,并且以枚举、刻面、属性值、关键词和正文检索几种方法较为常见,目前最著名的枚举模式(Enumerative schemes)是1876Melvil DewayDeway Decimal clasassification (DDC),层次分类模式(Hierarchical classifcation schemes)是另外一种常见的分类方法,它用“自然的”或“逻辑的”方法把每个主题划分为多个分区,最大可能地把相似主题的条目项聚类到一起。

通常一个构件库必须包括一组编目(cataloging),一个编目又是一组条目项(entry)的集合,构件库编目的基本要求如下:

伸缩性(flexible):编目要可以改动,保持内容的时效性;

完全性(completeness):编目必须是完全的,即条目项不能有遗漏;

可存取(accessible):全部条目项必须快速和方便的被找到;

经济合理性:创建和维护编目与生成构件相比,需要小得多的投入;

详细性:尽可能描述构件的细节。

构件的分类(classification)是对编目的组织,即把编目中条目项划分到不同的类别。总的来说,分类的目的是“把相关的的条目从一般到特殊地排列成一个合理的队列,分类系统的最终目的是引导获得所需的信息”。

       决定分类模式有下面三个因素:

逻辑安排:对任何分类系统,潜在相关主题的的划分一直是一个困难的问题;

维数:线性分类(例如图书馆)的维数是简单的一维,它无法满足复杂系统的要求,目前的主流技术是覆盖多个主体的多维分类系统;

演化:对大多数分类模式而言,重组分类主题的成本很大。

三.  构件库的设计原则

 

构件库通常会涉及到一个或多个特定的应用领域(domain),在领域问题上构件库必须具备以下三个条件:

领域完整性(domain complete):对于某一领域的构件库,其表述的概念必须覆盖了整个领域,即不能存在属于该领域的构件不能被构件库处理;

领域抽象性(domain abstract):构件库必须按一组关键抽象概念组织起来;

领域标准化(domain standard: 构件库必须按照领域标准设计。

常用的构件库描述语言包括Modula-2, AdaEiffel,分析它们得出如下的共性:

规约和实现分离:为构件的实现包装上功能界面;

统一构件接口:操作和构件的命名遵循统一的标准;

功能完整:每个构件尽可能全面考虑到可能用到的功能。

 

刻面分类(Faceted Classification)方法将关键词(术语)置于一定的语境中,并从反映构件本质特性的不同视角(刻面)对构件进行分类。每个刻面中有一组术语(关键词),术语间由于有一般特殊关系和同义词关系而形成结构化的术语空间。构件的描述术语仅限在给定的刻面之中选取,在术语空间中游历可以帮助复用者理解相关领域,术语空间可以演变。

[例 2]青鸟构件库目前有五个刻面:

l        使用环境(Application Enviroment)

l        应用领域(Application Domain)

l        功能(Functionality)

l        层次(Level of Abstraction)

l        表示方法(Representation)

 

四.  构件库的检索

 

构件检索包括构件发布(Publication)和传播(Dissemination),即通过一定途径让用户获知和了解构件的宣传活动,发布的对象是组织内部、beta用户或整个市场。构件的传播通过互联网或其他商业手段让用户得到构件。目前的检索技术包括按枚举分类(enumerated classification)检索、按刻面( facets检索)、基于框架( frame-based )的检索、自由文本索引( free-text indexing)检索和关系数据库检索技术等,但是,目前尚未有公认的高效、灵活的检索方法。

五.  构件库的实践

 

可复用构件库作为管理软件构件及促进软件复用的核心机制,将基于复用的开发和面向复用的开发过程与工具集成在一个统一的框架中。美国军方与政府已经建立了CARDSASSETDSRS等多个大型构件库系统。

posted on 2008-11-30 11:34  过河的卒子  阅读(344)  评论(0编辑  收藏  举报