软件工程课件第四章_第1页
软件工程课件第四章_第2页
软件工程课件第四章_第3页
软件工程课件第四章_第4页
软件工程课件第四章_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-11-12信息科学与技术学院1第四章第四章 总体设计总体设计软件工程软件工程(software engineering)2021-11-12信息科学与技术学院2总体设计总体设计 需求分析解决需求分析解决“系统必须做什么系统必须做什么(what)”(what)”的问题,软件的问题,软件设计解决设计解决“怎样做怎样做(how)”(how)”,即从技术角度考虑如何实现用户,即从技术角度考虑如何实现用户需求。需求。需求解决需求解决“做正确的事做正确的事”,设计解决,设计解决“正确地做事正确地做事”。 软件设计是把软件需求变换成软件表示的过程。最初这软件设计是把软件需求变换成软件表示的过程。最

2、初这种表示只是描述出软件的总框架,然后进一步细化,在此框种表示只是描述出软件的总框架,然后进一步细化,在此框架中填入细节,把它加工成在程序细节上非常接近于源程序架中填入细节,把它加工成在程序细节上非常接近于源程序的表示。因此软件设计分两步进行:的表示。因此软件设计分两步进行: 1 1、将系统划分成相互联系的逻辑单元、将系统划分成相互联系的逻辑单元-总体上应该怎样总体上应该怎样做做-总体设计、概要设计、初步设计总体设计、概要设计、初步设计。 2 2、逻辑单元实现的设计、逻辑单元实现的设计-具体应该怎样做具体应该怎样做-详细设计。详细设计。2021-11-12信息科学与技术学院3总体的设计过程总体

3、的设计过程一、系统体系结构设计一、系统体系结构设计 设想供选择的方案设想供选择的方案 选取合理的方案选取合理的方案 推荐最佳方案推荐最佳方案 二、软件结构设计二、软件结构设计 功能分解功能分解 设计软件结构设计软件结构 三、数据库设计三、数据库设计 四、制定测试计划四、制定测试计划 五、书写文档五、书写文档六、审核和复审六、审核和复审2021-11-12信息科学与技术学院4软件结构设计软件结构设计1 1、功能分解、功能分解进行功能分解的目的,不是从应用角度,而是从进行功能分解的目的,不是从应用角度,而是从实现角度,针对的是少数功能。这些功能不是不明确,实现角度,针对的是少数功能。这些功能不是不

4、明确,而是功能实现起来较复杂,将其分解成比较简单的功而是功能实现起来较复杂,将其分解成比较简单的功能,使每个功能的实现变得明显易懂。能,使每个功能的实现变得明显易懂。该步骤将导致数据流图的进一步细化。该步骤将导致数据流图的进一步细化。2021-11-12信息科学与技术学院5软件结构设计软件结构设计2 2、 设计软件结构设计软件结构软件结构:以模块为单位的层次结构。即:软件结构:以模块为单位的层次结构。即:上层模块调用它的下层模块以实现程序的完整功能;上层模块调用它的下层模块以实现程序的完整功能;每个下层模块再调用更下层模块完成程序的一个子功能;每个下层模块再调用更下层模块完成程序的一个子功能;

5、最下层的模块完成最具体的功能。最下层的模块完成最具体的功能。 方法:根据数据流图的层次关系导出软件结构。方法:根据数据流图的层次关系导出软件结构。任务:任务: 划分程序模块划分程序模块 确定模块间的逻辑关系及接口参数确定模块间的逻辑关系及接口参数如果数据流图设计得好,数据流图和软件结构具有极如果数据流图设计得好,数据流图和软件结构具有极强的对应关系。强的对应关系。2021-11-12信息科学与技术学院6数据结构设计数据结构设计 1 1、文件系统的数据结构设计、文件系统的数据结构设计 确定输入、输出文件的详细的数据结构。确定输入、输出文件的详细的数据结构。 确定算法所需的逻辑数据结构及其操作规则

