版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、总体设计的基本目的就是回答总体设计的基本目的就是回答“概括地概括地说,系统应该如何实现说,系统应该如何实现?”这个问题,因这个问题,因此,总体设计又称为概要设计或初步设此,总体设计又称为概要设计或初步设计。计。 第五章第五章 总体设计总体设计总体设计阶段主要完成两项任务总体设计阶段主要完成两项任务: 1方案设计方案设计 2体系结构设计体系结构设计 总体设计过程通常由两个主要阶段组成:总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。结构设计阶段,确定软件结构。5.1 总体设计的过程总体设计的过程设计供选择
2、的方案设计供选择的方案需求分析阶段得出的数据流图是总体设计的根需求分析阶段得出的数据流图是总体设计的根本出发点。本出发点。 通常,选取的这些方案中至少应包括低成本、通常,选取的这些方案中至少应包括低成本、中成本和高成本的三种方案类型。中成本和高成本的三种方案类型。对每个合理方案要提供以下几方面资料:对每个合理方案要提供以下几方面资料:(1)系统流程图;)系统流程图;(2)组成系统的物理元素清单;)组成系统的物理元素清单;(3)成本效益分析;)成本效益分析;(4)实现这个系统的进度计划。)实现这个系统的进度计划。 推荐最佳方案推荐最佳方案分析员从合理方案中选择一个最佳方案向用户分析员从合理方案中
3、选择一个最佳方案向用户推荐,并为推荐的方案制定详细的实现计划。推荐,并为推荐的方案制定详细的实现计划。对于分析员推荐的最佳方案,用户和有关专家对于分析员推荐的最佳方案,用户和有关专家应该认真审查。如果确认该方案确实符合用户的需应该认真审查。如果确认该方案确实符合用户的需要,并且在现有条件下完全能够实现,则应该提请要,并且在现有条件下完全能够实现,则应该提请使用部门负责人进一步审批。在使用部门负责人也使用部门负责人进一步审批。在使用部门负责人也接受了分析员所推荐的方案之后,方可进入总体设接受了分析员所推荐的方案之后,方可进入总体设计过程的下一步工作,即结构设计阶段。计过程的下一步工作,即结构设计
4、阶段。 过程设计:确定每个模块的处理过程。过程设计:确定每个模块的处理过程。结构设计:确定系统由哪些模块组成,以及这结构设计:确定系统由哪些模块组成,以及这些模块之间的相互关系。些模块之间的相互关系。 设计软件结构设计软件结构 对于大型系统的设计,通常分为两个阶段:结对于大型系统的设计,通常分为两个阶段:结构设计和过程设计。构设计和过程设计。其中,结构设计是总体设计阶段的任务,而过其中,结构设计是总体设计阶段的任务,而过程设计则是详细设计阶段的任务。程设计则是详细设计阶段的任务。 设计软件结构设计软件结构 通过通过功能分解功能分解,使得程序中的一个模块完,使得程序中的一个模块完成一个适当的子功
5、能。应该把模块组织成良好成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。层的模块完成最具体的功能。软件结构软件结构(即由模块组成的层次系统即由模块组成的层次系统)可以用可以用层次图或结构图来描绘,第层次图或结构图来描绘,第5.4节将介绍这些图节将介绍这些图形工具。形工具。 数据库设计数据库设计 数据库的应用越来越广泛,目前大多数的系统数据库
6、的应用越来越广泛,目前大多数的系统都要用到数据库技术。都要用到数据库技术。数据库设计是一项专门的技术,包括模式设计、数据库设计是一项专门的技术,包括模式设计、子模式设计、完整性和安全性设计和优化处理等。子模式设计、完整性和安全性设计和优化处理等。 制定测试计划制定测试计划 在软件开发的早期阶段提前考虑软件的测试计在软件开发的早期阶段提前考虑软件的测试计划是很有必要的。这样能促使软件设计人员在设计划是很有必要的。这样能促使软件设计人员在设计时注意到软件的测试问题,从而有利于提高软件的时注意到软件的测试问题,从而有利于提高软件的可测试性。可测试性。 总体设计阶段的文档总体设计阶段的文档(1)总体设
7、计说明书(包括系统实现方案和)总体设计说明书(包括系统实现方案和软件模块结构);软件模块结构);(2)测试计划(包括测试策略、测试方案、)测试计划(包括测试策略、测试方案、预测的测试结果、测试进度计划等);预测的测试结果、测试进度计划等);(3)用户手册(根据总体设计阶段的结果,)用户手册(根据总体设计阶段的结果,编写的初步的用户操作手册);编写的初步的用户操作手册);(4)详细的实现计划;)详细的实现计划;(5)数据库设计结果。)数据库设计结果。最后应该对总体设计的结果进行严最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后格的技术审查,在技术审查通过之后再由使用部门的负责人从管
8、理角度进再由使用部门的负责人从管理角度进行复审。行复审。模块是由边界元素限定的相邻程序元素(例模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。模块又称构件。一个总体标识符代表它。模块又称构件。模块化就是把程序划分成独立命名且可独立模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功模块集成起来构成一个整体,可以完成指定的功能,满足用户的需求。能,满足用户的需求。模块化模块化5. 2 软件设
9、计基本原理软件设计基本原理事实上,每个程序都相应地有一个最适当的事实上,每个程序都相应地有一个最适当的模块数目,可使软件系统的开发成本最小。模块数目,可使软件系统的开发成本最小。采用模块化原理可以使软件结构清晰,不仅采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误通常容易设计也容易阅读和理解。因为程序错误通常局限在有关的模块及它们之间的接口中,所以模局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软块化使软件容易测试和调试,因而有助于提高软件的可靠性。因为变动往往只涉及少数几个模块,件的可靠性。因为变动往往只涉及少数几个模块,所以模
10、块化能够提高软件的可修改性。所以模块化能够提高软件的可修改性。模块化是软件的一个重要属性。模块化的特模块化是软件的一个重要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。也使得软件能够被有效地管理。 模块化模块化这种这种“分而治之分而治之”的思想提供了模块化的根据:把的思想提供了模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。也就容易解决了。 根据前面的结论,我们可以得出下面的不等式:根据前面的结论,我们可以得出下面的不等式:E(P1P
11、2)E(P1)E(P2)这个不等式表明:单独解决问题这个不等式表明:单独解决问题P1和和P2所需的工作所需的工作量之和,比把量之和,比把P1和和P2合起来作为一个问题来解决时所需合起来作为一个问题来解决时所需的工作量要少。的工作量要少。 有两个函数:有两个函数:C(x)表示问题表示问题x的复杂程度;的复杂程度;E(x)表示表示解决问题解决问题x所需要的工作量(时间)。所需要的工作量(时间)。对于两个问题对于两个问题P1和和P2,如果:,如果:C(P1)C(P2)则:则:E(P1)E(P2)另一个有趣的特性是:另一个有趣的特性是:C(P1P2)C(P1)C(P2)模块化和软件成本的关系模块化和软
12、件成本的关系 M 软件总成本 成本或工作量 最小成本区 接口成本 模块数目 我们在考虑问题时,集中考虑和当前问题有关的我们在考虑问题时,集中考虑和当前问题有关的方面,而忽略和当前问题无关的方面,这就是抽象。方面,而忽略和当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。们的细节。 抽象抽象软件工程过程的每一步,都是对软件解法的抽软件工程过程的每一步,都是对软件解法的抽象层次的一次细化。在可行性研究阶段,软件被看象层次的一次细化。在可行性研究阶段,软件被看作是一个完整的系统部分;在需求分析期间,我们作是一个完整的
13、系统部分;在需求分析期间,我们使用在问题环境中熟悉的术语来描述软件的解法;使用在问题环境中熟悉的术语来描述软件的解法;当我们由总体设计阶段转入详细设计阶段时,抽象当我们由总体设计阶段转入详细设计阶段时,抽象的程度进一步减少;最后,当源程序写出来时,也的程度进一步减少;最后,当源程序写出来时,也就达到了抽象的最低层。就达到了抽象的最低层。 逐步求精是一种自顶向下的设计策略。按照逐步求精是一种自顶向下的设计策略。按照这种设计策略,程序的体系结构是通过逐步精化这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。通过逐步分解对处理过程的层次而设计出来的。通过逐步分解对功能的宏观陈述而
14、开发出层次结构,直至最终得功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序。出用程序设计语言表达的程序。求精实际上是细化过程。从在高抽象级别定求精实际上是细化过程。从在高抽象级别定义的功能陈述(或信息描述)开始,也就是说,义的功能陈述(或信息描述)开始,也就是说,该陈述仅仅概念性地描述了功能或信息,但是并该陈述仅仅概念性地描述了功能或信息,但是并没有提供功能的内部工作情况或信息的内部结构。没有提供功能的内部工作情况或信息的内部结构。求精要求设计者细化原始陈述,随着每个后续求求精要求设计者细化原始陈述,随着每个后续求精(即细化)步骤的完成而提供越来越多的细节。精(即细化)步骤
15、的完成而提供越来越多的细节。逐步求精逐步求精1) 信息隐藏原理指出,在设计软件模块时应信息隐藏原理指出,在设计软件模块时应该使得一个模块内包含的信息该使得一个模块内包含的信息(过程和数据过程和数据)对于不对于不需要这些信息的模块来说,是不能访问的,或者需要这些信息的模块来说,是不能访问的,或者说是说是“不可见不可见”的。的。 实际上,应该隐藏的不是有关模块的一切信实际上,应该隐藏的不是有关模块的一切信息,而是模块的实现细节。息,而是模块的实现细节。 “隐藏隐藏”意味着可以通过定义一组独立的模意味着可以通过定义一组独立的模块来实现有效的模块化,这些独立的模块彼此间块来实现有效的模块化,这些独立的
16、模块彼此间仅仅交换那些为了完成系统功能而必须交换的信仅仅交换那些为了完成系统功能而必须交换的信息。息。 使用信息隐藏原理设计软件模块,有助于减使用信息隐藏原理设计软件模块,有助于减少修改软件时所犯的错误。少修改软件时所犯的错误。信息隐信息隐藏和局部化藏和局部化信息隐信息隐藏和局部化藏和局部化 2)局部化)局部化局部化是指把一些关系密切的软件元素物理局部化是指把一些关系密切的软件元素物理地放得彼此靠近。地放得彼此靠近。局部化与信息隐藏密切相关。局部化有助于局部化与信息隐藏密切相关。局部化有助于实现信息隐藏。实现信息隐藏。模块的独立性是软件质量的关键:模块的独立性是软件质量的关键:(1)模块化程度
17、较高的软件容易开发;)模块化程度较高的软件容易开发;(2)模块化程度较高的软件比较容易测试和维护。)模块化程度较高的软件比较容易测试和维护。模块独立性模块独立性模块的独立性的度量标准:耦合和内聚。模块的独立性的度量标准:耦合和内聚。 1、耦合、耦合耦合:软件结构中各个模块之间相互关联程度耦合:软件结构中各个模块之间相互关联程度的度量。的度量。模块间的耦合程度强烈影响系统的可理解性、模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。可测试性、可靠性和可维护性。 在软件设计中应该追求尽可能松散耦合的系在软件设计中应该追求尽可能松散耦合的系统。模块间耦合松散,有助于提高系统的可理解
18、性、统。模块间耦合松散,有助于提高系统的可理解性、可测试性、可靠性和可维护性。可测试性、可靠性和可维护性。常见的耦合:常见的耦合:(1)数据耦合:如果两个模块彼此间通过参数交换数据耦合:如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。信息,而且交换的信息仅仅是数据。(2)控制耦合:传递的信息中有控制信息控制耦合:传递的信息中有控制信息(尽管有尽管有时这种控制信息以数据的形式出现时这种控制信息以数据的形式出现) (3)特征耦合:当把整个数据结构作为参数传递而特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时出现。被调用的模块只需要使用其中一部分数据元
19、素时出现。(4)公共环境耦合:模块之间通过一个公共数据环公共环境耦合:模块之间通过一个公共数据环境相互作用。境相互作用。(公共环境可以是全程变量、共享的通信区、内存(公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等)。的公共覆盖区、任何存储介质上的文件、物理设备等)。(5)内容耦合:最高程度的耦合。下述情况之一:内容耦合:最高程度的耦合。下述情况之一:一个模块访问另一个模块的内部数据;一个模块访问另一个模块的内部数据;一个模块不通过正常入口而转到另一个模块的内部;一个模块不通过正常入口而转到另一个模块的内部;两个模块有一部分程序代码重叠;两个模块有一部分
20、程序代码重叠;一个模块有多个入口。一个模块有多个入口。1、耦合、耦合设计原则:设计原则:尽量使用数据耦合,少用控制耦合和尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完特征耦合,限制公共环境耦合的范围,完全不用内容耦合。全不用内容耦合。2、内聚、内聚内聚:模块内部各个元素彼此结合的紧密程内聚:模块内部各个元素彼此结合的紧密程度的度量。度的度量。内聚标志一个模块内各个元素彼此结合的紧内聚标志一个模块内各个元素彼此结合的紧密程度。密程度。常见的内聚:常见的内聚:(1)功能内聚功能内聚 :模块内所有处理元素属于一个整体,模块内所有处理元素属于一个整体,完成一个单一的功能。(完成一
21、个单一的功能。(10分)分)(2)顺序内聚顺序内聚:一个模块内的处理元素和同一个功能一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行密切相关,而且这些处理必须顺序执行(通常一个处理元通常一个处理元素的输出数据作为下一个处理元素的输入数据素的输出数据作为下一个处理元素的输入数据) 。(。(9分)分)(3)通信内聚:模块中所有元素都使用同一个输入通信内聚:模块中所有元素都使用同一个输入数据和数据和(或或)产生同一个输出数据。(产生同一个输出数据。(7分)分)(4)过程内聚:一个模块内的处理元素是相关的,过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行。(而且必须以特
22、定次序执行。(5分)分)(5)时间内聚:一个模块包含的任务必须在同一段时间内聚:一个模块包含的任务必须在同一段时间内执行。(时间内执行。(3分)分)(6)逻辑内聚:一个模块完成的任务在逻辑上属于逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类。(相同或相似的一类。(1分)分)(7)偶然内聚:一个模块完成的一组任务之间即使偶然内聚:一个模块完成的一组任务之间即使有关系,关系也是很松散的。(有关系,关系也是很松散的。(0分)分)2、内聚、内聚 设计软件时应该力求做到高内聚设计软件时应该力求做到高内聚(功能内聚功能内聚和顺序内聚和顺序内聚),通常中等程度的内聚,通常中等程度的内聚(通信内聚和
23、通信内聚和过程内聚过程内聚)也是可以使用的,而且效果和高内聚也是可以使用的,而且效果和高内聚相差不多;但是,低内聚相差不多;但是,低内聚(偶然内聚、逻辑内聚偶然内聚、逻辑内聚和时间内聚和时间内聚)效果很坏,不要使用。效果很坏,不要使用。 内聚和耦合是密切相关的,模块内的高内内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。设计时力争做到聚往往意味着模块间的松耦合。设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度降低模块间的通过修改设计提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块独立性。耦
24、合程度,从而获得较高的模块独立性。内聚和耦合都是进行模块化设计的有力工具,内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。中到提高模块的内聚程度上。5. 3 设计准则设计准则(1)改进软件结构、提高模块独立性。设改进软件结构、提高模块独立性。设计出软件的初步结构以后,应该仔细审查分计出软件的初步结构以后,应该仔细审查分析这个结构,通过模块分解或合并,力求降析这个结构,通过模块分解或合并,力求降低耦合、提高内聚。低耦合、提高内聚。 (2)模块规模应该适中。模块规模过大,模块规模应该适中。模块规模
25、过大,则可理解程度很低;规模过小则开销大于有则可理解程度很低;规模过小则开销大于有效操作。通过模块分解或合并调整模块规模效操作。通过模块分解或合并调整模块规模时,不可降低模块独立性。时,不可降低模块独立性。 5. 3 启发规则启发规则5. 3 设计准则设计准则 (3)深度、宽度、扇出和扇入都应适当。深度、宽度、扇出和扇入都应适当。深度表示软件结构中控制的层数,它往往能粗略深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。地标志一个系统的大小和复杂程度。宽度是软件结构内同一个层次上的模块总数的最宽度是软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复杂。
26、大值。一般说来,宽度越大系统越复杂。扇出是一个模块直接控制扇出是一个模块直接控制(调用调用)的模块数目。经的模块数目。经验表明,一个设计得好的典型系统的平均扇出通常是验表明,一个设计得好的典型系统的平均扇出通常是3或或4(扇出的上限通常是扇出的上限通常是59)。一个模块的扇入表明有多少个上级模块直接调用一个模块的扇入表明有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多。它,扇入越大则共享该模块的上级模块数目越多。观察大量软件系统后发现,设计得很好的软件结观察大量软件系统后发现,设计得很好的软件结构通常顶层扇出比较高,中层扇出较少,底层扇入到构通常顶层扇出比较高,中层扇出较少,
27、底层扇入到公共的实用模块中去公共的实用模块中去(底层模块有高扇入底层模块有高扇入)。 5. 3 设计准则设计准则 (4)模块的作用域应该在控制域之内。模块的作用域应该在控制域之内。模块的作用域定义为受该模块内一个判定影响的模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。所有直接或间接从属于它的模块的集合。图图5.2 模块的作用域和控制域模块的作用域和控制域例如,在图例如,在图5.2中模块中模块A的控的控制域是制域是A、B、C、D、E、F等模块的集合。等模块的集合。在一个设计
28、得很好的系统中,在一个设计得很好的系统中,所有受判定影响的模块应该所有受判定影响的模块应该都从属于做出判定的那个模都从属于做出判定的那个模块,最好局限于做出判定的块,最好局限于做出判定的那个模块本身及它的直属下那个模块本身及它的直属下级模块。级模块。 5. 3 设计准则设计准则 (5)力争降低模块接口的复杂程度。力争降低模块接口的复杂程度。模块接口复杂或与模块功能不一致,是模块接口复杂或与模块功能不一致,是紧耦合或低内聚的征兆,应该重新分析这个紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。模块的独立性。 (6)设计单入口单出口的模块。设计单入口单出口的模块。当从顶部进入模块并且从底部退出
29、来时,当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易软件是比较容易理解的,因此也是比较容易维护的。这条启发式规则警告软件工程师不维护的。这条启发式规则警告软件工程师不要使模块间出现内容耦合。要使模块间出现内容耦合。 (7)模块功能应该可以预测。模块功能应该可以预测。模块功能应该能够预测模块功能应该能够预测(即,只要输入的即,只要输入的数据相同就产生同样的输出数据相同就产生同样的输出),但也不要使模,但也不要使模块功能过分局限。块功能过分局限。层次图用来描绘软件的层次结构。层次图层次图用来描绘软件的层次结构。层次图中的一个矩形框代表一个模块,方框间的中的一个矩形框代表
30、一个模块,方框间的连线表示调用关系而不像层次方框图那样连线表示调用关系而不像层次方框图那样表示组成关系。图表示组成关系。图5.3是层次图的一个例子。是层次图的一个例子。层次图和层次图和HIPO图图(1) 层次图层次图(1) 层次图层次图正文加工系统输入输出编辑加标题存储检索编目录格式化添加删除插入修改合并列表 图图5.3 正文加工系统的层次图正文加工系统的层次图(2 ) HIPO图图和和H图中每个方框相对应,应该有一张图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程。图描绘这个方框代表的模块的处理过程。HIPO图中的每张图中的每张IPO图内都应该明显地标图内都应该明显地标
31、出它所描绘的模块在出它所描绘的模块在H图中的编号,以便图中的编号,以便追踪了解这个模块在软件结构中的位置。追踪了解这个模块在软件结构中的位置。(2 ) HIPO图图带编号的层次图(H图)正文加工系统输入1.0输出2.0编辑3.0加标题4.0存储5.0检索6.0编目录7.0格式化8.0添加3.1删除3.2插入3.3修改3.4合并3.5列表3.6结构图结构图结构图和层次图类似,也是描绘软件结构结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之框内注明模块的名字或主要功能;方框之间的箭头间的箭头(或直线
32、或直线)表示模块的调用关系。表示模块的调用关系。因为按照惯例总是图中位于上方的方框代因为按照惯例总是图中位于上方的方框代表的模块调用下方的模块,即使不用箭头表的模块调用下方的模块,即使不用箭头也不会产生二义性,为了简单起见,可以也不会产生二义性,为了简单起见,可以只用直线而不用箭头表示模块间的调用关只用直线而不用箭头表示模块间的调用关系。系。图图5.5 产生最佳解的结构图产生最佳解的结构图格式化的解解产生最佳解计算最佳解得到好输入编辑输入读输入原始输入编辑结果原始输入输出结果显示结果结果格式化解格式化的解好输入好输入解在结构图中通常还用带注释的箭头表示模块调用过程中在结构图中通常还用带注释的箭
33、头表示模块调用过程中来回传递的信息。可以利用注释箭头尾部的形状来区分来回传递的信息。可以利用注释箭头尾部的形状来区分传递的信息是数据还是控制信息:尾部是空心圆表示传传递的信息是数据还是控制信息:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。图递的是数据,实心圆表示传递的是控制信息。图5.5是结是结构图的一个例子。构图的一个例子。软件结构图的基本符号软件结构图的基本符号AB(a) 基本形式ACBD(b) 顺序ABC(c) 选择AB(d) 重复图图a表示模块调用的基本形式。用带注释的箭头表示模块调表示模块调用的基本形式。用带注释的箭头表示模块调用过程中来回传递的信息。注释箭头尾部是空心
34、圆表示传递用过程中来回传递的信息。注释箭头尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。的是数据,实心圆表示传递的是控制信息。图图b表示模块的顺序调用。模块表示模块的顺序调用。模块A顺序调用模块顺序调用模块B、C和和D。图图c表示模块的选择调用。当模块表示模块的选择调用。当模块A中某个判定为真时调用中某个判定为真时调用模块模块B,为假时调用模块,为假时调用模块C。图图d表示模块的循环调用。模块表示模块的循环调用。模块A循环调用模块循环调用模块B。5. 5 结构化设计方法结构化设计方法结构化设计方法结构化设计方法(简称简称SD方法方法),是基于数据流的设计方法。,是基于数据流的设计方
35、法。数据流图的类型数据流图的类型1、变换型数据流图、变换型数据流图信息沿输入通路信息沿输入通路进入系统,同时进入系统,同时由外部形式变换由外部形式变换成内部形式,进成内部形式,进入系统的信息通入系统的信息通过变换中心,经过变换中心,经加工处理以后再加工处理以后再沿输出通路变换沿输出通路变换成外部形式离开成外部形式离开软件系统。软件系统。2、事务型数据流图、事务型数据流图“以事务为中心的以事务为中心的”数据流,数据沿输入通路到数据流,数据沿输入通路到达一个处理达一个处理T,这个处理根据输入数据的类型,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。在若干个动作序列中选出一个来执行。图
36、图5.10 设计步骤设计步骤复查满意精化数据流图类型区分事务中心和数据接收通路映射成事务结构区分输入和输出分支映射成变换结构“事务”“变换”优化软件结构导出软件结构详细设计不满意变换分析变换分析变换分析是一系列设计步骤的总称,经过变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。预先确定的模式映射成软件结构。我们通过一个汽车数字仪表板的设计来介绍变我们通过一个汽车数字仪表板的设计来介绍变换分析的过程。假设仪表板的功能如下:换分析的过程。假设仪表板的功能如下:(1)通过模数()通过模数(AD)转换实现传感器和
37、)转换实现传感器和微处理机接口;微处理机接口;(2)在发光二极管()在发光二极管(LCD)面板上显示数据;)面板上显示数据;(3)指示每小时英里数()指示每小时英里数(mph),行驶的里程,),行驶的里程,每加仑油行驶的英里数(每加仑油行驶的英里数(mpg)等等;)等等;(4)指示加速或减速;)指示加速或减速;(5)超速警告:如果车速超过)超速警告:如果车速超过55英里小时,英里小时,则发出超速警告铃声。则发出超速警告铃声。在软件需求分析阶段,应该对上述每项性能和在软件需求分析阶段,应该对上述每项性能和其它要求进行全面的分析,并建立起相应的文档资其它要求进行全面的分析,并建立起相应的文档资料,
38、得出数据流图。料,得出数据流图。具体的设计步骤如下:具体的设计步骤如下:1、复查基本、复查基本系统模型系统模型2、复查并精化、复查并精化数据流图数据流图SPSmph超速值计算里程产生加速/减速显示读入旋转信号收集并求平均旋转信号信号数/秒(SPS)确定加速/减速箭头指示下箭头水平线上箭头转换成转/分(rpm)计算mph和超速值计算燃料消耗产生mpg显示读入并核实计算gph燃料流量传感器信号燃料流量gphmphmpgmpg显示产生里程显示英里显示发出警告铃声警告铃声产生mph显示mph显示rpmSPSrpm3、确定数据流图的类型、确定数据流图的类型这一步的任务是确定数据流图是变换型数据流图还这一
39、步的任务是确定数据流图是变换型数据流图还是事务型数据流图。是事务型数据流图。从上图中可以看出,数据沿着两条输入通路(旋转从上图中可以看出,数据沿着两条输入通路(旋转信号和燃料流量传感器信号)进入系统,然后沿着五条信号和燃料流量传感器信号)进入系统,然后沿着五条通路(通路(4个显示,一个警告铃声)离开,没有明显的事务个显示,一个警告铃声)离开,没有明显的事务中心(虽然变换中心(虽然变换“计算计算mph与超速值与超速值”可以看作是一个可以看作是一个事务中心)。因此,可以认为这个数据流图的类型是变事务中心)。因此,可以认为这个数据流图的类型是变换型数据流图。换型数据流图。4、确定输入流和输出流的边界
40、,从而孤立出变换中心、确定输入流和输出流的边界,从而孤立出变换中心SPSrpmmpg 显示gphmpgmph(SPS)mph超速值计算里程读入旋转信号收集并求平均旋转信号信号数/秒确定加速/减速箭头指示产生加速/减速显示下箭头水平线上箭头转换成转/分(rpm)计算mph 和超速值计算燃料消耗产生mpg显示读入并核实计算gph燃料流量传感器信号燃料流量产生里程显示英里显示发出警告铃声警告铃声产生mph显示mph 显示SPSrpm5、进行、进行“第一级分解第一级分解”CmCtCaCe第一级分解的方法第一级分解的结果数字仪表板控制数据转换控制接收传感器信号驱动仪表板输入控制变换控制输出控制6、进行、进行“第二级分解第二级分解”第二级分解的方法第二级分解的结果:第二级分解的结果:接收传感器信号转换成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合理利用网络说课稿分钟
- 碧桂园物业管家述职报告
- 教育器材租赁合同模板
- 胸腰椎骨折的诊断与治疗
- 温室大棚灌溉系统安装协议
- 新能源项目密封条模板
- 外卖公司墙布施工合同协议
- 城市住宅楼隔音改造合同
- 科研机构办公设备招投标书
- 城市有轨电车塔吊租赁合同
- GB/T 6451-2023油浸式电力变压器技术参数和要求
- 六年级英语学困生帮扶记录
- LED屏施工方案(技术方案)
- 统计学专业大学生职业生涯规划书
- 边坡防护作用与防护类型全解课件
- 项目收费站机电工程(三大系统)设备基本培训资料
- 非饱和土力学03-吸力与SWCC课件
- 难治性高血压-课件
- 混凝土搅拌站租赁合同范本(4篇)
- 成人无脉性心跳呼吸骤停抢救流程演示文稿
- 烟花爆竹经营单位主要负责人安全培训
评论
0/150
提交评论