设计的指南 1设计应该展示一种层次化结构 2设计应该模块化,即逻辑地划分成完成特定功能和子功 能的构件 3设计应该包括对数据、结构、界面和部件的清楚表述 4设计应该导出适于实现目的和由公认的数据模式导出的 数据结构 5设计应该导出具有独立功能特征的模块 6设计应该导出降低模块和外部环境间连接复杂度的接口 7设计应该通过使用可重复的方法来得到,这些方法被来 源于软件需求分析的信息所驱动
设计的指南 1 设计应该展示一种层次化结构 2 设计应该模块化,即逻辑地划分成完成特定功能和子功 能的构件 3 设计应该包括对数据、结构、界面和部件的清楚表述 4 设计应该导出适于实现目的和由公认的数据模式导出的 数据结构 5 设计应该导出具有独立功能特征的模块 6 设计应该导出降低模块和外部环境间连接复杂度的接口 7 设计应该通过使用可重复的方法来得到,这些方法被来 源于软件需求分析的信息所驱动
设计原则 设计过程不应该受“隧道视野”的限制 ■设计对于分析模型应该是可追踪的 设计不应该从头做起 设计应该缩短软件和现实世界的“智力距离 设计应该表现出一致性和集成性 ■设计应该构造以适应修改 设计应该构造以使得即使遇到异常的数据、事件或操作条件 时也能够平滑、轻巧地降级 设计不是编码,编码不是设计 ■在创建设计时就应该可以评估质量,而不是在事情完成之后 ■应该复审设计以减少概念性错误
设计原则 ◼ 设计过程不应该受“隧道视野”的限制 ◼ 设计对于分析模型应该是可追踪的 ◼ 设计不应该从头做起 ◼ 设计应该缩短软件和现实世界的“智力距离” ◼ 设计应该表现出一致性和集成性 ◼ 设计应该构造以适应修改 ◼ 设计应该构造以使得即使遇到异常的数据、事件或操作条件 时也能够平滑、轻巧地降级 ◼ 设计不是编码,编码不是设计 ◼ 在创建设计时就应该可以评估质量,而不是在事情完成之后 ◼ 应该复审设计以减少概念性错误
设计概念 ■抽象 ■求精 ■模块化 ■软件结构体系 ■控制层次 结构划分 ■数据结构 软件过程 ■信息隐藏
设计概念 ◼ 抽象 ◼ 求精 ◼ 模块化 ◼ 软件结构体系 ◼ 控制层次 ◼ 结构划分 ◼ 数据结构 ◼ 软件过程 ◼ 信息隐藏
模块化原理 经验1:工作量E(P1+P2)>E(P1)+E(P2) 经验2: 软件总成本 最小成本区 接口成本 成本 成本/模块 模块数目
模块化原理 经验1:工作量E(P1+P2 )>E(P1 )+E(P2 ) 经验2: 成 本 成本 / 模块 最小成本区 接口成本 软件总成本 模块数目
信息隐蔽( Information Hiding 模块所包含的信息,不允许其它不需要 这些信息的模块访问,独立的模块间仅 仅交换为完成系统功能而必须交换的信 息 信息隐蔽的目的: 提高模块的独立性 减少修改或维护时的影响面
信息隐蔽(Information Hiding) ◼ 模块所包含的信息,不允许其它不需要 这些信息的模块访问,独立的模块间仅 仅交换为完成系统功能而必须交换的信 息 ◼ 信息隐蔽的目的: ◼ 提高模块的独立性 ◼ 减少修改或维护时的影响面