软件工程-总体设计.ppt

上传人(卖家):三亚风情 文档编号:3390080 上传时间:2022-08-26 格式:PPT 页数:80 大小:1.02MB
下载 相关 举报
软件工程-总体设计.ppt_第1页
第1页 / 共80页
软件工程-总体设计.ppt_第2页
第2页 / 共80页
软件工程-总体设计.ppt_第3页
第3页 / 共80页
软件工程-总体设计.ppt_第4页
第4页 / 共80页
软件工程-总体设计.ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

1、1第二部分、开发阶段第二部分、开发阶段o系统设计系统设计总体设计总体设计体系结构设计体系结构设计模块设计模块设计详细设计详细设计用户界面设计用户界面设计数据结构与算法设计数据结构与算法设计o系统实现系统实现编码和单元测试编码和单元测试综合测试综合测试体系结构就如同人的骨架。体系结构就如同人的骨架。如果某个家伙的骨架是猴如果某个家伙的骨架是猴子,那么无论怎样喂养和子,那么无论怎样喂养和美容,他始终都是猴子,美容,他始终都是猴子,不会成为人。不会成为人。模块就如同人的器官,具有特定的功模块就如同人的器官,具有特定的功能。人体中最出色的模块设计之一是能。人体中最出色的模块设计之一是手,手只有几种动作

2、,却能做无限多手,手只有几种动作,却能做无限多的事情。人体中最糟糕的模块设计之的事情。人体中最糟糕的模块设计之一是嘴巴,嘴巴将最有价值但毫无相一是嘴巴,嘴巴将最有价值但毫无相干的几种功能如吃饭、说话混为一体,干的几种功能如吃饭、说话混为一体,使之无法并行处理,真乃人类之不幸。使之无法并行处理,真乃人类之不幸。用户界面就如同人的外表,最容易让人用户界面就如同人的外表,最容易让人一见钟情或一见恶心。象人类追求心灵一见钟情或一见恶心。象人类追求心灵美和外表美那样,软件系统也追求(内美和外表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好。在的)功能强大和(外表的)界面友好。但随着生活节奏

3、的加快,人们已少有兴但随着生活节奏的加快,人们已少有兴趣去品味深藏不露的内在美。如果把趣去品味深藏不露的内在美。如果把Unix系统比作是健壮的汉子和妇人,那系统比作是健壮的汉子和妇人,那么么Windows系统就象妩媚的小白脸和狐系统就象妩媚的小白脸和狐狸精。想不到狸精。想不到Windows系统竟然能兴风系统竟然能兴风作浪,占去大半市场。作浪,占去大半市场。数据结构与算法就如同人的血脉和神数据结构与算法就如同人的血脉和神经,它让器官具有生命并能发挥功能。经,它让器官具有生命并能发挥功能。数据结构与算法分布在体系结构和模数据结构与算法分布在体系结构和模块中,它将协调系统的各个功能。人块中,它将协调

4、系统的各个功能。人的耳朵和嘴巴虽然是相对独立的器官,的耳朵和嘴巴虽然是相对独立的器官,但如果耳朵失聪了,嘴巴就只能发出但如果耳朵失聪了,嘴巴就只能发出“啊啊”“”“呜呜”的声音,等于丧失了说的声音,等于丧失了说话的功能,可人们却又能用手势代替话的功能,可人们却又能用手势代替说话。人体的数据结构与算法设计真说话。人体的数据结构与算法设计真是十分神奇并且十分可笑。是十分神奇并且十分可笑。第5章 总体设计o本章主要内容:本章主要内容:软件设计的概念与原则;总体设计的步骤和方法;面向数据流的设计方法;总体设计的文档与评审。o本章重点:本章重点:总体设计的步骤和方法;面向数据流的设计方法 o本章难点:本

5、章难点:软件设计的原则,内聚和耦合,系统结构图。2第五章第五章 总体设计总体设计5.1 5.1 设计过程设计过程5.2 5.2 设计原理设计原理5.3 5.3 启发规则启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法 4 总体设计的基本目的总体设计的基本目的p总体设计的基本目的就是回答总体设计的基本目的就是回答“概括地说,系统应该概括地说,系统应该如何实现?如何实现?”这个问题。这个问题。p总体设计又称为概要设计或初步设计。总体设计又称为概要设计或初步设计。总体设计阶段的任务总体设计阶段的任务o通过这个阶段的工作将划分

