基于细粒度构件的关联度量

上传人:kms****20 文档编号:45848212 上传时间:2018-06-19 格式:PDF 页数:4 大小:240.34KB
返回 下载 相关 举报
基于细粒度构件的关联度量_第1页
第1页 / 共4页
基于细粒度构件的关联度量_第2页
第2页 / 共4页
基于细粒度构件的关联度量_第3页
第3页 / 共4页
基于细粒度构件的关联度量_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于细粒度构件的关联度量》由会员分享,可在线阅读,更多相关《基于细粒度构件的关联度量(4页珍藏版)》请在金锄头文库上搜索。

1、* )本论文是重庆市科委自然科学基金重点项目: 软件测试技术与方法研究; 重庆市信息产业发展基金项目: 软件过程度量与质量度量综合平台建设(200401021)以及重庆市科委自然科学基金项目: 软件非功能性需求的多模型测试与外部度量(CSTC2004BB0146)的部分成果。戴立伟 硕士, 主要研究领域为面向对象技术, 软件度量, 软件建模; 张为群 教授, 主要研究领域为形式化软件工程, 软件测试。计算机科学 2007Vol 1 34l 13基于细粒度构件的关联度量* )戴立伟1, 2 张为群1, 2 (西南大学计算机与信息科学学院 重庆 400715)1(重庆市智能软件与软件工程重点实验室

2、 重庆 400715)2摘 要 介绍了基于多构件软件的稳定性度量的一种模式, 包括对其中各个构件及其类型的度量, 并且利用该模式替换关键构件, 找出合理可重用的构件组。 关键词 软件度量模式, 稳定性, 风险管理, 构件提取A Metrics Suite for Measuring the Relationship between Software Fine2grained ComponentsDAI Li2Wei1,2 ZHANG Wei 2Qun1, 2(College of Computer and Information Science, Southwest University, C

3、hongqing 4007l5)1(Chongqing Intelligent Software and Softwre Engineering Laboratory, Chongqing 400715)2Abstract Introduce a model to measure the relationship between software fine 2grained components. Using this model, the relationship and the key component can be measured. And the reasonable compon

4、ents can also be detected.Keywords Model of metrics, Software stability, Risk management, Components1 引言基于构件的软件开发已经越来越广泛地应用起来, 并且 实践证明是一种行之有效的工业化方法。基于构件的软件开发强调利用已有的构件对软件进行设计和构建, 这是降低软 件成本、 提高软件可靠性的很好的手段。从狭义上讲, 构件可 以看成是整个软件的组成模块, 一种可以用来读取和定制的模块。然而, 这种模块对我们来讲, 大多是封装好的, 不知道 源代码的。随着构件在市场上的大量应用, 有效度量构件的不

5、同特 性变得越来越重要。在现有的一些软件度量手段中, 例如Chidamber而那些 可以用来存写的属性, 称之为/ 可写属性0。读取方法: 是在构件内部实现的, 向外部提供的读取内部 可读属性的方法, 该方法是构件的读接口。存写方法: 是在构件内部实现的, 向外部提供的存写内部 可写属性的方法, 该方法是构件的写接口。业务逻辑方法: 是在构件内部实现的, 除去读取方法和存 写方法外的方法, 它用来实现构件的业务逻辑。接下来我们就利用细粒度构件的这几个重要特性, 给出 一个判断基于构件开发的软件稳定性的方法。3 构件关联度量软件在构件的基础上的定制, 对于软件的快速开发, 降低软件成本是非常有意

6、义的, 但是在现有的软件开发中可以看 到许多产品是非常脆弱的, 经常会出现由于定制环境不同而#264#无法使用的情况, 所以软件稳定性和适应性在软件开发和维 护过程中非常重要, 它对于降低软件开发风险有着十分重大的意义。 在现有的软件开发中, 构件被大量地应用, 而构件之间的交互也变得非常的频繁, 一个构件往往需要从另外一些构件中获取参数, 甚至获得业务逻辑结果。这说明一个构件往往 要关联于其他构件才能起到作用。但是一个构件如果太关联于其他的构件, 也就是说该构件会关联到其他许多构件, 这样是十分不稳定的。良好的稳定性被认为是有着尽可能少的关 联的2, 由此我们提出了一种度量多构件软件的稳定性

