软考-软件设计师:结构化开发方法-系统设计的基本原理:抽象、模块化、信息隐蔽、模块独立(高内聚、低耦合) 作者:马育民 • 2025-04-17 09:50 • 阅读:10005 # 抽象 抽象是一种设计技术,重点说明一个实体的 **本质方面**,而忽略或者掩盖不太重要或非本质的方面。 将复杂的现象 **简化** 到可以 **分析**、**实验** 或者可以 **理解** 的程度。 软件工程中从软件定义到软件开发要经历多个阶段,每个阶段都是对软件 **抽象层次的一次细化**。 # 模块化 模块在程序中是 **数据说明**、**可执行语句** 等程序对象的集合 在软件的体系结构中,模块是可组合、分解和更换的单元。 **模块化:**是指将一个待开发的软件分解成 **若干个 小的 简单部分**,每个模块可 **独立地开发、测试**,最后组装成完整的程序。 这是一种复杂问题“分而治之”的原则。 **模块化的目的:**是使程序的结构清晰,容易阅读、理解、测试和修改。 # 信息隐蔽 将每个程序的成分 **隐蔽** 或 **封装** 在一个单一的设计模块中,在定义每一个模块时尽可能少地显露其内部的处理。 >在设计时首先列出一些可能发生变化的因素,在划分模块时将一个可能发生变化的因素隐蔽在某个模块的内部,使其他模块与这个因素无关。当这个因素发生变化时,只需修改含有这个因素的模块,而与其他模块无关。 **目的:**对提高软件的 **可修改性**、**可测试性** 和 **可移植性** 都有重要的作用。 # 模块独立 模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。 衡量模块独立程度的标准有两个: - 耦合性 - 内聚性 将软件系统划分模块时,应尽量做到 **高内聚、低耦合** ### 耦合 耦合是 **模块之间** 相互联系的 **紧密程度的度量**。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。 模块之间,相互联系程度越低,则 **耦合越低**,即:**模块的独立性就越好** 耦合方式有7种类型,如图 [](https://www.malaoshi.top/upload/0/0/1GWxz2AXDZm.png) - 无直接耦合。指两个模块之间 **没有直接的关系**,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。 - 数据耦合。指两个模块之间有调用关系,传递的是 **简单数据**,相当于高级语言中的值传递。 - 标记耦合。指两个模块之间传递的是 **数据结构** - 控制耦合。指一个模块调用另一个模块时,传递的是 **控制变量**,被调用模块通过该控制变量 **执行不同功能**。 - 外部耦合。一组模块都访问 **同一全局简单变量**,而且不是通过参数表传递该全局变量的信息。 - 公共耦合。多个模块都访问 **同一个公共数据环境(即:多个变量)** - 内容耦合。当一个模块直接使用 **另一个模块的内部数据**;通过 **非正常入口转入另一个模块内部** ;两个模块有一部分 **程序代码重叠**;一个模块有 **多个入口** ### 内聚 内聚是对一个 **模块内部 各个元素(语句、程序段)之间的联系的紧密程度** 的度量。 一个模块内,各个元素(语句、程序段)之间的 **联系程度越高**,则 **内聚越高**,设计越合理 >一个内聚程度高的模块(在理想情况下)应当只做一件事。 内聚性分为7种类型,如图 [](https://www.malaoshi.top/upload/0/0/1GWxz5eivg2.png) - 偶然内聚(巧合内聚)。指一个模块内的各处理元素之间 **没有任何联系**。 - 逻辑内聚。指模块内执行若干个 **逻辑上相似** 的功能,通过参数确定该模块完成哪一个功能。 - **时间内聚(瞬时内聚)**。把需要 **同时执行** 的动作组合在一起形成的模块称为时间内聚模块。 - **过程内聚**。指一个模块完成多个任务,这些任务必须按 **指定的过程执行**。 - 通信内聚。指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。 如:多个代码要处理同一个文件 - **顺序内聚**。各个处理元素都密切相关于同一功能,必须 **顺序执行**,前一功能元素的输出就是下一功能元素的输入。 - 功能内聚。这是 **最强**的内聚,完成一个 **单一功能**,各个部分协同工作,缺一不可 理解: |内聚模式|例子| |---|---|---| |偶然内聚|不认识的几个人,偶然之下几个人被分到一个班了| |逻辑内聚|哥几个都擅长体育,逻辑上说应该有关系,然而并无| |时间内聚|哥几个每次到吃饭这个时间点,都要去食堂| |过程内聚|哥几个先去网吧,再撸烤串,最后去KTV| |通信内聚|哥几个都共享同一台电脑,文件数据都放一起| |顺序内聚|跑接力赛,前一个跑完,把接力棒传给后一个,后一个接着跑| |功能内聚|哥几个一起做个项目,少谁都不完整,都实现不了目标| # 题 以下关于模块化设计的叙述中,不正确的是 A、尽量考虑高内聚、低耦合,保持模块的相对独立性 B、模块的控制范围在其作用范围内 C、模块的规模适中 D、模块的宽度、深度、扇入和扇出适中 ### 答案 B # 题 某模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出就是下一处理元素的输入,则该模块的内聚类型为()内聚。 A、过程 B、时间 C、顺序 D、逻辑 ### 答案 C # 题 模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为()耦合。 A、数据 B、标记 C、控制 D、内容 ### 答案 B 参考: https://blog.csdn.net/Biu_Destiny/article/details/116999122 原文出处:http://malaoshi.top/show_1GWxcDbTWUX.html