- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程 第五章 总体(概要)设计 第五章总体(概要)设计 1 设计过程 2 设计原理 3 启发规则 4 描绘软件结构的图形工具 5 面向数据流的设计方法 6 小结 习题 学习要求 掌握: 1 、软件设计过程中应遵循的基本原理和相关概念; 2 、描绘软件结构的图形工具的运用; 3 、面向数据流设计方法概念;变换分析、事务分析法过程和应用。 理解: 1 、典型的总体设计过程包括的步骤; 2 、设计中的启发式规则; 重点和难点 重点: 软件设计过程中应遵循的基本原理; 面向数据流的设计方法 难点: 变换分析、事务分析法的过程和应用 软件设计的目标和任务 软件需求:解决“做什么” 软件设计:解决“怎么做”. 软件设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中。 软件设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。 软件设计的两个阶段 第一阶段:概要设计(总体设计) 根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。 回答“概括地说,系统应该如何实现?”。 其重要性是:站在全局高度,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。 软件设计的两个阶段 第二阶段:详细设计(过程设计) 确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。 将需求分析摸型转换为软件设计 软件结构设计以需求分析中得到的数据流图为基础而进行。 SA与SD的关系 第一个阶段总体设计的任务 ① 制定规范 ② 设计软件系统结构(简称软件结构) ③ 处理方式设计 ④数据结构及数据库设计 ⑤ 可靠性设计 ⑥ 编写概要设计文档 ⑦ 概要设计评审 ① 制定规范 为软件开发小组制定在进行软件设计,应该共同遵守的标准,以便协调组内各员的工作。 ② 软件结构设计 包括: 将系统按功能划分成模块 确定每个模块的功能 确定模块之间的调用关系 确定模块之间的接口,即模块之间传递的信息 评价模块结构的质量 ③ 处理方式设计 包括: 功能设计:确定实现功能算法,评估算法的性能. 性能设计:确定实现性能需求必须的算法和模块间的控制方式 5.1 设计的过程 2 设计原理 (1)模块化 (2)抽象 (3)逐步求精 (4)信息隐蔽和局部化 (5)模块独立 (1)模块化(Modularity ) ① 什么是模块和模块化思想? 采取自顶向下的方式,逐层把软件系统划分成若干可单独命名和可编址的部分—— “ 模块” ,每个模块完成一个特定的子功能;所有模块按某种方法组成一个整体,完成整个系统所要求的功能。 软件系统就是通过这些模块的组合来实现。 ② 模块化的优点 模块化是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,是模块化的依据。 ③ 模块化与软件成本的关系 ④ 模块的基本属性 接口:指模块的输入与输出。 功能:指模块实现什么功能。 模块化好处: 模块化使软件容易测试和调试,因而有助提高软件的可靠性。 模块化能提高软件的可修改性。 模块化有助于软件开发工程的组织管理。 (2) 抽象( Abstraction ) ① 什么是抽象? 认识复杂事物和现象时,抽出事物本质的共同特 性而暂不考虑它们的细节。 ② 软件开发中的抽象 过程的抽象 数据的抽象 抽象 什么是抽象思想? 在认识事物、分析和解决问题的过程中,忽略那些与当前研究目标不相关的部分, 以便将注意力集中于与当前目标相关的方面 软件开发实际上就是一个从高层次抽象到低层次抽象逐步过渡的过程。 一个复杂的系统先用一些高级的抽象概念构造和理解,这些高级概念又用较低级的概念构造和理解,如此进行下去,直到具体元素。 抽象例子 (3) 逐步求精 逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。 可把逐步求精看作是一项把一个时期内必须解决的种种问题按优先级排序的技术。 逐步求精是一种自顶向下的设计策略,按这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。 逐步求精的例子 自顶向下,逐步求精的基本思想 将功能、信息的说明分为多个层次,最高层也最抽象 ― 仅仅只是概念性地描述功能或信息,不提供功能的内部工作情况或信息的内部结构; 设计者从最高层开始,仔细推敲,进行功能和信息的细化,给出下层实现的细节; 随着每个后续细化逐步的完成,提供越来越多的细节,最终得出用程序设计语言表达的程序。 结合了模块化和逐步细化思想建立的软件结构图 (4)信息隐蔽和局部化 信息隐蔽:在设计和确定模块时
文档评论(0)