6、。确定算法所需的逻辑数据结构及其操作规则。 确定逻辑数据结构所涉及的程序模块确定逻辑数据结构所涉及的程序模块2 2、数据库设计、数据库设计 如果目标系统以数据库为基础,则要进行数据库设计。如果目标系统以数据库为基础,则要进行数据库设计。 总体设计阶段的数据库设计包括:总体设计阶段的数据库设计包括: 数据库管理系统的选择数据库管理系统的选择 模式设计模式设计:确定有那些基本表组成和每个表的结构。:确定有那些基本表组成和每个表的结构。 子模式设计:具体应用所能看到的数据库内容。子模式设计:具体应用所能看到的数据库内容。 物理模式设计:确定数据的存储结构和存取路径(存物理模式设计:确定数据的存储结构

7、和存取路径(存储方式,建立索引)。储方式,建立索引)。 数据库完整性和安全性设计。数据库完整性和安全性设计。 2021-11-12信息科学与技术学院7制定测试计划制定测试计划确定对各模块和系统联调的测试方案。确定对各模块和系统联调的测试方案。 在软件开发的早期阶段考虑测试问题,在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高能促使软件设计人员在设计时注意提高软件的可测试性软件的可测试性 。2021-11-12信息科学与技术学院8书写文档书写文档 1.1.系统说明:概要设计说明书系统说明:概要设计说明书 2.2.用户手册用户手册 3.3.测试计划测试计划 4.4.详细的实现计

8、划详细的实现计划 5.5.数据库设计结果数据库设计结果 2021-11-12信息科学与技术学院9审核和复审审核和复审 最后应该对总体设计的结果进最后应该对总体设计的结果进行严格的技术审查,通过之后再由行严格的技术审查,通过之后再由使用部门从管理角度进行复审。使用部门从管理角度进行复审。2021-11-12信息科学与技术学院10软件设计原理软件设计原理主要内容w抽象抽象w模块化模块化w信息隐蔽(和局部化)信息隐蔽(和局部化) w模块独立模块独立 2021-11-12信息科学与技术学院11抽抽 象象 在现实世界中,一定事物、状态或过程之间在现实世界中,一定事物、状态或过程之间总存在着某些相似的方面

9、(共性总存在着某些相似的方面(共性) )。把这些相似。把这些相似的方面集中和概括起来,暂时忽略它们之间的差的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。抽出事物的本质特征而暂不考异,这就是抽象。抽出事物的本质特征而暂不考虑它们的细节。虑它们的细节。 解决复杂问题的唯一有效的方法就是运用抽解决复杂问题的唯一有效的方法就是运用抽象的思维方式,首先用一些高级的抽象概念构造象的思维方式,首先用一些高级的抽象概念构造和理解它;这些高级概念又可以用一些较低级的和理解它;这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直到最低层次概念构造和理解,如此进行下去,直到最低层次的具体元素

10、。的具体元素。2021-11-12信息科学与技术学院12前一页抽抽 象象 抽象的具体表现为:自顶向下、逐步求精。抽象的具体表现为:自顶向下、逐步求精。 软件工程过程的每一步都是对软件解法的抽象软件工程过程的每一步都是对软件解法的抽象层次的一次求精。层次的一次求精。 软件开发的三种抽象形式:软件开发的三种抽象形式: 1 1、过程抽象:对过程的任务采用逐步求精的解、过程抽象:对过程的任务采用逐步求精的解法;法; 2 2、数据抽象:通过层次结构来描述数据对象。、数据抽象:通过层次结构来描述数据对象。 3 3、控制抽象:描述程序控制机制而无须规定内、控制抽象:描述程序控制机制而无须规定内部细节。部细节

11、。 模块化就是一种程序设计的抽象机制。模块化就是一种程序设计的抽象机制。2021-11-12信息科学与技术学院13模块化模块化 模块:一组有序操作的总称,它可以单独的名字存在,模块:一组有序操作的总称,它可以单独的名字存在,单独编译,可以通过名字来访问。一个函数、一个过程就单独编译,可以通过名字来访问。一个函数、一个过程就是一个模块。是一个模块。 模块基本属性模块基本属性: (1 1)功能:模块做什么;)功能:模块做什么; (2 2)逻辑:描述模块内部怎么做;)逻辑:描述模块内部怎么做; (3 3)状态:模块使用时的环境和条件。)状态:模块使用时的环境和条件。 模块的外部属性:模块的外部属性:

12、 模块名模块名 功能功能 参数参数( (输入参数和输出参数输入参数和输出参数) )。 模块的内部特性:完成模块功能的代码和局部数据。模块的内部特性:完成模块功能的代码和局部数据。2021-11-12信息科学与技术学院14模块化模块化 模块化:以模块作为程序设计的基本单位,把程序划模块化:以模块作为程序设计的基本单位,把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集分成若干个模块,每个模块完成一个子功能,把这些模块集总起来,并通过模块间的调用关系把它们组成一个完整的整总起来,并通过模块间的调用关系把它们组成一个完整的整体,完成指定的功能。体,完成指定的功能。 采用模块化的依据:采用模

