5 构件属性
5.1 说明属性
构件说明属性:: = < 构件名字 >< 构件来源 >< 版权信息 >< 版本历史 >< 内容摘要 >< 关键字 >
< 构件名字 > :: = 英语名字且唯一+汉语名字
<构件来源>::= 构件提供者 [+联系人+联系方式+构件提供日期]
< 版权信息 > :: = < 作者名字 >< 版权所有者名字 >< 版本号 >< 出版日期 >< 收录日期 >
<版本号>::= 版权所有者定义的版本号 | CALyymmdd99 [注: 本室版权 编码]
< 收录日期 > :: = 收录进构件库的日期
< 版本历史 > :: = 文字说明,用逗号“,”分隔的本版本前的版本号系列。
< 内容摘要 > :: = 文字说明,描述构件的应用领域、构件类型、开发工具、开发方式、
运行环境、主要功能和 复用 程度。
<关键字>::= 说明构件的应用领域、类型和重要功能的4个左右的英文词。
5.2 使用属性
构件使用属性::= <应用领域><构件形式><构件类型><开发方式><开发工具>
<运行环境><复 用程度 > [10] <使用次数><修改次数><约束申明>
<应用领域>::= [公共 | PUB] | [办公自动化 | OA] | [电子商贸 | EC] | [其它 | OTHER]
<构件形式>::= <文档 | DOC>|<源码 | CODE>|<二进制 | BIN>|<工程 | PROJ>
<文档 | DOC >::= <规格说明 | RSD> | <设计说明 | DAD> | <实现说明 | IMD>
| <测试案例 | TCD> | <使用说明 | UD> | <工程书 | PJD>
<工程书 | PJD>::= [规格说明,设计说明,实现说明,测试案例,使用说明]
<源码 | CODE >::= 程序的源码形式,参见《构件的程序写作规范》。
<二进制 | BIN >::= <DLL>|<LIB>|<ActiveX>|<CORBA对象>|<其它>
[注:构件的二进制形式可以通过对<源码 | CODE >的封装、编译而来。如果要编译为LIB(静态库),只要简单的更改源程序的make文件中的输出部分即可。对于Windows平台而言,如果要编译为DLL,只要增加一个定义文件,如interface.def,在其中定义要公开的函数名称即可。如果要编译为ActiveX,可以使用VC中的ActiveX向导生成一个具有相同接口的空ActiveX 控件 ,然后使用源码构件的接口定义ActiveX的接口。如果要编译成CORBA对象,需要使用OMG IDL定义接口,然后使用IDL编译程序得到根程序和程序框架,然后使用源码构件的界面实现CORBA对象。]
<工程 | PROJ >::= [文档,源码,二进制]
<构件类型> [15][16] ::= <人机界面 | HIC>|<任务构件 | TMC>|<数据访问构件 | DMC>
|<数据库接口 | DIC>|<子系统 | SUBS>|<应用系统 | APPS>
<人机界面 | HIC >::= GUI的“类”、函数、窗口、Web页面、演示等。
<任务构件 | TMC >::= 在人机界面和数据库接口之间的 中间件 。
<数据访问构件 | DMC >::= 支持SQL操作(如增、删、修、查等)的构件。
<数据库接口 | DIC >::= 驱动数据库管理系统命令 ( 如连接、断开、事务、回
退、访问等 ) 执行的构件。
<子系统 | SUBS >::= 应用的子系统程序包。
<应用系统 | APPS >::= 应用系统程序包。
<开发方式>::= [面向对象 | OO ] | [结构化 | SD ] | [混合 | MIX]
<开发工具>::= 说明主要的构件开发工具、开发环境和支持软件。
<运行环境>::= 说明构件运行必须依赖的操作系统、数据库或网络等。
<复 用程度 >::= <完全复用>|< 小修改复 用>|<大修改复用>|<新构件>
<完全复用>::= 构件的所有代码不加修改的复用
< 小修改复 用>::= 构件的操作或代码被修改的量在25%以下
<大修改复用>::= 构件的操作或代码被修改的量在25%以上
<新构件>::= 新制作的构件
[注:参考资料 [10] 中的上列经验来自 NASA/Goddard Software Engineering Laboratory]
<使用次数>::= 构件被使用的次数。新构件为0, 每使用 一次加1。
< 修改次数 > :: = 构件被使用者在他的环境下修改的次数。初值为 0 ,每修改一次加 1 。
< 约束申明 > :: = 构件不能被使用的约束条件,可能是技术的、经济的或法律的约束。
5.3 内容属性
构件内容属性:: = < 构件体 >< 构件关系 >
< 构件体 > :: = < 构件主体 >< 构件子体 >
< 构件主体 > :: = 不包含它所复用的构件的主程序、基本“类”、主函数等程序体
< 构件子体 > :: = 构件本身不包含它所复用的构件除了构件主体以外的其它程序体
< 构件关系 > :: = [ “构件主体”复用的“构件名字”+ < 构件的连接关系 > ] …
< 构件的连接关系 > :: = < 连接关系 >
< 连接关系 >::= 继承关系 | 聚合关系 | 联合关系 | 数据流关系
5.4 结构属性 [17] [10] [18][19][20]
构件结构属性:: = < 服务数 >< 方法 / 函数 数 >< 结构层数 >
< 继承类数 >< 继承重数 >< 最大继承深度 >< 平均继承深度 >
< 聚合对象数 >< 联合对象数 >< 耦合度 >< 低内聚度 >
< 服务数 > :: = 构件本身和它复用的构件提供服务的方法数
| 构件本身和它所复用的构件直接存取外部数据的函数、方法数
| 构件本身和它所复用的构件的子系统数和所有子系统“功能点”总数
< 方法 / 函数 数 > :: = 构件本身和它复用的构件在构件主体中实例化的方法数或函数 数
< 结构层数 > :: = 构件本身(不包括复用构件)的结构化层次数。
< 继承类数 > :: = 所有的被构件主体继承的继承“树”的“类”的总和。
< 继承重数 > :: = 所有的被构件主体继承的继承“树”的根节点数。
< 最大继承深度 > :: = 所有的继承“树”的 从根节点到叶 节点的最长路径之 和 。
< 平均继承深度 > :: = “继承类数”除以“最大继承深度”。
< 聚合对象数 > :: = 构件主体聚合的“类”的实例数。
< 联合对象数 > :: = 构件主体的方法或函数在参数表中引用的“类”的实例数。
< 耦合度 > :: = “继承重数”乘以“平均继承深度”与“聚合对象数”、“联合对象数”之 和 。
< 低内聚度 > :: = 构件主体中每个方法(或函数)、实例方法存取属性(或变量)的“属
性变量集 ” 进行“交”运算所形成的不相交集的个数。
5.5 评价属性
构件评价属性:: = < 功能复杂性 >< 结构复杂性 >
< 功能复杂性 > :: = Albrecht 复杂度 | COCOMO 2.0 复杂度 | DeMarco 复杂度
[ 注: COCOMO 2.0 复杂度的评价指标:“屏幕表示数”( Number of screen view )是一个用户窗口中所含的数据输入和数据显示区的个数;“报告数”( Number of report )是在屏幕或打印机输出的报表数和输出的文件或数据库“表”数;“ 3GL 构件数”是用户界面上产生操作命令的对象数。 ]
< 结构复杂性 > :: = McCabe 复杂度
[注: McCabe 复杂度映射一个程序成为一个结构图,图中用白点表示程序中没有调用关系的节点,用黑点表示调用了一个子程序的节点。程序的“基本结构复杂度”为判定节点数加 1 。图的简化规则是 a. 减去白点,保留黑点; b. 对于程序中的循环结构体、分支结构体和嵌套结构体(包括递归),计算结构体的“基本结构复杂度”,再加 1 ; c. 对于黑点表示的子程序结构体,计算子程序的“基本结构复杂度”,再加 1 ; d. 在结构体内如果有相同子程序的调用,所有相同子程序的 复杂度只计算 1 次; e. 整体结构复杂度是结构化的各子结构复杂度的和]
6 构架属性
6.1 说明属性
构架说明属性::= “构件说明属性”
6.2 使用属性
构架使用属性::= “构件使用属性”
6.3 内容属性
构架内容属性::= “构件内容属性”
6.4 结构属性
构架结构属性::= “构件结构属性”+ <扩展点数> [21]
<扩展点数>::= 构架中提供给用户自定义或自实现的操作或功能数。
6.5 评价属性
构架评价属性::= “构件评价属性”
文章来源于领测软件测试网 https://www.ltesting.net/