7、的模式。图 1 基于多构件软件的稳定性度量的模式图3. 1 构件关联模型我们现在从构件使用者的角度定义一个基于多构件软件 的构件关联模型。一个基于构件的软件的稳定性来自于各个构件的稳定,如果各个构件都非常的稳定, 在不同的环境下都能保持原有 的功能, 那毫无疑问, 这个软件也会是非常稳定的。但是在现实中, 这种情况是极少发生的。即使对于一些非常成熟的构 件, 在由我们定制的不同的情况下也可能出现丢失功能的情况。比如:在 Web 开发中的非常成熟的一个构件: display2Tag, 在 MyEclipse 开发中设定由 action 进入页面的时候, 其 分页功能就会丧失。而恰恰其他很多构件都

8、是关联于该构件的, 导致这些构件都无法使用, 使整个软件瘫痪。很多因素都会影响软件的稳定性, 但是在我们这个模型 中, 我们从构件之间的关联来度量基于构件的软件稳定性。在不考虑其他因素的情况下, 构件之间的关联越强, 软件的稳定性就越差, 软件失效的风险就越大。 3. 2 软件关联度定义首先, 我们分析一下构件之间的关联性。我们已经知道 构件是通过以上三种方法:读取方法、 存写方法、 业务逻辑方法, 来完成相互交流的。而构件之间的关联就是由这些方法来决定的。 定义 1( 当前构件集合) 该度量定义了当前软件中所有构件的集合。CI C, 其中 C 表示当前软件中所有构件的集合。 定义 2( 可读

9、方法集合) 该度量定义了构件中所有可读方法的集合。MR( c) , 其中 cI C, MR(c) , 表示当前构件的所有可读方 法的集合。定义 3( 可读方法数总和) 该度量定义了构件中所有可读方法数目的总和。SR(C), 其中 C 表示当前构件集合, SR( C), 表示当前构 件所有可读方法数目的总和。定义 4( 存取方法集合) 该度量定义了构件中所有存取 方法的集合。MW( c) , 其中 cI C, MW(c) , 表示当前构件的所有存取方 法的集合。定义 5( 存取方法数总和) 该度量定义了构件中所有存 取方法数目的总和。 SW( C), 其中 C 表示当前构件集合, SW( C),

10、 表示当前构件所有存取方法数目的总和。 定义 6( 业务逻辑方法集合) 该度量定义了构件中所有业务逻辑方法的集合。 MB(c), 其中 cI C, MB( c), 表示当前构件的所有业务逻辑方法的集合。 定义 7( 业务逻辑方法数总和) 该度量定义了构件中所有业务逻辑方法数目的总和。 SB( C), 其中 C 表示当前构件集合, SB( C) , 表示当前构件所有业务逻辑方法数目的总和。 定义 8( 构件交流方法集合) 该度量定义了两个构件之间交流所有方法的集合。 M( a, b), 其中 aI C, bI C, M(a, b) , 表示当前两个构件之间交流所有方法的集合。 定义 9( 可读方

11、法关联) 该度量定义了两个构件是否通过某一个可读方法产生了关联。RMD( a, b, m)=1,if(a I C and bI C) , mI MR(b)0,otherwise 该情况表示构件 a 通过可读方法 m, 对构件 b 产生了可读方法关联。 定义 10( 存取方法关联) 该度量定义了两个构件是否通过某一个存取方法产生了关联。WMD( b, a, m) =1,if( aI C and bI C), mI MW( a)0,otherwise 该情况表示构件 a 通过存取方法 m, 对构件 b 产生了存取方法关联。 定义 11( 业务逻辑方法关联) 该度量定义了两个构件是否通过某一个业务逻