13、块化的依据: 容易被理解。容易被理解。 使问题复杂度降低,容易被实现。使问题复杂度降低,容易被实现。2021-11-12信息科学与技术学院15采用模块化的依据采用模块化的依据 容易被理解。容易被理解。 使问题复杂度降低,容易被实现。使问题复杂度降低,容易被实现。 设函数设函数c(x)定义问题定义问题x的复杂程度,函数的复杂程度,函数e(x)确定解决问题确定解决问题x需要的工作量(时间),对于两个问题需要的工作量(时间),对于两个问题p1和和p2,如果,如果 c(p1) c(p2) 则:则: e(p1) e(p2) 规律:规律: c(p1p2) c(p1) + c(p2) 必有:必有: e(p1

14、p2) e(p1)+ e(p2) 2021-11-12信息科学与技术学院16模块化与软件成本模块化与软件成本2021-11-12信息科学与技术学院17模块化结论模块化结论 1 1、采用模块化,是使软件设计从、采用模块化,是使软件设计从难到易的基本方法。难到易的基本方法。 2 2、模块分解应适度。模块规模太、模块分解应适度。模块规模太小,完成每个模块的工作量很小,但小,完成每个模块的工作量很小,但设计和调试模块间的接口工作量随之设计和调试模块间的接口工作量随之增加。增加。2021-11-12信息科学与技术学院18信息的隐蔽和局部化信息的隐蔽和局部化信息隐蔽:模块内部的信息(处理过程和数据),应对

15、信息隐蔽:模块内部的信息(处理过程和数据),应对不需要了解这些信息的模块隐蔽起来,使它们不能访问。不需要了解这些信息的模块隐蔽起来,使它们不能访问。信息隐蔽是模块设计的基本原则。意味着在进行模块划信息隐蔽是模块设计的基本原则。意味着在进行模块划分时,应保证模块的独立性,使组成程序的模块之间只需交分时,应保证模块的独立性,使组成程序的模块之间只需交换完成软件功能所必需的信息。换完成软件功能所必需的信息。将信息隐蔽作为模块化设计标准,为软件测试和维护对将信息隐蔽作为模块化设计标准,为软件测试和维护对模块的修改带来了极大的方便,使得修改时无意引入的错误模块的修改带来了极大的方便,使得修改时无意引入的

16、错误不会被扩散到被修改模块以外的其它位置。不会被扩散到被修改模块以外的其它位置。局部化:指关系密切的软件元素物理地彼此靠近。局部局部化:指关系密切的软件元素物理地彼此靠近。局部化是实现信息隐蔽的重要方法。如模块内使用的局部数据元化是实现信息隐蔽的重要方法。如模块内使用的局部数据元素,当模块被调用执行时发挥作用,退出后便失去意义。素,当模块被调用执行时发挥作用,退出后便失去意义。2021-11-12信息科学与技术学院19模块独立模块独立 模块独立模块独立(independence)(independence)的概念是模块化、抽象、信息的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。开发具有

17、独立功能且与其他隐蔽和局部化概念的直接结果。开发具有独立功能且与其他模块之间没有过多的相互作用的模块,就可以做到模块独立模块之间没有过多的相互作用的模块,就可以做到模块独立 。 第一,有效的模块化(即具有独立的模块)的软件比较容第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。易开发出来。 第二,独立的模块比较容易测试和维护。第二,独立的模块比较容易测试和维护。模块的独立程度的模块的独立程度的度量度量标准标准: : 内聚内聚: :衡量一个模块内部各个元素彼此结合的紧密程度;衡量一个模块内部各个元素彼此结合的紧密程度; 耦合耦合: :衡量不同模块彼此间互相依赖(连接)的紧密程度。衡量

18、不同模块彼此间互相依赖(连接)的紧密程度。2021-11-12信息科学与技术学院20模块独立模块独立 耦合耦合 耦合是对一个软件结构内不同模块之间互联程度的度量。耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块之间接口的复杂程度,调用模块的方式,耦合强弱取决于模块之间接口的复杂程度,调用模块的方式,以及通过接口的数据。实际上,耦合是接口数据对模块独立以及通过接口的数据。实际上,耦合是接口数据对模块独立性的影响。性的影响。 如果两个模块中的每一个都能独立地工作而不需要另一如果两个模块中的每一个都能独立地工作而不需要另一个模块地存在,那么它们彼此完全独立,这意味着模块间无个模块