6、出组成系统的物理元素通过这个阶段的工作将划分出组成系统的物理元素程程序、文件、数据库、人工过程和文档等等,但是每个物理序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于元素仍然处于黑盒子黑盒子级,这些黑盒子里的具体内容将在以级,这些黑盒子里的具体内容将在以后仔细设计。后仔细设计。o总体设计阶段的另一项重要任务是设计软件的结构,也就总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。模块相互间的关系。总体设计的意义总体设计的意义o在详细设计之前进行总体设计可以站在全局高

7、度上,花较在详细设计之前进行总体设计可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。从而用较低成本开发出较高质量的软件系统。把对象当作一个黑盒子,不需要知道里面是怎么处理的。55.1 总总体体设设计计的的过过程程o总体设计过程通常由两个主要阶段组成:总体设计过程通常由两个主要阶段组成:n系统设计系统设计:确定系统的具体实现方案。确定系统的具体实现方案。n结构设计结构设计:确定软

8、件结构。确定软件结构。o9 9个步骤:个步骤:设想供选择的方案设想供选择的方案选取合理的方案选取合理的方案推荐最佳方案推荐最佳方案功能分解功能分解设计软件结构设计软件结构设计数据库设计数据库制定测试计划制定测试计划书写文档书写文档审查和复审审查和复审 65.1.1 5.1.1 设想供选择的方案设想供选择的方案o在总体设计阶段分析员应该考虑在总体设计阶段分析员应该考虑各种可能的实现方案各种可能的实现方案,并且力求从中选出最佳方案。并且力求从中选出最佳方案。o需求分析阶段得出的需求分析阶段得出的数据流图是总体设计的极好的出数据流图是总体设计的极好的出发点发点。数据流图中的某些处理可以逻辑地归并在一

