二叉排序树的实现_webservice原理_二叉排序树的删除图解(12)

电脑杂谈  发布时间:2017-03-17 05:12:08  来源:网络整理

增加维护系统的困难度,因为一个逻辑修改会影响许多模块,而一个模块的修改会使得一些相关模块也要修改。

增加模块复用困难度,因为大部份的应用程序无法复用一个由许多不一定相关的机能组成的模块。

内聚性的衡量

内聚性是一种非量化的量测,可利用评量规准来确认待确认源代码的内聚性的分类。内聚性的分类如下,由低到高排列:

偶然内聚性(Coincidental cohesion,最低)偶然内聚性是指模块中的机能只是刚好放在一起,模块中各机能之间唯一的关系是其位在同一个模块中(例如:“工具”模块)。

逻辑内聚性(Logical cohesion)逻辑内聚性是只要机能只要在逻辑上分为同一类,不论各机能的本质是否有很大差异,就将这些机能放在同一模块中(例如将所有的鼠标和键盘都放在输入处理副程序中)。

时间性内聚性(Temporal cohesion)时间性内聚性是指将相近时间点运行的程序,放在同一个模块中(例如在捕捉到一个异常后调用一函数,在函数中关闭已打开的文件、产生错误日志、并告知用户)。

程序内聚性(Procedural cohesion)程序内聚性是指依一组会依照固定顺序运行的程序放在同一个模块中(例如一个函数检查文件的权限,之后打开文件)。

联络内聚性(Communicational cohesion)联络内聚性是指模块中的机能因为处理相同的数据,因此放在同一个模块中(例如一个模块中的许多机能都访问同一个记录)。

依序内聚性(Sequential cohesion)依序内聚性是指模块中的各机能彼此的输入及输出数据相关,一模块的输出数据是另一个模块的输入,类工厂的生产线(例如一个模块先读取文件中的数据,之后再处理数据)。

功能内聚性(Functional cohesion,最高)功能内聚性是指模块中的各机能是因为它们都对模块中单一明确定义的任务有贡献(例如XML字符串的词法分析)。

由赖瑞·康斯坦丁、爱德华·尤登及史蒂夫·麦康奈尔等人的研究都提出偶然内聚性和逻辑内聚性是不好的,联络内聚性和依序内聚性是好的,而功能内聚性是最理想的状态。 当我们拿到一个设计的时候,完全可以通过上述的几个层面去衡量这个设计的内聚性。

耦合性

内聚性是一个和耦合性相对的概念,一般而言低耦合性代表高内聚性,反之亦然。耦合性和内聚性都是由提出结构化设计概念的赖瑞·康斯坦丁所提出[1]。低耦合性是结构良好程序的特性,低耦合性程序的可读性及可维护性会比较好。 耦合性可以是低耦合性(或称为松散耦合),也可以是高耦合性(或称为紧密耦合)。以下列出一些耦合性的分类,从高到低依序排列:

内容耦合(content coupling,耦合度最高)也称为病态耦合(pathological coupling)是指一个模块依赖另一个模块的内部作业(例如,访问另一个模块的局域变量),因此修改第二个模块处理的数据(位置、形态、时序)也就影响了第一个模块。

共用耦合(common coupling)也称为全局耦合(global coupling.) 是指二个模块分享同一个全局变量,因此修改这个共享的资源也就要更动所有用到此资源的模块。

外部耦合(external coupling)发生在二个模块共用一个外加的数据式、通信协议或是设备界面,基本上和模块和外部工具及设备的沟通有关。

控制耦合(control coupling)是指一个模块借由传递“要做什么”的信息,控制另一个模块的流程(例如传递相关的旗标)。

特征耦合(stamp coupling)也称为数据结构耦合,是指几个模块共享一个复杂的数据结构,而每个模块只用其中的一部份,甚至各模块用到的部份不同(例如传递一笔记录给一个函数,而函数只需要其中的一个字段。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-37952-12.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 米山雄太
      米山雄太

      我已经放弃了

    • 闫一博
      闫一博

      选个“总统”还要去老美那汇报

    • 松风雅也
      松风雅也

      等着你们的舞台回归秀

    热点图片
    拼命载入中...