如何理解“高内聚低耦合”

摘要:
原因:模块独立性是指每个模块只完成系统所需的独立子功能,与其他模块和简单接口的连接最少。有两个定性指标——耦合和内聚。耦合也称为块间连接。它是指软件系统结构中每个模块的紧密程度的度量。模块之间的连接越紧密,耦合越强,模块的独立性越差。模块之间的耦合取决于模块之间接口的复杂性、调用方式和传递的信息。耦合分类(低-高):无直接耦合;数据耦合;标签联轴器;控制联轴器;常见的
起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。

    耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
    耦合性分类(低――高): 无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;内容耦合;
1 无直接耦合:
2 数据耦合: 指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递;
3 标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;
4 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;
5 公共耦合: 指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。
6 内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。
 
    内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
    内聚性匪类(低――高): 偶然内聚;逻辑内聚;时间内聚;通信内聚;顺序内聚;功能内聚;
1 偶然内聚: 指一个模块内的各处理元素之间没有任何联系。
2 逻辑内聚: 指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
3 时间内聚: 把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
4 通信内聚: 指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。
5 顺序内聚: 指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。
6 功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。
 
    耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
 
    有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。
一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。

免责声明:文章转载自《如何理解“高内聚低耦合”》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PyTorch 之 DataLoaderandroid实现3D Gallery 轮播效果,触摸时停止轮播下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

面向对象三大特性五大原则 + 低耦合高内聚

面向对象的三大特性是"封装、"多态"、"继承",五大原则是"单一职责原则"、"开放封闭原则"、"里氏替换原则"、"依赖倒置原则"、"接口分离原则"。 什么是面向对象 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、...

程序的耦合和解耦

什么是程序的耦合 耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多, 其耦合性越强, 同时表明其独立性越差 ( 降低耦合性, 可以提高其独立性)。耦合性存在于各个领域,而非...

结构化方法与面向对象方法的比较

1.结构化方法 结构化方法,是70年代末,由Demarco等人提出的,旨在减少分析活动中的错误,建立满足用户需求的系统逻辑模型。结构化方法是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法,也称为新生命周期法,是生命周期法的继承与发展,是生命周期法与结构化程序设计思想的结合。其基本思想是用系统工程的思想和工程化得方法,根据用户至上的原则,自...

java笔试题

1,有关线程的哪些叙述是对的()A,一旦一个线程被创建,它就立即开始运行。B,使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。C,当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。D,一个线程可能因为不同的原因停止并进入就绪状态。答案:BCD在抢占式线程模型中,操作系统可以在任何时候打断线程。通常会在它运行了一段时间(...

全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(七)软件工程知识

7.1软件生存周期 7.1.1软件工程方法学 软件工程方法学包括3个要素:即方法、工具和过程 软件工程的框架可概括为:目标、过程和原则 1.目标 生产具有正确性、可用性、开销合宜的产品 2.过程 生产满足需求并达到工程目标的软件产品所需要的步骤,主要包括:开发、运作和维护过程,他们覆盖了需求、设计、实现、确认及维护等活动。 需求活动:问题分析和需求分析 设...

如何评价软件工程师知识技能水平

1.良好的编码能力   软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)。                  2.自觉的规范意识和团队精神   随着...