软件工程-05总体设计.ppt

上传人:hwp****526 文档编号:84401352 上传时间:2023-04-05 格式:PPT 页数:71 大小:1.44MB
返回 下载 相关 举报
软件工程-05总体设计.ppt_第1页
第1页 / 共71页
软件工程-05总体设计.ppt_第2页
第2页 / 共71页
点击查看更多>>
资源描述

《软件工程-05总体设计.ppt》由会员分享,可在线阅读,更多相关《软件工程-05总体设计.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件工程软件工程Software EngineeringCH5 总体设计总体设计济南大学信息科学与工程学院2软件生命周期软件生命周期软件定义软件定义软件开发软件开发软件使用软件使用与维护与维护3每个步骤都按某种方式进行信息变换,最后得到有效的软件每个步骤都按某种方式进行信息变换,最后得到有效的软件软件开发的三个关联步骤软件开发的三个关联步骤4分析模型和设计模型的转换分析模型和设计模型的转换5软件设计软件设计软件设计软件设计是后续开发步骤及软件维护工作基础如果没有设计,是后续开发步骤及软件维护工作基础如果没有设计,只能建立一个不稳定的系统结构只能建立一个不稳定的系统结构6从工程管理的角度来看,软

2、件设计分两步完成从工程管理的角度来看,软件设计分两步完成总体设计总体设计总体设计总体设计(概要设计概要设计概要设计概要设计),将软件需求转化为数据结构和软件的系统结,将软件需求转化为数据结构和软件的系统结构。构。详细设计,即过程设计详细设计,即过程设计详细设计,即过程设计详细设计,即过程设计。通过对结构表示进行细化,得到软件详。通过对结构表示进行细化,得到软件详细的数据结构和算法。细的数据结构和算法。75.1 5.1 总体设计过程总体设计过程5.2 5.2 软件设计原理软件设计原理5.3 5.3 软件设计中的启发规则软件设计中的启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工

3、具5.5 5.5 面向数据流的设计方法面向数据流的设计方法提纲提纲85.1 5.1 总体设计过程总体设计过程5.2 5.2 软件设计原理软件设计原理5.3 5.3 软件设计中的启发规则软件设计中的启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法9总体设计总体设计(概要设计或初步设计概要设计或初步设计)划分出组成系统的物理元素划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等程序、文件、数据库、人工过程和文档等并不涉及物理元素内部设计并不涉及物理元素内部设计总体设计阶段的一项任务是设计软件结构总体设计阶段的一项

4、任务是设计软件结构确定系统中每个程序是由哪些模块组成的确定系统中每个程序是由哪些模块组成的以及这些模块相互间的关系以及这些模块相互间的关系总体设计过程总体设计过程总体设计过程一般分为两个阶段总体设计过程一般分为两个阶段系统设计阶段:确定系统的具体实现方案系统设计阶段:确定系统的具体实现方案结构设计阶段:确定软件的结构结构设计阶段:确定软件的结构总体设计过程总体设计过程10总体设计的步骤总体设计的步骤1.1.设想供选择的方案设想供选择的方案提出各种可能的实现方案提出各种可能的实现方案以需求分析阶段的数据流图为出发点,画自动化边界,形成不同以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的

5、实现系统方案的实现系统方案设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行不通的分组方法不通的分组方法余下的分组方法代表可能的实现策略,并且可以启示供选择的物余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统理系统11总体设计的步骤总体设计的步骤 cont.cont.2.2.选取合理方案选取合理方案从前一步得到的一系列供选择的方案中选取若干个合理的方案从前一步得到的一系列供选择的方案中选取若干个合理的方案通常至少选取低成本、中等成本和高成本的三种方案通常至少选取低成本、中等成本和高成本的三种方案在此基础上分析员对每种方

6、案准备四份文档:在此基础上分析员对每种方案准备四份文档:系统流程图系统流程图组成系统的物理元素清单组成系统的物理元素清单成本成本/效益分析效益分析实现这个系统的进度计划实现这个系统的进度计划12总体设计的步骤总体设计的步骤 cont.cont.3.3.推荐最佳方案推荐最佳方案综合分析对比各种合理方案的利弊,从中选出一种自己认为是最综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的理想的方案推荐方案推荐方案推荐方案推荐用户和技术专家应认真用户和技术专家应认真审查审查审查审查所推荐的最佳系统所推荐的最佳系统如果该系统确实符合用户的需要,并且是在现有条件下完全能够如果该系统确实符合用户的

7、需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人实现的,则应该提请使用部门负责人进一步审批进一步审批进一步审批进一步审批在使用部门的负责人也接受了分析员所推荐的方案之后,将进入在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计总体设计过程的下一个重要阶段结构设计13总体设计的步骤总体设计的步骤 cont.cont.4.4.功能分解功能分解目标系统的实现一般要分两步进行:目标系统的实现一般要分两步进行:首先,进行首先,进行结构设计结构设计结构设计结构设计,确定系统是由哪些模块组成的,以及这些,确定系统是由哪些模块组成的,以及这些模块之间的

8、关系模块之间的关系确定软件体系结构、数据结构确定软件体系结构、数据结构其次,进行其次,进行过程设计过程设计过程设计过程设计,确定每个模块的处理过程,确定每个模块的处理过程确定详细的数据结构、算法确定详细的数据结构、算法结构设计结构设计 -总体设计阶段任务;过程设计总体设计阶段任务;过程设计-详细设计阶段任务详细设计阶段任务为确定软件结构:为确定软件结构:首先需要从实现角度把复杂的功能进一步分解首先需要从实现角度把复杂的功能进一步分解用算法描述仔细分析数据流图中的每个处理,若一个处理的功能用算法描述仔细分析数据流图中的每个处理,若一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的

9、功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能应该使每个功能对大多数程序员而言都是明显易懂的应该使每个功能对大多数程序员而言都是明显易懂的14总体设计的步骤总体设计的步骤 cont.cont.5.5.设计软件结构设计软件结构模块确定以后,每个模块的功能也就随之确定模块确定以后,每个模块的功能也就随之确定把这些模块自顶向下组成一种良好的层次调用关系,就完成了软把这些模块自顶向下组成一种良好的层次调用关系,就完成了软件结构设计的任务件结构设计的任务如果数据流图已经细化到适当的层次,那么我们便可以从数据流如果数据流图已经细化到适当的层次,那么我们便可以从数据流图映射成软件结构图图映射成

10、软件结构图15总体设计的步骤总体设计的步骤 cont.cont.6.6.设计数据库设计数据库数据库的设计一般包括如下几步:数据库的设计一般包括如下几步:模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、层次或网状等层次或网状等子模式设计:为系统中各用户设计出各自的数据视图子模式设计:为系统中各用户设计出各自的数据视图存储模式设计:确定数据库的空间需求、存储格式、索引组成等存储模式设计:确定数据库的空间需求、存储格式、索引组成等7.7.制定测试计划制定测试计划在软件开发的早期阶段考虑测试问题在软件开发的早期阶段考虑测试问题使软件设计人

11、员在设计时注意软件的可测试性使软件设计人员在设计时注意软件的可测试性16总体设计的步骤总体设计的步骤 cont.cont.8.8.书写文档书写文档(1)(1)系统说明系统说明系统流程图系统流程图:描绘系统构成方案、组成系统的物理元素描绘系统构成方案、组成系统的物理元素成本成本/效益分析效益分析对最佳方案的概括描述、精化的数据流图对最佳方案的概括描述、精化的数据流图用层次图或结构图描绘的软件结构用层次图或结构图描绘的软件结构用用IPOIPO图或其它工具简要描述各个模块的算法图或其它工具简要描述各个模块的算法模块间接口关系、建立需求、功能和模块三者间的交叉参照关系模块间接口关系、建立需求、功能和模

12、块三者间的交叉参照关系17总体设计的步骤总体设计的步骤 cont.cont.8.8.书写文档书写文档 cont.cont.(2)(2)用户手册用户手册(3)(3)测试计划测试计划测试策略、测试方案、预期的测试结果、测试进度计划等测试策略、测试方案、预期的测试结果、测试进度计划等(4)(4)详细的实现计划详细的实现计划(5)(5)数据库设计结果数据库设计结果数据库系统的选择、模式、子模式、存储模式的设计结果等数据库系统的选择、模式、子模式、存储模式的设计结果等9.9.复审复审对总体设计的结果进行严格的技术审查对总体设计的结果进行严格的技术审查在技术审查通过之后再由使用部门的负责人从管理角度进行复

