软考中级软件设计师【结构化开发】知识点+题目
一、耦合
耦合是模块之间的相对独立性(相互连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等,有以下几个类型。
无直接耦合:指两个模块之间没有直接关系,它们分别属于不同模块的控制和调用,它们之间不传递任何信息,因此,模块间耦合性最弱,独立性最强。
数据耦合:两个模块有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
标记耦合:有调用关系,传递的是数据结构。
控制耦合:指一个模块调用另一个模块,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能,因此,被调用的模块应该有多个功能,哪个功能起作用受调用模块的控制。
外部耦合:模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议)
公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。
内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部。
口诀简记:数据传值,标记结构,变量控制,内部内容。
1.模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型为 。(2011年上半年)
A. 数据耦合 B. 标记耦合 C. 公共耦合 D. 内容耦合
2.如下图所示,模块A和模块B都访问相同的全局变量和数据结构,则这两个模块之间的耦合类型 为 耦合。(2016年上半年)
A. 公共 B. 控制 C. 标记 D. 数据
3.模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为 耦合。(2017年下半年)
A. 数据 B. 标记 C. 控制 D. 内容
4.耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合程度不取决于 。(2018年上半年)
A. 调用模块的方式 B. 各个模块之间接口的复杂程度
C. 通过接口的信息类型 D. 模块提供的功能数
5.某企业管理信息系统中,采购子系统根据材料价格、数量等信息计算采购的金额,并给财务子系统传递采购金额、收款方和采购日期等信息,则这两个子系统之间的耦合类型为 耦合。(2018年下半年)
A. 数据 B. 标记 C. 控制 D. 外部
6.已知模块A给模块B传递数据结构X,则这两个模块的耦合类型为 。(2019年上半年)
A. 数据耦合 B. 公共耦合 C. 外部耦合 D. 标记耦合
7.模块A通过非正常入口转入模块B内部,则这两个模块之间是 耦合。(2021年上半年)
A. 数据 B. 公共 C. 外部 D. 内容
二、内聚
内聚是对一个模块内部各个元素彼此结合的紧密程度的度量,有以下几个类型。
偶然内聚:指一个模块内的的各处理元素之间没有任何关系。
逻辑内聚:指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
过程内聚:一个模块完成多个任务,这些任务必须按指定的过程执行。
通信内聚:模块内的的所有处理元素都在一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。
顺序内聚:指一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
功能内聚:最强的内聚,指模块内的所有元素共同作用完成一个功能,缺一不可。
耦合性和内聚性是模块独立性的两个定性标准,在将软件系统划分模块时,应尽量做到高内聚、低耦合,提高模块的独立性。
口诀简记:逻辑看参数,通信靠结构,顺序执行是顺序,特定过程为过程,同时执行问时间,功能内聚不可缺。
1.模块A执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能,则该模块具有 内聚。(2012年上半年)
A. 顺序 B. 过程 C. 逻辑 D. 功能
2.模块A、B和C都包含相同的5个语句,这些语句之间没有联系。为了避免重复,把这5个语句抽取出来组成一个模块D,则模块D的内聚类型为 内聚。(2014年下半年)
A. 功能 B. 通信 C. 逻辑 D. 巧合
3.某模块实现两个功能:向某个数据结构区域写数据和从该区域读数据。该模块的内聚类型为 内聚。(2015年上半年)
A. 过程 B. 时间 C. 逻辑 D. 通信
4.某模块中有两个处理A和B,分别对数据结构X写数据和读数据,则该模块的内聚类型为 内聚。(2016年下半年)
A. 逻辑 B. 过程 C. 通信 D. 内容
5.模块A、B和C有相同的程序块,块内的语句之间没有任何联系,现把该程序块取出来,形成新的模块D,则模块D的内聚类型为 (1) 内聚。以下关于该内聚类型的叙述中,不正确的是 (2) 。(2017年上半年)
(1) A. 巧合 B. 逻辑 C. 时间 D. 过程
(2) A. 具有最低的内聚性 B. 不易修改和维护
C. 不易理解 D. 不影响模块间的耦合关系
6.某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为 内聚。(2017年下半年)
A. 时间 B. 过程 C. 信息 D. 功能
7.某模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出就是下一处理元素的输入,则该模块的内聚类型为 内聚。(2019年下半年)
A. 过程 B. 时间 C. 顺序 D. 逻辑
8.若某模块内所有处理元素都在同一个数据结构上操作,则该模块的内聚类型为 。(2020年下半年)
A. 逻辑 B. 过程 C. 通信 D. 功能