(软件工程复习核心重点)第四章总体设计-第三节:启发规则

启发规则有:

  • 改进软件结构提高模块独立性
  • 模块规模应该适中
  • 深度、宽度、扇入和扇出应适当
  • 模块的作用域应该在控制域之内
  • 力争降低模块接口的复杂程度
  • 设计单入口单出口的模块
  • 模块功能应该可以预测但要防止过分局限

(1)改进软件结构提高模块独立性

设计出软件的初步结构后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。

(2)模块规模应该适中

  • 过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,分解后不应该降低模块独立性
  • 过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。因此过小的模块有时不值得单独存在

(3)深度、宽度、扇入和扇出应适当

好的软件结构:顶层扇出较高,中层扇出较少,底层模块有高扇入


深度:表示软件结构中控制的层数,能粗略地标志一个系统的大小和复杂程度

在这里插入图片描述

  • 深度为3

可以按文件夹的的层级目录结构来对照理解,按照层级来看,
本道题中
第一层:某系统
第二层:功能1,功能2,功能3
第三层:功能2.1,功能2.2,功能2.3,功能3.1,功能3.2
(注意:这里功能3.1和功能3.2其实是同一个层级的,类比文件目录结构不难看出),深度即为这里分析的层数,所以这题的深度为3。


宽度:宽度是软件结构内同一个层次上的模块总数的最大值。宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出

在这里插入图片描述

  • 宽度为5

第三层:功能2.1,功能2.2,功能2.3,功能3.1,功能3.2
第三层的模块总数显然最大,为5,


扇出:是一个模块直接控制的模块数目,设计扇出应注意

  • 扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块,扇出太大一般是因为缺乏中间层次,应适当增加中间层次的控制模块
  • 扇出过小可把下级模块分解成若干个子功能模块,或合并到它的上级模块中去。分解模块或合并模块必须符合问题结构,不能违背模块独立原理
  • 一个设计得好的典型系统的平均扇出通常是3或4

在这里插入图片描述

在这里插入图片描述

  • 最大扇出数是3

扇入:表明有多少个上级模块直接调用它。扇入越大则共享该模块的上级模块数目越多。但是,不能违背模块独立原理单纯追求高扇入

在这里插入图片描述

(4)模块的作用域应该在控制域之内

A:定义

  • 作用域:指受该模块内一个判定影响的所有模块的集合
  • 控制域:是这个模块本身以及所有直接或者间接从属于它的模块的集合

B:规则

在一个设计得很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块

C:修改方法(了解)

  • 把做判定的点往上移
  • 把在作用域内但不在控制域内的模块移到控制域内

(5)力争降低模块接口的复杂程度

模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来传递的数据之间没有联系)是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性

(6)设计单入口单出口的模块

这条规则警告软件工程师不要使模块间出现内容耦合。当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易维护的

(7)模块功能应该可以预测但要防止过分局限

模块的功能应该能够预测,但也要防止模块功能过分局限。

  • 可预测:如果一个模块可以当做一个黑盒子,即只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。由于内部存储器对于上级模块而言是不可见的,所以这样的模块既不易理解又难于测试和维护
  • 过分局限:如果一个模块任意限制局部数据结构的大小,过分限制在控制流中可以做出的选择或者外部接口的模式,那么这种模块的功能就过分局限,使用范围也就过分狭窄了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

快乐江湖

创作不易,感谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值