第4章总体设计 总体设计又称为概要设计或初步设计,它 的基本目的就是回答“概括地说,系统应该 如何实现?”这个问题。在总体设计阶段,应 划分出组成系统的物理元素程序、文件、 数据库、人工过程和文档等,并确定系统中 每个程序由哪些模块组成以及这些模块相互 间的关系。 41总体设计的过程 总体设计通常由系统设计和结构设计两个 阶段组成。系统设计阶段确定系统的具体实 现方案,结构设计阶段确定软件的结构
第4章 总体设计 总体设计又称为概要设计或初步设计,它 的基本目的就是回答“概括地说,系统应该 如何实现?”这个问题。在总体设计阶段,应 划分出组成系统的物理元素——程序、文件、 数据库、人工过程和文档等,并确定系统中 每个程序由哪些模块组成以及这些模块相互 间的关系。 4.1 总体设计的过程 总体设计通常由系统设计和结构设计两个 阶段组成。系统设计阶段确定系统的具体实 现方案,结构设计阶段确定软件的结构
第4章总体设计 实施总体设计的过程如下: 1.设想供选择的方案 2.选取合理的方案 3.推荐最佳方案 4.功能分解 5.设计软件结构 6.数据库设计 7.制定测试计划 8.书写文档 9.审查和复审
第4章 总体设计 实施总体设计的过程如下: 1.设想供选择的方案 2.选取合理的方案 3.推荐最佳方案 4.功能分解 5.设计软件结构 6.数据库设计 7.制定测试计划 8.书写文档 9.审查和复审
第4章总体设计 4.2总体设计的图形工具 一、层次图 层次图(也称H图)是在总体设计阶段最 常使用的图形工具之一,它常用于描绘软件 的层次结构。层次图中的每个方框代表一个 模块,方框间的连线表示模块间的调用关系 层次图举例
第4章 总体设计 4.2 总体设计的图形工具 一、层次图 层次图(也称H图)是在总体设计阶段最 常使用的图形工具之一,它常用于描绘软件 的层次结构。层次图中的每个方框代表一个 模块,方框间的连线表示模块间的调用关系。 层次图举例
第4章总体设计 1HIP0图 HIPO图实际上由H图和IPO图两部分组成。H 图即层次图,为了能使HIPO图具有可跟踪性,在 H图里除了最顶层的方框之外,每个方框都加了编 号;和H图中的每个方框相对应,有一张IP0图描述 这个方框代表的模块的处理过程。IP0图能够方便 地描述数据输入、数据处理和数据输出之间的关系。 它的基本形式是:在左边的框中列出有关的输入数 据,在中间的框中列出主要的处理一一处理框中列 出的处理次序暗示了执行的次序,在右边的框中列 出产生的输出数据。另外,还用类似向量符号的粗 大箭头清楚地指出数据通信的情况。HIPQ图举例
第4章 总体设计 二、HIPO图 HIPO图实际上由H图和IPO图两部分组成。H 图即层次图,为了能使HIPO图具有可跟踪性,在 H图里除了最顶层的方框之外,每个方框都加了编 号;和H图中的每个方框相对应,有一张IPO图描述 这个方框代表的模块的处理过程。IPO图能够方便 地描述数据输入、数据处理和数据输出之间的关系。 它的基本形式是:在左边的框中列出有关的输入数 据,在中间的框中列出主要的处理——处理框中列 出的处理次序暗示了执行的次序,在右边的框中列 出产生的输出数据。另外,还用类似向量符号的粗 大箭头清楚地指出数据通信的情况。 HIPO图举例
第4章总体设计 结构图 结构图中的每个方框代表一个模块,框内注明 模块的名字或主要功能;方框之间的箭头(或直线) 表示模块间的调用关系。 在结构图中通常还用带注释的箭头表示模块调 用过程中模块之间传递的信息。可以利用注释箭头 尾部的不同形状来区分:尾部是空心圆表示传递的 是数据,尾部是实心圆则表示传递的是控制信息。 结构图举例
第4章 总体设计 三、结构图 结构图中的每个方框代表一个模块,框内注明 模块的名字或主要功能;方框之间的箭头(或直线) 表示模块间的调用关系。 在结构图中通常还用带注释的箭头表示模块调 用过程中模块之间传递的信息。可以利用注释箭头 尾部的不同形状来区分:尾部是空心圆表示传递的 是数据,尾部是实心圆则表示传递的是控制信息。 结构图举例
第4章总体设计 43软件设计的概念和原理 模块化设计 把大型软件按照规定的原则划分为一个个较小的 相对独立但又相关的模块的设计方法,叫做模块化 设计( modular design)。模块( module)是数据 说明和可执行语句等程序对象的集合,每个模块单 独命名并且可以通过名字对模块进行访问。 实现模块化设计的重要指导思想是分解、信息隐藏 和模块独立性
第4章 总体设计 4.3 软件设计的概念和原理 一、模块化设计 把大型软件按照规定的原则划分为一个个较小的、 相对独立但又相关的模块的设计方法,叫做模块化 设计(modular design)。模块(module)是数据 说明和可执行语句等程序对象的集合,每个模块单 独命名并且可以通过名字对模块进行访问。 实现模块化设计的重要指导思想是分解、信息隐藏 和模块独立性
第4章总体设计 分解 设函数C(x)定义问题x的复杂程度,函数E(x)确 定解决问题x所需要的工作量(时间)。对于两个 问题P和P2,如果C(P1)>C(P2), 显然E(P1)>E(P2) 根据人类解决一般问题的经验,如果一个问题 由P和P2两个问题组合而成,那么它的复杂程序大 于分别考虑每个问题时的复杂程度之和,即 C(P1+P2)>C(P1)+C(P2) 综上所述,可得到下面的不等式 E(P1+P2)>E(P+E(P2)
第4章 总体设计 一、分解 设函数C(x)定义问题x的复杂程度,函数E(x)确 定解决问题x所需要的工作量(时间)。对于两个 问题Pl和P2,如果 C(P1 )>C(P2 ), 显然 E(P1 )>E(P2 ) 根据人类解决一般问题的经验,如果一个问题 由Pl和P2两个问题组合而成,那么它的复杂程序大 于分别考虑每个问题时的复杂程度之和,即 C(Pl+P2 )>C(P1 )+C(P2 ) 综上所述,可得到下面的不等式 E(Pl+P2 )>E(Pl )+E(P2 )
第4章总体设计 二、信息隐藏 模块内部的数据与过程,应该对不需要了解这 些数据与过程的模块隐藏起来。只有那些为了完成 软件的总体功能而必需在模块间交换的信息,才允 许在模块间进行传递。 “隐蔽”意味着有效的模块化可以通过定义一组独 立的模块而实现,这些独立的模块彼此间仅仅交换 那些为了完成系统功能而必须交换的信息。这一指 导思想的目的是为了提高模块的独立性,即当修改 或维护模块时减少把一个模块的错误扩散到其他模 块中去的机会
第4章 总体设计 二、信息隐藏 模块内部的数据与过程,应该对不需要了解这 些数据与过程的模块隐藏起来。只有那些为了完成 软件的总体功能而必需在模块间交换的信息,才允 许在模块间进行传递。 “隐蔽”意味着有效的模块化可以通过定义一组独 立的模块而实现,这些独立的模块彼此间仅仅交换 那些为了完成系统功能而必须交换的信息。这一指 导思想的目的是为了提高模块的独立性,即当修改 或维护模块时减少把一个模块的错误扩散到其他模 块中去的机会
第4章总体设计 三、模块独立性 模块独立性( module independence)概括了把软 件划分为模块时要遵守的准则,也是判断模块构造 是否合理的标准。一般地,坚持模块的独立性是获 得良好设计的关键。 模块的独立性可以由两个定性标准度量,这两个标 准分别称为内聚和耦合。耦合用于衡量不同模块彼 此间互相依赖(连接)的紧密程度;内聚用于衡量 一个模块内部各个元素间彼此结合的紧密程度
第4章 总体设计 三、模块独立性 模块独立性(module independence)概括了把软 件划分为模块时要遵守的准则,也是判断模块构造 是否合理的标准。一般地,坚持模块的独立性是获 得良好设计的关键。 模块的独立性可以由两个定性标准度量,这两个标 准分别称为内聚和耦合。耦合用于衡量不同模块彼 此间互相依赖(连接)的紧密程度;内聚用于衡量 一个模块内部各个元素间彼此结合的紧密程度
第4章总体设计 耦合 耦合是对一个软件结构内不同模块之间互 联程度的度量。耦合强弱取决于模块间接口的 复杂程度、进入或访问一个模块的点以及通过 接口的数据。 在软件设计中应该追求模块间尽可能松散 耦合的系统。在这样的系统中可以研究、测试 或维护任何一个模块,而不需要对系统中的其 他模块有很多的了解。此外,由于模块间联系 简单,发生在一处的错误传播到整个系统的可 能性就很小
第4章 总体设计 1、耦合 耦合是对一个软件结构内不同模块之间互 联程度的度量。耦合强弱取决于模块间接口的 复杂程度、进入或访问一个模块的点以及通过 接口的数据。 在软件设计中应该追求模块间尽可能松散 耦合的系统。在这样的系统中可以研究、测试 或维护任何一个模块,而不需要对系统中的其 他模块有很多的了解。此外,由于模块间联系 简单,发生在一处的错误传播到整个系统的可 能性就很小