软件工程之信息隐蔽与模块独立性

简介:

              最近看软工视频,老师提出了一个问题:信息隐蔽与模块独立性的联系,一开始我也不知道什么是信息隐蔽,模块独立还是略知一二,于是查了一下,自己总结了一些这二者之间的关系,与大家share!

         首先介绍一下信息隐蔽

         信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。

           然后介绍一下模块独立

          模块独立是指每个模块完成一个相对独立的子功能,并且与其他模块之间的联系简单。衡量模块独立程度的度量标准有两个:耦合和内聚。

          耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。按耦合度从低到高依次有7种耦合方式。       

           非直接耦合(独立运行)       

           数据耦合(用参数表传递简单数据)       

           标记耦合(传递数据结构或者一部分)       

           控制耦合(传递的信息包括控制模块的信息)       

          外部耦合(模块与软件之外的环境有关)       

          公共耦合(多个模块引用同一全局的数据区)       

          内容耦合(访问内部数据,代码重叠或者多个入口)

 

           内聚是指模块内部各元素之间联系的紧密程度内聚度越低模块的独立性越差。按内聚度从低到高依次有7种内聚种类。       

           偶然内聚(模块完成的多个任务,任务之间的关系松散)       

           逻辑内聚(模块完成逻辑相关的一组任务)       

           瞬时内聚(模块的所有任务必须在同一时间间隔内执行)       

           过程内聚(模块的处理元素相关而且按照特定的次序执行)       

           通信内聚(模块的所有元素集中在一个数据结构区域上)       

           顺序内聚(模块的处理元素相关,必须顺序执行)       

           功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)

 

          综上所述,信息隐蔽是为了减少信息外露,也是保持模块独立性的一种方式,模块设计要求“高内聚,低耦合”,尽可能使用数据耦合,避免使用公共耦合,尽量使用功能内聚,信息隐蔽可以使模块封装性提高,减少与其他模块之间的联系,见解很浅,希望各位给予意见。

相关文章
|
编解码 计算机视觉
如何用ffmpeg截取视频片段&截取时间不准确的坑
之前在工作中,有遇到需要程序化截取视频片段的场景,这里使用ffmpeg命令行就可以很容易实现,这里也记录下我们使用过程中遇到的坑,希望对大家也有所帮助。 举个例子,当我们要截取视频文件中input.mp4的第15秒到第98秒时,ffmpeg命令行可以这么写:
986 0
|
Java
sonar入门:使用sonar-scanner检测代码
sonar入门:使用sonar-scanner检测代码
1834 0
sonar入门:使用sonar-scanner检测代码
|
8月前
|
SQL 存储 关系型数据库
MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制
MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制
710 11
|
12月前
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
11384 1
|
JavaScript Java API
基于代理和单例模式的 electron 多窗口管理方案
基于代理和单例模式的 electron 多窗口管理方案
951 0
|
算法 调度 UED
深入理解操作系统的调度算法
【9月更文挑战第22天】本文通过深入浅出的方式,介绍了操作系统中的核心概念——调度算法。文章首先解释了调度算法的基本定义和重要性,然后详细分析了先来先服务(FCFS)、短作业优先(SJF)以及时间片轮转(RR)三种常见的调度算法。每种算法都配有简单的代码示例,帮助读者更好地理解其工作原理。最后,文章探讨了这些调度算法在现代操作系统中的应用及其优缺点,旨在为读者提供对操作系统调度机制的全面认识。
|
敏捷开发
怎么理解基于架构的软件开发
理解基于架构的软件开发
384 1
|
存储 NoSQL 关系型数据库
索引!索引!!索引!!!到底什么是索引?
**索引是数据库中的数据结构,类似书籍目录,加速数据查找和访问。优点包括提升查询性能、数据检索速度、支持唯一性约束及优化排序和连接操作。缺点在于增加写操作开销、占用存储空间、高维护成本和过多索引可能降低性能。常见的索引类型有单值、复合、唯一、聚集和非聚集索引等,实现方式涉及B树、B+树和哈希表。B树和B+树适合磁盘存储,B+树尤其适用于范围查询,哈希索引则适用于快速等值查询。**
1416 0
|
安全 Linux 测试技术
Linux命令setpriv详解
`setpriv` 是Linux下的命令行工具,用于调整进程权限以增强安全性,尤其适用于自动化和非交互式权限切换。它不使用PAM,支持管理能力集、GID/UID及SELinux上下文。例如,`setpriv --reuid=1000 script.sh` 可以以低权限用户运行脚本,而`--selinux-label`可设定SELinux标签。在使用时,应最小化权限、充分测试、保持与其他安全机制的兼容性,并定期审核权限设置。
|
算法 Python
python 保存音频到本地
python 保存音频到本地
708 1