用模块耦合的理论确定控制模块的同步

来源:互联网 发布:淘宝同城送货怎么发货 编辑:程序博客网 时间:2024/04/29 23:25
用模块耦合的理论确定控制模块的同步
 
一、模块耦合的一般理论
模块间的信息联系方式,称为模块的耦合,它是衡量模块间结构性能的重要指标。耦合有三种类型:
(1) 数据耦合。两个模块间通过调用关系传递被处理的数据称为数据耦合。
(2) 控制耦合。两个模块间通过调用关系,不仅传递数据,还传递对运行过程有影响的控制信号。下层模块执行校验功能,校验结果的控制信号传回上层模块,以控制其他模块的运行。如数据正确,调用正常处理模块;如数据异常,或遇到文件尾等不同情况时,调用不同处理模块,这种耦合使一个模块的执行直接影响到接受该控制信号的模块的运行。这对于系统的修改工作是不利的,特别是对自下向上传递的控制信号,影响面更大。因此,应当尽量将这种耦合减少到最低限度。
(3) 非法耦合。一个模块与另一个模块内部发生联系,即一个模块中的某些内容在另一模块中以某种方式被引用,称为非法耦合。例如,不经过调用关系,直接使用或修改另一模块中的数据,将控制选择指向另一模块中的某一标号(节、过程) 等。
模块间数据耦合是最正常的方式,为保持模块的独立性,模块之间互相传递的数据要尽量少;要努力避免控制耦合,特别是避免自下而上传递控制信号;应消除任何形式的非法耦合。
 
二、模块耦合理论的应用前提
1、耦合关系是明确的而不是含糊的。实际操作过程中,首先要解决的问题是,如果确定两个模块之间有一定的耦合关系。如果不能明确从模块集合中介定出有耦合关系的模块,那么,模块耦合理论也就无法为开发和发布过程提供经验。
 
2、模块的关系对实际的操作有指导的意义。定义模块的耦合关系可以在各个方面知道系统的实现,例如,在需求定义过程中,它可以告诉我们,对于一个模块的修改必然会影响其他模块,这种影响可能是显而易见的,也有可能是很隐含的;在测试过程中,它可能告诉我们对于某些模块的测试,必须同时测试一组相关模块;在模块的发布过程中,它可以告诉我们,发布某一个模块的同时,另外一些模块也必须同时发布。
 
三、基于模块功能定义的模块耦合
1、数据库耦合
两个模块会访问数据库相同的表。例如,模块A和模块B都是用了表T1,那么,如果T1的结构发生了变化,一般情况下,如果A或者B没有做出相应的调整,将导致系统运行过程中的错误。因此,如果A或者B是因为T1的变化做出了调整,同时必须对另外一个模块做出调整。
 
2、数据耦合
两个模块会同时依赖于一个数据。例如,模块A向表T1写入了数据,而B模块必须使用T1表的数据。如果由于需要,B读取T1的数据的规则发生了变化,那么,A必须相应的做出变化。
 
3、编译变量耦合
两个模块都会依赖于相同一个编译变量。这种耦合是一种强度很高的耦合。因此,除了基于移植性的考虑定义的编译变量,一般不应该随意修改编译变量。多数情况下的编译变量的修改会影响到全部的模块,因此,编译变量耦合对模块开发的实际意义并不明显。
 
4、环境变量耦合
两个模块的行为都和同一个环境变量有关。
 
5、业务逻辑耦合
两个模块共同支持一个业务逻辑,而且这种逻辑不是通过公共数据、环境变量的共享区实现的。业务逻辑耦合是一种很模糊的耦合,必须在需求定义的过程中得到明确。
 
四、基于经验定义的模块耦合
1、模块依赖关系
基于经验定义的模块耦合是通过积累模块的依赖关系来确定的。
如果修改了A,必须修改B,则B依赖于A。如果修改了A,必须修改B,同时如果修改了B,必须修改A,则A和B相互依赖。
 
2、阈值
如果发现了模块A和B之间有一定的关联关系,并不一定很快能确定两个模块之间的耦合关系。只有积累到比较明确的数据的时候,才能明确的定义这两个模块之间的耦合关系。