12、辑方法产生了关联。BMD( a, b, m)=1,if(a I C and bI C) , mI MB(b)0,otherwise 该情况表示构件 a 通过存取方法 m, 对构件 b 产生了业务逻辑方法关联。 3. 3 构件方法关联分析以上我们对软件关联度中的基本概念进行了定义, 在这 些定义的基础上, 有关软件关联度的核心, 也就是如何进行度量的分析将进一步展开。 两个构件之间可以通过某一个方法产生可读方法关联,但是究竟这两个构件之间通过多少个可读方法产生了该关联 呢? 这显然对我们度量构件间的关联有着非常重要的意义,由此我们利用以下方法度量构件之间的可读关联: RD( a, b) = En

13、i= 1RMD(a, b, m) , if( a I C and bI C) , mI MR(b)其中, RD( a, b)表示构件 a 通过多少个可读方法 m, 对构件 b 产生可读方法关联。那么同样的方法, 我们可以利用以下方法度量构件之间 的存取关联和业务逻辑关联:WD( b, a)= En i= 1WMD( b, a, m) , if( a I C and bI C), m I MW( a)#265#BD( a, b)= En i= 1BMD( a, b, m) , if(a I C and bI C) , mI MB( b)其中, WD( b, a) 表示构件 a 通过多少个存取方法

14、 m, 对构件 b 产生存取方法关联, BD( a, b) 表示构件 a 通过多少个业务逻辑方法m, 对构件 b产生业务逻辑方法关联。 从以上的分析我们可以得出两个构件之间的方法关联,在这里可以很直观地观察到构件之间通过哪种方法、 多少个 这样的方法产生了关联, 这对于我们把握两个构件之间的关联是非常有用的, 但是这三种方法关联的度量结果都是量化 成个数的, 而不是一个百分比, 所以我们很难观测到两个构件之间方法度量的确切比重。 3. 4 构件方法关联度分析如果不知道构件中各个方法的关联在本方法中所占的比 率, 就无法知道这两个构件的方法关联是不是在此种方法的关联中比重。在这里我们在构件中某种

15、所有方法的总和的基 础上计算方法关联的比率。以可读方法关联为例, 可读关联度为可读关联在构件所有可读方法数目的总和所占比率: RDP(a, b) = Eni= 1RMD( a, b, m) / SR( C) , if(a I C and b I C) , mI MR(b)其中, RDP( a, b) 表示构件 a 通过可读方法 m, 对构件 b 产生 可读关联度。那么同样的方法, 我们可以利用以下方法度量构件之间 的存取关联和业务逻辑关联:WDP ( b, a) = En i= 1WMD(b, a, m) /SW( C), if( a I C and b I C) , mI MW(b)BDP(

16、a, b)= Eni= 1BMD( a, b, m)/ SB( C), if( a I C and b I C) , mI MB(b)其中, WDP ( b, a)表示构件 a 通过存取方法m, 对构件 b产生 存取关联度, BDP( a, b)表示构件 a 通过业务逻辑方法 m, 对 构件 b产生业务逻辑关联度。以上三个方法关联度定量地反映了可重用构件在不知道内部代码的情况下主要是通过哪种方法与其他构件关联, 关 联的程度又是多少。但是从更抽象的角度去看, 一种两个构件总体之间的关联度则更为需要。通过前面的定义和分析, 我们可以得出两个构件各个方法的关联, 我们在此基础上观测到两个构件总体之间的方法关联。但是有个情况需要特别 注意, 那就是业务逻辑方法的关联性要远远大于可读方法和存取方法的关联性, 所以使用一个因子 k来协调比重。 L( a, b) = ( 1-k) Enri= 1RMD( a, b, mr) + ( 1-k) Enwi= 1 WMD(b, a, mw) + kEnbi= 1BMD(a, b, mb), if( aI C and bI C

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号