大连理工软件学院软件工程课件(5)_第1页
大连理工软件学院软件工程课件(5)_第2页
大连理工软件学院软件工程课件(5)_第3页
大连理工软件学院软件工程课件(5)_第4页
大连理工软件学院软件工程课件(5)_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、大连理工大学软件学院软件工程2022-3-4大连理工大学软件学院2第第5章章 总体设计总体设计 传统的软件工程方法学采用传统的软件工程方法学采用结构化设计结构化设计(Structured Design, SD)技术完成软件设计工作,设计工作通常划分为技术完成软件设计工作,设计工作通常划分为概要设概要设计和详细设计计和详细设计两阶段。两阶段。 总体设计基本目的:概括地说,系统应该如何实现。总体设计基本目的:概括地说,系统应该如何实现。 划分系统的物理元素划分系统的物理元素程序、文件、数据库、人工过程、文档。程序、文件、数据库、人工过程、文档。 设计软件的结构设计软件的结构每个程序由哪些模块组成,

2、这些模块相互间每个程序由哪些模块组成,这些模块相互间的关系的关系2022-3-4大连理工大学软件学院3第第5章章 总体设计总体设计 步骤步骤 选择最佳方案选择最佳方案 设计软件结构设计软件结构 通过改进得到更合理的结构通过改进得到更合理的结构 数据库设计数据库设计 确定测试要求并且制定测试计划确定测试要求并且制定测试计划2022-3-4大连理工大学软件学院4结构化设计与结构化分析关系结构化设计与结构化分析关系 软件设计必须依据对软件的需求来进行,软件设计必须依据对软件的需求来进行,结构化分析的结果为结构化设计提供了结构化分析的结果为结构化设计提供了最基本的输入信息。最基本的输入信息。2022-

3、3-4大连理工大学软件学院5 分析模型的每个元素都提供了创建设计模型时所分析模型的每个元素都提供了创建设计模型时所需要的信息。下图描绘了软件设计过程中的信息需要的信息。下图描绘了软件设计过程中的信息流。流。 由数据模型、功能模型和行为模型清楚地表示的软件由数据模型、功能模型和行为模型清楚地表示的软件需求被传送给软件设计者,他们使用适当的设计方法需求被传送给软件设计者,他们使用适当的设计方法完成完成数据设计、体系结构设计、接口设计和过程设计数据设计、体系结构设计、接口设计和过程设计。结构化设计与结构化分析关系结构化设计与结构化分析关系2022-3-4大连理工大学软件学院6把分析模型转变成软件设计

4、2022-3-4大连理工大学软件学院7 在软件设计期间所做出的决策,将最终决定软件在软件设计期间所做出的决策,将最终决定软件开发能开发能否成功否成功,更重要的是,这些设计决策将决定软件,更重要的是,这些设计决策将决定软件维护的维护的难易程度难易程度。 设计是软件开发过程中决定产品质量的关键阶段:设计是软件开发过程中决定产品质量的关键阶段:提供了可以进行质量评估的提供了可以进行质量评估的软件表示软件表示把用户需求准确转变为把用户需求准确转变为最终产品最终产品是后续所有软件是后续所有软件开发与维护步骤开发与维护步骤的基础的基础设计的重要性设计的重要性2022-3-4大连理工大学软件学院8设计的重要

5、性设计的重要性2022-3-4大连理工大学软件学院9 5.1 设计过程设计过程 5.2 设计原理设计原理 5.3 启发规则启发规则 5.4 表示软件结构的图形工具表示软件结构的图形工具 5.5 面向数据流的设计方法面向数据流的设计方法 第第5章章 结构化设计结构化设计2022-3-4大连理工大学软件学院105.1 设计过程设计过程 总体设计的两个阶段总体设计的两个阶段 系统设计阶段,确定系统的具体实现方案系统设计阶段,确定系统的具体实现方案 结构设计阶段,确定软件结构结构设计阶段,确定软件结构 1、设想供选择的方案、设想供选择的方案 2、选取合理的方案、选取合理的方案 系统流程图系统流程图 组