19、地存在,那么它们彼此完全独立,这意味着模块间无任何连接,耦合程度最低任何连接,耦合程度最低。但一个软件系统中的模块之间是但一个软件系统中的模块之间是彼此协同工作的,不可能所有模块间没有连结。彼此协同工作的,不可能所有模块间没有连结。2021-11-12信息科学与技术学院21模块独立模块独立 耦合耦合 数据耦合数据耦合 :如果两个模块彼此间通过参数交:如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。耦合称为数据耦合。 控制耦合控制耦合:如果传递的信息中有控制信息,则:如果传递的信息中有控制信息,则这种耦合称为控制耦

20、合。这种耦合称为控制耦合。 数据耦合是数据耦合是低耦合低耦合。系统必须存在这种耦合,。系统必须存在这种耦合,因为只有当某些模块的输出数据作为另一些模块因为只有当某些模块的输出数据作为另一些模块的输入数据时,系统才能完成有价值的功能。的输入数据时,系统才能完成有价值的功能。 2021-11-12信息科学与技术学院22模块独立模块独立 耦合耦合 公共环境耦合公共环境耦合:当两个或多个模块通过一个公:当两个或多个模块通过一个公共数据环境(全程变量、数据文件等)相互作用时,共数据环境(全程变量、数据文件等)相互作用时,它们之间的耦合称为公共环境耦合。它们之间的耦合称为公共环境耦合。 内容耦合内容耦合:

21、一个模块直接引用另一个模块内部:一个模块直接引用另一个模块内部的内容。例如:一个模块直接访问另一个模块的内的内容。例如:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分代码重叠。最高程度的的内部;两个模块有一部分代码重叠。最高程度的耦合是内容耦合。耦合是内容耦合。 原则原则:尽量使用数据耦合,少用控制耦合,限尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合制公共环境耦合的范围,完全不用内容耦合 。 2021-11-12信息科学与技术学院23前一页模块独立模块独立 内聚内聚 内聚

22、是一个模块内各个元素彼此结合的紧内聚是一个模块内各个元素彼此结合的紧密程度的度量。内聚是信息隐蔽功能的自然扩密程度的度量。内聚是信息隐蔽功能的自然扩展,是模块内部功能独立性的表现,理想内聚展,是模块内部功能独立性的表现,理想内聚的模块只做一件事情。的模块只做一件事情。 按程度分类按程度分类:低内聚低内聚 中内聚中内聚 高内聚高内聚。 2021-11-12信息科学与技术学院24模块独立模块独立 内聚内聚 偶然内聚偶然内聚:模块中元素之间没有实质的联系。:模块中元素之间没有实质的联系。模块内的语句难以定义其功能,它是把多个模块模块内的语句难以定义其功能,它是把多个模块共同的语句抽出来组成一个模块共

23、同的语句抽出来组成一个模块 逻辑内聚逻辑内聚:模块完成的任务逻辑相关(如产:模块完成的任务逻辑相关(如产生各种类型的全部输出)。不同功能混在一起,生各种类型的全部输出)。不同功能混在一起,合用部分程序代码,局部修改会影响全局,导致合用部分程序代码,局部修改会影响全局,导致修改困难。修改困难。 时间内聚时间内聚:模块包含的任务必须在同一时间:模块包含的任务必须在同一时间内执行。内执行。2021-11-12信息科学与技术学院25模块独立模块独立 内聚内聚 过程内聚过程内聚:模块内的处理元素是相关的,模块内的处理元素是相关的,并且需要按特定顺序执行。并且需要按特定顺序执行。 通信内聚通信内聚: 模块

24、中所有元素都使用同一模块中所有元素都使用同一个输入数据或产生同一个输出数据。个输入数据或产生同一个输出数据。 顺序内聚顺序内聚: 一个模块中多个处理元素均一个模块中多个处理元素均与同一功能相关,且必须顺序执行(一个处与同一功能相关,且必须顺序执行(一个处理单元的输出是另一个处理单元的输入)。理单元的输出是另一个处理单元的输入)。 功能内聚功能内聚: 模块中所有处理元素属于一模块中所有处理元素属于一个整体,共同完成同一功能。个整体,共同完成同一功能。 2021-11-12信息科学与技术学院26模块独立模块独立 内聚内聚 低内聚:偶然内聚、逻辑内聚和时间内聚低内聚:偶然内聚、逻辑内聚和时间内聚 中

