- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三课软件设计
主讲教师:李刚 第三章 软件设计 §3.1 软件设计的基本任务 §3.2 总体设计(SD) §3.3 详细设计 (SD) §3.4 面向对象的设计 §3.5 用户界面设计 §3.6 设计质量的度量 §3.7 软件设计CASE工具 §3.1 软件设计的基本任务-总体设计 总体设计的基本任务 概要地回答系统应该如何实现 总体设计的两项任务: 划分出组成系统的物理元素----程序、文件、数据库、人工过程和文档 设计软件的结构----确定每个程序的模块组成及模块之间的相互关系。 总体设计的过程: 系统设计:确定系统的具体实现方案。 结构设计:确定软件结构。 §3.1 软件设计的基本任务-总体设计(续) §3.1 软件设计的基本任务(续) 详细设计的基本任务 详细设计是总体设计的进一步具体化,主要确定每个模块的具体执行过程 具体任务如下: 1)为每个模块进行详细的算法设计 2)为模块内的数据结构进行设计 3)对数据库进行物理设计 4)界面设计 5)其他设计 6)编写文档 7)评审 §3.2 总体设计(SD) 在软件设计中,要遵循一些基本的软件设计原理。 1 模块化 把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的求解。 模块是由边界元素限定的相邻程序元素(例如数据说明,可执行的语句)的序列,而且有个总体标识符代表它。 §3.2 总体设计(SD) 2 模块独立性 每个模块完成一个相对独立的子 功能,并且和其他模块之间的关 系很简单 耦合和内聚两个定性标准度量 耦合:一个软件结构内不同模块之间互连程度的度量。 数据耦合:模块之间通过参数交换数据信息。 控制耦合:模块之间传递的参数含有控制信息。 公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。 内容耦合:。。。。。。 耦合 §3.2 总体设计(SD) 3 抽象与细化 在抽象的最高层次使用问题环境语言,以概括的方式叙述问题的解法 在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的 术 语结合起来叙述问题的解法 在最低的抽象层次用可以直接实现的方式叙述问题的解法 细化与抽象是紧密相关的,在软件过程的每一步都是对软件解法的抽象层 次的一次细化 §3.2 总体设计(SD) 3 信息隐蔽 在设计和确定模块时,使一个模块包含的信息(过程和数据)对于不需要 这些信息的模块来说,是不能访问的。 在面向对象方法中,对象的封装性很自然地支持了信息隐蔽地思想。 在结构化方法中,要求模块内地信息要局部化 4可重用性 同一事物不做修改或稍加修改就能够多次重复使用——重用(再生 复用) 软件复用:数据复用、模块复用、结构复用、设计复用和规格说明书复用 §3.2 总体设计(SD) 启发式规则 人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得 出了一些启发式规则。这些启发式规则虽然不像上一节讲述的基本原理和 概念那样普遍适用,但是在许多场合仍然能给软件工程师以有益的启示, 往往能帮助他们找到改进软件设计提高软件质量的途径。 下面介绍几条启发式规则 改进软件结构提高模块独立性 模块规模应该适中 深度、宽度、扇入、扇出都应适当 模块的作用域应该在控制域之内 力争降低模块接口的复杂程度 设计单入口单出口的模块 模块的功能应该可以预测 §3.2 总体设计(SD) 1. 改进软件结构提高模块独立性 设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合 并,力求降低耦合提高内聚。例如,多个模块公有的一个子功能可以独立 成一个模块,由这些模块调用;有时可以通过分解或合并模块以减少控制 信息的传递及对全程数据的引用,并且降低接口的复杂程度。 2. 模块规模应该适中 经验表明,一个模块的规模不应过大,最好能写在一页纸内(通常不超过60 行语句)。有人从心理学角度研究得知,当一个模块包含的语句数超过30以 后,模块的可理解程度迅速下降。 过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构, 一般说来,分解后不应该降低模块独立性。 过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。因 此过小的模块有时不值得单独存在,特别是只有一个模块调用它时,通常 可以把它合并到上级模块中去而不必单独存在。 §3.2 总体设计(SD) 3. 深度、宽度、扇出和扇入都应适当 深度:表示软件结构中控制的层数。 它往往能粗略地标志一个系统的大小和复杂程度。深度和程序长度之间应 该有粗略的对应关系,当然这个
文档评论(0)