6、成系统的物理元素清单组成系统的物理元素清单 成本成本/效益分析效益分析 实现这个系统的进度计划实现这个系统的进度计划2022-3-4大连理工大学软件学院115.1 设计过程设计过程 3、推荐最佳方案、推荐最佳方案 对比各种合理方案,推荐一个最佳方案对比各种合理方案,推荐一个最佳方案 制定详细的实现计划制定详细的实现计划 4、功能分解、功能分解 设计所有程序和文件(或数据库)设计所有程序和文件(或数据库) 结构设计结构设计程序由哪些模块组成、模块间的程序由哪些模块组成、模块间的关系关系 过程设计过程设计确定每个模块的处理过程确定每个模块的处理过程2022-3-4大连理工大学软件学院125.1 设

7、计过程设计过程 从实现角度把复杂功能进一步分解从实现角度把复杂功能进一步分解 将数据流图细化将数据流图细化 使用使用IPO图描述每个算法图描述每个算法 5、设计软件结构、设计软件结构 把模块组织成良好的层次把模块组织成良好的层次 6、设计数据库、设计数据库 7、制定测试计划、制定测试计划2022-3-4大连理工大学软件学院135.1 设计过程设计过程8、书写文档、书写文档(1)系统说明)系统说明系统构成方案系统构成方案物理元素清单物理元素清单成本成本/效益分析效益分析数据流图数据流图算法算法接口关系接口关系9、审查和复审、审查和复审(2)用户手册)用户手册(3)测试计划)测试计划(4)详细的实

8、现计划)详细的实现计划(5)数据库设计结果)数据库设计结果2022-3-4大连理工大学软件学院145.2 设计原理设计原理 5.2.1 模块化模块化 模块模块是由边界元素限定的相邻的程序元素是由边界元素限定的相邻的程序元素(例如,数据说明,例如,数据说明,可执行的语句可执行的语句)的序列,而且有一个总体标识符来代表它。的序列,而且有一个总体标识符来代表它。 像像Pascal或或Ada这样的块结构语言中的这样的块结构语言中的Beginend对,或者对,或者C, C+和和Java语言中的语言中的对,都是边界元素的例子。对,都是边界元素的例子。 过程、函数、子程序和宏等,都可作为模块。过程、函数、子

9、程序和宏等,都可作为模块。 面向对象范型中的对象是模块,对象内的方法也是模块。面向对象范型中的对象是模块,对象内的方法也是模块。模块是构成程序的基本构件。模块是构成程序的基本构件。2022-3-4大连理工大学软件学院155.2.1 模块化模块化 模块化模块化就是把就是把程序程序划分划分成独立命名且可独立访成独立命名且可独立访问的模块,每个模块完问的模块,每个模块完成一个子功能,把这些成一个子功能,把这些模块集成起来构成一个模块集成起来构成一个整体,可以完成指定的整体,可以完成指定的功能满足用户的需求。功能满足用户的需求。2022-3-4大连理工大学软件学院16模块化和软件成本模块化模块化各个击

10、各个击破,复杂问题简单破,复杂问题简单化。化。接口成本:不能无接口成本:不能无限制的分割问题。限制的分割问题。适当模块数:总成适当模块数:总成本最低。本最低。如何如何确定:确定:适当模块数?适当模块数?模块大小?模块大小?5.2.1 5.2.1 模块化模块化2022-3-4大连理工大学软件学院175.2.1 模块化模块化 Meyer提出了五条标准,可以用这五条标准来评提出了五条标准,可以用这五条标准来评价一种价一种设计方法设计方法定义有效的模块系统的能力。下定义有效的模块系统的能力。下面列出这五条标准。面列出这五条标准。1.模块可分解性模块可分解性如果一种设计方法提供了把问题分解为子问题的系如

11、果一种设计方法提供了把问题分解为子问题的系统化机制,它就能降低整个问题的复杂性,从而可统化机制,它就能降低整个问题的复杂性,从而可以实现一种有效的模块化解决方案。以实现一种有效的模块化解决方案。2022-3-4大连理工大学软件学院182. 模块可组装性模块可组装性如果一种设计方法能把现有的如果一种设计方法能把现有的(可重用的可重用的)设计构件设计构件组装成新系统,它就能提供一种并非一切都从头组装成新系统,它就能提供一种并非一切都从头开始做的模块化解决方案。开始做的模块化解决方案。3. 模块可理解性模块可理解性如果可以把一个模块作为一种独立单元如果可以把一个模块作为一种独立单元(无需参考无需参考

12、其他模块其他模块)来理解,那么,这样的模块是易于构造来理解,那么,这样的模块是易于构造和易于修改的。和易于修改的。5.2.1 模块化模块化2022-3-4大连理工大学软件学院194. 模块连续性模块连续性如果对如果对系统需求的微小修改系统需求的微小修改只导致对个别模块,只导致对个别模块,而不是对整个系统的修改,则修改所引起的副作而不是对整个系统的修改,则修改所引起的副作用将最小。用将最小。5. 模块保护性模块保护性如果在一个模块内如果在一个模块内出现异常情况出现异常情况时,它的影响局时,它的影响局限在该模块内部,则由错误引起的副作用将最小。限在该模块内部,则由错误引起的副作用将最小。5.2.1