9、个。数据流图中的某些处理可以逻辑地归并在一个自动化边界内作为一组,另一些处理可以放在另一个自动化边界内作为一组,另一些处理可以放在另一个自动化边界内作为另一组。自动化边界内作为另一组。这些自动化边界通常意味这些自动化边界通常意味着某种实现策略。着某种实现策略。o设想把数据流图中的处理分组的各种可能的方法,抛设想把数据流图中的处理分组的各种可能的方法,抛弃在技术上行不通的分组方法弃在技术上行不通的分组方法(例如,组内不同处理(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。现策略,并且可以启示供选

10、择的物理系统。o在总体设计的该步骤中在总体设计的该步骤中分析员分析员仅仅一个边界一个边界仅仅一个边界一个边界地设想并且列出供选择的方案,并不评价这些方案。地设想并且列出供选择的方案,并不评价这些方案。5.1 总总体体设设计计的的过过程程785.1.2 选取若干个合理的方案选取若干个合理的方案o至少选取低成本、中等成本和高成本三种方案。至少选取低成本、中等成本和高成本三种方案。每种方案准备四份资料:每种方案准备四份资料:n系统流程图;系统流程图;n组成系统的物理元素清单;组成系统的物理元素清单;n成本成本/效益分析;效益分析;n实现这个系统的进度计划。实现这个系统的进度计划。5.1 总总体体设设

11、计计的的过过程程95.1.3 推荐最佳方案推荐最佳方案o分析员应该综合分析对比各种合理方案的利分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并且为推荐的方弊,推荐一个最佳的方案,并且为推荐的方案制定详细的实现计划。案制定详细的实现计划。o在使用部门的负责人接受了分析员所推荐的在使用部门的负责人接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重方案之后,将进入总体设计过程的下一个重要阶段要阶段结构设计结构设计。5.1 总总体体设设计计的的过过程程105.1.4 功能分解功能分解o程序(特别是复杂的大型程序)的设计,通常分为两程序(特别是复杂的大型程序)的设计,通常分为两个

12、阶段完成:个阶段完成:n结构设计结构设计:结构设计是总体设计阶段的任务。结构设计是总体设计阶段的任务。n过程设计过程设计:过程设计是详细设计阶段的任务。过程过程设计是详细设计阶段的任务。过程设计确定每个模块的处理过程设计确定每个模块的处理过程。o为确定软件结构,首先需要从为确定软件结构,首先需要从实现角度实现角度把复杂的功能把复杂的功能进一步进一步分解分解。一般说来,经过分解之后应该使每个功。一般说来,经过分解之后应该使每个功能对大多数程序员而言都是明显易懂的。能对大多数程序员而言都是明显易懂的。功能分解导功能分解导致数据流图的进一步细化致数据流图的进一步细化,同时还应该,同时还应该用用IPO

13、IPO图或其图或其他适当的工具简要描述细化后每个处理的算法他适当的工具简要描述细化后每个处理的算法 5.1 总总体体设设计计的的过过程程115.1.5 设计软件结构设计软件结构o通常程序中的通常程序中的一个模块完成一个适当的子功能一个模块完成一个适当的子功能。o应该把模块组织成良好的层次系统,应该把模块组织成良好的层次系统,顶层模块顶层模块调用它的下层模块以实现程序的完整功能调用它的下层模块以实现程序的完整功能,每,每个下层模块再调用更下层的模块,从而完成程个下层模块再调用更下层的模块,从而完成程序的一个子功能,序的一个子功能,最下层的模块完成最具体的最下层的模块完成最具体的功能功能。o软件结

14、构(即由模块组成的层次系统)可以用软件结构(即由模块组成的层次系统)可以用层次图层次图或或结构图结构图来描绘。来描绘。(5.4节节)5.1 总总体体设设计计的的过过程程125.1.6 数据库设计数据库设计o如需使用数据库,分析员应该在需求分析阶段对如需使用数据库,分析员应该在需求分析阶段对系统数据要求所做的分析的基础上进一步设计数系统数据要求所做的分析的基础上进一步设计数据库。包括下述四个步骤:据库。包括下述四个步骤:n模式设计模式设计:模式设计的目的是确定物理数据模式设计的目的是确定物理数据库结构。库结构。n子模式设计子模式设计:子模式是用户使用的数据视图。:子模式是用户使用的数据视图。n完

15、整性和安全性设计完整性和安全性设计。n优化优化:主要目的是改进模式和子模式以优化:主要目的是改进模式和子模式以优化数据的存取。数据的存取。5.1 总总体体设设计计的的过过程程135.1.7 制定测试计划制定测试计划o在软件开发的早期阶段考虑测试问题,能促使软在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。件设计人员在设计时注意提高软件的可测试性。5.1 总总体体设设计计的的过过程程145.1.8 书写文档书写文档o系统说明系统说明n用系统流程图描绘的系统构成方案;组成系统的物用系统流程图描绘的系统构成方案;组成系统的物理元素清单;成本效益分析;对最佳方案的概

16、括理元素清单;成本效益分析;对最佳方案的概括描述;精化的数据流图;用描述;精化的数据流图;用层次图层次图或或结构图结构图描绘的描绘的软件结构;用软件结构;用IPOIPO图或其他工具(例如,图或其他工具(例如,PDLPDL语言)语言)简要描述的各个模块的算法;模块间的接口关系;简要描述的各个模块的算法;模块间的接口关系;需求、功能和模块三者之间的交叉参照关系等等。需求、功能和模块三者之间的交叉参照关系等等。o用户手册用户手册n修改更正在需求分析阶段产生的初步的用户手册。修改更正在需求分析阶段产生的初步的用户手册。o测试计划测试计划n包括测试策略,测试方案,预期的测试结果,测试包括测试策略,测试方

17、案,预期的测试结果,测试进度计划等等。进度计划等等。o详细的实现计划详细的实现计划o数据库设计结果数据库设计结果5.1 总总体体设设计计的的过过程程155.1.9 审查和复审审查和复审o最后应该对总体设计的结果进行严格的技术审最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由使用部门的负责查,在技术审查通过之后再由使用部门的负责人从管理角度进行复审。人从管理角度进行复审。5.1 总总体体设设计计的的过过程程165.2 软软件件设设计计原原理理*在软件设计过程中应该遵循的基在软件设计过程中应该遵循的基本原理和相关概念本原理和相关概念o模块化模块化o抽象抽象 o逐步求精逐步求精o信

18、息隐蔽和局部化信息隐蔽和局部化o模块独立模块独立175.2.1 5.2.1 模块化模块化o模块是数据说明、可执行语句等程序对象的集合,模块是数据说明、可执行语句等程序对象的集合,它是单独命名的而且可通过名字来访问,例如,过它是单独命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。程、函数、子程序、宏等等都可作为模块。o模块化就是把程序划分成若干个模块,每个模块完模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,成一个子功能,把这些模块集中起来组成一个整体,可以完成指定的功能,满足问题的要求。可以完成指定的功能,满足问题的要求。模块

19、化的根据模块化的根据o不等式不等式nC C(P1P1P2P2)C C(P1P1)C C(P2P2)nE E(P1P1P2P2)E E(P1P1)E E(P2P2)o“各个击破各个击破”的结论的结论把复杂的问题分解成许多把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了容易解决的小问题,原来的问题也就容易解决了 5.2 软软件件设设计计原原理理*18最适当的模块数目最适当的模块数目 5.2 软软件件设设计计原原理理*19模块化的优点模块化的优点o可以使软件结构清晰,不仅容易设计也容易阅读可以使软件结构清晰,不仅容易设计也容易阅读和理解;和理解;o可以使软件容易测试和调试,因而有助于

20、提高软可以使软件容易测试和调试,因而有助于提高软件的可靠性;件的可靠性;o能够提高软件的可修改性;能够提高软件的可修改性;o有助于软件开发工程的组织管理。有助于软件开发工程的组织管理。5.2 软软件件设设计计原原理理*205.2.2 5.2.2 抽象抽象o抽象就是抽象就是抽出事物的本质特性抽出事物的本质特性而暂时不考虑它们而暂时不考虑它们的细节。的细节。o处理复杂系统的唯一有效的方法是用处理复杂系统的唯一有效的方法是用层次层次的方式的方式构造和分析它构造和分析它。o一个复杂的动态系统首先可以用一些高级的抽象一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较概念

21、构造和理解,这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。低层次的具体元素。5.2 软软件件设设计计原原理理*上下级关系的层次结构上下级关系的层次结构 顺序相邻关系的层次结构顺序相邻关系的层次结构 215.2.3 5.2.3 逐步求精逐步求精o逐步求精是许多软件工程技术(如规格说明技术、逐步求精是许多软件工程技术(如规格说明技术、设计和实现技术)的基础为了能集中精力解设计和实现技术)的基础为了能集中精力解决主要问题而尽量延迟对问题细节的考虑决主要问题而尽量延迟对问题细节的考虑o抽象和求精是一对互补的概念抽象使得设

22、计者抽象和求精是一对互补的概念抽象使得设计者能够说明过程和数据、同时却忽略底层细节可能够说明过程和数据、同时却忽略底层细节可以把抽象看成一种通过忽略多余的细节同时强调以把抽象看成一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法有关的细节,而实现逐步求精的方法5.2 软软件件设设计计原原理理*225.2.4 信息隐蔽和局部化信息隐蔽和局部化o信息隐蔽原理信息隐蔽原理:应该这样设计和确定模块,使得一个:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。息的模块来说,是不能访问的。n“

23、隐蔽隐蔽”意味着模块彼此间仅仅交换那些为了完成系统功能而意味着模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。必须交换的信息。n“局部化局部化”是指把一些关系密切的软件元素物理地放得彼此靠是指把一些关系密切的软件元素物理地放得彼此靠近。近。局部化有助于实现信息隐蔽。局部化有助于实现信息隐蔽。o信息隐蔽和局部化的优点信息隐蔽和局部化的优点n测试期间和软件维护期间需要修改软件,使用信息测试期间和软件维护期间需要修改软件,使用信息隐蔽原理作为模块化系统设计的标准就会带来极大隐蔽原理作为模块化系统设计的标准就会带来极大好处。好处。n因为绝大多数数据和过程对于软件的其他部分而言因为绝大多数数据和

24、过程对于软件的其他部分而言是隐蔽的(也就是是隐蔽的(也就是“看看”不见的),在修改期间由不见的),在修改期间由于疏忽而引入的错误就很少可能传播到软件的其他于疏忽而引入的错误就很少可能传播到软件的其他部分。部分。5.2 软软件件设设计计原原理理*235.2.5 模块独立模块独立o模块独立的概念是模块化、抽象、信息隐模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。蔽和局部化概念的直接结果。o为什么模块的独立性很重要呢?为什么模块的独立性很重要呢?n有效的模块化(即具有独立的模块)的软件有效的模块化(即具有独立的模块)的软件比较容易开发出来。比较容易开发出来。n独立的模块比较容易测试和

25、维护。独立的模块比较容易测试和维护。o模块的独立程度可以由两个定性标准度量,模块的独立程度可以由两个定性标准度量,这两个标准分别称为这两个标准分别称为耦合耦合和和内聚内聚。5.2 软软件件设设计计原原理理*24耦合性(耦合性(Coupling)o耦合性是对一个软件结构中不同模块之间互连程耦合性是对一个软件结构中不同模块之间互连程度的度量。度的度量。o模块间的耦合程度强烈影响系统的可理解性、可模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。测试性、可靠性和可维护性。5.2 软软件件设设计计原原理理*25(1)非直接耦合)非直接耦合o如果如果两个模块之间没有直接关系两个模块之间

26、没有直接关系,它们之间的联,它们之间的联系完全是通过主模块的控制和调用来实现的,这系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。就是非直接耦合。o这种耦合的模块独立性最强。这种耦合的模块独立性最强。5.2 软软件件设设计计原原理理*26(2)数据耦合)数据耦合 o如果一个模块访问另一个模块时,彼此之间是通如果一个模块访问另一个模块时,彼此之间是通过过数据参数数据参数(不是控制参数、公共数据结构或外(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。合为数据耦合。o按数据耦合开发的程序界面简单、安全可靠。按

27、数据耦合开发的程序界面简单、安全可靠。o数据耦合是松散的耦合数据耦合是松散的耦合,模块之间的独立性比较,模块之间的独立性比较强。在软件程序结构中至少必须有这类耦合。强。在软件程序结构中至少必须有这类耦合。5.2 软软件件设设计计原原理理*27(3)标记耦合)标记耦合 o如果如果一组模块一组模块通过通过参数表参数表传递传递记录信息记录信息,就是,就是o事实上,这组模块共享了这个记录,它是某一数事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。这要求这些据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该记录的结构,并按结构要求对模块都必须清楚该记录的结构,并按结构要

28、求对此记录进行操作。此记录进行操作。o如果采取如果采取“信息隐蔽信息隐蔽”的方法,把在数据结构上的方法,把在数据结构上的操作全部集中在一个模块中,就可以消除这种的操作全部集中在一个模块中,就可以消除这种耦合。耦合。5.2 软软件件设设计计原原理理*28(4)控制耦合)控制耦合 o如果一个模块通过传送如果一个模块通过传送开关、标志、名字开关、标志、名字等控制等控制信息,明显地控制选择另一模块的功能,就是信息,明显地控制选择另一模块的功能,就是o这种耦合的这种耦合的实质实质是在是在单一接口上选择多功能模单一接口上选择多功能模块中的某项功能块中的某项功能。o对所控制模块的任何修改,都会影响控制模块。

29、对所控制模块的任何修改,都会影响控制模块。另外,另外,控制耦合也意味着控制模块必须知道所控控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块制模块内部的一些逻辑关系,这些都会降低模块的独立性的独立性。5.2 软软件件设设计计原原理理*29(5 5)外部耦合)外部耦合 o一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量而而不是同一全不是同一全局数据结构局数据结构,而且不是通过参数表传递该全局变,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。量的信息,则称之为外部耦合。o外部耦合引起的问题类似于公共耦合,外部耦合引起的问题类似于公共耦合,区别区别