25、内聚:过程内聚、通信内聚中内聚:过程内聚、通信内聚 高内聚:顺序内聚、功能内聚高内聚:顺序内聚、功能内聚对内聚的参考评价:对内聚的参考评价: 功能内聚功能内聚 1010分分 时间内聚时间内聚 3 3分分 顺序内聚顺序内聚 9 9分分 逻辑内聚逻辑内聚 1 1分分 通信内聚通信内聚 7 7分分 偶然内聚偶然内聚 0 0分分 过程内聚过程内聚 5 5分分 在软件软件中,尽可能构造高内聚的模块,辨在软件软件中,尽可能构造高内聚的模块,辨认和避免低内聚的模块,最好不用偶然内聚。认和避免低内聚的模块,最好不用偶然内聚。2021-11-12信息科学与技术学院27启发式规则启发式规则前一页主要内容w改进软件

26、结构提高模块独立性改进软件结构提高模块独立性w模块规模应该适中模块规模应该适中 w深度、宽度、扇出和扇入应适当深度、宽度、扇出和扇入应适当 w模块的作用域应在控制域之内模块的作用域应在控制域之内 w尽量降低模块接口的复杂程度尽量降低模块接口的复杂程度 w设计单入口出口的模块设计单入口出口的模块 w模块功能应该可以预测模块功能应该可以预测 2021-11-12信息科学与技术学院28改进软件结构提高模块独立性改进软件结构提高模块独立性 模块独立性主要体现在低耦合、高内聚。可模块独立性主要体现在低耦合、高内聚。可以通过分解或合并来提高模块独立性。以通过分解或合并来提高模块独立性。 分解:把几个模块中

27、相同部分(相同的子功分解:把几个模块中相同部分(相同的子功能)分解出来建立一个新的模块。能)分解出来建立一个新的模块。 合并:把几个模块合并成一个模块,减少对合并:把几个模块合并成一个模块,减少对控制信息的传递,以及对全程数据的引用,降低控制信息的传递,以及对全程数据的引用,降低接口的复杂程度,降低块间耦合度。接口的复杂程度,降低块间耦合度。2021-11-12信息科学与技术学院29模块规模应该适中模块规模应该适中 在保证模块功能独立性的前提下,尽可能使模在保证模块功能独立性的前提下,尽可能使模块中的语句数少。块中的语句数少。 5050100100行。行。 美国空军部:美国空军部:5 5500

28、500行行 目的:可理解性、可读性好。目的:可理解性、可读性好。 为了保证模块独立性,少数模块可以大一些。为了保证模块独立性,少数模块可以大一些。 模块过小,系统开销大于有效操作。模块过小,系统开销大于有效操作。 对大模块的分解不应降低独立性。对大模块的分解不应降低独立性。 面向对象技术,模块的大小无实际意义。面向对象技术,模块的大小无实际意义。2021-11-12信息科学与技术学院30深度、宽度、扇出和扇入应适当深度、宽度、扇出和扇入应适当 深度:软件层次结构的层数。深度:软件层次结构的层数。 宽度:软件结构内同一层次上模块总数的最大值。宽度:软件结构内同一层次上模块总数的最大值。 扇入:一

29、个模块被调用的上级模块数量。扇入越大,表扇入:一个模块被调用的上级模块数量。扇入越大,表示共享该模块的上级模块越多。示共享该模块的上级模块越多。 扇出:一个模块直接控制(调用)的模块个数。扇出影扇出:一个模块直接控制(调用)的模块个数。扇出影响宽度。响宽度。 扇出过大意味着模块过分复杂,需要控制和协调过多的扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。下级模块。 一个好的系统的平均扇出通常是一个好的系统的平均扇出通常是34(上限是(上限是59) (72原理原理心理学原理)心理学原理) 一个好的软件结构通常顶层扇出较大,中层扇出较低,一个好的软件结构通常顶层扇出较大,中层扇出较低,底

30、层模块高扇入。软件结构的形状呈椭圆外形底层模块高扇入。软件结构的形状呈椭圆外形.2021-11-12信息科学与技术学院31模块的作用域应在控制域之内模块的作用域应在控制域之内 控制范围:指包含模块本身的所有下属模块。控制范围:指包含模块本身的所有下属模块。 作用域:模块内一个条件判断可能引起的的被执行模块。作用域:模块内一个条件判断可能引起的的被执行模块。 设计得好的系统,模块的作用域应在模块的控制范围内。设计得好的系统,模块的作用域应在模块的控制范围内。例例: a的控制范围为:的控制范围为:a、b、c、d、e、f 若若a的作用域也是的作用域也是a、b、c、d、e 、 f,则是合理的。,则是合