13、 模块化模块化2022-3-4大连理工大学软件学院20 采用模块化原理可以使软件采用模块化原理可以使软件结构清晰结构清晰 不仅容易不仅容易设计设计也容易也容易阅读和理解阅读和理解。 因为程序错误通常局限在有关的模块及它们之间的接口因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件中,所以模块化使软件容易测试和调试容易测试和调试,因而有助于提,因而有助于提高软件的高软件的可靠性可靠性。 因为变动往往只涉及少数几个模块,所以模块化能够提因为变动往往只涉及少数几个模块,所以模块化能够提高软件的高软件的可修改性可修改性。 模块化也有助于软件开发工程的模块化也有助于软件开发工程的组织管

14、理组织管理。5.2.1 模块化模块化2022-3-4大连理工大学软件学院21 人们在实践中认识到,在现实世界中一定事物、状态或过人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着程之间总存在着某些相似的方面某些相似的方面(共性共性)。把这些相似的方。把这些相似的方面集中和概括起来,暂时面集中和概括起来,暂时忽略忽略它们之间的它们之间的差异差异,这就是,这就是抽抽象象。 或者说抽象就是抽出事物的或者说抽象就是抽出事物的本质特性本质特性而暂时而暂时不考虑不考虑它们的它们的细节。细节。5.2.2 抽象抽象人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。2022-3-4大连理工

15、大学软件学院22 用层次的方式构造和分析复杂系统。用层次的方式构造和分析复杂系统。 复杂的动态系统:高级的抽象概念构造和理解复杂的动态系统:高级的抽象概念构造和理解较低的层较低的层次次 最低层次、具体元素。最低层次、具体元素。 软件工程过程:每一步都是对抽象层次的一次精化软件工程过程:每一步都是对抽象层次的一次精化 可行性研究:完整部件可行性研究:完整部件 需求分析:使用熟悉方式描述软件解法需求分析:使用熟悉方式描述软件解法 设计:越来越具体设计:越来越具体 实现:抽象的最低层。实现:抽象的最低层。5.2.2 抽象抽象2022-3-4大连理工大学软件学院23 逐步求精是人类解决复杂问题时采用的

16、基本技术,也是许多逐步求精是人类解决复杂问题时采用的基本技术,也是许多软件工程技术的基础。软件工程技术的基础。 逐步求精:逐步求精:“为了能集中精力解决主要问题而尽量推迟对问题细节的为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。考虑。” 求精实际上是求精实际上是细化过程细化过程。 从在从在高抽象级别高抽象级别定义的功能陈述定义的功能陈述(或信息描述或信息描述)开始。该陈述仅仅开始。该陈述仅仅概念概念性性地描述了功能或信息,但是并没有提供功能的内部工作情况或信息地描述了功能或信息,但是并没有提供功能的内部工作情况或信息的内部结构。的内部结构。 求精要求设计者求精要求设计者细化原始陈述细化

17、原始陈述,随着每个后续求精,随着每个后续求精(细化细化)步骤的完成步骤的完成而提供越来越多的而提供越来越多的细节细节。5.2.3 逐步求精逐步求精2022-3-4大连理工大学软件学院24 逐步求精的重要性在于,认知符合逐步求精的重要性在于,认知符合MillerMiller法则:一个人在任法则:一个人在任何时刻只能把注意力集中在何时刻只能把注意力集中在7+-27+-2个知识块上。个知识块上。5.2.3 5.2.3 逐步求精逐步求精2022-3-4大连理工大学软件学院25 逐步求精:逐步求精:帮助软件工程师把精力集中在与当前开发阶段最相关的帮助软件工程师把精力集中在与当前开发阶段最相关的方面方面目