30、在于在于在外部耦合中不存在依赖于一个数据结构内部各在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。项的物理安排。5.2 软软件件设设计计原原理理*30(6)公共耦合)公共耦合 o若一组模块都访问若一组模块都访问同一个公共数据环境同一个公共数据环境,则它们之,则它们之间的耦合就称为公共耦合。间的耦合就称为公共耦合。o公共的数据环境可以是公共的数据环境可以是全局数据结构全局数据结构、共享的通信共享的通信区区、内存的公共覆盖区内存的公共覆盖区等。等。o这种耦合会引起下列问题:这种耦合会引起下列问题:n所有公共耦合模块都与某一个公共数据环境内部所有公共耦合模块都与某一个公共数据环境内部各项的物

31、理安排有关,若修改某个数据的大小,各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。将会影响到所有的模块。n无法控制各个模块对公共数据的存取,严重影响无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。软件模块的可靠性和适应性。n公共数据名的使用,明显降低了程序的可读性。公共数据名的使用,明显降低了程序的可读性。5.2 软软件件设设计计原原理理*31(7)内容耦合)内容耦合 o如果出现以下情形,两个模块之间就发生了内容耦合:如果出现以下情形,两个模块之间就发生了内容耦合:n一个模块访问另一个模块的内部数据。一个模块访问另一个模块的内部数据。n一个模块不通过正常入口

