APP下载

关于构件复用技术的探索

2013-08-15程海水

江西广播电视大学学报 2013年2期
关键词:连接件文档构件

程海水

(江西广播电视大学 江西 南昌 330046)

一、引言

软件复用(softreuse)是指在开放软件过程中,为提高效率,降低成本,充分使用原有的经验、思想、方法和产品的一系列活动。

现阶段,软件复用研究主要集中在构件技术上,构件技术对传统的系统开发方式产生了巨大的影响,以其分布性、开放性、可配置性、高效性、易维护性等优点得到了计算机软件行业人士的充分认可。构件技术通过分析行业领域或者一组相似系统,从中提取可以共享的资源,开发成独立部署的成品,供软件开发者使用,避免软件开发者一切从零开始,大大降低了开发成本,提高了开发效率,有效地缓解了软件危机问题。

二、构件的概念

软件复用的思想,如子程序、函数等为早期的软件开发人员提供了一种便捷的方法,节省了时间和资源。但是随着信息技术的不断发展,原有的软件复用技术已经远远不能满足软件开发需要,软件危机随之而来。为了解决软件开发成本高、周期长、维护难等问题,1968年NATO软件工程会议上首次提出了构件技术。

目前对构件的定义还没有一个统一的描述。比较有代表性的是Szyperski提出的构件定义:“软件构件是一个仅带特定契约接口和显示语境依赖关系的组合单元,软件构件可以独立部署,易于第三方组装”。本人研究各种有代表性的定义后,认为构件是指软件开发中能够独立部署并被其他系统复用的单元,它可以小到一段二进制代码、一个图,也可以大到系统分析、文档、包,甚至是子系统等等。可复用的构件应该具有可定制性、自我描述性、有用性、易读性、兼容性、移植性等特点。

构件的接口、实现、契约(contact)是相分离的,用户可以根据需要对构件的属性进行修改从而满足用户的特定需要(可定制性)。同时,构件需要达到一定程度的自治,也就是说构件不需要作大的修改就可以换到另外一个运行环境中使用。

构件可以根据各种不同的角度进行分类,主要是可以按照复用方式、使用范围、粒度大小、复用状态、功能用途等角度进行分类。比如,按照构件复用方式可以将构件分为即插即用的黑匣构件和编辑使用的白匣构件;按照功能用途可以将构件分为在集成环境中使用的系统构件、在构件库管理中使用的支撑构件和专用的领域构件;按形态将构件可分为分析构件、设计构件、编码构件和测试构件。

三、构件相关的技术

1.接口技术

构件作为一个独立部署的单元,它对用户来说是透明的。构件只提供接口给用户使用,而无需让用户了解构件内部结构和实现代码。接口是构件和用户之间交互的桥梁。

2.连接件(connector)和角色(role)

连接件表示构件之间的交互。连接件作为构件之间的交互工具,他既可以表示方法调用这种简单的概念,还可以表示抽象连接,如客户和数据库服务器之间的SQL连接。和构件一样,用户无需知道连接件的内部构造。正如构件通过接口与外部交互一样,连接件通过一组角色(role,即接口)与外界环境进行交互。例如,二元连接件(binary)方法调用就是一个带有调用者(caller)和被调用者(callee)两个角色的连接件。

3.构件和对象的比较

构件技术的提出很大一部分是源于面向对象程序设计技术,构件借鉴了对象的封装、继承等许多先进思想。因此构件和对象许多共同点,比如封装属性、继承性、复用性、提供接口、定义与运用相分离等。构件与对象的区别在于构件比对象的定义更广、更大。面向对象的复用一般都是指对类库的复用。而构件复用可以适用很多情况,它可以是代码、思想、设计图等。另外,为了复用某一个对象类,需要熟悉特定的语言,比如C++,Java等。而构件则不需要,构件不需要知道内部实现机制,也不需要知道采用何种编程语言,使用何种平台。构件适合描述服务和系统功能,而对象适合描述功能及其问题域。构件的接口一般也会比对象复杂得多。

四、构件模型

构件模型是构件开发的核心,是构件开发与应用的交汇点,既是构件技术研究的主要内容和成果,又是构件技术运用于实际应用系统开发的主要依据。目前学术界和产业界流行的构件模型主要有从概念 (Concept)、内容(Content)和语境(Context)三个不同的方面来描述构件的3C模型、基于构件刻面分类和检索的REBOOT模型、基于面向对象系统,便于使用面向对象建模语言UML来描述构件内部的动、静态结构、状态变化过程的FRISCO模型、以及杨芙清院士等人提出的更多关注构件易理解性、封装性及构件关系的青鸟构件模型。

五、构件的评价

目前第三方构件众多,如何选取性能优越同时又适用的构件越来越受到大家的关注。一个好的构件可能本身就是一个功能强大但又复杂的软件。想要充分有效地使用该构件,需要深入了解构件的功能和属性,特别是构件的接口。这并不是一件非常容易的事。因为一个功能强大,结构复杂的构件,它的接口一般拥有上百个API调用,即使是开发该构件的程序员可能都很难完全了解每个API。同时,构件的开发者可能提供的文档不够全面或者存在错误,想要用文档全面、正确地描述构件同样不是能够轻易完成的。即使能够做到,这个文档也一定是一个庞大的、一般用户难以理解的文档。

那么如何能够科学地评价一个构件的好坏呢。构件的评价取决于很多特定因素和需求,所以不可能有标准的评价体系和指标。本人借鉴统计代码行数、Halstead方法、Albercht功能点方法等传统软件的评价方法,认为可以主要通过以下几个指标对构件进行评价:一是用户查找该构件的次数,即检索次数。此指标反映了构件的可识别复用的特征;二是构件实际被复用的次数;三是构件的修改次数,修改得越少,说明构件设计的越合理;四是构件的复杂度,复杂度越低越容易被用户所接受;五是构件的可靠性,出错率越低可靠性越强;六是构件的耦合率,耦合度越小,构件的独立性和封装性越好;七是通用性,可复用的范围越大,通用性则越好;八是构件的接口,接口应该清晰、简洁、干净。

六、构件的管理

要真正使用构件技术去开发系统,则需要数量庞大的构件群。如何管理这些数量巨大的构件,使这些构件的获取、检索、组装等操作方便、有效则显得非常重要。构件库就是满足这种需要的一种工具。它是按照一定的语义和规范的组织结构形成的构件集合。它为系统开发提供共享构件资源和管理。软件开发人员要想利用构件技术进行系统开发则必须懂得使用构件库,因为构件库为构件编译、测试、开发、检索、维护、组装等操作提供了管理平台。

猜你喜欢

连接件文档构件
钢筋混凝土构件裂缝控制
浅谈Matlab与Word文档的应用接口
制作吸管塔台
有人一声不吭向你扔了个文档
专利名称:二硅化钼基陶瓷加热元件保持结构
西夏建筑构件——鸱吻
Word文档 高效分合有高招
基于试验设计的汽车悬架轻量化设计
钢-混凝土组合梁开孔板连接件抗剪承载力计算研究
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat