第3章 软件设计-2012-10.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 软件设计 主要内容 教学要求 掌握软件设计的基本任务 掌握软件设计的原则 掌握模块化的概念 掌握耦合与内聚 掌握常用的详细设计的工具 主要内容 软件需求分析解决“做什么”的问题,软件设计过程则解决“怎么做”的问题 软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段 软件体系结构设计阶段(总体设计) 部件级设计(详细设计) 1.1 软件设计的任务 使用一种设计方法,将分析阶段获得的需求说明转换为计算机中可实现的系统。包括: 1.1 软件设计的任务(续) 数据设计 将分析-类模型变换成类的实现和软件实现所需要的数据结构 系统体系结构设计 体系结构设计定义了软件的整体结构 接口设计 接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何通信 部件级设计 部件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述 1.2 软件设计的过程 从工程管理的角度来看,软件设计分两步完成 总体设计(概要设计):将软件需求转化为数据结构和软件的系统结构。 详细设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。 主要内容 2 软件设计的基本原则 2.1 抽象与逐步求精 2.2 模块化 2.3 信息隐蔽与局部化 2.4 模块的独立性 2.1 抽象与逐步求精 抽象 是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。 抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。 软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述 2.1 抽象与逐步求精(续1) 软件设计中主要抽象手段 过程抽象(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的。 数据抽象是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数据 2.1 抽象与逐步求精(续2) 逐步求精 把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法 2.1 抽象与逐步求精(续3) 下面,以一个CAD软件的开发为例,说明软件开发时的三种不同的抽象层次。 该CAD软件实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。 抽象层次1 抽象层次I:用问题所处环境的术语描述该软件 抽象层次2 抽象层次2:任务需求的描述 抽象层次3 程序过程表示 (以2-D绘图生成任务为例) 2.2 模块化 模块 是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问 例如,过程、函数、子程序、宏、类等 模块化 即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。 2.2 模块化(续1) 理想模块的特点 每个理想模块只解决一个问题 每个理想模块的功能都应该明确,使人容易理解 理想模块之间的联结关系简单,具有独立性 由理想模块构成的系统,容易使人理解,易于编程,易于测试,易于修改和维护 2.2 模块化(续2) 模块化的理论依据 把一个大而复杂的问题分解成一些独立的易于处理的小问题,解决起来会容易得多。 2.2 模块化(续3) 模块化和软件成本 软件开发的成本=各模块成本+模块集成的成本 2.2 模块化(续4) 结论:不要过度模块化。因为,每个模块的简单性将被集成的复杂性所掩盖。 2.3 信息隐藏与局部化 信息隐藏与局部化 信息隐藏:是指模块中包含的信息(算法和数据)不被不需要这些信息的其他模块访问。模块间只交流实现软件功能所必需的信息。 局部化:是指把一些关系密切的软件元素物理的放得彼此接近。例如:在模块中使用局部数据元素就是局部化的一个例子 通过信息隐藏可以定义和加强模块内的过程细节和模块所使用的任何局部数据结构的访问限制。 2.3 信息隐藏与局部化 (续1) 采用信息隐藏原理指导模块设计的好处 支持模块的并行开发 可减少测试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对于多数数据和过程处理细节的隐藏可以减少错误向外传播。 整个系统欲扩充功能亦只需“ 插入 ”新模块,原有的多数模块无须改动。 2.3 信息隐藏与局部化 (续2) 2.4 模块的独立性 模块独立 软件系统中每个模块只涉及软件要求的具体的子功能而和软件系统中其他的模块的接口是简单的。 2.4 模块的独立性(续1) 模块独立的重要性 功能被划分,并且接口被简化,所以具有有效模块化的软件更易于开发 由于因设计和编码修改引起的副作用受到局限,错误传播被减小,模块复用成为可能,所以独立的模块更易于维护和测试 2.4 模块的独立性(续2) 模块的独立性的衡量标准

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档