32、转到另一个模块的内部。一个模块不通过正常入口转到另一个模块的内部。n两个模块有一部分代码重叠(只可能出现在汇编程序中)。两个模块有一部分代码重叠(只可能出现在汇编程序中)。n一个模块有多个入口(这意味着一个模块有几种功能)。一个模块有多个入口(这意味着一个模块有几种功能)。模块化的原则模块化的原则o模块化设计的最终目标,是希望建立模块间耦合尽可能松散的模块化设计的最终目标,是希望建立模块间耦合尽可能松散的系统。系统。o在这样一个系统中,我们设计、编码、测试和维护其中任何一在这样一个系统中,我们设计、编码、测试和维护其中任何一个模块,就不需要对系统中其他模块有很多的了解。个模块,就不需要对系统中

33、其他模块有很多的了解。o此外,由于模块间联系简单,发生在某一处的错误传播到整个此外,由于模块间联系简单,发生在某一处的错误传播到整个系统的可能性很小。系统的可能性很小。5.2 软软件件设设计计原原理理*32内聚性(内聚性(Cohesion)o内聚性标志内聚性标志一个模块内一个模块内各个元素彼此结合的紧密各个元素彼此结合的紧密程度。程度。o模块内的模块内的高内聚高内聚往往意味着模块间的往往意味着模块间的松耦合松耦合。内。内聚和耦合都是模块化设计的有力工具,但是实践聚和耦合都是模块化设计的有力工具,但是实践表明表明内聚更重要内聚更重要,应该把更多注意力集中到提高,应该把更多注意力集中到提高模块的内

34、聚程度上。模块的内聚程度上。5.2 软软件件设设计计原原理理*33(1)巧合内聚)巧合内聚 o巧合内聚又称为巧合内聚又称为偶然内聚偶然内聚。o当模块内各部分之间当模块内各部分之间没有联系没有联系,或者即使有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。块,它是内聚程度最低的模块。o这种模块的缺点这种模块的缺点n首先是不易修改和维护。首先是不易修改和维护。n其次是这种模块的内容不易理解,很难描述其次是这种模块的内容不易理解,很难描述它所完成的功能,增加了程序的模糊性。它所完成的功能,增加了程序的模糊性。5.2

