第五章
1)总体设计的两个阶段
–系统设计阶段:确定系统的具体实现方案
–结构设计阶段:确定软件结构
2)总体设计过程
设想供选择的方案
选取合理方案
推荐最佳方案
功能分解
设计软件结构
数据库设计
制定测试计划
书写文档
审查和复查
3)模块化
模块(Module)是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符来表示
四种属性:
(1) 输入/输出、(2) 逻辑功能、(3) 运行程序、(4) 内部数据。前两个属性又称为外部属性,后两个属性又称为内部属性
总体设计更关注外部属性
模块化定义:
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
衡量标准:模块可分解性、可组装性、可理解性、连续性、保护性
模块化设计的优点
–采用模块化原理可以使软件结构清晰
–不仅容易设计也容易阅读和理解
–因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性
–因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性
–模块化也有助于软件开发工程的组织管理
4)几个名词:抽象与求精 信息隐藏和局部化
5)模块独立:“模块独立”概念是模块化、抽象、逐步求精和信息隐藏等概念的直接结果,也是完成有效的模块设计的基本标准
衡量标准:
耦合:衡量不同模块彼此间互相依赖(连接)紧密程度
内聚:衡量一个模块内部各个元素彼此结合的紧密程度
6)启发规则:有助于实现有效的模块化
2 模块规模应该适中
3 深度、宽度、扇出和扇入都应适当
4 模块的作用域应该在控制域之内
5 力争降低模块接口的复杂程度
6 设计单入口单出口的模块
7 模块功能应该可以预测
7)描述软件结构的图形工具(重点)
a.层次图和HIPO图
通常使用层次图(hierarchy chart)描绘软件的层次结构
在层次图中一个矩形框代表一个模块
框间的连线表示调用关系(位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块)
HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写
为了使HIPO图具有可追踪性,在H图(即层次图)里除了顶层的方框之外,每个方框都加了编号
H图中每个方框代表模块的处理过程,都可以有一张IPO图与之对应
结构图(Structure Chart)是进行软件结构设计的另一个有力工具
结构图和也是描绘软件结构的图形工具
图中一个方框代表一个模块,框内注明模块的名字或主要功能
方框之间的箭头(或直线)表示模块的调用(call)关系
在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息
可以利用注释箭头尾部的形状来区分传递的信息是数据还是控制信息
尾部是空心圆表示传递的是数据
实心圆表示传递的是控制信息
7)面向数据流的设计方法(SD方法)(重点):
目标:给出设计软件结构的一个系统化的途径
设计步骤
复查基本系统模型
复查并精化数据流图
确定数据流图具有变换特性还是事务特性
确定逻辑输入和逻辑输出的边界,从而孤立出变换中心
完成“第一级分解”
完成“第二级分解”
使用设计度量和启发规则对第一次分割得到的软件结构进一步精化
有两种映射方法:
1.变换流
2.事务流