31、理的。 若若a的判断要影响到的判断要影响到g的执行过程,则应调整软件结构。的执行过程,则应调整软件结构。magbcdef2021-11-12信息科学与技术学院32尽量降低模块接口的复杂程度尽量降低模块接口的复杂程度 模块接口设计原则:易理解,传递信息简单且与模块模块接口设计原则:易理解,传递信息简单且与模块功能一致。功能一致。 例:求一元二次方程的根:例:求一元二次方程的根: quad_root(tal,x); tal-系数数组;系数数组; x-根数组根数组 quad_root(a,b,c,root1,root2); 接口复杂或不一致,是紧耦合或低内聚的征兆。接口复杂或不一致,是紧耦合或低内聚

32、的征兆。 尽可能不用全局变量是降低接口复杂性的一个方面。尽可能不用全局变量是降低接口复杂性的一个方面。2021-11-12信息科学与技术学院33设计单入口出口的模块设计单入口出口的模块前一页 对模块的执行,通过模块调用语句对模块的执行,通过模块调用语句进入模块,模块执行完后应返回到模块进入模块,模块执行完后应返回到模块调用语句的下一个语句位置。调用语句的下一个语句位置。2021-11-12信息科学与技术学院34模块功能应该可以预测模块功能应该可以预测 模块作为一个黑箱,只要输入数据相同就产模块作为一个黑箱,只要输入数据相同就产生同样的输出,这个模块的功能就是可预测的。生同样的输出,这个模块的功

33、能就是可预测的。 带有内部带有内部“存储器存储器”(如某个标志状态)的模(如某个标志状态)的模块的功能是不可预测的,因为它的输出不仅取决块的功能是不可预测的,因为它的输出不仅取决于输入,而且还取决于内部于输入,而且还取决于内部“存储器存储器”的状态。的状态。这样的模块难理解、难测试、难维护。全程变量这样的模块难理解、难测试、难维护。全程变量使用不当或数组初始化不当会导致这种情况。使用不当或数组初始化不当会导致这种情况。 以面向对象的类为模块,不能保证输入数据以面向对象的类为模块,不能保证输入数据相同就能产生相同的输出。相同就能产生相同的输出。2021-11-12信息科学与技术学院35图形工具图

34、形工具-层次图和层次图和hipo图图 层次图层次图:描述软件的层次结构(:描述软件的层次结构(h图)。图)。 层次图中每个矩形框代表一个模块,矩形框之间的层次图中每个矩形框代表一个模块,矩形框之间的连线表示模块调用关系。连线表示模块调用关系。 层次图适合用来描绘软件的层次结构。层次图适合用来描绘软件的层次结构。 hipo图图:层次图:层次图+ipo图图 对对h图的每个方框,都有一张图的每个方框,都有一张ipo图与之对应,来描图与之对应,来描述方框所代表的模块的处理过程。并且对每个述方框所代表的模块的处理过程。并且对每个ipo图都对图都对应应h图中方框相同的标记和编号,便于追踪。图中方框相同的标

35、记和编号,便于追踪。2021-11-12信息科学与技术学院36前一页图形工具层次图和层次图和hipo图图2021-11-12信息科学与技术学院37前一页图形工具图形工具-结构图结构图 yourdon提出的结构图是进行软件结构提出的结构图是进行软件结构设计的另一个有力工具。在结构图中,通常设计的另一个有力工具。在结构图中,通常还用带注释的箭头表示模块调用过程中来回还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:头尾部的形状来区分: 尾部

36、是尾部是空心圆空心圆,表示传递的是表示传递的是数据数据 尾部是尾部是实心圆实心圆,表示传递的是表示传递的是控制信息控制信息2021-11-12信息科学与技术学院38前一页图形工具图形工具-结构图结构图2021-11-12信息科学与技术学院39前一页图形工具概述图形工具概述 层次图和结构图并不严格表示调用次层次图和结构图并不严格表示调用次序,只表明一个模块调用哪些模块,至于序,只表明一个模块调用哪些模块,至于模块是否还有其它成分则完全没有表示。模块是否还有其它成分则完全没有表示。 通常用层次图作为描述软件结构的文通常用层次图作为描述软件结构的文档。结构图作为文档很不适合。但用档。结构图作为文档很

