第四章总体设计 ■总体设计的过程 ■软件设计的概念和原理 ■启发式规则 ■图形工具 ■面向数据流的设计方法
第四章 总体设计 ◼ 总体设计的过程 ◼ 软件设计的概念和原理 ◼ 启发式规则 ◼ 图形工具 ◼ 面向数据流的设计方法
总体设计的过程 设想供选择的方 选取合理的方案 ■功能分解 设计软件结构 数据库设计 ■制定测试计划 书写文档 审查和复查
总体设计的过程 ◼ 设想供选择的方案 ◼ 选取合理的方案 ◼ 功能分解 ◼ 设计软件结构 ◼ 数据库设计 ◼ 制定测试计划 ◼ 书写文档 ◼ 审查和复查
总体设计的过程 ■设想供选择的方案 ■选取合理的方案 系统流程图 组成系统的物理元素清单 成本/效益分析 进度计划 确定最佳方案 功能分解 ■设计软件结构(模块化思想) ■数据库设 ■制定测试计划
总体设计的过程 ◼ 设想供选择的方案 ◼ 选取合理的方案 ◼ 系统流程图 ◼ 组成系统的物理元素清单 ◼ 成本/效益分析 ◼ 进度计划 ◼ 确定最佳方案 ◼ 功能分解 ◼ 设计软件结构(模块化思想) ◼ 数据库设计 ◼ 制定测试计划
总体设计的过程 书写文档 系统说明 用户手册 测试计划 详细的实现计划 ■数据库设计结果 审查和复查
总体设计的过程 ◼ 书写文档 ◼ 系统说明 ◼ 用户手册 ◼ 测试计划 ◼ 详细的实现计划 ◼ 数据库设计结果 ◼ 审查和复查
软件设计的概念和原理 ■模块化 ■抽象 信息屏蔽和局部化 ■模块独立
软件设计的概念和原理 ◼ 模块化 ◼ 抽象 ◼ 信息屏蔽和局部化 ◼ 模块独立
软件设计的概念和原理 ■模块化的概念 软件系统的模块化是指整个软件被划分成若干单独 名和可编址的部分,称之为模块。这些模块可以 被组装起来以满足整个问题的需求 ■把问题/子问题的分解与软件开发中的系统/子系 统或系统/模块对应起来,就能够把一个大而复杂 的软件系统划分成易于理解的比较单纯的模块结构。 式 ■E(P1+P2)>E(P1)+E(P2)
软件设计的概念和原理 ◼ 模块化的概念 ◼ 软件系统的模块化是指整个软件被划分成若干单独 命名和可编址的部分,称之为模块。这些模块可以 被组装起来以满足整个问题的需求。 ◼ 把问题/子问题的分解与软件开发中的系统/子系 统或系统/模块对应起来,就能够把一个大而复杂 的软件系统划分成易于理解的比较单纯的模块结构。 ◼ 公式 ◼E(P1+P2 )>E(P1 )+E(P2 )
软件设计的概念和原理 软件总成本 最小成本区 接口成本 成本 成本/模块 模块数目 模块化和软件成本
软件设计的概念和原理 成 本 成本 / 模块 最小成本区 接口成本 软件总成本 模块数目 模块化和软件成本
软件设计的概念和原理 ■抽象 软件系统进行模块设计时,可有不同的抽象层次 在最高的抽象层次上,可以使用问题所处环境的语 言概括地描述问题的解法 在较低的抽象层次上,则采用过程化的方法。 过程的抽象 ■数据的抽象
软件设计的概念和原理 ◼ 抽象 ◼ 软件系统进行模块设计时,可有不同的抽象层次。 ◼ 在最高的抽象层次上,可以使用问题所处环境的语 言概括地描述问题的解法。 ◼ 在较低的抽象层次上,则采用过程化的方法。 ◼ 过程的抽象 ◼ 数据的抽象
软件设计的概念和原理 ■过程的抽象(在软件工程中,从系统定义到实现,每 进展一步都可以看做是对软件解决方法的抽象化过程的 次细化) ■在软件需求分析阶段,用“问题所处环境的为大 家所熟悉的术语”来描述软件的解决方法 在从概要设计到详细设计的过程中,抽象化的层 次逐次降低。当产生源程序时到达最低抽象层次 数据抽象(在不同层次上描述数据对象的细节,定义 与该数据对象相关的操作)
软件设计的概念和原理 ◼ 过程的抽象(在软件工程中,从系统定义到实现,每 进展一步都可以看做是对软件解决方法的抽象化过程的一 次细化) ◼ 在软件需求分析阶段,用“问题所处环境的为大 家所熟悉的术语”来描述软件的解决方法。 ◼ 在从概要设计到详细设计的过程中,抽象化的层 次逐次降低。当产生源程序时到达最低抽象层次。 ◼ 数据抽象(在不同层次上描述数据对象的细节,定义 与该数据对象相关的操作)
软件设计的概念和原理 ■信息屏蔽和局部化 模块中所包含的信息(包括数据和过程)不允许其 它不需要这些信息的模块使用 模块独立 是模块化、抽象、信息屏蔽和局部化概念的直接结 果 ■每个模块完成一个相对独立的子功能,并且与其它 模块间的接口简单。 衡量模块独立程度的定性标准-内聚、耦合
软件设计的概念和原理 ◼ 信息屏蔽和局部化 ◼ 模块中所包含的信息(包括数据和过程)不允许其 它不需要这些信息的模块使用。 ◼ 模块独立 ◼ 是模块化、抽象、信息屏蔽和局部化概念的直接结 果 ◼ 每个模块完成一个相对独立的子功能,并且与其它 模块间的接口简单。 ◼ 衡量模块独立程度的定性标准----内聚、耦合