软件工程—第4章软件设计概述_lyh1课件.ppt

软件工程—第4章软件设计概述_lyh1课件.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程—第4章软件设计概述_lyh1课件.ppt

第四章 软件设计概述 讨论要点 如何将分析模型转换成软件设计? 作为软件工程师在软件设计方面应使用哪些基本原则和概念? 教学内容: §4.1 软件设计的目标和任务 §4.2 软件设计基本概念 §4.3 模块化设计 §4.4 其他设计问题的处理 §4.5 设计文档及其复审 教学目的及要求: 深刻理解软件设计阶段的概念和任务; 掌握模块化设计的思想; 软件设计的任务 问题结构(软件需求) 从软件需求规格说明书出发,形成软件的具体设计方案。 1.软件的总体结构主要回答的问题 软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面 2. 软件设计的问题 4. 软件设计分为两个阶段: (1)概要设计(总体设计) 确定软件的结构以及各组成成分(子系统或模块) 之间的相互关系。 (2)详细设计 确定模块内部的算法和数据结构,产生描述各模 块程序过程的详细文档。 §4.2 软件设计的基本概念 1.模块与构件 2.抽象与细化 3.信息隐蔽 4.软件复用 1.模块与构件 1.模块与构件 模 块 模块是具有一定功能的可以用名词调用的程序语句集合,如: 独立的汇编程序 COBOL的段和节 Pascal过程 FORTRAN的子程序 概要设计的基本概念 将系统划分成模块 决定每个模块的功能 决定模块的调用关系 决定模块的界面,即模块间传递的数据 2. 抽象(Abstraction)与细化 抽象:解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性而不考虑细节。 抽象(Abstraction) 抽象原则应用举例 Windows NT一体化的I/O系统设计 在逐步细化中,特别强调这种分解的“逐步”性质,即每一部分仅较其前一部增加“少量”的细节。这样,在相邻两部之间就只有微小的变化,不难验证它们的内容是否等效。 3.信息隐蔽(Information Hiding) 信息隐蔽的含义:有效的模块化可以通过定义一组独立模块来实现,这些模块相互之间只交流软件功能必需的信息。 换句话说:模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。 §4.3 模块化设计 1.分解 2.模块独立性 内聚 耦合 自顶向下与自底向上设计 模块化(Modularity) 1.分解 "各个击破"理论 模块数与开发工作量的关系 2. 模块的独立性 模块独立性的概念 模块完成独立的功能 符合信息隐蔽和信息局部化原则 模块间关连和依赖程度尽量小 模块独立性的度量 模块独立性取决于模块的内部和外部特征。 SD方法提出的定性的度量标准: 模块自身的内聚性 模块之间的耦合性 2. 模块独立性的度量之一:内聚性 一个模块内部各成分之间相互关联的强度 设计目标:高内聚(一模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的) 软件设计的概念和原理 模块的内聚性类型 (4) 过程内聚 模块内各处理成分相关,且必须以特定次序执行。 过程内聚模块 (5) 通信内聚 模块内各部分使用相同的输入数据,或产生 相同的输出结果。 通信内聚模块例 (6)顺序内聚 一个内部成分的输出是另一个内部成分的输入,将它们合起来。 (7) 功能内聚 模块仅包括为完成某个功能所必须的所有成分。( 模块所有成分共同完成一个功能,缺一不可 ) 内聚性最强 模块独立性的度量之二 耦合性是模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 耦合性越高,模块独立性越弱 软件设计的概念和原理 耦合 耦合强度依赖的因素 一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度 (1) 非直接耦合 两个模块没有直接关系(模快1和模快2),模块独立性最强。 (2) 数据耦合 一模块调用另一模块时,被调用模块的输入、输出都是简单的数据,属松散耦合。 数据耦合举例 (3) 标记耦合(特征耦合) 如两个模块通过传递数据结构(不是简单数据, 而是记录、数组等)加以联系,或都与一个数据 结构有关系, 则称这两个模块间存在标记偶合。 标记耦合举例 (4) 控制耦合 一模块通过开关量、标志、名字等控制信息,明显地控制另一模块的功能。 控制耦合举例 控制耦合增加了理解和编程的复杂性,调用模块 必须知道被调模块的内部逻辑,增加了相互依赖。 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调用模块中进行; (2)被调用模块分解成若干单一功能模块。 改控制耦合为数据

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档