4.3 软件结构优化准则
4.3.1 软件结构图
软件结构图是系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。对于一个“问题”,可用不同的软件结构来解决,不同的设计方法和不同的划分和组织,得出不同的软件结构。
结构图的注主要内容是:
(1)模块:模块用方框表示,并用名字标识该模块,名字应体现该模块的功能。
(2)模块的控制关系:两个模块间用单向箭头(或直线)连接表示它们的控制关系,如图4-2
(3)模块间的信息传递:模块问还经常用带注释的短箭头表示模块调用过程中来回传递的信息。有时箭头尾部带空心圆的表示传递的是数据,带实心圆的表示传递的是控制信息,如图4-2
(4)两个附加符号:表示模块有选择地调用或循环调用。如图4-3


(5)结构图的形态特征:
①深度:指结构图控制的层次,也是模块的层数,如图4—4,结构图的深度为5。
②宽度:指一层中最大的模块个数,如图4—4宽度为8。
③扇出:指一个模块直接下属模块的个数,如图4—4,模块M的扇出为3。
④扇入:指一个模块直接上属模块的个数,如图4—4,模块T的扇人为4。

(6)画结构图应注意的事项
①同名字的模块在结构图中仅出现一次。
②调用关系只能从上到下。
③不严格表示模块的调用次序,习惯上从左到右。有时为了减少连线的交叉,适当地调整同一层模块左右位置,以保持结构图的清晰性。
4.3.2 软件结构设计优化准则
(1)划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。
(2)一个模块的作用范围应在其控制范围之内,且判定所在的模块应与其影响的模块在层次上尽量靠近。一个模块的作用范围指该模块内一个判定影响的所有模块的集合。一个模块的控制范围是指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。
(3)软件结构的深度、宽度、扇入、扇出应适当。
(4)模块的大小应适中。
(5)模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。

图4-5 模块的判定作用范围