首页 理论教育 智能虚拟控件的内聚效能提升

智能虚拟控件的内聚效能提升

时间:2023-06-28 理论教育 版权反馈
【摘要】:图9-4 内聚谱系与智能虚拟控件的分类在谱系的低端有三类控件:偶然性控件、逻辑性控件和时间性控件。时间性控件是指这类智能虚拟控件所包含的成分,是由于执行时间相同而集结到一起的。中度内聚在控件独立程度上是彼此接近的,相对应的智能虚拟控件有两类:过程性控件和通信性控件。与高内聚相对应的智能虚拟控件为顺序性控件和功能性控件。当Bieman和Ott度量取得最大值1时,出现了强功能内聚和附着性。

智能虚拟控件的内聚效能提升

内聚是信息隐蔽功能的自然扩展。智能虚拟控件的内聚是从功能的角度对智能虚拟控件内部聚合能力的量度。内聚的控件在系统过程中完成单一的任务,同系统其他部分执行的过程交互很少。理想情况下,内聚控件应该只完成一件事。

1.内聚的分类

内聚可以用一个“谱系”来表示,该谱系对应的控件从低到高依次分为:偶然性控件、逻辑性控件、时间性控件、过程性控件、通信性控件、顺序性控件、功能性控件,如图9-4所示。尽管谱系的中段通常也是可以接受的,但一般总是尽量争取高内聚。内聚的刻度是非线性的,也就是说,低端内聚比中段内聚要“差”得多,而中段内聚几乎和高端内聚一样“好”,实际上,设计者不必关心对特定控件的内聚分类,而应该理解整体概念,并且在设计控件时应该避免低内聚。

978-7-111-33186-5-Part01-372.jpg

图9-4 内聚谱系与智能虚拟控件的分类

在谱系的低端有三类控件:偶然性控件、逻辑性控件和时间性控件。偶然性控件内部各组成成分在功能上是互不相关的,各种成分的组合纯属偶然。逻辑性控件通常由若干个逻辑功能相似的成分组成,把在逻辑上相似的功能放在一个控件中,就可省去程序中的重复部分。时间性控件是指这类智能虚拟控件所包含的成分,是由于执行时间相同而集结到一起的。

中度内聚在控件独立程度上是彼此接近的,相对应的智能虚拟控件有两类:过程性控件和通信性控件。当一个控件中包含的一组任务必须按照某一特定的次序执行时,就称为过程性控件。通信性控件内部的各个成分都使用同一个输入数据或者产生同一个输出数据,它们借助公用数据而联系在一起

与高内聚相对应的智能虚拟控件为顺序性控件和功能性控件。顺序性控件中各个组成部分是顺序执行的,在通常情况下,一个处理框的输出就是下一个处理框的输入。在功能性控件中,所有的成分结合在一起,用于完成某个单一的功能,如完成某个特定功能的按钮、滑块等。

功能性控件、顺序性控件和通信性控件都是可取的控件,其中功能性控件是最好的一种控件。其余类型的控件一般来说,是不可取的,其后果往往是产生一些组织混乱而又难以调试和改进的代码。

实际上,确定内聚的精确级别是不必要的,重要的是尽量争取高内聚和识别低内聚,这样就可以修改控件设计来实现功能独立性。

2.内聚的度量

那么如何度量一个控件的内聚性呢?Bieman和Ott定义了一组给模块内聚性提供指示的度量。根据Bieman和Ott的定义,可以得到控件内聚性度量的五个概念和测度:(www.xing528.com)

1)数据切片。一个数据切片是一个对控件进行回溯走查以找到在影响走查开始处的控件位置的数据值。同样也可以定义程序切片(主要集中在语句和条件)。

2)数据记号。为控件定义的变量可以被定义为控件的数据记号。

3)胶合记号位于一个或多个数据切片的数据记号的集合。

4)超胶合记号。在一个控件里对每个数据都公用的数据记号。

5)粘度。一个胶合记号的相对粘度是和它所绑定的数据切片的数目直接成比例的。

Bieman和Ott开发了强内聚(SFC)、弱内聚(WFC)以及附着性(胶合记号绑定数据切片的相对程度)的度量,所有这些内聚度量值范围为0~1。当一个过程有多个输出且没有展示任何由某一特定的度量指示的内聚属性时为0。没有超胶合记号,也就是没有一个为所有数据切片所共用的记号的过程具有零强功能内聚——没有对所有输出有贡献的数据记号。一个没有胶合记号的过程,即没有对多个数据切片公用的记号(在具有多个的数据切片的过程中),展示了零弱功能内聚和零附着性——没有对多个输出有贡献的数据记号。

当Bieman和Ott度量取得最大值1时,出现了强功能内聚和附着性。

对于强功能内聚的度量,有

SFC(i)=SG[SA(i)]/tokens(i

其中,SG[SA(i)]指超胶合记号——位于一个控件i的所有数据切片的数据记号的集合;to-kens(i)指控件i的所有数据记号的总和。当超胶合记号与控件i中的所有的记号的总和之比上升到最大值1时,此控件i的功能内聚性相应增加。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