35、 软软件件设设计计原原理理*34(2)逻辑内聚)逻辑内聚 o这种模块把几种相关的功能组合在一起,每次调用这种模块把几种相关的功能组合在一起,每次调用时,由时,由传送给模块的判定参数传送给模块的判定参数来确定该模块应执行来确定该模块应执行哪一种功能。哪一种功能。o这种模块是这种模块是单入口多功能模块单入口多功能模块。类似的有。类似的有错误处理错误处理模块。它接收出错信号,对不同类型的错误打印出模块。它接收出错信号,对不同类型的错误打印出不同的出错信息不同的出错信息。o逻辑内聚模块比巧合内聚模块的内聚程度要高逻辑内聚模块比巧合内聚模块的内聚程度要高 。o逻辑内聚的缺点逻辑内聚的缺点n它所执行的不是

36、一种功能,而是执行若干功能中的一种,它所执行的不是一种功能,而是执行若干功能中的一种,因此它不易修改。因此它不易修改。n另外,当调用时需要进行控制参数的传递,这就增加了模另外,当调用时需要进行控制参数的传递,这就增加了模块间的耦合程度。块间的耦合程度。n而将未用的部分也调入内存,这就降低了系统的效率。而将未用的部分也调入内存,这就降低了系统的效率。5.2 软软件件设设计计原原理理*35(3)时间内聚)时间内聚 o时间内聚时间内聚又称为又称为经典内聚经典内聚。o这种模块大多为这种模块大多为多功能模块多功能模块,但模块的各个功能,但模块的各个功能的执行与时间有关,通常的执行与时间有关,通常要求所有

37、功能必须在同要求所有功能必须在同一时间段内执行一时间段内执行。o例如初始化模块和终止模块。初始化模块要为所例如初始化模块和终止模块。初始化模块要为所有变量赋初值,对所有介质上的文件置初态,初有变量赋初值,对所有介质上的文件置初态,初始化寄存器和栈等,因此要求在程序开始执行的始化寄存器和栈等,因此要求在程序开始执行的最初一段时间内,模块中所有功能全部执行一遍。最初一段时间内,模块中所有功能全部执行一遍。5.2 软软件件设设计计原原理理*36(4)过程内聚)过程内聚 o如果如果一个模块内的处理一个模块内的处理是相关的,而且必须是相关的,而且必须以特以特定次序执行定次序执行,则称这个模块为,则称这个