18、前不需要考虑的细节留到以后考虑目前不需要考虑的细节留到以后考虑把一个时期内必须解决的问题按照优先级排序把一个时期内必须解决的问题按照优先级排序自顶向下的策略自顶向下的策略5.2.3 5.2.3 逐步求精逐步求精2022-3-4大连理工大学软件学院26 抽象与求精抽象与求精是一对互补的概念。是一对互补的概念。抽象使得设计者能够说明过程和数据,同时却忽略低层细节。抽象使得设计者能够说明过程和数据,同时却忽略低层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。关的细节,而实现逐步求精的方法。求精则帮

19、助设计者在设计过程中揭示出低层细节。求精则帮助设计者在设计过程中揭示出低层细节。这两个概念都有助于设计者在这两个概念都有助于设计者在设计演化过程中创造出完整的设计设计演化过程中创造出完整的设计模型。模型。5.2.3 逐步求精逐步求精2022-3-4大连理工大学软件学院27 应用模块化原理时,自然会产生的一个问题是:应用模块化原理时,自然会产生的一个问题是:“为了得为了得到最好的一组模块,应该怎样到最好的一组模块,应该怎样分解软件分解软件”。 信息隐藏原理指出:应该这样设计和确定模块,使得一个信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息模块内包含的信息(过程和数据过程和数据

20、)对于对于不需要这些信息不需要这些信息的模的模块来说,是块来说,是不能访问不能访问的。的。5.2.4 信息隐藏和局部化信息隐藏和局部化 2022-3-4大连理工大学软件学院28 隐藏模块的隐藏模块的实现细节实现细节 模块之间只交换那些为了完成软件功能而模块之间只交换那些为了完成软件功能而必须交换的信息必须交换的信息 对模块内部实现细节的对模块内部实现细节的访问限制访问限制 修改期间由于疏忽而引入的错误修改期间由于疏忽而引入的错误很少可能传播很少可能传播到其他模块到其他模块5.2.4 信息隐藏和局部化信息隐藏和局部化 2022-3-4大连理工大学软件学院295.2.5 模块独立模块独立 “模块独

21、立模块独立”概念是模块化、抽象、逐步求精和信概念是模块化、抽象、逐步求精和信息隐藏等概念的直接结果,也是完成有效的模块设息隐藏等概念的直接结果,也是完成有效的模块设计的计的基本标准基本标准。 希望设计这样的软件结构:希望设计这样的软件结构: 每个模块完成一定相对独立的子功能每个模块完成一定相对独立的子功能 与其他模块之间的关系简单与其他模块之间的关系简单2022-3-4大连理工大学软件学院305.2.5 模块独立模块独立 “模块独立化模块独立化”原因:原因:易于开发易于开发易于测试和维护易于测试和维护 模块的独立程度可以由两个定性标准来度量,这两个标准模块的独立程度可以由两个定性标准来度量,这

22、两个标准分别称为分别称为内聚和耦合内聚和耦合。耦合耦合衡量不同模块彼此间互相依赖衡量不同模块彼此间互相依赖( (连接连接) )紧密程度;紧密程度;内聚内聚衡量一个模块内部各个元素彼此结合的紧密程度。衡量一个模块内部各个元素彼此结合的紧密程度。2022-3-4大连理工大学软件学院31耦合是对一个软件结构内不同模块之间耦合是对一个软件结构内不同模块之间互连程度的度量互连程度的度量。耦合强弱。耦合强弱取决于模块间取决于模块间接口的复杂程度接口的复杂程度,进入或访问一个模块的点,以及通,进入或访问一个模块的点,以及通过接口的数据。过接口的数据。在软件设计中应该追求尽可能在软件设计中应该追求尽可能松散耦

23、合松散耦合的系统。在这样的系统中可的系统。在这样的系统中可以研究、测试或维护任何一个模块,而不需要对系统的以研究、测试或维护任何一个模块,而不需要对系统的其他模块有其他模块有很多了解很多了解。此外,由于模块间联系简单,发生在一处的错误此外,由于模块间联系简单,发生在一处的错误传播到整个系统传播到整个系统的的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。可测试性、可靠性和可维护性。耦合耦合2022-3-4大连理工大学软件学院32 常见的耦合程度:常见的耦合程度:无耦合:任何一个模块都独立工作,现

