千家信息网

软件架构设计的目的

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什
千家信息网最后更新 2025年01月31日软件架构设计的目的

软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的粒度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入,以及各种各样的设计原则等,

耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:

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

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

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

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

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

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

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

(2) 公共耦合:一组模块都访问同一个全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。如果模块只是向公共数据环境输入数据,或是只从公共数据环境取出数据,这属于比较松散的公共耦合;如果模块既向公共数据环境输入数据又从公共数据环境取出数据,这属于较紧密的公共耦合。

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

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

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

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

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

(3) 外部耦合:一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。

(4) 控制耦合:模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。

(5) 标记耦合:调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。

(6) 数据耦合:调用模块和被调用模块之间只传递简单的数据项参数。相当于高级语言中的值传递。

(7) 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。

总结:耦合是影响软件复杂程度和设计质量的一个重要因素,为提高模块的独立性,应建立模块间尽可能松散的系统,在设计上我们应采用以下原则:若模块间必须存在耦合,应尽量使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合,并限制公共耦合的范围,尽量避免内容耦合。

紫云(深圳)软件有限公司

云数据时代引领者

微信:Chizcloud

微博:http://weibo.com/Chizcloud

官网:http://www.chizcloud.com/

联系&投稿:service@chizcloud.com


模块 耦合 数据 软件 之间 内容 控制 设计 环境 系统 两个 全局 语言 独立 联系 高级 信息 参数 变量 数据结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江北软件开发系统 文盲驾考交规速成软件开发 南京星迈网络技术 服务器归谁管理 数据库有就更新没有就插入 从事餐饮软件开发的公司 5g打电话出现无法连接到服务器 异星探险家添加专用服务器 陇南市网络安全培训班 四川外采erp软件开发 数据库与缓存关系 电脑上安装数据库文件包 支付宝网络技术有限公司诈骗 数据库远程链接显示40错误 起床战争服务器推荐手机 重庆鲲鹏服务器价格是多少 hp 服务器系统安装 事业单位网络安全知识考题 600g服务器硬盘 手机授权服务器程序怎么启动 网络安全主题绘画作品儿童 数据库的autom是什么意思 常见的数据库产品及特点 软件开发工程的质量保证措施 保证数据库安全的文件 实施和软件开发哪个工资高 运维工程师能干软件开发吗 投票软件开发要多少钱 通讯行业网络技术大赛 网络技术与信息处理可以报一建吗
0