• 即将更新图形学,编译原理,机器学习等文章,谢谢关注~
  • 由于算法限制,搜索时注意简化关键字,谢谢支持~
  • 网站不兼容IE5.0及以下,请使用主流浏览器访问.
  • 软件工程内聚详解

    简介

    内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

    内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。

    在进行软件设计时,应力争做到高内聚,低耦合。

    偶然性内聚

    定义:一个模块执行多个完全不相关的操作,则具有偶然性内聚。

    缺点①可维护性差②模块不可重用

    矫正:将模块分成更小的模块,每个模块执行一个操作。

    举例:一个函数内调用读取文件与打印当前时间。

    逻辑性内聚

    定义:这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能 。

    举例:void fun(int a)  当a==1输出“OK”当a==其它值时输出“ERROR”。(其它情况多参数可能屏蔽其它实参)

    时间性内聚

    定义:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。

    缺点:难以重用

    过程性内聚

    定义:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。

    缺点:难以重用

    解决方案:将模块分割成多个单独的操作。

    通信性内聚

    定义:执行一系列与产品要遵循的步骤顺序有关的操作,并且,如果所有操作都对相同的数据进行,则该模块具有通信性内聚。

    举例:计算速度并且将其发送到打印机并输出结果。

    缺点:难以重用

    解决方案:将模块分割成多个单独的操作。

    功能性内聚

    模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。

    优点:它的功能明确。判断一个模块是否功能内聚,一般从模块名称就能看出。如果模块名称只有一个动词和一个特定的目标(单数名词),一般来说就是功能内聚,如:“计算水费”、“计算产值”等模块。功能内聚一般出现在软件结构图的较低层次上。

    信息性内聚

    定义:如果模块进行许多操作,每个都有各自的入口点,每个操作的代码相对独立,而且所有的操作都对相同的数据结构完成。

    注意:①逻辑性内聚的各个操作是互相纠缠的,而信息性内聚模块各操作代码是完全独立的。②信息性内聚的模块主要用来实现一种抽象的数据类型。

    总结

    1、功能内聚:实现一个功能。
    2、信息内聚:完成多个功能,各个功能在同一数据结构上操作。
    3、通信内聚:模块内各功能部分使用了相同的输入数据或产生相同的输出数据。
    4、过程内聚:把流程图中某一部分划出组成模块,即过程内聚,如循环部分、判定部分、计算部分分成三个模块。
    5、时间内聚:又称为经典内聚,大多为多功能模块,模块的各个功能的执行与时间有关,如初始化模块和终止模块。
    6、逻辑内聚:把几种相关的功能组合在一起,由传送给模块的判定参数来确定执行哪一种功能。
    7、偶然内聚:模块内各部分之间没有联系,或即使有联系,也很松散,是内聚程序最低的模块

    读者评分
    [评分人数: 3 平均分: 4.7]

    评论

    OmegaXYZ