24、实系统中不存在无耦合:任何一个模块都独立工作,现实系统中不存在数据耦合:模块间交换的信息只有数据数据耦合:模块间交换的信息只有数据控制耦合:模块间传递控制信息控制耦合:模块间传递控制信息特征耦合:把整个数据结构作为参数传递,而被调用的特征耦合:把整个数据结构作为参数传递,而被调用的模块之需要使用其中一部分数据模块之需要使用其中一部分数据公共环境耦合:多个模块通过公共数据环境相互作用公共环境耦合:多个模块通过公共数据环境相互作用耦合耦合2022-3-4大连理工大学软件学院33内容耦合:内容耦合: 一个模块访问另一个模块的内部数据一个模块访问另一个模块的内部数据 一个模块不通过正常入口而转到另一个

25、模块的内部一个模块不通过正常入口而转到另一个模块的内部 两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭 一个模块有多个入口一个模块有多个入口耦合耦合2022-3-4大连理工大学软件学院34 总之,耦合是影响软件复杂程度的一个重要因素。总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:应该采取下述设计原则: 尽量使用数据耦合,少用控制耦合和特征耦合,尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。限制公共环境耦合的范围,完全不用内容耦合。耦合耦合2022-3-4大连理工大学软件学院35思考题思考题 确定模块之间的耦合类型。确定模块之间

26、的耦合类型。 模块模块P、T、U 更新同一个数更新同一个数 据库据库数据耦合控制耦合数据 or 特征P、T、U公共环境耦合2022-3-4大连理工大学软件学院36 内聚标志一个模块内各个元素内聚标志一个模块内各个元素彼此结合彼此结合的紧密程度,它的紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,是信息隐蔽和局部化概念的自然扩展。简单地说,理想理想内聚的模块只做一件事情内聚的模块只做一件事情。 设计时应该力求做到设计时应该力求做到高内聚高内聚,通常中等程度的内聚也是,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内可以采用的,而且效果和高内聚相差不多;但是,低内聚很

27、坏,不要使用。聚很坏,不要使用。内聚内聚2022-3-4大连理工大学软件学院37 内聚和耦合是密切相关的,模块内的内聚和耦合是密切相关的,模块内的高内聚高内聚往往意味着模块往往意味着模块间的间的松耦合松耦合。 内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要内聚更重要,应该把更多注意力集中到提高模块,应该把更多注意力集中到提高模块的内聚程度的内聚程度上。上。 低内聚:低内聚:偶然内聚:一个模块任务间关系松散或者没有关系偶然内聚:一个模块任务间关系松散或者没有关系逻辑内聚:一个模块完成的任务在逻辑上属于相同或者相似的一类逻辑内聚:

28、一个模块完成的任务在逻辑上属于相同或者相似的一类时间内聚:模块包含的任务必须在同一段时间内执行时间内聚:模块包含的任务必须在同一段时间内执行内聚内聚2022-3-4大连理工大学软件学院38 中内聚中内聚过程内聚:一个模块内的处理元素相关,并且以特定的次序执行过程内聚:一个模块内的处理元素相关,并且以特定的次序执行通信内聚:模块中所有元素都使用同一个输入数据、产生同一个输通信内聚:模块中所有元素都使用同一个输入数据、产生同一个输出数据出数据 高内聚高内聚顺序内聚:一个模块内的处理元素和同一个功能密切相关,并且必顺序内聚:一个模块内的处理元素和同一个功能密切相关,并且必须顺序执行须顺序执行功能内聚

29、:模块内所有处理元素属于一个整体,完成一个单一的功功能内聚:模块内所有处理元素属于一个整体,完成一个单一的功能能内聚内聚2022-3-4大连理工大学软件学院39 事实上,没有必要精确确定内聚的级别。重要的是设计时事实上,没有必要精确确定内聚的级别。重要的是设计时力争做到力争做到高内聚高内聚,并且能够辨认出低内聚的模块,有能力,并且能够辨认出低内聚的模块,有能力通过修改设计提高通过修改设计提高模块的内聚程度模块的内聚程度,降低模块间的耦合程,降低模块间的耦合程度,从而获得度,从而获得较高的较高的模块独立性模块独立性。内聚内聚2022-3-4大连理工大学软件学院40思考题思考题 确定每个模块的内聚

30、类型。确定每个模块的内聚类型。功能内聚偶然内聚2022-3-4大连理工大学软件学院415.3 启发规则启发规则 软件工程师们在开发计算机软件的长期实践中积累软件工程师们在开发计算机软件的长期实践中积累了了丰富的经验丰富的经验,总结这些经验得出了一些启发规则。,总结这些经验得出了一些启发规则。 启发规则虽然不像前两节讲述的基本原理那样普遍启发规则虽然不像前两节讲述的基本原理那样普遍适用,但是在许多场合仍然能给软件工程师有益的适用,但是在许多场合仍然能给软件工程师有益的启示,往往能帮助他们找到改进软件设计提高软件启示,往往能帮助他们找到改进软件设计提高软件质量的途径,因质量的途径,因此此有助于实现