38、模块为过程内聚模块过程内聚模块。o使用流程图做为工具设计程序的时候,常常通过使用流程图做为工具设计程序的时候,常常通过流程图来确定模块划分。流程图来确定模块划分。把流程图中的某一部分把流程图中的某一部分划出组成模块划出组成模块,就得到过程内聚模块。,就得到过程内聚模块。o例如,我们把流程图中的循环部分、判定部分、例如,我们把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内计算部分分成三个模块,这三个模块都是过程内聚模块。聚模块。5.2 软软件件设设计计原原理理*37(5)通信内聚)通信内聚 o如果一个模块内各功能部分都使用了如果一个模块内各功能部分都使用了相同的输入相同

39、的输入数据数据,或产生了,或产生了相同的输出数据相同的输出数据,则称之为,则称之为通信通信内聚模块内聚模块。o通信内聚模块是通过数据流图来定义的通信内聚模块是通过数据流图来定义的。5.2 软软件件设设计计原原理理*38(6)信息内聚)信息内聚 o这种模块完成多个功能,各个功能都在同一数据这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。结构上操作,每一项功能有一个唯一的入口点。5.2 软软件件设设计计原原理理*39(8 8)功能内聚)功能内聚 o一个模块中各个部分都是完成某一具体功能必不一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所

40、有部分都是可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。不可分割的。则称该模块为功能内聚模块。o功能内聚模块的优点是它们容易修改和维护,因功能内聚模块的优点是它们容易修改和维护,因为它们的功能是明确的,模块间的耦合是简单的。为它们的功能是明确的,模块间的耦合是简单的。5.2 软软件件设设计计原原理理*(7)(7)顺序内聚顺序内聚如果一个模块内的处理元素和同一个功能密切相关,如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的而且这些处理必须

41、顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)输出数据作为下一个处理元素的输入数据)405.3 启启发发式式规规则则*o启发式规则多数是经验规律,对改进设计,提高启发式规则多数是经验规律,对改进设计,提高软件质量,往往有重要的参考价值;软件质量,往往有重要的参考价值;o但是,它们既不是设计的目标也不是设计时普遍但是,它们既不是设计的目标也不是设计时普遍遵循的原则。遵循的原则。411 改进软件结构提高模块独立性改进软件结构提高模块独立性o设计出软件的初步结构以后,应该审查分析这个设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高结构,通过模块

42、分解或合并,力求降低耦合提高内聚。内聚。n例如,多个模块公有的一个子功能可以独立例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;成一个模块,由这些模块调用;n有时可以通过分解或合并模块以减少控制信有时可以通过分解或合并模块以减少控制信息的传递及对全局数据的引用,并且降低接息的传递及对全局数据的引用,并且降低接口的复杂程度。口的复杂程度。5.3 启启发发式式规规则则*422 模块规模应该适中模块规模应该适中o经验表明,一个模块的规模不应过大。过大的模经验表明,一个模块的规模不应过大。过大的模块往往是由于分解不充分,但是分解后不应该降块往往是由于分解不充分,但是分解后不应该降低模

43、块独立性。低模块独立性。o过小的模块开销大于有效操作,而且模块数目过过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。因此过小的模块有时不值多将使系统接口复杂。因此过小的模块有时不值得单独存在,特别是只有一个模块调用它时,通得单独存在,特别是只有一个模块调用它时,通常可以把它合并到上级模块中去而不必单独存在。常可以把它合并到上级模块中去而不必单独存在。5.3 启启发发式式规规则则*433 深度、宽度、扇入和扇出都应适当深度、宽度、扇入和扇出都应适当o深度表示软件结构中控制的层数,它往往能粗略深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。地标志一个系统的大

44、小和复杂程度。o如果层数过多则应该考虑是否有许多管理模块过如果层数过多则应该考虑是否有许多管理模块过分简单了,能否适当合并。分简单了,能否适当合并。o宽度是软件结构内同一个层次上的模块总数的最宽度是软件结构内同一个层次上的模块总数的最大值。大值。o一般说来,宽度越大系统越复杂。对宽度影响最一般说来,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。大的因素是模块的扇出。o扇出是一个模块直接控制(调用)的模块数目。扇出是一个模块直接控制(调用)的模块数目。n扇出过大意味着模块过分复杂,需要控制和协调过多的下级扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小也不好。一个设计得

