第三章软件设计 31软件设计的目标和目的 32软件设计的原则 33设计模型 34标准建模语言UML 对论要点 (1)如何将分析模型转换为软件设计? 2)作为软件工程师在软件设计方面应使用哪些基本原则 和概念?
讨论要点 (1)如何将分析模型转换为软件设计? (2)作为软件工程师在软件设计方面应使用哪些基本原则 和概念? 第三章 软件设计 3.1软件设计的目标和目的 3.2 软件设计的原则 3.3 设计模型 3.4 标准建模语言UML
31软件设计的目标和目的 软件需求:解决“做什么” 软件设计:解决“怎么做” 软件设计的任务 问题结构(软件需求)映射软件结构 从软件需求规格说明书出发,形成软 件的具体设计方案
3.1软件设计的目标和目的 软件需求:解决“做什么” 软件设计:解决“怎么做” 软件设计的任务 问题结构(软件需求) 软件结构 从软件需求规格说明书出发,形成软 件的具体设计方案。 映射
软件设计分为两个阶段: (1)体系结构设计(概要设计 确定软件的结构以及各组成成分(子 系统或模块)之间的相互关系。 (2)详细设计 确定模块内部的算法和数据结构, 产生描述各模块程序过程的详细文档
软件设计分为两个阶段: (1) 体系结构设计(概要设计) 确定软件的结构以及各组成成分(子 系统或模块)之间的相互关系。 (2)详细设计 确定模块内部的算法和数据结构, 产生描述各模块程序过程的详细文档
32软件设计的原则 抽象 求精 分解模块化 数据隐蔽 模块独立性(耦合性/内聚性)
3.2 软件设计的原则 • 抽象 • 求精 • 分解/模块化 • 数据隐蔽 • 模块独立性(耦合性/内聚性)
321抽象( Abstraction) 抽象是软件的本质 抽象得出事物的共性 过程抽象 数据抽象 控制抽象
• 抽象是软件的本质 • 抽象得出事物的共性 • 过程抽象 • 数据抽象 • 控制抽象 3.2.1 抽象(Abstraction)
抽象原则应用举例 Windows nt一体化的I/0系统设计 文件管理 抽对虚拟文件 O网络管理 象的字节流, 虚拟文件可 S设备管理 为任何设备 高速缓冲存储器 和实体
抽象原则应用举例 Windows NT一体化的I/O系统设计 文件管理 网络管理 设备管理 高速缓冲存储器 O S 对虚拟文件 的字节流, 虚拟文件可 为任何设备 和实体 抽 象
3.2.2模块化( Modularity) 模块化是好的软件设计的一个基本准则 高层模块——从整体上把握 问题,隐蔽细节 分解 复杂问题-较小问题 分解 可减小解题所需的总的工作
3.2.2 模块化 (Modularity) 模块化是好的软件设计的一个基本准则 从整体上把握 问题,隐蔽细节 复杂问题 较小问题 分解 可减小解题所需的总的工作 分解
例:将问题(1+P2分解为PP2 设函数C(x)定义问题x的复杂程度 函数E(x)确定解决问题x需要的工作量 对问题P1和P2,如: C(P1)>C(P2) 显然:E(P1)>E(P2) 有规律:C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2) 各个击破"理论
例:将问题(P1+P2)分解为P1,P2 设函数C(x)定义问题 x 的复杂程度 函数E(x)确定解决问题 x 需要的工作量 对问题P1和P2,如: C(P1) > C(P2) 显然: E(P1) > E(P2) 有规律:C(P1+P2) > C(P1)+C(P2) E(P1+P2) > E(P1)+E(P2) "各个击破"理论
模块化和软件成本 软件总成本 成本或工作量 最小成本区域 集成成本 成本/模块 模块数量
模块化和软件成本 成 本 或 工 作 量 模块数量 软件总成本 集成成本 成本/模块 M 最小成本区域
3.2.3信息隐蔽 (Information Hiding) 模块所包含的信息,不允许其它不需 要这些信息的模块访问,独立的模块 间仅仅交换为完成系统功能而必须交 换的信息 信息隐蔽的目的:提高模块的独立性, 减少修改或维护时的影响面
3.2.3 信息隐蔽 (Information Hiding) 模块所包含的信息,不允许其它不需 要这些信息的模块访问,独立的模块 间仅仅交换为完成系统功能而必须交 换的信息。 信息隐蔽的目的: 提高模块的独立性, 减少修改或维护时的影响面