- 总体设计的目的:回答“概括地说,系统应该如何实现”这个问题,总体设计又称概要设计或初步设计
1.设计过程
- 两个阶段:一.系统设计阶段,确定系统的具体实现方案。二.结构设计阶段,确定软件结构
- 九个步骤:
- 设想供选择的方案
- 选取合理的方案
- 推荐最佳方案
- 功能分解
- 设计软件结构
- 设计数据库
- 制定测试计划
- 书写文档
- 审查和复审
2.结构化开发方法设计原理
- 模块:是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件
- 模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
- 模块的属性:接口,功能,状态,逻辑
- 软件结构:树状结构和网状结构
- 结构图(SC)是精确表达模块结构的图形表示工具
- 有关指标:⑴深度:表示软件结构中从顶层模块到最底层模块的层数。 ⑵宽度:表示同一层次上的模块总数。 ⑶扇出数:指一个模块直接控制下属的模块个数。 ⑷扇入数:指一个模块的直接上属模块个数。
- 抽象:抽象就是抽出事物的本质特征而暂时不考虑他们的细节。
- 逐步求精:定义为为了能集中精力解决主要问题而尽量推迟对问题细节的考虑
- 信息隐藏:应该这样设计模块,使得一个模块内包含的信息对于不需要这个信息的模块来说,是不能访问的
- 局部化:局部化是指把一些关系密切的软件元素物理地放得彼此靠近
- 模块独立性:可以有两个定性标准度量:内聚合耦合
- 耦合性:指模块相互联系的紧密程度,是模块间相互连接性的度量。耦合强度的大小是由模块间接口的复杂程度决定的。
- 耦合性由高到低:内容耦合,公共耦合(松散和紧密),外部耦合,控制耦合,标记耦合,数据耦合,非直接耦合
- 内容耦合:一个模块直接访问另一模块的内部数据,一个模块不通过正常入口转到另一个模块的内部,一个模块多个入口,两个模块有部分代码重叠。
- 公共耦合:若干模块访问一个公共的数据环境,松散公共耦合:模块同时只对公共数据环境进行读或写一种操作,紧密公共耦合:若干模块对公共数据环境同时读和写操作
- 外部耦合:一组模块都访问同一全局简单变量
- 控制耦合:一个模块传递给另一模块的信息是用于控制该模块内部逻辑的控制信号。
- 标记耦合:一个模块传送给另一个模块的参数是一个复合的数据结构
- 数据耦合:一个模块传送给另一个模块的参数是一个单个的数据项或者单个数据项组成的数组
- 非直接耦合:两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。
- 内聚性:表示一个模块内部各元素(数据、处理)之间联系的紧密程度。
- 内聚性由低到高:偶然型,逻辑型,时间型,通信型,顺序型,功能型
- 偶然内聚:又称巧合型,为了节约空间,将毫无关系的各元素放在一个模块中。
- 逻辑内聚:将几个逻辑上相似的功能放在一个模块中,使用时由调用模块传递的参数确定执行的功能。
- 时间内聚:又称经典内聚。是把需要同时执行的成分放在一个模块中。如初始化,中止操作等
- 过程内聚:一个模块内的处理元素是相关的,而且必须以特定的次序执行。
- 通信内聚:模块中的成分引用共同的输入数据,或者产生相同的输出数据
- 顺序内聚:一个模块内的处理元素都密切相关于同一功能,模块中某个成分的输出是另一成分的输入。
- 功能内聚:一个模块包括而且仅包括完成某一具体功能所必须的所有成分。
3.启发规则
- 改进软件结构提高模块独立性
- 模块规则应该适中
- 深度、宽度、扇出和扇入都应适当
- 模块的作用域应该在控制域之内
- 力争降低模块接口的复杂程度
- 设计单入口单出口的模块
- 模块功能应该可以预测
4.描绘软件结构的图形工具
- 层次图和HIPO图
- 结构图(SC图)
5.面向数据流的设计方法
- 目标:给出设计软件结构的一个系统化的途径
- 概念:面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。
- 变换流:信息沿输入通路进入系统,由 外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。 当数据流图具有这些特征时,这种信息流就叫作变换流。
- 事物流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流 应该划为一类特殊的数据流,称为事务流。