45、好的典型系统的平均扇模块;扇出过小也不好。一个设计得好的典型系统的平均扇出通常是出通常是3或或4。n扇出太大一般是因为缺乏中间层次,应该适当增加中间层次扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。扇出太小时可以把下级模块进一步分解成若干的控制模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。个子功能模块,或者合并到它的上级模块中去。5.3 启启发发式式规规则则*443 3 深度、宽度、扇入和扇出都应适当深度、宽度、扇入和扇出都应适当o一个模块的扇入表明有多少个上级模块直接调用一个模块的扇入表明有多少个上级模块直接调用它。它。o扇入越大则

46、共享该模块的上级模块数目越多,这扇入越大则共享该模块的上级模块数目越多,这是有好处的。是有好处的。o但是,不能违背模块独立原理单纯追求高扇入。但是,不能违背模块独立原理单纯追求高扇入。o观察大量软件系统后发现,设计得很好的软件结观察大量软件系统后发现,设计得很好的软件结构通常顶层扇出比较高,中层扇出较少,底层扇构通常顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层模块有高扇入)。入到公共的实用模块中去(底层模块有高扇入)。5.3 启启发发式式规规则则*454 模块的作用域应该在控制域之内模块的作用域应该在控制域之内o模块的作用域定义为受该模块内一个判定影响的模块的作用域定义为受

47、该模块内一个判定影响的所有模块的集合。所有模块的集合。o模块的控制域是这个模块本身以及所有直接或间模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。接从属于它的模块的集合。5.3 启启发发式式规规则则*46修改软件结构使作用域是控制域的子集的方法修改软件结构使作用域是控制域的子集的方法o一个方法是把做判定的点往上移,例如,把判定一个方法是把做判定的点往上移,例如,把判定从模块从模块A A中移到模块中移到模块M M中。中。o另一个方法是把那些在作用域内但不在控制域内另一个方法是把那些在作用域内但不在控制域内的模块移到控制域内,例如,把模块的模块移到控制域内,例如,把模块G G移到

48、模块移到模块A A的下面,成为它的直属下级模块。的下面,成为它的直属下级模块。5.3 启启发发式式规规则则*475 5 力争降低模块接口的复杂程度力争降低模块接口的复杂程度o模块接口复杂是软件发生错误的一个主要原因。模块接口复杂是软件发生错误的一个主要原因。o应该仔细设计模块接口,使得信息传递简单并且应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。和模块的功能一致。o接口复杂或不一致(即看起来传递的数据之间没接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低内聚的征兆,应该重新有联系),是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。分析这个模块的独立性。o例如

49、,求一元二次方程的根的模块例如,求一元二次方程的根的模块 QUADQUADROOTROOT(TBLTBL,X X),其中用数组),其中用数组 TBLTBL传送方程的系数,传送方程的系数,用数组用数组X X回送求得的根。这种传递信息的方法不回送求得的根。这种传递信息的方法不利于对这个模块的理解,不仅在维护期间容易引利于对这个模块的理解,不仅在维护期间容易引起混淆,在开发期间也可能发生错误。起混淆,在开发期间也可能发生错误。o下面这种接口可能是比较简单的:下面这种接口可能是比较简单的:QUAD QUAD ROOTROOT(A A,B B,C C,ROOT1ROOT1,ROOT2ROOT2)其中)其

50、中A A、B B、C C是是方程的系数,方程的系数,ROOT1ROOT1和和ROOT2ROOT2是算出的两个根。是算出的两个根。5.3 启启发发式式规规则则*486 设计单入口单出口的模块设计单入口单出口的模块o不要出现内容耦合。不要出现内容耦合。o从顶部进入模块,从底部退出模块。从顶部进入模块,从底部退出模块。o易理解,易维护。易理解,易维护。5.3 启启发发式式规规则则*497 模块功能应该可以预测模块功能应该可以预测o如果一个模块可以当做一个黑盒子,也就是说,如果一个模块可以当做一个黑盒子,也就是说,只要输入的数据相同就产生同样的输出,这个模只要输入的数据相同就产生同样的输出,这个模块的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程-总体设计.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|