第5章总体设计.ppt
《第5章总体设计.ppt》由会员分享,可在线阅读,更多相关《第5章总体设计.ppt(120页珍藏版)》请在冰豆网上搜索。
软件工程第五章第五章总体设计总体设计2第五章总体设计5.1设计过程设计过程5.2设计原理设计原理5.3启发规则启发规则5.4描绘软件结构的图形工具描绘软件结构的图形工具5.5面向数据流的设计方法面向数据流的设计方法5.6小结小结习题习题3学习要求掌握:
掌握:
1、软件设计过程中应遵循的基本原理和相、软件设计过程中应遵循的基本原理和相关概念;关概念;2、描绘软件结构的图形工具的运用;、描绘软件结构的图形工具的运用;3、面向数据流设计方法概念;变换分析、面向数据流设计方法概念;变换分析、事务分析法过程和应用。
事务分析法过程和应用。
理解:
理解:
1、典型的总体设计过程包括的步骤;、典型的总体设计过程包括的步骤;2、设计中的启发式规则;、设计中的启发式规则;4重点和难点重点重点:
软件设计过程中应遵循的基本原理;软件设计过程中应遵循的基本原理;面向数据流的设计方法面向数据流的设计方法难点难点:
变换分析、事务分析法的过程和应用变换分析、事务分析法的过程和应用5软件设计的目标和任务软件需求:
解决软件需求:
解决“做什么做什么”软件设计:
解决软件设计:
解决“怎么做怎么做”u软件设计的任务软件设计的任务:
以软件需求规格说明书以软件需求规格说明书为依据,着手实现软件的需求,并将设计的为依据,着手实现软件的需求,并将设计的结果反映在结果反映在“设计规格说明书设计规格说明书”文档中。
文档中。
u软件设计的重要性软件设计的重要性:
是软件开发阶段的第是软件开发阶段的第一步,最终影响软件实现的成败和软件维护一步,最终影响软件实现的成败和软件维护的难易程度。
的难易程度。
6软件设计的两个阶段第一阶段:
概要设计(总体设计)第一阶段:
概要设计(总体设计)根据软件需求,设计软件系统结构和数据结根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互构,确定程序的组成模块及模块之间的相互关系。
关系。
回答回答“概括地说,系统应该如何实现?
概括地说,系统应该如何实现?
”。
其重要性是:
站在全局高度,从较抽象的层其重要性是:
站在全局高度,从较抽象的层次上分析对比多种可能的系统实现方案和软次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软结构,从而用较低成本开发出较高质量的软件系统。
件系统。
7软件设计的两个阶段第二阶段:
详细设计(过程设计)第二阶段:
详细设计(过程设计)确定模块内部的算法和数据结构;选定某种确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评描述各模块程序过程的详细文档,并进行评审。
审。
8将需求分析摸型转换为软件设计软件结构设计以需求分析中得到的数据流图软件结构设计以需求分析中得到的数据流图为基础而进行。
为基础而进行。
9SA与SD的关系10第一个阶段总体设计的任务制定规范制定规范设计软件系统结构(简称软件结构)设计软件系统结构(简称软件结构)处理方式设计处理方式设计数据结构及数据库设计数据结构及数据库设计可靠性设计可靠性设计编写概要设计文档编写概要设计文档概要设计评审概要设计评审11制定规范为软件开发小组制定在进行软件设计,应该为软件开发小组制定在进行软件设计,应该共同遵守的标准,以便协调组内各员的工作。
共同遵守的标准,以便协调组内各员的工作。
12软件结构设计包括:
包括:
l将系统按功能划分成模块将系统按功能划分成模块l确定每个模块的功能确定每个模块的功能l确定模块之间的调用关系确定模块之间的调用关系l确定模块之间的接口,即模块之间传递的信息确定模块之间的接口,即模块之间传递的信息l评价模块结构的质量评价模块结构的质量13处理方式设计包括:
包括:
功能设计:
功能设计:
确定实现功能法,评估算法的性能确定实现功能法,评估算法的性能性能设计:
性能设计:
确定实现性能需求必须的算法和模确定实现性能需求必须的算法和模块间的控制方式块间的控制方式功能分解功能分解设计软件结构设计软件结构设计数据库设计数据库制定测试计划制定测试计划11)系统设计阶段:
确定系统的具体解决方案;)系统设计阶段:
确定系统的具体解决方案;设想供选择的方案设想供选择的方案选取合理方案选取合理方案推荐最佳方案推荐最佳方案22)结构设计阶段:
确定软件结构。
)结构设计阶段:
确定软件结构。
书写文档书写文档审查和复审审查和复审5.1设计的过程155.1设计的过程一一.设想供选择的方案设想供选择的方案u从数据流图与数据字典出发,分析员自由分析比较从数据流图与数据字典出发,分析员自由分析比较不同的物理实现方案,并且力求从中选取最佳方案。
不同的物理实现方案,并且力求从中选取最佳方案。
u常用方法:
自动化边界分组。
常用方法:
自动化边界分组。
二二.选取合理的方案选取合理的方案选取低成本、中等成本和高成本三种方案;选取低成本、中等成本和高成本三种方案;结合问题定义、可行性研究的结果、用户意见;结合问题定义、可行性研究的结果、用户意见;为每一种方案都准备四份材料:
系统流程图、组为每一种方案都准备四份材料:
系统流程图、组成系统的物理元素清单、成本成系统的物理元素清单、成本/效益分析、实现这个效益分析、实现这个系统的进度计划。
系统的进度计划。
5.1设计的过程三三.推荐最佳方案推荐最佳方案由用户、技术专家和部门负责人进行严格审查;由用户、技术专家和部门负责人进行严格审查;推荐一个最佳的方案,并为其指定详细的实现计划。
推荐一个最佳的方案,并为其指定详细的实现计划。
四四.功能分解功能分解结合算法对数据流图中的处理进一步分解和细化。
结合算法对数据流图中的处理进一步分解和细化。
分解的原则是:
分解的原则是:
分解后的功能比较简单分解后的功能比较简单(实现实现);对大多数程序员来说都是易懂的;对大多数程序员来说都是易懂的;五五.设计软件结构设计软件结构可以直接从数据流图映射出软件的结构。
可以直接从数据流图映射出软件的结构。
把分解得到的软件模块按照调用关系组织成良好的层把分解得到的软件模块按照调用关系组织成良好的层次结构,最上层模块完成完整功能,最下层模块完成次结构,最上层模块完成完整功能,最下层模块完成最具体功能。
最具体功能。
六六.数据库设计数据库设计(如果需要如果需要)七七.制定测试计划制定测试计划在设计时提高软件的可测试性;在设计时提高软件的可测试性;八八.书写文档书写文档系统说明:
系统组成、最佳解决方案和模块的描述;系统说明:
系统组成、最佳解决方案和模块的描述;用户手册:
修改需求分析阶段产生的初步用户手册;用户手册:
修改需求分析阶段产生的初步用户手册;测试计划:
测试策略,测试方案,预期的测试结果,测试计划:
测试策略,测试方案,预期的测试结果,测试进度等;测试进度等;详细的实现计划详细的实现计划数据库设计结果:
数据库的逻辑、物理模型。
数据库设计结果:
数据库的逻辑、物理模型。
记录总体设计的结果:
记录总体设计的结果:
九九.审查和复查审查和复查技术专家对总体设计结果严格审查;技术专家对总体设计结果严格审查;使用部门负责人对总体设计结果严格复查。
使用部门负责人对总体设计结果严格复查。
5.2软件设计的原理前一页主要内容模块化模块化抽象抽象逐步求精逐步求精信息隐蔽和局部化信息隐蔽和局部化模块独立模块独立215.2.1模块化(Modularity)什么是模块和模块化思想?
什么是模块和模块化思想?
采取自顶向下的方式,逐层把软件系统划分采取自顶向下的方式,逐层把软件系统划分成若干可单独命名和可编址的部分成若干可单独命名和可编址的部分“模块模块”每个模块完成一个特定的子功能;所有模块每个模块完成一个特定的子功能;所有模块按某种方法组成一个整体,完成整个系统所按某种方法组成一个整体,完成整个系统所要求的功能。
要求的功能。
软件系统就是通过这些模块的组合来实现。
软件系统就是通过这些模块的组合来实现。
22模块化的优点模块化是软件解决复杂问题所具备的手段,模块化是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,是模块化降低开发成本,提高软件生产率,是模块化的依据。
的依据。
23模块化与软件成本的关系接口接口24模块的基本属性接口:
接口:
指模块的输入与输出。
指模块的输入与输出。
功能:
功能:
指模块实现什么功能。
指模块实现什么功能。
模块化好处模块化好处:
l模块化使软件容易测试和调试,因而有助提模块化使软件容易测试和调试,因而有助提高软件的可靠性。
高软件的可靠性。
l模块化能提高软件的可修改性。
模块化能提高软件的可修改性。
l模块化有助于软件开发工程的组织管理。
模块化有助于软件开发工程的组织管理。
255.2.2抽象(Abstraction)什么是抽象?
什么是抽象?
认识复杂事物和现象时,抽出事物本质的认识复杂事物和现象时,抽出事物本质的共同特性而暂不考虑它们的细节。
共同特性而暂不考虑它们的细节。
软件开发中的抽象软件开发中的抽象过程的抽象过程的抽象数据的抽象数据的抽象26抽象软件开发实际上就是一个从软件开发实际上就是一个从高层次抽象高层次抽象到到低层次抽象低层次抽象逐步过渡的过程。
逐步过渡的过程。
软件系统进行模块设计时,可有不同的抽象层次:
软件系统进行模块设计时,可有不同的抽象层次:
最高的抽象层次上,可以用面向问题的语言,概括地最高的抽象层次上,可以用面向问题的语言,概括地描述问题的解法;描述问题的解法;较低的抽象层次上,可以用面向问题与面向实现相结较低的抽象层次上,可以用面向问题与面向实现相结合的术语进行描述;合的术语进行描述;最低的抽象层次上,可以用直接实现的方式加以叙述。
最低的抽象层次上,可以用直接实现的方式加以叙述。
一个复杂的系统先用一些高级的抽象概念构造和理解,一个复杂的系统先用一些高级的抽象概念构造和理解,这些高级概念又用较低级的概念构造和理解,如此进这些高级概念又用较低级的概念构造和理解,如此进行下去,直到具体元素。
行下去,直到具体元素。
275.2.3逐步求精逐步求精:
逐步求精:
为了能集中精力解决主要问题而为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。
尽量推迟对问题细节的考虑。
可把逐步求精看作是一项把一个时期内必须可把逐步求精看作是一项把一个时期内必须解决的种种问题解决的种种问题按优先级排序按优先级排序的技术。
的技术。
逐步求精是一种逐步求精是一种自顶向下自顶向下的设计策略,按这的设计策略,按这种设计策略,程序的体系结构是通过逐步精种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。
化处理过程的层次而设计出来的。
28自顶向下,逐步求精的基本思想l将功能、信息的说明分为多个层次,将功能、信息的说明分为多个层次,最高层最高层也最抽象也最抽象仅仅只是仅仅只是概念性概念性地描述功能或信地描述功能或信息,息,不不提供功能的内部工作情况或信息的内提供功能的内部工作情况或信息的内部结构;部结构;l设计者从最高层开始,仔细推敲,进行功能设计者从最高层开始,仔细推敲,进行功能和信息的细化,给出和信息的细化,给出下下层实现的细节层实现的细节;l随着每个后续细化逐步的完成,提供越来越随着每个后续细化逐步的完成,提供越来越多的细节,最终得出用程序设计语言表达的多的细节,最终得出用程序设计语言表达的程序。
程序。
29结合了模块化和逐步细化思想建立的软件结构图305.2.4信息隐藏和局部化信息隐藏原理:
信息隐藏原理:
模块中内包含的信息模块中内包含的信息(过程过程和数据和数据)不允许其它不需要这些信息的模块访不允许其它不需要这些信息的模块访问。
问。
信息局部化:
信息局部化:
把一些关系密切的软件元素物把一些关系密切的软件元素物理地放得彼此靠近。
理地放得彼此靠近。
信息局部化有利于信息隐藏。
信息局部化有利于信息隐藏。
315.2.5模块独立1、什么是模块独立性、什