37、不适合。但用hipo图道出结构图的过程可以作为检查图道出结构图的过程可以作为检查设计正确性和评价模块独立性的好方法。设计正确性和评价模块独立性的好方法。2021-11-12信息科学与技术学院40面向数据流的设计方法面向数据流的设计方法 基本思想:根据软件需求分析的数据流图,基本思想:根据软件需求分析的数据流图,将其转换成软件系统的结构。将其转换成软件系统的结构。 面向数据流的设计方法定义了一些面向数据流的设计方法定义了一些“映射映射”,利用这些映射可以把数据流图变换成软件结构。利用这些映射可以把数据流图变换成软件结构。 通常所说的结构化设计方法(简称通常所说的结构化设计方法(简称sd方法),方

38、法),也就是基于数据流的设计方法。也就是基于数据流的设计方法。 数据流的类型决定了映射的方法。数据流的类型决定了映射的方法。2021-11-12信息科学与技术学院41面向数据流的设计方法面向数据流的设计方法主要内容w概念概念 w变换流分析设计变换流分析设计 w事物流分析设计事物流分析设计w混合流分析设计混合流分析设计 w设计优化设计优化 2021-11-12信息科学与技术学院42概念概念交换流交换流 数据流图呈线性变换特征,而且可以抽象数据流图呈线性变换特征,而且可以抽象成三部分:成三部分:i-p-o。 信息沿输入通路进入系统,同时由外部形信息沿输入通路进入系统,同时由外部形式变换成内部形式,

39、进入系统的信息通过变换式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些特部形式离开软件系统。当数据流图具有这些特征时,这种信息流就叫作变换流征时,这种信息流就叫作变换流 。 计算、分析型软件的数据流图通常具有这计算、分析型软件的数据流图通常具有这种形式。种形式。2021-11-12信息科学与技术学院43变换流图变换流图2021-11-12信息科学与技术学院44概念概念-事务流事务流 数据流图呈辐射型,根据输入数据的性质选数据流图呈辐射型,根据输入数据的性质选择加工路径。择加工路径。 若

40、处理沿输入通道达到一个处理若处理沿输入通道达到一个处理t,处理,处理t根根据输入数据的类型在若干动作序列中选择一个来据输入数据的类型在若干动作序列中选择一个来执行。这类特殊的数据流称为事务流。处理执行。这类特殊的数据流称为事务流。处理t称为称为处理中心。处理中心的任务:处理中心。处理中心的任务: (1)接收输入数据(输入数据又称为事务);)接收输入数据(输入数据又称为事务); (2)分析每个事务以确定它的类型;)分析每个事务以确定它的类型; (3)根据事务类型选取一条活动通道。)根据事务类型选取一条活动通道。2021-11-12信息科学与技术学院45概念概念-事务流事务流2021-11-12信

41、息科学与技术学院46设计过程设计过程2021-11-12信息科学与技术学院47变换流分析设计变换流分析设计 把具有变换流特点的数据流图按预先确把具有变换流特点的数据流图按预先确定的模式映射成软件结构定的模式映射成软件结构 。 (1)找出变换的中心;)找出变换的中心; (2)设计软件结构的顶层和第二层;)设计软件结构的顶层和第二层; (3)设计中下层模块。)设计中下层模块。 2021-11-12信息科学与技术学院48变换流分析设计变换流分析设计例子例子 考虑具有考虑具有“智能智能”的汽车数字仪表板的设计的汽车数字仪表板的设计 功能描述:功能描述: (1 1)通过模数转换实现传感器与微机的接口)通

42、过模数转换实现传感器与微机的接口 (2 2)在发光二极管面板上显示数据)在发光二极管面板上显示数据 (3 3)指示每小时英里数)指示每小时英里数(mph)(mph) (4 4)指示行驶的里程)指示行驶的里程 (5 5)指示每加仑油行驶的英里数()指示每加仑油行驶的英里数(mpgmpg) (6 6)指示加速或减速)指示加速或减速 (7 7)超速警告,超过)超速警告,超过5555英里英里/ /小时,发出超速警告铃声。小时,发出超速警告铃声。2021-11-12信息科学与技术学院49数字仪表板数据流图数字仪表板数据流图2021-11-12信息科学与技术学院50变换流分析设计步骤变换流分析设计步骤第一

43、步:确定数据流图的类型第一步:确定数据流图的类型 一个数据流图中可能含有变换流的成分,又含有事务一个数据流图中可能含有变换流的成分,又含有事务流的成分,应根据数据流图中占优势的属性,来确定数据流的成分,应根据数据流图中占优势的属性,来确定数据流的全局特性。流的全局特性。第二步:确定输入流和输出流的边界,孤立变换中心第二步:确定输入流和输出流的边界,孤立变换中心 确定输出流边界:一般具有显示、打印、产生控制等。确定输出流边界:一般具有显示、打印、产生控制等。 确定输入流边界:一般作为有效输入应是完成相应功能确定输入流边界:一般作为有效输入应是完成相应功能有关的数据形式。这样在输入原始数据后,还要

