模块独立性(1)

首先介绍两个概念:信息隐藏和局部化

信息隐藏:使得一个模块内包含的信息(数据和过程)对于不需要这些信息的模块来说是不能访问的。

局部化:是指把一些关系密切的软件元素物理地放的彼此靠近。

 

在我们开发软件,应用模块化原理时,自然会产生的一个问题就是如何分解软件,才能得到较好的一组模块(即便于维护和修改的)呢?隐藏这时候就派上了用场。按照它设计的模块,独立的模块间仅仅交换那些为了完成系统的功能而必须交换的信息。绝大多数数据和过程对于软件的其他部分而言是隐藏的,当我们在以后修改的时候,就减少我们由于疏忽而引入的错误。而且我们在修改时,不必将代码量动的太多。

 

而模块独立性是模块化、抽象、信息隐藏和局部化概念的直接结果。判断模块独立程度可以由两个定性标准度量。耦合与内聚。

 

1)偶然性内聚:当模块内各部分之间没有联系,即使有联系,这种联系也是松散的,则称这种模块为偶然内聚,它是内聚程度最低的模块。例如,一些没有任何联系的语句可能在许多模块中重复使用,程序员为了节省存储,则把他们抽出来组成一个新的模块。这个模块就是偶然性内聚模块。如图

 

 

2)具有逻辑性内聚的模块,通常是由若干个逻辑功能相似的成分组成。
例如,图是一个用于计算全班学生平均分和最高分的模块,无论是计算那种分数,都要经过读入全班学生分数,进行计算,输出计算结果等步骤,实际上除了中间的一步须按不同的方法计算外,前、后这两步都是相同的,这两种在逻辑相似的功能放在一个模块中,几可省去程序中的重复部分
例如:根据输入的控制信息,或从文件中读入一个记录,或向文件写出一个记录,如图所示,这种模块是单入口多功能模块。
    逻辑内聚模块比偶然内聚模块的内聚程度要高。因为它表明了各部分之间在功能上的相关关系。但它所执行的不是一种功能,而是执行若干功能中的一种。因此它不易修改。另外,当调用时需要进行控制参数的传递,这就增加了模块间的偶合程度

 

 

若一个模块完成的任务在逻辑上相同或相似,如X,Y,Z,W分别调用A,B,C,D,而模块 A,B,C,D却完成的任务相似(如产生各种类型的全部输出),则我们把A,B,C,D 合并成一个模块ABCD,那么我们称模块ABCD就是逻辑模块

 

 

 

3) 信息性内聚

posted @ 2010-10-23 10:11  转航  阅读(620)  评论(0编辑  收藏  举报