【软考软件评测师】第八章节 软件工程之模块化设计

本文深入探讨软件工程中的模块化设计,重点讲解模块独立性、耦合和内聚的概念。通过七个类型的耦合(非直接耦合至内容耦合)和七种内聚(功能内聚至偶然聚合)的分析,阐述模块设计的目标和原则,强调高内聚低耦合的重要性。此外,提供了历年软考综合知识真题,帮助考生理解和应用模块化设计知识。

【软考软件评测师】第八章节 软件工程之模块化设计

第一部分 知识点集锦

1. 模块独立性的概念

模块独立是指每个模块完成换一个相对独立的特定子功能,并且与其他模块之间的联系简单。衡量模块独立程度的标准有:聚合和耦合——高内聚低耦合。
模块间的耦合和模块的内聚是度量模块独立性的两个准则。内聚是模块功能强度的度量,即模块内部各个元素彼此结合的紧密程度。一个模块内部各个元素之间的紧密程度越高,则其内聚性越高,模块独立性越好。

2. 模块之间的耦合

耦合类型是按照由低到高排列。非直接耦合和数据耦合最为优秀,其次是标记耦合,控制耦合,外部耦合,公共耦合,最后才是内容耦合。
对象间的耦合度就是对象之间的依赖程度,对象之间的耦合程度越高,维护成本也就越高。

1)非直接耦合

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

2)数据耦合

两个模块彼此间通过数据参数交换信息。
传递的是简单的数据值,相当于高级语言中的值传递。

3)标记耦合

一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
两个模块之间传递的是数据结构

4)控制耦合

两个模块彼此间传递的信息中有控制信息
模块M2根据模块M1传递如标记量的控制信息来确定M2执行哪部分语名

5)外部耦合

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。

6)公共耦合

两个模块之间通过一个公共的数据区域传递信息。

7)内容耦合

一个模块需要涉及到另一个模块的内部信息。
当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。
主要表现在模块M2直接访问模块Ml内部;模块Ml和模块M2有公共的数据结构或者模块Ml和模块M2有部分代码是重叠的。

3. 模块内部的内聚

1)功能内聚

指模块内的所有元素共同作用完成一个功能,缺一不可。

2)顺序内聚

模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。
指一个模块中的各个处理元素都密切相关于同一个功能且必须顺序执行,前一个功能元素的输出就是下,功能元素的输入。
类似于管道过滤器架构风格。

3)通信内聚

模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。
指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。
也叫做信息内聚

4)过程内聚

模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行
指一个模块分离成多个任务,这些任务必须按指定的过程执行。
过程内聚不是最低的内聚类型,也不是最高的内聚类型,独立性不好,不易于重用。

5)时间内聚

模块内部的各个组成部分所包含的处理动作必须在同一时间内执行
把需要同时执行的动作组合在一起形成的模块。

6)逻辑内聚

模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。
指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。
若一个模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能,则该模块的内聚类型为逻辑内聚

7)偶然聚合

模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系
指一个模块内的各处理元素之间没有任何联系。
模块A、B和C都包含相同的5个语句,这些语句之间没有联系,为了避免重复,把这5个语句抽取出来组成一个模块D,则模块D的内聚类型就是偶然聚合。

4. 模块化设计的目标

每个模块完成一个相对独立的特定功能;模块之间的结构简单。
简而言之就是要保证模块之间的独立性,提高每个模块的独立程度

5. 模块化设计原则

1)系统分解有层次

首先从系统的整体出发,根据系统的目标以功能划分模块。各个模块即互相配合,又各自具有独立功能,共同实现整个系统的目标。然后,对每个子模块再进一步逐层向下分解,直到分解到最小的模块为止

2)适宜的系统深度和宽度比例

系统深度是指系统结构中的控制层次。宽度表示控制的总分布,即统一层次的模块总数的最大值。系统的深度和宽度之间往往有一个较为适宜的比例。深度过大说明系统划分过细,宽度过大可能会导致系统管理难度的加大

3)模块大小适中

模块的大小一般使用模块中所包含的语句的数量多少来衡量。有这样一个参考数字即模块的语句行数在50行~100行为最好,最多不超过500行

4)适度控制模块的扇入扇出

模块的扇入指模块直接上级模块的个数,模块的直属下级模块个数即为模块的扇出。模块的扇入数一般来说越大越好,说明该模块的通用性较强。对于扇出而言,过大可能导致系统控制和协调比较困难,过小则可能说明该模块本身规模过大。经验证明,扇出的个数最好是3或4,一般不要超过7.

5)较小的数据冗余

如果模块分解不当,会造成大量的数据冗余,这可能引起相关数据分布在不同的模块中,大量原始数据需要调用,大量的中间结果需要保存和传递,以及大量计算工作将要重复进行的情况,可能会降低系统的工作效率。