13、审在技术审查通过之后再由使用部门的负责人从管理角度进行复审185.1 5.1 总体设计过程总体设计过程5.2 5.2 软件设计原理软件设计原理5.3 5.3 软件设计中的启发规则软件设计中的启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法191.1.抽象抽象抽象抽象抽象抽象:人们在实践中认识到,在现实世界中一定事物、状态或过:人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面程之间总存在着某些相似的方面(共性共性)。把这些相似的方面集中和。把这些相似的方面集中和概括起来,暂时忽略它们之间的差

14、异,这就是抽象。概括起来,暂时忽略它们之间的差异,这就是抽象。抽象就是:抽象就是:抽出本质,忽略细节,分层理解抽出本质,忽略细节,分层理解抽出本质,忽略细节,分层理解抽出本质,忽略细节,分层理解举例说明:软件工程各阶段的抽象举例说明:软件工程各阶段的抽象在可行性研究阶段,软件作为系统的一个完整部件;在可行性研究阶段,软件作为系统的一个完整部件;在需求分析阶段,软件解法是使用在问题环境内熟悉的方式描述;在需求分析阶段,软件解法是使用在问题环境内熟悉的方式描述;进入总体设计向详细设计过渡阶段,抽象的程度将随之减少;进入总体设计向详细设计过渡阶段,抽象的程度将随之减少;最后当源程序被写出后,抽象则达

15、到最低层最后当源程序被写出后,抽象则达到最低层;软件设计原理软件设计原理202.2.模块化模块化模块模块模块模块是由边界元素限定的相邻程序元素是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语例如,数据说明,可执行的语句句)的序列,而且有一个总体标识符代表它的序列,而且有一个总体标识符代表它例如:例如:PASCALPASCAL或或 AdaAda 这样的块结构语言中的这样的块结构语言中的BeginEndBeginEnd对对C C、C+C+和和JavaJava语言中的语言中的 .对对过程、函数、子程序和宏等过程、函数、子程序和宏等面向对象方法学中的对象面向对象方法学中的对象(见见CH9)C

16、H9)是模块,对象内的方法是模块,对象内的方法(或称为或称为服务服务)也是模块也是模块212.2.模块化模块化 cont.cont.模块化模块化模块化模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求的功能满足用户的需求模块化的数学依据模块化的数学依据C(xC(x)定义问题定义问题x x的复杂程度,的复杂程度,E(xE(x)确定解决问题确定解决问题x x需要的工作量需要的工作量(时时间间),对于两

17、个问题,对于两个问题P1P1和和P2P2有:有:如果如果C(P1)C(P2)C(P1)C(P2)显然显然 E(P1)E(P2)E(P1)E(P2)当当 C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)则则 E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2)E(P1+P2+E(P1+P2+PnPn)E(P1)+E(P2)+)E(P1)+E(P2)+E(PnE(Pn)以上揭示了把一个复杂问题分成许多容易解决的小问题,原来以上揭示了把一个复杂问题分成许多容易解决的小问题,原来问题将容易解决问题将容易解决222.2.模块化模块化 cont.cont

18、.模块化的数学依据模块化的数学依据 cont.cont.每个程序都相应地有一个最适当的模块数目每个程序都相应地有一个最适当的模块数目MM,使得系统的开发,使得系统的开发成本最小成本最小M成本成本/模块模块接口成本接口成本软件总成本软件总成本成本成本模块数模块数最小成本区最小成本区233.3.逐步求精逐步求精逐步求精逐步求精逐步求精逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑的考虑.其作用就在于它能帮助软件工程师把精力集中在与当前开发阶段其作用就在于它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上最相关的那些方面上忽

19、略那些对整体解决方案来说虽然是必要的,然而目前还不需要忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑考虑的细节,这些细节将留到以后再考虑MillerMiller法则:法则:一个人在任何时候都只能把注意力集中在一个人在任何时候都只能把注意力集中在(72)(72)个知识块上个知识块上MillerMiller法则是人类智力的基本局限,我们不可能战胜自己的自然本法则是人类智力的基本局限,我们不可能战胜自己的自然本性,只能接受这个事实,承认自身的局限性,并在这个前提下尽性,只能接受这个事实,承认自身的局限性,并在这个前提下尽我们的最大努力工作我们的最大努力工

20、作243.3.逐步求精逐步求精 cont.cont.抽象与求精是一对互补的概念抽象与求精是一对互补的概念抽象抽象抽象抽象使得设计者能够说明过程和数据,同时却忽略低层细节;可使得设计者能够说明过程和数据,同时却忽略低层细节;可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法而实现逐步求精的方法求精求精求精求精则帮助设计者在设计过程中逐步揭示出低层细节则帮助设计者在设计过程中逐步揭示出低层细节这两个概念都有助于设计者在设计演化过程中创造出完整的设计这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型模型25

21、4.4.信息隐蔽和局部化信息隐蔽和局部化信息隐蔽原理信息隐蔽原理应该这样设计和确定模块,使得一个模块内包含的信息(过程或应该这样设计和确定模块,使得一个模块内包含的信息(过程或数据)对于不需要这些信息的模块来说,是不能访问的数据)对于不需要这些信息的模块来说,是不能访问的局部化局部化是把一些关系密切的软件元素物理地放得彼此靠近。显然是把一些关系密切的软件元素物理地放得彼此靠近。显然,局部局部化有助于实现信息隐藏化有助于实现信息隐藏265.5.模块独立性模块独立性模块独立性的概念是模块化、抽象化、信息隐蔽概念的一个直接模块独立性的概念是模块化、抽象化、信息隐蔽概念的一个直接产物产物强调模块的独立

22、性,有两个重要原因:强调模块的独立性,有两个重要原因:模块化程度较高的软件容易编制模块化程度较高的软件容易编制独立的模块比较容易维护和测试独立的模块比较容易维护和测试模块独立是好设计的关键,而设计又是决定软件质量的关键环节模块独立是好设计的关键,而设计又是决定软件质量的关键环节模块的独立程度可以由两个定性标准度量:模块的独立程度可以由两个定性标准度量:耦合耦合(Coupling)(Coupling)内聚内聚(Cohesion)(Cohesion)27Great deal of dependenceIndependent 高耦合高耦合中等耦合中等耦合无耦合无耦合 5.1 5.1 耦合耦合耦合耦合

23、耦合耦合:是对一个软件结构内不同模块之间互连程度的度量是对一个软件结构内不同模块之间互连程度的度量耦合强弱取决于模块间接口复杂程度,进入或访问一个模块的点,耦合强弱取决于模块间接口复杂程度,进入或访问一个模块的点,以及通过接口的数据以及通过接口的数据模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性和可维护性耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用耦合表示一个软件结构内各个模块之间的互连程度,应尽

24、量选用松散耦合的系统松散耦合的系统松散耦合的系统松散耦合的系统28几种耦合的类型:(独立性由弱到强几种耦合的类型:(独立性由弱到强(耦合程度由强到弱耦合程度由强到弱))(1)(1)内容耦合内容耦合内容耦合内容耦合:一个模块直接影响另一个模块,调用或操纵其他一个模块直接影响另一个模块,调用或操纵其他模块的数据模块的数据例例1 1:A A访问访问C C的内部数据的内部数据 或不通过正常入口或不通过正常入口 而转入而转入C C的内部的内部ABCDA:goto C1C:C1:29例例2 2:部分代码重叠:部分代码重叠(常现在汇编程序中常现在汇编程序中)B A例例3 3:一个模块有:一个模块有多个入口多

25、个入口(功能功能)A:entry 1:entry 2:30几种耦合的类型几种耦合的类型 cont.cont.(2)(2)公共耦合公共耦合公共耦合公共耦合:几个模块共享一个数据区域:几个模块共享一个数据区域存在的缺陷:存在的缺陷:公共部分的改动将影响所有调用它的模块公共部分的改动将影响所有调用它的模块公共部分的数据存取无法控制公共部分的数据存取无法控制复杂程度随耦合模块的个数增加而增加复杂程度随耦合模块的个数增加而增加Global:V1 V2A:A1=V1+V2B:V1=B1Global:V1 V2A:V1+B:V2=B1+V131几种耦合的类型几种耦合的类型 cont.cont.(3)(3)特

26、征耦合特征耦合特征耦合特征耦合:把整个数据结构作为参数传递而被调用模块只使用:把整个数据结构作为参数传递而被调用模块只使用其中一部分数据元素时就出现了特征耦合其中一部分数据元素时就出现了特征耦合.(4)(4)控制耦合控制耦合控制耦合控制耦合:一个模块通过传递控制信息来控制另一个模块:一个模块通过传递控制信息来控制另一个模块.接口单一,但影响被控模块的内部逻辑接口单一,但影响被控模块的内部逻辑ABFlagF2F1FnFlag32关于关于“耦合耦合”的使用原则:的使用原则:尽量使用数据耦合尽量使用数据耦合少用控制耦合和特征耦合少用控制耦合和特征耦合限制公共环境耦合的范围限制公共环境耦合的范围完全不

27、用内容耦合完全不用内容耦合335.2 5.2 内聚内聚内聚内聚内聚内聚:标志着一个模块内各个元素彼此结合的紧密程度标志着一个模块内各个元素彼此结合的紧密程度内聚和耦合都是进行模块化设计的有力工具内聚和耦合都是进行模块化设计的有力工具实践表明实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚内聚更重要,应该把更多注意力集中到提高模块的内聚内聚更重要,应该把更多注意力集中到提高模块的内聚内聚更重要,应该把更多注意力集中到提高模块的内聚程度上程度上程度上程度上内聚有七种,由弱到强分别为:内聚有七种,由弱到强分别为:偶然内聚偶然内聚逻辑内聚逻辑内聚时间内聚时间内聚过程内聚过程内聚通信内聚通信内聚

28、顺序内顺序内聚聚功能内聚功能内聚345.2 5.2 内聚内聚 cont.cont.(1)(1)偶然内聚偶然内聚 (低内聚低内聚)如果一个模块完成一组任务,这些任务彼此间即使有关系,关系如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做也是很松散的,就叫做偶然内聚偶然内聚偶然内聚偶然内聚有时在写完一个程序之后,发现一组语句在两处或多处出现,于有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块的模块.(2)(2)逻辑内聚逻辑内聚 (低内聚低内聚)如果

29、一个模块完成的任务在逻辑上属于相同或相似的一类,由参如果一个模块完成的任务在逻辑上属于相同或相似的一类,由参数决定模块执行的功能,则称为数决定模块执行的功能,则称为逻辑内聚逻辑内聚逻辑内聚逻辑内聚例如,一个模例如,一个模块产生各种类块产生各种类型的全部输出型的全部输出A:Read inputsfrom diskfrom tapefrom 355.2 5.2 内聚内聚 cont.cont.(3)(3)时间内聚时间内聚 (低内聚低内聚)如果一个模块包含的任务必须在同一段时间内执行,就叫如果一个模块包含的任务必须在同一段时间内执行,就叫时间内聚时间内聚时间内聚时间内聚例如,模块完成各种初始化工作或当

30、一个模块处理意外故障时,这例如,模块完成各种初始化工作或当一个模块处理意外故障时,这个模块必须在中断处理的同时完成关闭文件、报警和保留现场等任个模块必须在中断处理的同时完成关闭文件、报警和保留现场等任务,这就构成了时间内聚务,这就构成了时间内聚.(4)(4)过程内聚过程内聚 (中内聚中内聚)如果一个模块内的处理元素是相关的而且以特定次序执行,则称为如果一个模块内的处理元素是相关的而且以特定次序执行,则称为过程内聚过程内聚过程内聚过程内聚使用程序流程图作为工具设计软件时,常常通过研究流程图确定模使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是过程内聚的模块块的

31、划分,这样得到的往往是过程内聚的模块.enter datacheck datamanipulate data365.2 5.2 内聚内聚 cont.cont.(5)(5)通信内聚通信内聚 (中内聚中内聚)如果模块中所有元素都使用同一个输入数据和如果模块中所有元素都使用同一个输入数据和(或或)产生同一个输出产生同一个输出数据,则称为数据,则称为通信内聚通信内聚通信内聚通信内聚例如,一个模块的功能是从输入的文件中读出数据,然后由这些例如,一个模块的功能是从输入的文件中读出数据,然后由这些数据产生报表,同时也由这些数据产生单项报表数据产生报表,同时也由这些数据产生单项报表.再例如:从同一磁带上读取不

32、相干的数据再例如:从同一磁带上读取不相干的数据 可能破坏独立性可能破坏独立性.37385.2 5.2 内聚内聚 cont.cont.(6)(6)顺序内聚顺序内聚 (高内聚高内聚)如果一个模块内的处理元素和同一个功能密切相关,而且这些处如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元通常一个处理元素的输出数据作为下一个处理元素的输人数据素的输人数据),则称为,则称为顺序内聚顺序内聚顺序内聚顺序内聚例如,一个解非线性方程组的模块,它的功能依次为:输入常数例如,一个解非线性方程组的模块,它的功能依次为:输入常数项系数,求

33、解,输出方程组的解项系数,求解,输出方程组的解.395.2 5.2 内聚内聚 cont.cont.(7)(7)功能内聚功能内聚 (高内聚高内聚)如果模块内所有处理元素属于一个整体,完成一个单一的功能,如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为则称为功能内聚功能内聚功能内聚功能内聚例如,一个模块只完成矩阵加法运算或只打印输出一种特定的表例如,一个模块只完成矩阵加法运算或只打印输出一种特定的表格功能格功能.405.2 5.2 内聚内聚 cont.cont.七种内聚的优劣评分,将得到如下结果:七种内聚的优劣评分,将得到如下结果:功能内聚功能内聚 1010分分时间内聚时间内聚 3

34、3分分顺序内聚顺序内聚 9 9分分逻辑内聚逻辑内聚 1 1分分通信内聚通信内聚 7 7分分偶然内聚偶然内聚 0 0分分过程内聚过程内聚 5 5分分对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软模块所具有的独立性就越好。可以说高内聚低耦合是我们进行

35、软件设计的一贯原则件设计的一贯原则件设计的一贯原则件设计的一贯原则415.2 5.2 内聚内聚 cont.cont.耦合、内聚与模块独立性的关系:耦合、内聚与模块独立性的关系:425.1 5.1 总体设计过程总体设计过程5.2 5.2 软件设计原理软件设计原理5.3 5.3 软件设计中的启发规则软件设计中的启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法43规则规则1 1:提高模块独立性:提高模块独立性争取低耦合、高内聚(增加内聚争取低耦合、高内聚(增加内聚 减少耦合)减少耦合)规则规则2 2:模块规模适中:模块规模适

36、中过大不易理解;太小则接口开销过大过大不易理解;太小则接口开销过大注意分解后不应降低模块的独立性注意分解后不应降低模块的独立性软件设计中的启发规则软件设计中的启发规则44规则规则3 3:选择适当的深度、宽度、扇出和扇入:选择适当的深度、宽度、扇出和扇入软件设计中的启发规则软件设计中的启发规则45规则规则3 cont.3 cont.深度:表示软件结构中控制的层数深度:表示软件结构中控制的层数深度能粗略地标志一个系统的大小和复杂程度,深度和程序长度深度能粗略地标志一个系统的大小和复杂程度,深度和程序长度之间有粗略的对应关系之间有粗略的对应关系宽度:表示软件结构中控制的总跨度宽度:表示软件结构中控制

37、的总跨度宽度是同一个层次上的模块总数的最大值,宽度越大系统越复杂;宽度是同一个层次上的模块总数的最大值,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出对宽度影响最大的因素是模块的扇出扇出:表示一个模块直接控制扇出:表示一个模块直接控制(调用调用)的模块数目的模块数目扇出为扇出为3-43-4,上限扇出为,上限扇出为5-95-9扇入:表示有多少个上级模块直接调用该模块扇入:表示有多少个上级模块直接调用该模块扇入越大则共享该模块的上级模块数目越多扇入越大则共享该模块的上级模块数目越多软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有

38、软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有高扇入高扇入高扇入高扇入46规则规则4 4:模块的作用域应在其控制域之内:模块的作用域应在其控制域之内模块的作用域模块的作用域受模块判定条件影受模块判定条件影响的所有模块集合响的所有模块集合模块的控制域模块的控制域模块本身以及所有模块本身以及所有直接从属模块的集合直接从属模块的集合47规则规则4 cont.4 cont.处理方式:处理方式:上移判断点:使该判断层次升高以扩大它的控制范围;上移判断点:使该判断层次升高以扩大它的控制范围;下移受判断影响的模块:将受判断影响的模块下移到判断

39、所在模下移受判断影响的模块:将受判断影响的模块下移到判断所在模块的控制范围内块的控制范围内48规则规则5 5:降低接口的复杂程度:降低接口的复杂程度接口复杂可能表明模块的独立性差接口复杂可能表明模块的独立性差规则规则6 6:单出单入,避免内容耦合:单出单入,避免内容耦合规则规则7 7:模块功能可预测:模块功能可预测 相同输入必产生相同输出相同输入必产生相同输出反例:模块中使用全局变量或静态变量,则可能导致不可预测反例:模块中使用全局变量或静态变量,则可能导致不可预测495.1 5.1 总体设计过程总体设计过程5.2 5.2 软件设计原理软件设计原理5.3 5.3 软件设计中的启发规则软件设计中

40、的启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法50总体设计阶段常用的几种图形工具总体设计阶段常用的几种图形工具层次图层次图HIPOHIPO图图结构图结构图(SC(SC图图)描绘软件结构的图形工具描绘软件结构的图形工具51层次图层次图每个方框代表一个模块,方框间的连线表示调用关系每个方框代表一个模块,方框间的连线表示调用关系例如例如:正文加工系统正文加工系统52HIPOHIPO图图HIPOHIPO图是美国图是美国IBMIBM公司发明的公司发明的“层次加输入层次加输入/处理处理/输出输出”图的英图的英文缩写文缩写53结

41、构图结构图(SC(SC图图)YourdonYourdon提出的结构图是进行软件结构设计的一个有力工具提出的结构图是进行软件结构设计的一个有力工具结构图反映程序中模块之间的层次调用关系和联系结构图反映程序中模块之间的层次调用关系和联系它以特定的符号表示模块、模块间的调用关系和模块间信息的传它以特定的符号表示模块、模块间的调用关系和模块间信息的传递递模块模块模块模块:模块用矩形框表示,并用模块的名字标记它:模块用矩形框表示,并用模块的名字标记它54结构图结构图(SC(SC图图)cont.)cont.模块的调用关系和接口模块的调用关系和接口模块的调用关系和接口模块的调用关系和接口:模块之间用单向箭头

42、联结,箭头从调用:模块之间用单向箭头联结,箭头从调用模块指向被调用模块模块指向被调用模块55结构图结构图(SC(SC图图)cont.)cont.模块间的信息传递模块间的信息传递模块间的信息传递模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行给被调用模块,以使被调用模块能够运行被调用模块在执行过程中又把它产生的数据或控制信息回送给调被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块用模块表示法:表示法:在模块在模块A A的箭头尾部标以一个菱形符号,表示模块的箭头尾部标

43、以一个菱形符号,表示模块A A有条件地调用有条件地调用另一个模块另一个模块B B。当一个在调用箭头尾部标以一个弧形符号,表示。当一个在调用箭头尾部标以一个弧形符号,表示模块模块A A反复调用模块反复调用模块C C和模块和模块D D5657结构图结构图(SC(SC图图)cont.)cont.通常用层次图作为描绘软件结构的文档通常用层次图作为描绘软件结构的文档利用利用IPOIPO图或数据字典中的信息得到模块调用时传递的信息图或数据字典中的信息得到模块调用时传递的信息由层次图导出结构图的过程由层次图导出结构图的过程导出结构图可以作为检查设计正确性和评价模块独立性的好方法导出结构图可以作为检查设计正确

44、性和评价模块独立性的好方法导出结构图可以作为检查设计正确性和评价模块独立性的好方法导出结构图可以作为检查设计正确性和评价模块独立性的好方法585.1 5.1 总体设计过程总体设计过程5.2 5.2 软件设计原理软件设计原理5.3 5.3 软件设计中的启发规则软件设计中的启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法59基本原理基本原理又称为又称为 SDSD:Structural DesignStructural Design面向数据流的设计方法把信息流映射成软件结构面向数据流的设计方法把信息流映射成软件结构信息流的类

45、型决定了映射的方法信息流的类型决定了映射的方法信息流有下述两种类型信息流有下述两种类型变换流变换流事务流事务流面向数据流的设计方法面向数据流的设计方法60变换流变换流信息通常以信息通常以“外部世界外部世界”的形式进入软件系统,经过处理以后再的形式进入软件系统,经过处理以后再以以“外部世界外部世界”的形式离开系统的形式离开系统61事务流事务流这种数据流是这种数据流是“以事务为中心的以事务为中心的”数据沿输入通路到达一个处理数据沿输入通路到达一个处理T T,这个处理根据输入数据的类型在,这个处理根据输入数据的类型在若干动作序列中选出一个执行若干动作序列中选出一个执行(1)(1)接收输入数据接收输入

46、数据(输人数据又称为事务输人数据又称为事务)(2)(2)分析每个事务以确定它的类型分析每个事务以确定它的类型(3)(3)根据事务类型选取一条活动通路根据事务类型选取一条活动通路当信息流具有明显的当信息流具有明显的“发射中心发射中心”时,时,可归结为事务流可归结为事务流62变换分析变换分析变换分析变换分析变换分析变换分析是一系列设计步骤的总称是一系列设计步骤的总称经过这些步骤把具有变换流特点的数据流图映射成软件结构经过这些步骤把具有变换流特点的数据流图映射成软件结构设计步骤:设计步骤:(1)(1)复查基本系统模型复查基本系统模型(2)(2)复查并精化数据流图复查并精化数据流图(3)(3)确定数据

47、流图具有变换特性还是事务特性确定数据流图具有变换特性还是事务特性(4)(4)确定输入流和输出流的边界,从而孤立出变换中心确定输入流和输出流的边界,从而孤立出变换中心(5)(5)完成完成“第一级分解第一级分解”,把数据流图映射成系统模块结构,即设,把数据流图映射成系统模块结构,即设计系统的上层模块结构计系统的上层模块结构(6)(6)完成完成“第二级分解第二级分解”,基于数据流图逐步分解高层模块结构,基于数据流图逐步分解高层模块结构,设计出下层模块设计出下层模块(7)(7)使用设计度量和启发式规则对第一次分割得到的软件结构进一使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化步精化63变

48、换分析变换分析应用案例:开发一个带有微处理器的汽车数字仪表板控制系统应用案例:开发一个带有微处理器的汽车数字仪表板控制系统功能描述功能描述1)1)通过模数转换实现传感器和微处理机的接口通过模数转换实现传感器和微处理机的接口2)2)在发光二极管在面板上显示如下数据:在发光二极管在面板上显示如下数据:显示每小时行驶的英里数显示每小时行驶的英里数(mph)(mph)显示每加仑油行驶的英里数显示每加仑油行驶的英里数(mpg)(mpg)显示汽车是加速或减速行驶显示汽车是加速或减速行驶显示里程显示里程3)3)如果汽车的速度超过如果汽车的速度超过5555英里英里/小时,则发出超速警告铃声小时,则发出超速警告

49、铃声64设计步骤:设计步骤:1)1)复查基本系统复查基本系统模型模型2)2)复查并精化数复查并精化数据流据流65设计步骤设计步骤 cont.cont.3)3)确定数据流图确定数据流图具有变换特性还具有变换特性还是事务特性是事务特性4)4)确定输入流和确定输入流和输出流的边界,输出流的边界,从而孤立出变换从而孤立出变换中心中心IPO66设计步骤设计步骤 cont.cont.5)5)完成完成“第一级分解第一级分解”6768设计步骤设计步骤 cont.cont.6)6)完成完成“第二级分解第二级分解”6970设计步骤设计步骤 cont.cont.7)7)使用设计度量和启发式规则对第一次分割得到的软件结构进一使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化步精化71Q&A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