软件工程课件:第3章 结构化设计方法

举报
资源描述
第第3章章 结构化设计方法结构化设计方法软件设计的概念及原则软件设计的概念及原则结构化设计结构化设计体系结构设计体系结构设计接口设计接口设计数据设计数据设计过程设计过程设计软件设计规格说明软件设计规格说明3.1 软件设计的概念及原则软件设计的概念及原则 软件设计的概念软件设计的概念 设计是一项核心的工程活动。设计是一项核心的工程活动。在在2020世纪世纪9090年代早期,年代早期,Lotus 1-2-3Lotus 1-2-3的发明的发明人人Mitch KaporMitch Kapor在在Dr.DobbsDr.Dobbs杂志上发表了杂志上发表了“软件设计宣言软件设计宣言”,其中指出:,其中指出:“什么是设计?设计是你站在两个世界什么是设计?设计是你站在两个世界技术世界和人类的目标世界技术世界和人类的目标世界而你尝试将而你尝试将这两个世界结合在一起这两个世界结合在一起”。3.1 软件设计的概念及原则软件设计的概念及原则软件设计的概念软件设计的概念 罗马建筑批评家罗马建筑批评家VitruviusVitruvius提出了这样一个提出了这样一个观念:观念:“设计良好的建筑应该展示出坚固、适用和设计良好的建筑应该展示出坚固、适用和令人赏心悦目令人赏心悦目”。3.1 软件设计的概念及原则软件设计的概念及原则软件设计的原则软件设计的原则 (1)分而治之分而治之分而治之是解决大型复杂问题时通常采用分而治之是解决大型复杂问题时通常采用的策略。的策略。软件的体系结构设计、模块化设计都是分软件的体系结构设计、模块化设计都是分而治之策略的具体表现。而治之策略的具体表现。尽管模块分解可以简化要解决的问题,但尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。模块分解并不是越小越好。3.1 软件设计的概念及原则软件设计的概念及原则(1)分而治之分而治之3.1 软件设计的概念及原则软件设计的概念及原则(2)模块独立性模块独立性模块的独立性是指软件系统中每个模块只模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的系统中其他的模块的接口是简单的。一般一般采用两个准则度量模块独立性。即模采用两个准则度量模块独立性。即模块间的耦合和模块的内聚块间的耦合和模块的内聚。耦合性耦合性:耦合是模块间互相连接的紧密程度的耦合是模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。调用方式以及哪些信息通过接口。内聚性内聚性:内聚是一个模块内部各个元素彼此结:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。合的紧密程度的度量。(2)模块独立性)模块独立性模块之间耦合性越强,功能独立性越差,模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。这样形成的模块结构界面不好。非直接非直接 数据数据 标记标记 控制控制 外部外部 公共公共 内容内容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合耦合性耦合性功能独立性功能独立性3.1 软件设计的概念及原则软件设计的概念及原则模块间的耦合模块间的耦合模块内聚模块内聚(2)模块独立性)模块独立性模块内聚性越强,功能独立性越好,对于模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。形成的模块结构有比较好的作用。巧合巧合 逻辑逻辑 时间时间 过程过程 通信通信 信息信息 功能功能内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚内聚性内聚性功能独立性功能独立性3.1 软件设计的概念及原则软件设计的概念及原则模块独立性比较强的模块应是高内聚,低耦合的模块。模块独立性比较强的模块应是高内聚,低耦合的模块。3.1 软件设计的概念及原则软件设计的概念及原则(3)提高抽象层次提高抽象层次抽象是指忽视一个主题中与当前目标无关抽象是指忽视一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目的那些方面,以便更充分地注意与当前目标有关的方面。标有关的方面。当我们进行软件设计时,设计开始时应尽当我们进行软件设计时,设计开始时应尽量提高软件的抽象层次,按抽象级别从高量提高软件的抽象层次,按抽象级别从高到低进行软件设计。到低进行软件设计。3.1 软件设计的概念及原则软件设计的概念及原则(4)复用性设计复用性设计复用是指同一事物不做修改或稍加修改就复用是指同一事物不做修改或稍加修改就可以多次重复使用。将复用的思想用于软可以多次重复使用。将复用的思想用于软件开发,称为软件复用。件开发,称为软件复用。我们将软件的重用部分称为软构件。我们将软件的重用部分称为软构件。也就是说,在构造新的软件系统时不必从也就是说,在构造新的软件系统时不必从零做起,可以直接使用已有的软构件即可零做起,可以直接使用已有的软构件即可组装(或加以合理修改)成新的系统。组装(或加以合理修改)成新的系统。3.1 软件设计的概念及原则软件设计的概念及原则(5)灵活性设计灵活性设计保证软件灵活性设计的关键是抽象。保证软件灵活性设计的关键是抽象。面向对象系统中的类结构类似一座金字塔,面向对象系统中的类结构类似一座金字塔,越接近金字塔的顶端,抽象程度就越高。越接近金字塔的顶端,抽象程度就越高。“抽象抽象”的反义词是的反义词是“具体具体”。理想情况。理想情况下,一个系统的任何代码、逻缉、概念在下,一个系统的任何代码、逻缉、概念在这个系统中都应该是唯一的,也就是说不这个系统中都应该是唯一的,也就是说不存在重复的代码。存在重复的代码。3.1 软件设计的概念及原则软件设计的概念及原则在设计中引入灵活性的方法有:在设计中引入灵活性的方法有:降低耦合并提高内聚(易于提高替换能力);降低耦合并提高内聚(易于提高替换能力);建立抽象(创建有多态操作的接口和父类);建立抽象(创建有多态操作的接口和父类);不要将代码写死(消除代码中的常数);不要将代码写死(消除代码中的常数);抛出异常(由操作的调用者处理异常);抛出异常(由操作的调用者处理异常);使用并创建可复用的代码。使用并创建可复用的代码。3.2 结构化设计结构化设计结构化设计的任务结构化设计的任务结构化设计与结构化分析的关系结构化设计与结构化分析的关系模块结构及表示模块结构及表示数据结构及表示数据结构及表示3.2.1 软件设计的任务软件设计的任务软件设计的主要任务是要解决如何做的问题,软件设计的主要任务是要解决如何做的问题,要在需求分析的基础上,建立各种设计模型,要在需求分析的基础上,建立各种设计模型,并通过对设计模型的分析和评估,来确定这并通过对设计模型的分析和评估,来确定这些模型是否能够满足需求。些模型是否能够满足需求。软件设计是将用户需求准确地转化成为最终软件设计是将用户需求准确地转化成为最终的软件产品的唯一途径,在需求到构造之间的软件产品的唯一途径,在需求到构造之间起到了桥梁作用。起到了桥梁作用。在软件设计阶段,往往存在多种设计方案,在软件设计阶段,往往存在多种设计方案,通常需要在多种设计方案之中进行决策和折通常需要在多种设计方案之中进行决策和折中,并使用选定的方案进行后续的开发活动。中,并使用选定的方案进行后续的开发活动。3.2.1 软件设计的任务软件设计的任务软件设计的阶段与任务软件设计的阶段与任务从工程管理的角度,可以将软件设计分为从工程管理的角度,可以将软件设计分为概要设概要设计阶段计阶段和和详细设计阶段详细设计阶段。从技术的角度,传统的结构化方法将软件设计划从技术的角度,传统的结构化方法将软件设计划分为分为体系结构设计体系结构设计、数据设计数据设计、接口设计接口设计和和过程过程设计设计4 4部分;部分;面向对象方法则将软件设计划分为面向对象方法则将软件设计划分为体系结构设计、体系结构设计、类设计类设计/数据设计数据设计、接口设计接口设计和和构件级设计构件级设计4 4部分。部分。3.2.1 软件设计的任务软件设计的任务软件设计的阶段与任务软件设计的阶段与任务从管理和技术两个不同的角度对设计的认从管理和技术两个不同的角度对设计的认识。识。3.2.1 软件设计的任务软件设计的任务软件设计的阶段与任务软件设计的阶段与任务体系结构设计体系结构设计:体系结构设计定义软件的:体系结构设计定义软件的主要结构元素及其之间的关系。主要结构元素及其之间的关系。接口设计接口设计:接口设计描述用户界面,软件:接口设计描述用户界面,软件和其他硬件设备、其他软件系统及使用人和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部员的外部接口,以及各种构件之间的内部接口。接口。数据设计数据设计:传统方法主要根据需求阶段所:传统方法主要根据需求阶段所建立的实体建立的实体关系图(关系图(ERER图)来确定软件图)来确定软件涉及的文件系统的结构及数据库的表结构。涉及的文件系统的结构及数据库的表结构。3.2.1 软件设计的任务软件设计的任务软件设计的阶段与任务软件设计的阶段与任务过程设计过程设计:过程设计的主要工作是确定软:过程设计的主要工作是确定软件各个组成部分内的算法及内部数据结构,件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算并选定某种过程的表达形式来描述各种算法。法。3.2.2 结构化设计结构化设计与结构化分析与结构化分析的关系的关系结构化分析的结果为结构化设计提供了最基结构化分析的结果为结构化设计提供了最基本的输入信息。两者的关系如图所示。本的输入信息。两者的关系如图所示。3.2.2 结构化设计与结构化分析的关系结构化设计与结构化分析的关系结构化设计方法的实施要点结构化设计方法的实施要点(1)(1)研究、分析和审查数据流图。研究、分析和审查数据流图。(2)(2)根据数据流图决定问题的类型:变换型和事根据数据流图决定问题的类型:变换型和事务型。针对两种不同的类型分别进行分析处理。务型。针对两种不同的类型分别进行分析处理。(3)(3)由数据流图推导出系统的初始结构图。由数据流图推导出系统的初始结构图。(4)(4)利用一些启发式原则来改进系统的初始结构利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。图,直到得到符合要求的结构图为止。(5)(5)根据分析模型中的实体关系图和数据字典进根据分析模型中的实体关系图和数据字典进行数据设计,包括数据库设计或数据文件的设计。行数据设计,包括数据库设计或数据文件的设计。(6)(6)在上面设计的基础上,并依据分析模型中的在上面设计的基础上,并依据分析模型中的加工规格说明、状态转换图进行过程设计。加工规格说明、状态转换图进行过程设计。(7)(7)制定测试计划。制定测试计划。3.2.3 模块结构及表示模块结构及表示一般通过功能划分过程来完成软件结构设计。一般通过功能划分过程来完成软件结构设计。功能划分过程从需求分析确立的目标系统的功能划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每一模型出发,对整个问题进行分割,使其每一部分用一个或几个软件模块加以解决,整个部分用一个或几个软件模块加以解决,整个问题就解决了。问题就解决了。3.2.3 模块结构及表示模块结构及表示模块模块一个软件系统通常由很多模块组成,结构一个软件系统通常由很多模块组成,结构化程序设计中的函数和子程序都可称为模化程序设计中的函数和子程序都可称为模块,它是程序语句按逻辑关系建立起来的块,它是程序语句按逻辑关系建立起来的组合体。组合体。模块用矩形框表示,并用模块的名字标记模块用矩形框表示,并用模块的名字标记它。它。3.2.3 模块结构及表示模块结构及表示模块的分类模块的分类3.2.3 模块结构及表示模块结构及表示模块的结构模块的结构模块结构最普通的形式就是模块结构最普通的形式就是树状结构树状结构和和网网状结构状结构,如图所示。,如图所示。3.2.3 模块结构及表示模块结构及表示结构图结构图结构图(结构图(structure chartstructur
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

当前位置:首页 > 中学教育 > 初中教育


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号