计算机软件构件复用属性规范

发表于:2008-02-20来源:作者:点击数: 标签:软件构件复用
本规范参照国家《质量管理和 质量保证 标准第三部分: GB/T 19001-ISO9001在软件 开发 、供应和维护中的使用指南》GB/ 19000.3-1994 ISO 9000-3-1993,国家《信息技术 软件产品评价 质量特征及使用指南》GB/T 16260-1996,和美国《NATO可复用软件构件库标
本规范参照国家《质量管理和质量保证标准第三部分: GB/T 19001-ISO9001在软件开发、供应和维护中的使用指南》GB/ 19000.3-1994 ISO 9000-3-1993,国家《信息技术 软件产品评价 质量特征及使用指南》GB/T 16260-1996,和美国《NATO可复用软件构件库标准》,并具有与《青鸟构件规范》的一致性。

    1 目的

    本规范为实施《青鸟软件生产线技术的引进、开发、应用和示范工程》而规定以构件复用为目的的构件属性的定义方法。

    2 适用范围

    本规范适用于计算机软件构件的评价、收集、整理、分类和构件在可复用构件库的登录、查找、修改与撤消。

    3 术语

    3.1 构件 ( Component)

    广义定义:构件是计算机软件构件的简称,是在软件生命周期各阶段可以被复用的软件实体,它可以是设计、代码或软件开发过程的其它产品。如可组装的软件、程序模板、程序的原代码或目标模块和软件需求说明、规格说明、程序说明、数据说明、测试说明和测试案例等软件成分。“复用”指在同一系统的其它地方或另一个系统中使用已有的软件构件 [1] 。

    狭义定义:软件构件是具有公开接口和确定意义的可被组装的软件制品。它可以不加修改或者基本不加修改地作为一个部件和其它构件一起组装成更大的软件或软件成分 [2] 。

    3.2 构架 ( Framework)

    构架是计算机软件构架的简称,是可以复用的、需要再扩展才能实现的“半完成”的软件 [3] 。构架提供应用域的可扩展的模板 [4] ,它具有完整的结构、基本元件和明确说明接口的组装其它构件或程序的扩展点 [5] 。构架也是一种构件,可以被组装。本规范用构件的狭义定义区分构件与构架。不加区分时“构件”术语的广义定义包含了它的狭义定义。

    扩展点是构架中允许被替换、被修改的功能或程序体位置的明确标识。

    3.3 构件的连接关系

    一个构件直接与其它构件的继承、关联、访问、存取、引用或通信关系。构件的连接关系有继承关系、聚合关系、联合关系和数据流关系。构件的连接关系简称“连接关系”。

    3.3.1 继承关系

    继承关系是面向对象的构件的“一般和特殊”关系。通过继承,一个类可以共享另一个类(单一继承)或多个类(多重继承)的结构、属性和方法 [6] 。

    3.3.2 聚合关系

    聚合关系是构件的“整体和部分”关系。通过聚合,被聚合的构件作为成员组装到聚合构件中,聚合构件应该有方法建立聚合构件和所有被聚合构件的动态的或逻辑的整体一致性 [7] 。聚合构件和被聚合构件可以是面向对象方法的实例或结构化方法的函数。结构化方法的模块结构用聚合关系表达;文档构件的组合和引用也用聚合关系表达。

    3.3.3 联合关系

    联合关系表达构件之间的联系。“联系”可以是一个构件对别的构件(单向)或者是相互(双向)的关联、访问、存取、引用和通信,聚合关系是一种“强”联合关系 [8] 。为区分聚合关系与联合关系,本规范约束联合关系仅表达( 1)数据结构的关联(如E-R关系);(2)对象的指向关系(一个对象作为另一个构件的方法或函数的参数被引用);(3)文档构件参考资料的指针(参考符)。

    3.3.4 数据流关系 [9]

    数据流关系是基于对象数据流图的一种联合关系,表达对象之间的功能信息关联。同时支持结构化方法和面向对象方法的系统分析与设计。数据流关系用联合关系中的对象的指向关系实现。

    3.4 构件的包含关系

    如果构件 A被组装到构件B中,并且A或者A的成员可以被构件B所使用,则称构件B包含构件A。本规范定义,构架和构件可以互相包含;面向对象方法的构件和结构化方法的构件也可以互相包含。可复用构件库的结构服从本定义。

    3.5 构件属性

    3.5.1 说明属性

    综合说明构件的名字、来源、版权信息、版本历史和构件的应用领域、构件类型、开发工具、开发方式、运行环境、主要功能和 可 复用的程度,以及构件查询的关键字。

    3.5.2 使用属性

    说明构件的应用领域、表达形式、服务类型、开发方式、开发工具、运行环境、可复 用程度 、被使用的次数、被修改的次数,以及技术、经济或法律的约束条件。

    3.5.3 内容属性

    内容属性包括构件体和构件的连接关系。 构件体即构件 本身的内容(程序或文档),不包括该构件所复用的其它构件;构件的连接关系说明该构件复用其它构件的连接关系类型(继承、聚合、联合、数据流),不包括构件体内部的“类”或函数间的关系。

    3.5.4 结构属性

    定量说明构件的结构特征。它包含构件的服务数、内聚、耦合、结构层数、继承、聚合、函数调用等因子。它支持面向对象方法、结构化方法或二者混合方法开发的构件的结构描述。

    3.5.5 评价属性

    本规范推荐应用 Albrecht复杂度、COCOMO 2.0复杂度和DeMarco复杂度从构件的功能组成角度评估构件的复杂度,用McCabe复杂度和Dhama内聚度从构件内部的程序结构角度评估构件的复杂度。构件的复杂度评估,对于评价构件的质量和预测构件开发、复用、测试、维护的工作量和难度有重要意义。

    3.5.5.1 功能复杂性 [10]

    功能复杂性是从构件的规格说明与设计通过构件的功能性来度量构件复杂度的因子。功能复杂性是针对 4GL的出现以至不能用简单的代码行 作出 前述评估而提出的。有三种典型的评估模型可以用于结构化方法、面向对象方法或者混合方法开发的构件功能复杂性评估:

    Albrecht复杂度 [11] ,是基于应用(软件或系统)所含的功能和技术要求计算“功能点”的软件复杂性度量。它给出外部输入、外部输出、交互输入、外部文件和内部文件五类三个尺度(简单、平均、复杂)共15个因子计算“非可变功能点复杂性”(UFC,Unadjusted Function point Complexity),又给出14个技术因子计算“技术复杂因素”(TCF, Technical Complexity Factor),“功能点”(FP, Function Point)等于UFC和TCF的乘积,是复杂度评估的基准。

    COCOMO 2.0复杂度 [12] ,是组合进“对象点”(OP, Object Point)、“功能点”和“源代码行”(LOC, source Line Of Code)度量覆盖软件生命周期的复杂度度量模型。Boehm推荐应用“对象点”于应用组合(Application Composition)阶段或原型工程,应用“功能点”和“源代码行”于应用开发(Application Development)阶段。“对象点”OP的计算统计应用中所含的屏幕数、报告数(Reports)和3GL构件数,每一种都带有“简单”、“中等”、“困难”三级复杂性权重。引入“复用率”R%,新开发的“对象点”NOP = OP×(100-R) / 100。如果应用“对象点”和“功能点”于同一系统复杂性的早期评估,“对象点”的计算量大约是“功能点”计算量的47% [10] 。

    DeMarco复杂度 [13] ,是基于结构化分析与设计的复杂性度量。它区分应用系统为“功能强”的系统或“数据强”的系统。“功能强”的系统复杂度是基于数据流图(DFD)依据功能类型加权计算系统所含有的功能对象数和功能对象内的输入/输出数据项数;“数据强”的系统复杂度是基于实体关系图(ERD)依据数据实体的关系数加权计算系统所含有的数据实体数。DeMarco建议用数据对象间的数据连接数与功能对象数的比值区分“功能强”的系统(小于0.7)或“数据强”的系统(大于1.5),或是“中性”的系统(0.8和1.4之间)。

    3.5.5.2 结构复杂性

    结构复杂性是通过构件内部的程序结构对构件的结构复杂度进行度量的因子。 McCabe复杂度 [14] 是典型的适用于结构化方法、面向对象方法或者混合方法开发的构件结构复杂性的评估模型。

    McCabe复杂度映射一个程序成为一个图,程序的“基本结构复杂度”为判定节点数加1。基于此,McCabe定义了层次化引用构件的程序的结构复杂度:(1)顺序执行构件的程序结构复杂度等于顺序系列中所有构件的结构复杂度之和减去构件数再加1;(2)嵌套调用构件的程序结构复杂度等于程序的“基本结构复杂度”加上所有被调构件的结构复杂度之和再减去被调构件数。McCabe复杂度是NATO推荐的构件结构复杂性度量模型。对于继承复用,本规范规定 不计入被继承 构件的复杂度,但被继承构件在被度量构件内部参与运算的方法作为被度量构件的组成成分被度量。

    3.5.5.3 Dhama内聚度 [22]

    Dhama内聚度根据方法或函数的接口参数、全局变量、“扇入”、“扇出”等评估方法或函数的内聚度。Dhama定义内聚度M c 为M c = K/(d i + 2c i + d o + 2c o + g d + 2g c + w + r)。这里,数据耦合和控制耦合参数d i 是输入参数 数 、c i 输入控制参数 数 、d o 是输出参数 数 、c o 是输出控制参数 数 ,全局耦合参数g d 是全局变量数、g c 是全局控制变量数,环境耦合参数w 是被调用的函数 数 、r是调用的函数 数 。常数K=1。控制类参数 引起引起 条件转移,加权2。

    4 属性描述语言

    属性描述采用巴科斯范式( BNF,Backus Normal Form)描述,本规范使用的描述符号意义如下:

    :: = 定义符,意为“定义为”。

    + 连选符 ,符号两边的内容必须选取(可省略,省略时自然连接的内容必须选取)。

    | 选择符,符号两边的内容选择其中一个。

    [ ] 任选符,符号内用分隔符分隔的内容可选一个、多个或者不选。

    … 重复符,符号前任选符包含的内容可以重复一个或多个,或者不重复。

    < > 待定义符,符号内的内容需要再定义。

    “” 复用定义符,符号内的定义被继承。

 

原文转自:http://www.ltesting.net