31、有效的模块化有助于实现有效的模块化。2022-3-4大连理工大学软件学院42 1 改进改进软件结构软件结构提高模块独立性提高模块独立性 2 模块模块规模规模应该适中应该适中 3 深度、宽度、扇出和扇入深度、宽度、扇出和扇入都应适当都应适当 4 模块的模块的作用域作用域应该在应该在控制域控制域之内之内 5 力争降低力争降低模块接口模块接口的复杂程度的复杂程度 6 设计设计单入口单出口单入口单出口的模块的模块 7 模块功能模块功能应该可以预测应该可以预测5.3 启发规则启发规则2022-3-4大连理工大学软件学院43 1 改进改进软件结构软件结构提高模块独立性提高模块独立性 软件初步结构软件初步结

32、构审查分析审查分析模块分解或合并模块分解或合并降低降低耦合提高内聚耦合提高内聚 2 模块模块规模规模应该适中应该适中 规模过大:理解不充分,进行分解规模过大:理解不充分,进行分解 规模过小:系统接口复杂规模过小:系统接口复杂5.3 启发规则启发规则2022-3-4大连理工大学软件学院44 3 深度、宽度、扇出和扇入深度、宽度、扇出和扇入都应适当都应适当 深度:软件结构中控制的层数深度:软件结构中控制的层数 宽度:软件结构中同一个层次上的模块总数最宽度:软件结构中同一个层次上的模块总数最大值大值 扇出:一个模块直接控制(调用)的模块数目扇出:一个模块直接控制(调用)的模块数目 扇入:有多少个上级

33、模块直接调用它扇入:有多少个上级模块直接调用它5.3 启发规则启发规则2022-3-4大连理工大学软件学院455.3 启发规则启发规则2022-3-4大连理工大学软件学院46 4 模块的模块的作用域作用域应该在应该在控制域控制域之内之内5.3 启发规则启发规则 作用域:受该模块内一作用域:受该模块内一个判定影响的所有模块个判定影响的所有模块的集合。的集合。 控制域:这个模块本身控制域:这个模块本身以及所有直接或者间接以及所有直接或者间接从属于它的模块的集合。从属于它的模块的集合。2022-3-4大连理工大学软件学院47 5 力争降低力争降低模块接口模块接口的复杂程度的复杂程度 仔细设计模块接口

34、仔细设计模块接口信息传递简单、和模块的功能一信息传递简单、和模块的功能一致致 例:求一元二次方程的根模块例:求一元二次方程的根模块QUAD_ROOT(TBL,X)QUAD_ROOT(TBL,X),其中其中TBLTBL为系数数组,为系数数组,X X为根数组。为根数组。 QUAD_ROOT(AQUAD_ROOT(A,B B,C C,ROOT1ROOT1,ROOT2)ROOT2),其中,其中A A、B B、C C为系数,为系数, ROOT1ROOT1和和ROOT2ROOT2为根。为根。5.3 启发规则启发规则2022-3-4大连理工大学软件学院48 6 设计设计单入口单出口单入口单出口的模块的模块

35、避免内容耦合避免内容耦合 7 模块功能模块功能应该可以预测应该可以预测 模块可预测:相同的输入产生相同的输出模块可预测:相同的输入产生相同的输出5.3 启发规则启发规则2022-3-4大连理工大学软件学院495.4 表示软件结构的图形工具表示软件结构的图形工具 5.4.1 层次图和层次图和HIPO图图 通常使用通常使用层次图层次图描绘软件的层次结构。描绘软件的层次结构。 在层次图中一个矩形框代表一个模块在层次图中一个矩形框代表一个模块 框间的连线表示调用关系框间的连线表示调用关系(位于位于上方的矩形框上方的矩形框所代表所代表的模块调用的模块调用位于下方的矩形框位于下方的矩形框所代表的模块所代表

36、的模块)。2022-3-4大连理工大学软件学院50图5.3 正文加工系统的层次图5.4.1 层次图和HIPO图2022-3-4大连理工大学软件学院51 HIPO图图是美国是美国IBM公司发明的公司发明的“层次图加输入层次图加输入/处理处理/输出图输出图”的英文缩写。的英文缩写。 为了使为了使HIPO图具有图具有可追踪性可追踪性,在,在H图图(即层次图即层次图)里除了顶层的方框之外,每个方框都加了里除了顶层的方框之外,每个方框都加了编号编号。 编号方法与数据流图的编号方法相同。编号方法与数据流图的编号方法相同。5.4.1 层次图和HIPO图2022-3-4大连理工大学软件学院52图5.4 带编号

