首页 >> 大全

[架构之路-183]-《软考-系统分析师》-13-系统设计

2023-09-19 大全 33 作者:考证青年

目录

第1章 什么是高内聚低耦合

1.1 概念

1.2 目的

1.3 什么时候需要进行高内聚低耦合

1.4 什么系统需要关注高内聚、低耦合

第2章 分类

2.1内聚的分类

2.2耦合的分类

第3章 增加高内聚降低耦合度的方法

3.1增加高内聚

3.2降低耦合度

第1章 什么是高内聚低耦合 1.1 概念

高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。

内聚是从功能角度来度量模块内部的各子模块之间的相似性的程度,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;

耦合是从接口角度来度量模块与外界之间的相互连接、相互依赖、相互影响的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

1.2 目的

目的是增加程序模块的可重用性、增强程序的移植性,同时也有助于系统的有序性、

通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。

高内聚具备可靠性,可重用性,可读性等优点,模块设计推荐采用高内聚。

1.3 什么时候需要进行高内聚低耦合

系统设计的概要设计阶段,对软件进行模块切分时,会使用到该概念。

需要注意的是,当你在做「分解」这个操作的时候,务必要关注每一次的「分解」是否满足一个最重要的条件:不同分支上的子问题,不能相互依赖,需要各自独立。

因为一旦包含了依赖关系,子问题和父问题之间就失去了可以被「归并」的意义。

比如,一个「问题Z」被分解成了两个子问题,「子问题A」和「子问题B」。但是,解问题A依赖于问题B的答案,解问题B又依赖于问题A的答案。这不就等于没有分解吗?

架构是指可以预制和重构的软件框架结构。普遍指通过某种特定平台,而达到完成整体软件的功能。架构设计是指对软件、硬件、网络、运营、政策等软件设计中的需求和要素进行决策,主要包括体系结构设计和各个层的模块设计。

架构设计目标有个能够最大化的重用。

首先,要在架构的设计中灵活地使用各种共享的,特别是开源的框架技术因为共享的架构可以方便开发组分解问题,从而对项目中的功能模块分为需要内部解决和使用已有外部服务两类,避免了重复开发实现。

其次,尽量使用成熟的框架。由于服务器端软件系统的开发,涉及的知识、内容、要解决的技术问题很多,在某些方面使用第三方成熟的框架,相当于让别人帮助开发者完成了一些基础性的工作,此时开发者只需要集中精力完成系统业务逻辑的设计和实现。使软件系统实现可扩展性在技术上灵活地使用各种架构模式和代码设计模式,并且在使用代码设计模式的同时,使用其所提倡的面向接口编程,会对软件系统的可扩展性和可移植性的提高有所帮助。

希望能够设计出“高内聚、低耦合”的应用系统。这是架构设计最主要的目标,实现系统的高内聚、低耦合遵从以下原则:

1.4 什么系统需要关注高内聚、低耦合

只有一个大型的软件系统,需要对软件系统进行大量的模块切分时,才会需要到高内聚、低耦合设计思想。

一个小型的软件系统,是不需要考虑高内聚、低耦合。

第2章 分类 2.1内聚的分类

内聚:故名思议,表示内部间聚集、关联的程度,那么高内聚就是指要高度的聚集和关联。

内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。

内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

2.2耦合的分类

耦合:是对模块间关联程度的度量。

耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。

模块间的耦合度是指模块之间的依赖关系,包括:

模块间联系越多,其耦合性越强,同时表明其独立性越差。

降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。

耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标。

备注0:

共享资源虽然是高耦合,但并非一无是处,当两个模块之间需要高性能数据交换时,共享内存(共享数据)是一个非常高效的手段!!!

备注1:不存在完全孤立的模块

没有与外界完全没有耦合的模块,与外界完全没有耦合的模块是信息孤岛,是没有存在的意义和价值的!!!!

备注2:公共耦合会引起以下问题

1. 无法控制各个模块对公共数据的存取,严重影响了软件模块的可靠性和适应性。

系统架构分析__oa系统架构设计

2. 使软件的可维护性变差。若一个模块修改了公共数据,则会影响相关模块。

3. 降低了软件的可理解性。不容易清楚知道哪些数据被哪些模块所共享,排错困难。

一般地,仅当模块间共享的数据很多且通过参数传递很不方便时,才使用公共耦合。

备注3:内容耦合

一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合:

1. 一个模块直接访问另一个模块的内部数据。

2. 一个模块不通过正常入口而直接转入到另一个模块的内部。

3. 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。

4. 一个模块有多个入口。

内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。

第3章 增加高内聚降低耦合度的方法 3.1增加高内聚 3.2降低耦合度

1、少使用类的继承,多用接口隐藏实现的细节。

Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。

继承能很好的利用现有内的结构化定义,但也会导致两个类深度耦合。

2、模块的功能化分尽可能的单一

道理也很简单,功能单一的模块供其它模块调用的机会就少。

(其实这是高内聚的一种说法,高内聚低耦合一般同时出现)。

3、遵循一个定义只在一个地方出现。

4、少使用全局变量。

5、类属性和方法的声明少用,多用关键字。

的本质就是类的接口,接口越多,对外的依赖性越大。属性越少,与外界的接口越少。

6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。

设计模式本身,就是遵循高内聚、低耦合的原则设计的模式!!!

7、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。

摆脱业务代码与数据库的强耦合。

8、最后当然就是避免直接操作或调用其它模块或类的数据(内容耦合);

如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了