模块独立性原理

简介:

1. 理解模块独立的重要性

2. 掌握模块独立的概念

3. 重点掌握度量模块独立程度的两个标准:

    耦合和内聚

5.2.1   模块化

5.2.2   抽象

5.2.3   逐步求精

5.2.4   信息隐藏和局部化

5.2.5   模块独立

5.2.5  模块独立

1. 模块独立的概念:

►是模块化、抽象、信息隐藏和局部化概念的直

    接结果。

►是指软件系统中每个模块只完成软件要求的具

    体的子功能,而和软件系统中其他模块的接口

    尽量简单。

2. 如何做到模块独立?

►开发具有独立功能而且和其他模块之间没有过

    多的相互作用的模块,就可以做到模块独立。

1. 模块独立的概念是:

2. 如何做到模块独立?

3. 模块独立的重要性:

    ► 有效的模块化的软件比较容易开发;

    ► 独立的模块比较容易测试和维护。

4. 模块独立程度的度量标准

模块的独立程度可以由两个定性标准度量 

(1)耦合:不同模块之间的互联程度的度量     

(2)内聚:模块内部彼此结合的紧密程度的度量  

(1)耦合( Coupling )

问题1. 耦合是越强越好还是越弱越好?

问题2. 耦合的强弱取决于什么?

   ► 模块之间接口的复杂程度

        ► 调用模块的方式

        ► 通过接口的数据

问题3. 怎样具体区分模块间耦合程度的强弱呢?

非直接   数据    特征   控制   公共环  内容

  耦合     耦合    耦合   耦合   境耦合  耦合

①  非直接耦合(Nondirect  Coupling)

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

②  数据耦合(Data  Coupling)

两个模块彼此间通过参数来交换信息,而且交换的信息仅仅是数据。数据耦合属于松散耦合。

#include <stdio.h>

int Multiply(int x, int y)

{

     return (x * y);

}

void main()

{

     int x = 0;

     int y = 0;

     scanf ("%d%d",  &x, &y);

     printf ("x * y = %d\n",  Multiply (x,y));

}                            

 ③ 特征耦合(Stamp  Coupling)

当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。

 ④  控制耦合(Control  Coupling)

两个模块彼此间通过参数来交换信息,如果传递的信息中有控制信息,这种耦合称为控制耦合。

void output ( flag )

{   If ( flag )  printf ("OK! ");

     else  printf ("NO! "); }

main()

{   int flag;

     output ( flag );

}

⑤  公共环境耦合(Common  Coupling)

当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。

公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

公共耦合的复杂程度随耦合模块的个数增加而显著增加。

若只是两模块间有公共数据环境,则公共耦合有两种情况:松散公共耦合和紧密公共耦合。

⑥  内容耦合(Content  Coupling)

一个模块直接访问另一个模块的内部数据;

一个模块不通过正常入口转到另一模块内部;

两个模块有一部分程序代码重迭(只可能出现在汇编语言中);

一个模块有多个入口。

坚决避免使用内容耦合  

设计原则

①  尽量使用数据耦合,

② 少用控制耦合和特征耦合,

③  限制公共环境耦合的范围,

④ 完全不用内容耦合。

例1.分析下图,确定模块之间的耦合类型。

表1  模块接口描述         

 

(模块p、t、u更新同一个数据库)

图1   一个程序的模块互联图

(2)内聚( Cohesion )

  问题1. 模块内聚程度是越高越好还是越低越好?

  问题2. 内聚和耦合之间存在什么关系?

  问题3. 内聚可以分为哪几类?

► 低内聚:偶然内聚,逻辑内聚,时间内聚            

► 中内聚:过程内聚,通信内聚    

► 高内聚:顺序内聚,功能内聚      

①  偶然内聚(Coincidental  Cohesion)

      

②  逻辑内聚(Logical  Cohesion)

③   时间内聚(Classical  Cohesion)

时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行

与时间有关,通常要求所有功能必须在同一时间段内执行。

例如,初始化模块和终止模块就是时间内聚模块。

④  过程内聚(Procedural  Cohesion)

⑤  通信内聚(Communication  Cohesion)

⑥  顺序内聚(Sequential  Cohesion)

⑦  功能内聚(Functional  Cohesion)

► 一个模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。

 ► 功能内聚是最高程度的内聚,内聚性最强。

例2.分析下图的层次图,确定每个模块的内聚类型。




本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/5839777.html,如需转载请自行联系原作者

相关文章
xxl-job执行器启动报错读取不到配置文件Could not resolve placeholder ‘xxl.job.executor.address‘ in value “${xxl.job
有几个不用配置的属性,也要写出来,不填值就行 但是最后一个日志天数得写,写个-1。不然空字符串无法转成数字
|
缓存 关系型数据库 MySQL
MySQL并发支撑底层Buffer Pool机制详解
【10月更文挑战第18天】在数据库系统中,磁盘IO操作是性能瓶颈之一。为了提高数据访问速度,减少磁盘IO,MySQL引入了缓存机制。其中,Buffer Pool是InnoDB存储引擎中用于缓存磁盘上的数据页和索引页的内存区域。通过缓存频繁访问的数据和索引,Buffer Pool能够显著提高数据库的读写性能。
608 2
|
存储 安全 Ubuntu
CentOS 与 Debian:主要相似点和不同点
【8月更文挑战第27天】
1142 2
CentOS 与 Debian:主要相似点和不同点
|
消息中间件 存储 API
|
设计模式 缓存 JavaScript
API设计模式:REST、GraphQL、gRPC与tRPC全面解析
API设计模式:REST、GraphQL、gRPC与tRPC全面解析
647 0
ly~
|
供应链 搜索推荐 安全
大数据模型的应用
大数据模型在多个领域均有广泛应用。在金融领域,它可用于风险评估与预测、智能营销及反欺诈检测,助力金融机构做出更加精准的决策;在医疗领域,大数据模型能够协助疾病诊断与预测、优化医疗资源管理和加速药物研发;在交通领域,该技术有助于交通流量预测、智能交通管理和物流管理,从而提升整体交通效率;电商领域则借助大数据模型实现商品推荐、库存管理和价格优化,增强用户体验与企业效益;此外,在能源和制造业中,大数据模型的应用范围涵盖从需求预测到设备故障预测等多个方面,全面推动了行业的智能化转型与升级。
ly~
1074 2
|
JavaScript 前端开发 API
vue中nextTick函数和react类似实现
vue中nextTick函数和react类似实现
458 0
|
JavaScript API 数据库
ant design vue + jeecgboot 实现本地上传视频及播放视频功能
ant design vue + jeecgboot 实现本地上传视频及播放视频功能
833 2
|
大数据 API Android开发
Android MemoryFile 共享内存
Android MemoryFile 共享内存
401 0
|
JavaScript Java 测试技术
基于微信小程序的二手物品交易平台ssm附带文章和源代码设计说明文档ppt
基于微信小程序的二手物品交易平台ssm附带文章和源代码设计说明文档ppt
346 0

热门文章

最新文章