37、的层次图(H图)5.4.1 层次图和HIPO图2022-3-4大连理工大学软件学院53 H图中每个方框代表模块的处理过程,都可以有一张图中每个方框代表模块的处理过程,都可以有一张IPO图图与之对应。与之对应。 IPO图:图:左边框中列出输入项左边框中列出输入项中间框为主要的处理中间框为主要的处理右边框为输出项右边框为输出项箭头指出数据通信的情况箭头指出数据通信的情况5.4.1 层次图和HIPO图2022-3-4大连理工大学软件学院54IPO图5.4.1 层次图和HIPO图2022-3-4大连理工大学软件学院55 IPO表(改进的表(改进的IPO图)图) 附加信息:附加信息: 系统名称系统名称

38、作者作者 完成日期完成日期 模块名称模块名称 模块编号模块编号 被调用模块清单被调用模块清单 调用模块清单调用模块清单 注释注释 局部数据元素局部数据元素 改进的IPO图(IPO表)的形式5.4.1 层次图和HIPO图2022-3-4大连理工大学软件学院56 结构图结构图是进行软件结构设计的另一个有力工具。是进行软件结构设计的另一个有力工具。 结构图也是描绘软件结构的图形工具结构图也是描绘软件结构的图形工具 图中一个方框代表一个模块,框内注明模块的名字或主要功能图中一个方框代表一个模块,框内注明模块的名字或主要功能 方框之间的箭头方框之间的箭头(或直线或直线)表示模块的调用关系。表示模块的调用

39、关系。 在结构图中通常还用带注释的箭头表示模块调用过程中在结构图中通常还用带注释的箭头表示模块调用过程中来来回传递的信息。回传递的信息。 可以利用注释箭头尾部的形状来区分传递的信息是数据还是控制信可以利用注释箭头尾部的形状来区分传递的信息是数据还是控制信息息 尾部是尾部是空心圆空心圆表示传递的是表示传递的是数据数据 实心圆实心圆表示传递的是表示传递的是控制信息控制信息5.4.2 结构图2022-3-4大连理工大学软件学院57图5.5 结构图的例子产生最佳解的一般结构2022-3-4大连理工大学软件学院58结构图附加符号图5.6 判定为真时调用A,为假时调用B2022-3-4大连理工大学软件学院

40、59结构图附加符号图5.7 模块M循环调用模块A,B,C2022-3-4大连理工大学软件学院60 层次图和结构图特点:层次图和结构图特点:并不严格表示模块的调用次序并不严格表示模块的调用次序并不指明什么时候调用下层模块并不指明什么时候调用下层模块没有指明先执行调用还是先执行模块中的语句没有指明先执行调用还是先执行模块中的语句没有表示模块内其它成分没有表示模块内其它成分 通常使用层次图描绘软件结构通常使用层次图描绘软件结构 可以用层次图导出结构图的过程,检查设计的正确性和评可以用层次图导出结构图的过程,检查设计的正确性和评价模块的独立性价模块的独立性5.4.2 结构图2022-3-4大连理工大学

41、软件学院615.5 面向数据流的设计方法面向数据流的设计方法 面向数据流的设计方法面向数据流的设计方法的目标是给出设计的目标是给出设计软件结构软件结构的一个系的一个系统化的途径。统化的途径。 在需求分析阶段,信息流是一个关键考虑因素,通常用数据在需求分析阶段,信息流是一个关键考虑因素,通常用数据流图描绘信息在系统中加工和流动情况。流图描绘信息在系统中加工和流动情况。面向数据流的设计方法定义了一些不同的面向数据流的设计方法定义了一些不同的“映射映射”,利用这些映射可,利用这些映射可以把以把数据流图变换成软件结构数据流图变换成软件结构。因为任何软件系统都可以用因为任何软件系统都可以用数据流图数据流

