要想弄懂CBD(component-based development,基于构件的软件开发)的原理,首先要搞清楚什么是构件(component,也译为组件)。这个问题看起来简单,却是CBD中最难回答的问题之一,因为构件的内涵十分丰富,CBD又处在一个发展阶段,所以出现了许多不很一致的构件定义,也出现许多容易混淆的概念,例如对象、中间件、框架(framework)、构架(Software Archiecture)、子系统(subsystem)、COTS、产品线,下面是一些理论家和实践者们从不同的角度、不同的层次提出对构件看法。
一、构件的描述性定义
(1)著名的Brown和Wallnau描述构件为“一个非平凡的、几乎独立的、可替换的系统组成部分,它在定义完善的体系结构环境中实现某一清晰的功能”(a nontrivial, nearly independent, and replaceable part of a system that fulfils a clear function in the context of a well defined architecture)。同时他们进一步认为软件构件只能是“一个说明了合同并且明显地与语境无关的组合单元”(A unit of composition with contractually specified and explicit context dependencies only”)。
(2)Clemens认为:构件是一个独立部署的的单元,是一个第三方合成的单元,构件没有一致性的状态(A component is a unit of independent deployment .A component is a unit of third-party composition. A component has no persistent state).[见《构件是什么,不是什么》]
(3)OMG的定义更通俗、详细一些,在Modeling Language Specification(Revision1.3)写道:构件是一个物理的、可替换的系统组成部分,它包装了实现体且提供了对一组接口的实现方法。构件表示了系统实现体的一个物理片段,包括软件代码(源代码、二进制代码或可执行代码),或者等同体,例如脚本或命令文件。由之,构件自身必须相容于接口且实现接口,接口表示了驻留在构件内的成分所实现的服务。这些服务定义了的一个整合的行为,从一些构件实例提供给其它客户端构件实例。UML里,构件是一个分类器(classifier),是一个建模成分的聚集,它也许实现了接口,有着可执行行为和状态,在执行时驻留在一个节点上。
(4)Gartner Group定义:运行时软件构件是一个可动态绑定的、含一个或多个程序的软件包,它作为一个独立单位,通过运行时可辨别的文档化接口加以管理和存取(A runtime software component is a dynamically bindable package of one or more programs managed as a unit and accessed through documented interfaces that can be discovered at runtime.)。
(5)BertrandMeyer定义了构件的七个条件,
a.也许被其它软件成分使用(客户)。
b.也许客户的使用并不干扰构件的开发者。
c.包括以来的全部说明(硬软件平台、版本、其它构件)。
d.包括它提供功能的精确说明。
e.说明是它的唯一使用依据。
f.可以和其它构件合成。
g.可以快速且平滑地集成到系统。
二、构件的理论模型
理论上,一直没有停止对构件模型的争论,有代表性的理论模型包括:
(1)3C模型
3C模型是学术界普遍认同的一个具有指导性作用的构件模型。该模型从概念(concept)、内容(content)和语境(context)三个不同方面来描述构件。
*概念 关于“构件做什么”的抽象描述,可以通过概念去理解构件的功能。概念包括接口规约和语义描述两个部分;
*内容 概念的具体实现,描述构件如何完成概念所刻划的功能;
*语境 构件和外围环境在概念级和内容级的关系。语境刻划构件的应用环境,为构件的选用和适应性修改提供指导。
(2)REBOOT模型(刻面模型)
REBOOT模型是基于已有软构件的一种刻面分类和检索模型,从各个角度,即刻面(Facet)刻画软构件属性。
(3)青鸟模型
北京大学青鸟工程以三个视角(形态、层次和表示)和九个方面定义构件模型。
(1) 概念 :对构件功能的抽象描述。
(2) 操作规约:用来指称构件对外提供的、可被请求的服务。
(3) 接口:给出了构件的对外行为描述。
(4) 类型:用于定义“什么值可用作为操作参数”。
(5) 实现体:这是构件的具体实现部分,是实际完成被请求服务的系统。
(6) 构件复合:构件通过复合组成系统。
(7) 构件性质:指明构件的形态、层次和表示。
(8) 构件注释:描述和构件库相关的其他性质。
(9) 构件语景:描述构件的软、硬件使用环境和实现依赖。
青鸟构件模型更多地关心构件的易理解性、封装性及间关系,通过给构件提供明确的对外接口实现服务提供者和其服务请求者的分离,更多地关心构件及其使用者间的交互,特别是对构件使用者有意义的部分。
分享到:
相关推荐
### 软件构件测试技术的一般方法与模型 #### 构件与构件软件 软件构件是一种具有相对独立功能的软件实体,它可以在软件系统中被明确地辨识出来,并通过接口与外部进行交互。构件软件是指由多个这样的构件组装而成...
什么是构件? 构件是系统中某一一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口。从面向对象的观点来看,构件包括一个协作类集合;从传统观点来看,一个构件就是程序的一个功能要素,程序有...
首先,我们需要理解什么是构件化体系结构。在计算机科学中,构件化是一种系统设计方法,它将系统分解为若干个可以独立开发、使用和替换的构件。每个构件可以完成特定的功能,而且各个构件之间通过标准的接口进行通信...
UML 构件图 UML(Unified Modeling Language)是 software engineering 中的一种标准化的建模语言,用于描述软件系统的结构、行为和其他方面。其中,构件图(Component Diagram)是 UML 的一种图形化模型,用于描述...
面向构件的软件开发 确定业务范围和框架 确定应用环境和技术 选择开发平台 建立构件化开发体系 建立构件库
在IT行业中,构件模型(Component Model)是一种软件开发方法,它允许开发者将应用程序分解为可重用的、独立的功能单元,这些单元被称为构件。构件模型促进了软件的模块化,提高了开发效率,降低了维护成本,同时也...
软件构件技术是现代软件开发领域中的重要组成部分,它代表着软件工程的一种进化,是从传统的面向对象编程向着更加模块化、可重用和标准化方向发展的重要里程碑。面向对象技术为软件构件提供了基础,但构件技术更注重...
基于构件的软件开发技术 本文以某公司生产经营管理系统为例,探讨了基于构件的软件开发问题。该系统是一个集原料采购、生产管理、物流管控等七大功能于一体的综合信息系统。在系统的开发过程中,作者担任系统架构师...
在IT行业中,构件库是一个非常重要的概念,尤其在软件开发领域。构件库,又称为组件库或模块库,是存储可重用软件组件的地方。这些组件可以是代码库、类库、函数库、服务或者任何其他形式的软件单元,它们能够被...
### UML构件图详解 #### 一、构件图概述 **构件图**是UML(统一建模语言)中用于描述系统中各个物理组件及其相互间依赖关系的一种图形表示方式。这种图主要关注于系统中可部署的物理部分,即构件。 **构件**是指...
适合人群:使用 TEKLA 软件的工程师和技术人员能学到什么:TEKLA 导出的 rpt 文件包含完整的构件统计信息,可以转成多种格式分享和使用。这可以方便构件信息的处理和分析。阅读建议:通过学习 TEKLA 的构件统计清单导出...
### SOA SCA服务构件架构Spring构件实现方案 #### 一、引言 随着企业级应用的日益复杂,传统的单体应用已经难以满足快速变化的业务需求。面向服务的架构(SOA)作为一种灵活的服务组织方式,通过将复杂的业务功能...
TEKLA构件材料表,TEKLA构件材料表,TEKLA构件材料表,TEKLA构件材料表
类构件基于面向对象编程,对象构件是已实例化的类构件,子系统构件是较大的软件组件,框架构件提供了一种结构化的方式来组织和连接其他构件。 3. 构件标准:为了促进构件的复用,业界发展出了一系列构件标准,如...
小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件...
常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程...