第二部分 综合知识历年真题

2019下综合知识历年真题(1分)

【2019年评测真题第33题:红色】
33.为了提高模块独立性,模块之间最好采用( )耦合。
A.数据
B.标记
C.控制
D.公共

解答:答案选择A。

2018下综合知识历年真题(2分)

【2018年评测真题第33题:红色】
33.某系统中有一个中央数据存储,模块A负责接收新来的数据并修改中央数据存储中的数据,模块B负责访问中央数据存储中的数据则这两个模块之间的耦合类型为( )。若将这两个模块及中央数据合并成一个模块,则该模块的内聚类型为( )。
A.数据
B.标记
C.控制
D.公共

A.逻辑
B.时间
C.通信
D.功能

解答:答案选择D|C。

2017下综合知识历年真题(2分)

【2017年评测真题第31题:红色】
31.模块A将其中的学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B,则模块A和B之间的耦合类型为( )耦合。
A.数据
B.标记
C.控制
D.内容

解答:答案选择B。

【2017年评测真题第32题:黄色】
32.某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为( )内聚。
A.时间
B.过程
C.信息
D.功能

解答:答案选择B。

2016下综合知识历年真题(2分)

【2016年评测真题第30题:红色】
30.模块A的功能为:从数据库中读出产品信息,修改后存回数据库,然后将修改记录写到维护文件中。该模块内聚类型为( )内聚。以下关于该类内聚的叙述中,正确的是( )。
A.逻辑
B.时间
C.过程
D.功能

A.是最低的内聚类型
B.是最高的内聚类型
C.不易于重用
D.模块独立性好

解答:答案选择C|C。

2015下综合知识历年真题(2分)

【2015年评测真题第31题:红色】
31.以下关于模块耦合关系的叙述中,耦合程度最低的是( ),其耦合类型为( )耦合。
A.模块M2根据模块M1传递如标记量的控制信息来确定M2执行哪部分语名
B.模块M2直接访问块M1内部
C.模块M1和模块M2用公共的数据结构
D.模块M1和模块M2有部分代码是重叠的

A.数据
B.标记
C.控制
D.内容

解答:答案选择A|C。

2014下综合知识历年真题(2分)

【2014年评测真题第32题:红色】
32.模块A、B和C都包含相同的5个语句,这些语句之间没有联系,为了避免重复,把这5个语句抽取出来组成一个模块D,则模块D的内聚类型为( )内聚。以下关于该类内聚的叙述中不正确的是( ) 。
A.功能
B.通信
C.逻辑
D.巧合

A.从模块独立性来看,是不好的设计
B.是最弱的一种内聚类型
C.是最强的一种内聚类型
D.不易于软件的修改和维护

解答:答案选择D|C。

2013下综合知识历年真题(3分)

【2013年评测真题第27题:绿色】
27.以下关于模块化的叙述中,正确的是( )。
A.每个模块的规模越小越好,这样开发每个模块的成本就可以降低了
B.每个模块的规模越大越好,这样模块之间的通信开销就会降低了
C.应具有高内聚和低耦合的性质
D.仅适用于结构化开发方法

解答:答案选择C。

【2013年评测真题第28题:红色】
28.当一个模块直接使用另一个模块的内部数据,或者通过非正常入口转入另一个模块内部,这种模块之间的耦合为( )。
A.数据耦合
B.标记耦合
C.公共耦合
D.内容耦合

解答:答案选择D。

2012下综合知识历年真题(2分)

【2012年评测真题第32题:黄色】
32.将在同一张报表上操作的所有程序组成一个模块,该模块的内聚为( )。
A.逻辑内聚
B.时间内聚
C.功能内聚
D.通信内聚

解答:答案选择D。

【2012年评测真题第33题:红色】
33.某系统中,模块A处理与销售相关的所有细节,仅需要发送一个包含销售量、价格和时间的报表到模块B,则这两个模块之间为( )耦合。
A.内容
B.标记
C.控制
D.数据

解答:答案选择B。

2011下综合知识历年真题(2分)

【2011年评测真题第37题:红色】
37.模块设计中,某模块根据输入的控制信息从文件中读一个记录或者向文件中写一个记录,则其内聚类型为( )。
A.功能内聚
B.信息内聚
C.逻辑内聚
D.巧合内聚

解答:答案选择C。

【2011年评测真题第39题:黄色】
39.A模块通过简单数据类型(如整型)参数访问B模块,该参数在B模块内用于数据计算,则A、B模块之间存在( )。
A.数据耦合
B.标记耦合
C.控制耦合
D.外部耦合

解答:答案选择A。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值