44、做一些简有关的数据形式。这样在输入原始数据后,还要做一些简单处理,转换成实际需要的内部形式。单处理,转换成实际需要的内部形式。 上例中,完成功能所需要的输入数据形式是:转速增量、上例中,完成功能所需要的输入数据形式是:转速增量、转速(转转速(转/ /分)、燃料消耗速度。实际获得的信号是:车分)、燃料消耗速度。实际获得的信号是:车轮旋转的瞬时值,燃料消耗速率瞬时值。轮旋转的瞬时值,燃料消耗速率瞬时值。2021-11-12信息科学与技术学院51确定输入流和输出流的边界确定输入流和输出流的边界2021-11-12信息科学与技术学院52变换流分析设计步骤变换流分析设计步骤第三步:完成第三步:完成“第一

45、级分解第一级分解” 把软件的功能划分成逻辑上相互独立的几个子功能。把软件的功能划分成逻辑上相互独立的几个子功能。 所谓分解,就是分配控制的过程。所谓分解,就是分配控制的过程。 第一级分解:即确定最顶层模块控制第二层哪些模块。第一级分解:即确定最顶层模块控制第二层哪些模块。 对于变换流,可以明显地分为输入、中心变换和输出三对于变换流,可以明显地分为输入、中心变换和输出三部分,其数据流图通常被映射成一种特殊的软件结构:部分,其数据流图通常被映射成一种特殊的软件结构: 三叉控制结构三叉控制结构 数据输入控制模块:协调对所有输入数据的接收。数据输入控制模块:协调对所有输入数据的接收。 中心变换控制模块

46、:协调对数据的各种加工处理。中心变换控制模块:协调对数据的各种加工处理。 数据输出控制模块:协调对输出数据的产生和输出。数据输出控制模块:协调对输出数据的产生和输出。准则:尽量使第一级控制的模块数目取最小值。准则:尽量使第一级控制的模块数目取最小值。2021-11-12信息科学与技术学院532021-11-12信息科学与技术学院54变换流分析设计步骤变换流分析设计步骤n第四步:完成第四步:完成“第二级分解第二级分解” 把数据流图中的每个处理映射成软件结构中的一个适当把数据流图中的每个处理映射成软件结构中的一个适当模块模块-完成流图中的处理与模块的映射关系。方法:完成流图中的处理与模块的映射关系

47、。方法: 1 1、从变换中心的边界开始,沿着输入通路向外移动,把、从变换中心的边界开始,沿着输入通路向外移动,把输入通路中的每个处理映射成软件结构中输入数据控制模块输入通路中的每个处理映射成软件结构中输入数据控制模块控制下的低层模块。一般数据流图中的控制下的低层模块。一般数据流图中的前一个处理总是后一前一个处理总是后一个处理的下层模块个处理的下层模块。 2 2、沿着输出通路向外移动,把输出通路中的每个处理映、沿着输出通路向外移动,把输出通路中的每个处理映射成软件结构中输出数据控制模块控制下的低层模块。一般射成软件结构中输出数据控制模块控制下的低层模块。一般数据流图中的数据流图中的后一个处理总是

48、前一个处理的下层模块后一个处理总是前一个处理的下层模块。 3 3、把变换中心内的每个处理映射成中心变换控制模块下、把变换中心内的每个处理映射成中心变换控制模块下的低层模块。一般处于的低层模块。一般处于同一张流图上的变换在变换框的下层同一张流图上的变换在变换框的下层处于同一层次上处于同一层次上,按照处理的逻辑顺序从左到右排列。,按照处理的逻辑顺序从左到右排列。 若变换不处于同一线上,而处于同一抽象层上,其模块若变换不处于同一线上,而处于同一抽象层上,其模块也应处于同一层次上。也应处于同一层次上。2021-11-12信息科学与技术学院55前一页完成第二级的分解完成第二级的分解2021-11-12信息科学与技术学院56前一页未经精化的结构图未经精化的结构图2021-11-12信息科学与技术学院57变换流分析设计步骤变换流分析设计步骤n第五步:对第四步得到的结果进一步精化第五步:对第四步得到的结果进一步精化 依据:设计度量:内聚、偶合、信息隐蔽依据:设计度量:内聚、偶合、信息隐蔽 启发式规则启发式规则 通过合并与分解,得到一个易于实现、易于测试和易于维通过合并与分解,得到一个易于实现、易于测试和易于维护的软件结构。例:护的软件结构。例: 1、把、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论