模块分解的规则

模块分解的规则

1.模块独立性
 所谓两个模块彼此完全独立,是指其中任一模块在运行时,与另一个模块存在无关。但是,因为各模块隶属于一个系统,所以独立性只是一个相对的概念。具有独立功能而且和其他模块之间相互作用少的模块,称为独立性高的模块。
 保证模块独立性高是设计一个系统的关键,它具有以下优点:
 (1) 系统容易开发。系统开发往往由若干人分工合作完成,由于模块之间联系少,接口(模块与模块联系的通道)简单,可以简化合作者之间的协调工作。
 (2) 系统可靠性高。模块之间的相互影响小,当一个模块出错时,产生波动效应的概率低,从而提高了系统的可靠性。
 (3) 系统容易维护。在对一个模块进行修改和维护时,不必担心其他模块的内部是否会受到影响。
 在一个管理信息系统中,系统的各组成部分之间总是存在着各种联系的,将系统或子系统划分成若干模块,则一个模块内部的联系就是块内联系,而穿越模块边界的联系就是块间联系。由于模块之间的互相联系越多,模块的独立性就越少,因此,引入模块耦合和凝聚的概念。
 
凝聚表示 模块内部各成分之间的联系程度。
耦合表示 模块之间联系的程度。紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非耦合则表示模块之间无任何联系,是完全独立的。
 
一般说来,在系统中各模块的凝聚越大,则模块间的耦合越小。但这种关系并不是绝对的。耦合小使得模块间尽可能相对独立,从而各模块可以单独开发和维护。凝聚大使得模块的可理解性和维护性大大增强。因此,在模块的分解中应尽量减少模块的耦合,力求增加模块的凝聚。
 
 2.模块凝聚
 模块凝聚是用以衡量一个模块内部自身功能的内在联系是否紧密的指标,也是衡量模块质量好坏的重要标准。模块按凝聚程度的高低可分为以下五级:
 (1) 偶然凝聚。一个模块内部各组成部分的处理彼此无关,偶然地组合在一起,这是一种组织得最差的模块,模块各成分之间毫无联系,整个模块如同一盘散沙,不易修改或维护,凝聚程度最低。
 
 (2) 逻辑凝聚。一个模块内部各组成部分的处理逻辑相似,但功能却彼此不同,也就是说是将许多相类似的处理功能放在了一个模块里。这种模块通常包含 一个选择控制和若干彼此独立的处理功能。先执行选择功能,再根据选择的结果,控制执行不同的处理功能。逻辑凝聚的凝聚程度稍强于偶然凝聚,但由于它的逻辑途径比较复杂,修改困难,因此凝聚程度较差。
例如,把系统中与“输出”有关的操作组成一个模块,包括将数据在屏幕上显示、从打印机上打印、拷贝到磁盘上等,则该模块就是逻辑凝聚的。
再比如,把“对所有业务输入数据进行编辑处理”的功能放在一个模块里。那么不管是库存业务、还是财务业务,所输入的数据都是由这个模块来编辑处理。当然对库存的输入数据进行处理和对财务的输入数据进行处理,采用的处理功能可能不同,需要在模块内部先定义一个选择控制的功能,判断输入的数据来自何种业务。

 (3) 时间凝聚。这是指若干处理由于执行时间彼此有关,集中在一起组成的模块。如初始化模块,各处理内容必须在特定时间内执行,而各处理内容彼此无关,故凝聚程度较差。时间凝聚的模块通常要影响到其他许多模块的运行,因此与其他模块之间联系多,修改比较困难。

 (4) 数据凝聚。模块内部包含若干处理,它们按一定的顺序执行,且前一处理所产生的输出数据,是后一处理的输入数据,这称为数据凝聚模块。这种模块可较明确表述其功能,内部结构较密切,与其他模块联系一般较少,凝聚性较好。

 (5) 功能凝聚。一个模块只执行一个明确的功能,且完成该功能所必须的全部成分都包含在模块中,即上级模块调用它时,它只完成一项确定的任务。例如,计算工资、打印月报表等。由于这类模块的功能明确、模块间的耦合简单,所以便于维护。这种模块独立性强、便于修改。凝聚程度高,是结构化设计模块的理想目标。我们在系统设计时应力求按功能划分模块。
综上所述,模块的凝聚程度由低到高依次为: 偶然凝聚、逻辑凝聚、时间凝聚、数据凝
聚、功能凝聚
 
 例4:
 模块凝聚程度最低的是
 A. 时间凝聚
 B. 逻辑凝聚
 C. 数据凝聚
 D. 功能凝聚
 答案:B
 在结构化设计中,评价模块质量的标准是“耦合小,凝聚大”。下面就耦合与凝聚的概念作进一步的讨论,即在模块结构设计中尽量提高模块的凝聚度,降低模块的耦合度。
 3.模块耦合
 模块间的信息联系方式,称为模块的耦合,它是衡量模块间结构性能的重要指标。耦合有三种类型:
  (1) 数据耦合。两个模块间通过调用关系传递被处理的 数据称为数据耦合。这种耦合对系统的影响比较小,是一种较好的耦合方式,但为了减少接口的复杂性,应尽量防止传输不必要的数据。
 
  (2) 控制耦合。两个模块间通过调用关系,不仅传递数据,还传递对运行过程有影响的控制信号。下层模块执行校验功能,校验结果的控制信号传回上层模块,以控制其他模块的运行。如数据正确,调用正常处理模块;如数据异常,或遇到文件尾等不同情况时,调用不同处理模块,这种耦合使一个模块的执行直接影响到接受该控制信号的模块的运行。这对于系统的修改工作是不利的,特别是对自下向上传递的控制信号,影响面更大。因此,应当尽量将这种耦合减少到最低限度。

 (3) 非法耦合。一个模块与另一个模块内部发生联系,即一个模块中的某些内容在另一模块中以某种方式被引用,称为非法耦合。也就是说存在非法耦合的两个模块之间,不经过调用关系,彼此直接使用或修改对方的数据。这是最糟糕的耦合方式,在结构化设计时决不允许出现这种情况

 模块间数据耦合是最正常的方式,为保持模块的独立性,模块之间互相传递的数据要尽量少;要努力避免控制耦合,特别是避免自下而上传递控制信号;应消除任何形式的非法耦合

                    

          

(从左至右A、B两个模块的耦合度越来越高,相应系统的性能就越来越差)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值