42、图表示,所以表示,所以面向数据流的设计方面向数据流的设计方法法理论上可以设计任何软件的结构。理论上可以设计任何软件的结构。通常的结构化设计方法,也就是基于数通常的结构化设计方法,也就是基于数据流的设计方法。据流的设计方法。2022-3-4大连理工大学软件学院62面向数据流的设计方法把信息流面向数据流的设计方法把信息流映射映射成软件结构,信息流成软件结构,信息流的类型决定了映射的方法。信息流有下述两种类型。的类型决定了映射的方法。信息流有下述两种类型。 1.变换流变换流 2.事务流事务流5.5.1 概念概念2022-3-4大连理工大学软件学院631.变换流变换流2022-3-4大连理工大学软件学

43、院642.事务流事务流2022-3-4大连理工大学软件学院65图图5.10 5.10 面向数据流方法的设计过程面向数据流方法的设计过程2022-3-4大连理工大学软件学院66 变换分析变换分析是一系列设计步骤的总称,经过这些是一系列设计步骤的总称,经过这些步骤把具有步骤把具有变换流特点变换流特点的数据流图按预先确定的数据流图按预先确定的模式的模式映射成软件结构映射成软件结构。 下面通过一个例子说明变换分析的方法。下面通过一个例子说明变换分析的方法。 汽车数字仪表板的设计。汽车数字仪表板的设计。5.5.2 变换分析变换分析2022-3-4大连理工大学软件学院67设计步骤设计步骤1.复查基本系统模

44、型。复查基本系统模型。2.复查并精化数据流图。复查并精化数据流图。3.确定数据流图具有变换特性还是事务特性。确定数据流图具有变换特性还是事务特性。4.确定输入流和输出流的边界,从而孤立出变换中心。确定输入流和输出流的边界,从而孤立出变换中心。5.完成完成“第一级分解第一级分解”。6.完成完成“第二级分解第二级分解”。7.使用设计度量和启发规则对第一次分割得到的软件结构进一使用设计度量和启发规则对第一次分割得到的软件结构进一步精化。步精化。5.5.2 变换分析变换分析2022-3-4大连理工大学软件学院68图图5.11 5.11 数字仪表板系统的数据流图数字仪表板系统的数据流图1、复查基本系统模

45、型。、复查基本系统模型。2、复查并精化数据流图。、复查并精化数据流图。3、确定数据流图具有变换特性还、确定数据流图具有变换特性还是事务特性。是事务特性。2022-3-4大连理工大学软件学院69图图5.12 5.12 具有边界的数据流图具有边界的数据流图4、确定输入流和输出流的、确定输入流和输出流的边界,从而孤立出变换中边界,从而孤立出变换中心。心。2022-3-4大连理工大学软件学院70图5.13 第一级分解的方法5、完成、完成“第一级分解第一级分解”。2022-3-4大连理工大学软件学院71图5.14 数字仪表板系统的第一级分解2022-3-4大连理工大学软件学院72图5.15 第二级分解的

46、方法6、完成、完成“第二级分解第二级分解”。2022-3-4大连理工大学软件学院73图图5.16 5.16 未经精化的输入结构未经精化的输入结构2022-3-4大连理工大学软件学院74图图5.17 5.17 未经精化的变换结构未经精化的变换结构2022-3-4大连理工大学软件学院75图图5.18 5.18 未经精化的输出结构未经精化的输出结构2022-3-4大连理工大学软件学院76图图5.19 5.19 精化后的数字仪表板系统的软件结构精化后的数字仪表板系统的软件结构7、使用设计度量和启发规则对第、使用设计度量和启发规则对第一次分割得到的软件结构进一一次分割得到的软件结构进一步精化。步精化。2

47、022-3-4大连理工大学软件学院77 上述七个设计步骤的目的是,开发出软件的整体表示。上述七个设计步骤的目的是,开发出软件的整体表示。也就是说,一旦确定了软件结构就可以把它作为一个整也就是说,一旦确定了软件结构就可以把它作为一个整体来复查,从而能够评价和精化软件结构。体来复查,从而能够评价和精化软件结构。 在这个时期进行修改只需要很在这个时期进行修改只需要很少的附加工作,但是却能少的附加工作,但是却能够对软件的质量特别是软件的可维护性产生深远的影响。够对软件的质量特别是软件的可维护性产生深远的影响。5.5.2 变换分析变换分析2022-3-4大连理工大学软件学院78虽然在任何情况下都可以使用变换分析方法设计软件结构,但虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有是在数据流具有明显的事务特点明显的事务

温馨提示

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

评论

0/150

提交评论