titit. 深入理解 内聚( Cohesion)原理and  attilax大总结

时间:2022-09-03 10:10:12

atitit. 深入理解 内聚( Cohesion)原理and  attilax大总结

 

 

 

 

1.1. 内聚的概念 1

1.1.1. 高内聚模式关于这个问题给出的答案是:分配职责,使其可保持较高的内聚性。 1

1.2. 所谓内聚(内聚有多种类型,包括偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚、信息内聚等,这里主要指的是功能内聚 2

1.2.1. 如果元素具有高度相关的职责,而且没有过多工作,那么该元素具有高内聚性。 2

1.3. 内聚按紧密程度从低到高排列次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚2

1.4. 内聚强度类型 2

1.4.1. 偶然内聚 3

1.4.2. 逻辑内聚 3

1.4.3. 时间内聚 3

1.4.4. 通信内聚 3

1.4.5. 顺序内聚 3

1.4.6. 过程内聚 3

1.4.7. 信息内聚 3

1.4.8. 功能内聚 4

 

1.1. 内聚的概念

编辑

内聚的概念是Constantine、Yourdon、Stevens等人提出的。按他们的观点,把内聚按紧密程度从低到高排列次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚。但是紧密程度的增长是非线性的。偶然内聚和逻辑内聚的模块联系松散,后面几种内聚相差不多,功能内聚一个功能、独立性强、内部结构紧密,是最理想的内聚。

1.1.1. 高内聚模式关于这个问题给出的答案是:分配职责,使其可保持较高的内聚性。

1.2. 所谓内聚(内聚有多种类型,包括偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚、信息内聚等,这里主要指的是功能内聚

同耦合一样,内聚也是系统设计中最重要的概念之一,也是设计中真正的基本原则之一。所谓内聚(内聚有多种类型,包括偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚、信息内聚等,这里主要指的是功能内聚),是对元素(包括类、子系统等)职责的相关性和集中度的度量。

1.2.1. 如果元素具有高度相关的职责,而且没有过多工作,那么该元素具有高内聚性。

内聚的类的方法数量较少,在功能性上有非常强的关联,而且不需要做太多的工作。如果任务的规模比较大的话,应该将任务所涉及到的各项职责按照关联的强度分配到各个类中,然后让各个类的对象进行相互协作,共同完成这项任务。高内聚的类优势明显,它易于理解、维护和复用。高度相关的功能性与少量操作相结合,也可以简化维护和改进的工作。细粒度的、高度相关的功能性也可以提高复用的潜力。

在少数情况下,较低的内聚也是被接受的。比如,为了方便专门的数据库逻辑人员统一管理SQL语句,系统中往往可以将与SQL语句相关的操作都放在一个独立的全能类中;另外,出于性能的考虑,在RPC中使用一个粗粒度的RPC服务器类,既可以减少服务器上对象的数目,可以减少网络请求和连接的数目,从而提高系统的性能。这些,都需要从系统的全局出发,结合多种设计的原则进行权衡考虑。

1.3. 内聚按紧密程度从低到高排列次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚

1.4. 内聚强度类型

编辑

内聚按强度从低到高有以下几种类型:

1.4.1. 偶然内聚

如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。

1.4.2. 逻辑内聚

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

1.4.3. 时间内聚

如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。

1.4.4. 通信内聚

如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。

1.4.5. 顺序内聚

如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚

1.4.6. 过程内聚

构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。

模块完成多个需要按一定的步骤一次完成的功能。(过程相关---控制耦合)。例如:在用程序流程图设计模块时,若将程序流程图中的一部分划出各自组成模块,便形成过程内聚

1.4.7. 信息内聚

模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。

1.4.8. 功能内聚

模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚

内聚_百度百科.htm

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰* Defender of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui

埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

,Uke部落首席大酋长,

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

奶牛科技cto ,uke 首席cto

uke波利尼西亚区大区连锁负责人,克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke汤加王国区域负责人。布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

Uke软件标准化协会理事长理事长 uke终身教育学校副校长

Uke 数据库与存储标准化协会副会长 uke出版社编辑总编

Uke医院方面的创始人

转载请注明来源:attilax的专栏   http://www.cnblogs.com/attilax/

--Atiend

titit. 深入理解 内聚( Cohesion)原理and  attilax大总结的更多相关文章

  1. Atitit 深入理解耦合Coupling的原理与attilax总结

    Atitit 深入理解耦合Coupling的原理与attilax总结     耦合是指两个或两个以上的电路元件或电网络等的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现 ...

  2. Atitit.数据库存储引擎的原理与attilax 总结

    Atitit.数据库存储引擎的原理与attilax 总结 1. 存储引擎是什么1 2. 其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储2 3. 表的存储有三个文件:结构+数据+索引2 4 ...

  3. Atitit.数据库存储引擎的原理与attilax 总结

    Atitit.数据库存储引擎的原理与attilax 总结 1. 存储引擎是什么1 2. 其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储2 3. 表的存储有三个文件:结构+数据+索引2 4 ...

  4. Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结

    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结 1.1. 五中滤镜的分别效果..1 1.2. 基于肤色的图片分类1 1.3. 性能提升2 1.4. --co ...

  5. Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理

    Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理 作者:宋宸宁(20135315) 一.实验过程 图1 编写songchenning5315.c文件 图2 将c文件汇编成32位机器语言 ...

  6. Atitit.信息论原理概论attilax总结

    Atitit.信息论原理概论attilax总结 1. <信息论基础(原书第2版)>((美)科弗(Cover...)[简介_书评_在线阅读] - 当当图书.html1 2. <信息论- ...

  7. atitit&period;web原理 理论attilax总结

    atitit.web原理 理论attilax总结 1. Web3.01 2. Web的未来趋势1 3. Web语言与应用导论_百度百科.html2 4. <Web设计与编程导论(影印版)> ...

  8. SLAM&plus;语音机器人DIY系列:(二)ROS入门——7&period;理解tf的原理

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  9. Linux内核设计(第一周)——从汇编语言出发理解计算机工作原理

    Linux内核设计(第一周)——从汇编语言出发理解计算机工作原理 计算机工作原理 汇编指令 C语言代码汇编分析 by苏正生 原创作品转载请注明出处 <Linux内核分析>MOOC课程htt ...

随机推荐

  1. Excel Access 新建空白文档&sol;打开已有文档 提示内存或磁盘空间不足的解决方法--验证

    服务器上发现,打开mdb数据库,点知道只有个空白的截面,打开已有的excel文件,一样,但多了个提示:内存磁盘空间不足或者关闭不再使用的工作表或者程序.检查过,内存和磁盘很充裕啊.那里不足啊,任务管理 ...

  2. 2017年3月30日15&colon;00&colon;19 fq以后的以后 动态代理

    代理与继承,组合不同的是,继承是继承父类特性,组合是拼装组合类的特性,代理是使用代理类的指定方法并可以做自定义. 静态类是应用单个类,当代理的类数量较多时可用动态代理,动态代理在概念上很好理解 htt ...

  3. zabbix监控nginx连接数量

    #!/bin/bash conn=`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}' | grep "E ...

  4. Session失效后所有Ajax请求跳转登录地址

    当登录的Session失效后,采用ajax请求数据时会没有反应,这时候应该自动跳转到登录页面,让用户重新登录. 全局配置以下可实现 $(function() { $.ajaxSetup({ compl ...

  5. php7 数据库操作的 方法

    连接数据库的方法PHP7.0以上的: 方法一: <?php/* Connect to a MySQL server 连接数据库服务器 */$link = mysqli_connect('loca ...

  6. pageadmin CMS 如何添加自定义页面

    理论上网站上的所有页面都可以通过栏目管理来添加,那自定义页面的意义是什么呢? 网站的需求是很多样化的,比如需要制作一个对外提供数据的api,甚至制作一个搜索页面,或者制作一些数据和栏目没有对应关系的页 ...

  7. CSS截取中英文混合字符串长度

    <!doctype html> <html> <head> <meta http-equiv="content-type" content ...

  8. python类的继承和多态

    现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个 ...

  9. python的socket网络编程(二)

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 国庆八天假,已过去3天了,加上明天又是中秋,还是决定在今晚把之前想写的东西写完.国庆节在宁波老家,吃好喝好睡好,就是没有好好 ...

  10. jQuery AJAX 跨域请求

    跨域请求 只要 dataType : 'jsonp',  jsonp:"jsoncallback",  然后返回一个json格式的就可以了 <!doctype html&gt ...