软件工程ppt04概要设计课件.ppt

上传人:飞****2 文档编号:30001973 上传时间:2022-08-04 格式:PPT 页数:173 大小:694.50KB
返回 下载 相关 举报
软件工程ppt04概要设计课件.ppt_第1页
第1页 / 共173页
软件工程ppt04概要设计课件.ppt_第2页
第2页 / 共173页
点击查看更多>>
资源描述

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

1、:梁丽梁丽我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物第四章第四章 总体设计总体设计l内容要点:内容要点:本章介绍软件设计的基本原理,优化软件结构的准则以及本章介绍软件设计的基本原理,优化软件结构的准则以及结构化程序设计方法结构化程序设计方法。 l教学重点:教学重点:l软件设计的基本任务软件设计的基本任务l内聚性、耦合性的划分内聚性、耦合性的划分l软件结构、模块的影响范围、模块的控制范围软件结构、模块的影响范围、模块的控制范围l软件结构设计的优化准则软件结构设计的优化准则l表示软件结构的图形工具表示软件

2、结构的图形工具l教学难点:教学难点:l将变换流或事务流类型的数据流图转化成软件结构将变换流或事务流类型的数据流图转化成软件结构l将一个复杂型数据流图转化成软件结构图并优化将一个复杂型数据流图转化成软件结构图并优化我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物本章的知识结构图本章的知识结构图我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物总体目标总体目标根据根据DFD ,确定最恰当实现软件功能、,确定最恰当实现软件功能、

3、性能要求集合的软件系统结构,实现算法和数据结构。性能要求集合的软件系统结构,实现算法和数据结构。(How to do?)?)过程过程从抽象的需求规格向具体的程序与数据集合从抽象的需求规格向具体的程序与数据集合进行变换的过程。进行变换的过程。结果结果各种软件设计说明书。各种软件设计说明书。设计方法设计方法结构化设计(结构化设计(SD)方法,面向数据结构)方法,面向数据结构的的设计方法和面向对象的设计方法等。设计方法和面向对象的设计方法等。结构化软件设计可分为结构化软件设计可分为总体设计总体设计和和详细设计详细设计两个两个阶段,总体设计确定系统的整体模块结构,但这时每阶段,总体设计确定系统的整体模

4、块结构,但这时每个模块仍然处于个模块仍然处于“黑盒子黑盒子”级,描述这些黑盒子里的级,描述这些黑盒子里的具体内容是详细设计阶段的任务。具体内容是详细设计阶段的任务。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物数据词典数据词典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接

5、口设计接口设计体系结构设计体系结构设计数据设计数据设计我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物(1)(1)概要设计概要设计( (总体设计总体设计) )确定软件的结构以及各组成成分确定软件的结构以及各组成成分( (子系统或模块子系统或模块) )之间的相互关系。之间的相互关系。(2)(2)详细设计详细设计 确定模块内部的算法和数据结构,确定模块内部的算法和数据结构,产生

6、描述各模块程序过程的详细文产生描述各模块程序过程的详细文档。档。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个

7、活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把

8、它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的

9、猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 1. 1. 软件结构软件结构 2. 2. 软件过程软件过程 3. 3. 模块化模块化 4. 4. 抽象抽象 5. 5. 信息隐蔽信息隐蔽 6. 6. 信息局部化信息局部化4.2 4.2 软件设计的概念和原理软件设计的概念和原理我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的

10、世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物软件体系结构包括两部分软件体系结构包括两部分: :(1)(1)过程构件过程构件( (模块模块) )的层次结构的层次结构(2)(2)数据构件数据构件我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物控制结构是软件模块间控制结构是软件模块间关系的表示关系的表示我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在

11、这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物l 只有一个顶层只有一个顶层(0(0层层) )模块模块l 0 0层外任一模块都会在它层外任一模块都会在它 的邻层存在一模块与它有关的邻层存在一模块与它有关l 同层模块间不发生联系同层模块间不发生联系我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物软件过程用以描述各模软件过程用以描述各模块的处理细节块的处理细节( (算法的详算法的详细描述细描述) ),包括对下层模,包括对下层模块控制的操作细节。块控制的操作细节。我吓了一跳,蝎子

12、是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物宽度宽度扇出扇出扇入扇入( (调用一个给定模调用一个给定模 块的模块个数块的模块个数) )深深度度( (模块的模块的 层数层数) )( (同一层最大模块数同一层最大模块数) )( (一个模块一个模块 直接调用直接调用 的模块数的模块数) )软件设计的概念与原理软件设计的概念与原理软件设计的基本原理是衡量软件设软件设计的基本原理是衡量软件设计的技术质量的标准,共有计的技术质量的标准,共有4 4条:条: 模块化:模块化:即自顶向下逐层将软件系即自顶向下逐层将软件系统划分成若干模块

13、。统划分成若干模块。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物模块化是好的软件设计的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握从整体上把握 问题问题, ,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解题所需的总的工作我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 该标准是软件解决复杂问题所具备该标准是软件解决复杂问题所具备的手段

14、,其依据是适当分解软件系统可的手段,其依据是适当分解软件系统可降低复杂性,减少开发工作量,降低开降低复杂性,减少开发工作量,降低开发成本、提高软件生产率。但是模块化发成本、提高软件生产率。但是模块化时应注意接口代价,因为模块划分越多,时应注意接口代价,因为模块划分越多,模块内的工作量虽然减少,但模块间接模块内的工作量虽然减少,但模块间接口的工作量增加。口的工作量增加。软件设计的概念与原理软件设计的概念与原理 软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。 把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能

15、够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物例例: :将问题将问题( (P1+P2)P1+P2)分解为分解为P1,P2P1,P2设函数设函数C(x)定义问题定义问题 x 的复杂程度的复杂程度函数函数E(x)确定解决问题确定解决问题 x 需要的工作量需要的工作量对问题对问题P1和和P2,如如: C(P1) C(P2)显然显然: E(P1) E(P2)有规律有规律:C(P1+P2) C(P1)+C(P2) E(P1+P2) E(P1)+E(P2)

16、 各个击破各个击破理论理论软件设计的概念与原理软件设计的概念与原理 抽象:抽象:即抽出事物本质的共同的特性而不即抽出事物本质的共同的特性而不考虑细节,不考虑其他因素。考虑细节,不考虑其他因素。该标准与逐步求精、模块化密切相关,该标准与逐步求精、模块化密切相关,它是划分模块过程中的思维原则。软件设计它是划分模块过程中的思维原则。软件设计的每一步都是对软件解决方法的抽象层次的的每一步都是对软件解决方法的抽象层次的一次细化。一次细化。软件设计的概念与原理软件设计的概念与原理 软件系统进行模块设计时,可有不同的抽象层次。 在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。 在较低的抽

17、象层次上,则采用过程化的方法。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物抽象原则应用举例抽象原则应用举例Windows NTWindows NT一体化的一体化的I/OI/O系统设计系统设计文件管理文件管理网络管理网络管理设备管理设备管理高速缓冲存储器高速缓冲存储器对虚拟文件对虚拟文件的字节流的的字节流的管理。管理。虚拟文件可虚拟文件可为任何设备为任何设备和实体和实体抽抽象象 信息隐蔽:信息隐蔽:即在设计和确定模块时,使得即在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对一个模块内包含的信

18、息(过程或数据),对于不需要这些信息的其他模块来说,是不能于不需要这些信息的其他模块来说,是不能访问的。访问的。信息隐蔽的目的:信息隐蔽的目的:提高模块的独立性,减少修改或提高模块的独立性,减少修改或维护时的影响面。维护时的影响面。该标准可以定义和实施对模块的过程细该标准可以定义和实施对模块的过程细节和局部数据结构的存取限制。将自身实现节和局部数据结构的存取限制。将自身实现细节与数据隐藏起来有利于提高模块的独立细节与数据隐藏起来有利于提高模块的独立性,对软件系统的修改、测试以及维护都有性,对软件系统的修改、测试以及维护都有利。利。软件设计的概念与原理软件设计的概念与原理 模块独立性:模块独立性

19、:即每个模块只完成系统要求即每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最的独立的子功能,并且与其他模块的联系最少且接口简单。少且接口简单。该标准有两个定性的衡量指标:内聚性该标准有两个定性的衡量指标:内聚性( (度量模块的内部特征度量模块的内部特征) )和耦合性(度量模块和耦合性(度量模块的外部特征)。这两个标准可判断设计方案的外部特征)。这两个标准可判断设计方案的优劣(模块划分时应尽量做到高内聚、低的优劣(模块划分时应尽量做到高内聚、低耦合,提高模块独立性)。耦合,提高模块独立性)。 模块(模块(Module)“模块模块”,又称,又称“组件组件”。它一般具有。它一般具有如下三

20、个基本属性如下三个基本属性: :u 功能功能:描述该模块实现什么功能:描述该模块实现什么功能u 逻辑逻辑:描述模块内部怎么做:描述模块内部怎么做u 状态状态:该模块使用时的环境和条件:该模块使用时的环境和条件模块的独立性:模块的独立性: 在描述一个模块时,还必须按模块的在描述一个模块时,还必须按模块的外部外部特性特性与与内部特性内部特性分别描述分别描述 模块的模块的外部特性外部特性u 模块的模块名、参数表、其中的输入参模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统数和输出参数,以及给程序以至整个系统造成的影响造成的影响 模块的模块的内部特性内部特性u 完成其功能的程序代

21、码和仅供该模块内完成其功能的程序代码和仅供该模块内部使用的数据部使用的数据模块的独立性:模块的独立性: 模块的独立性:模块的独立性:模块的独立性:模块的独立性: 耦合性是根据模块的耦合性是根据模块的外部特征外部特征提出的,是对软件系统提出的,是对软件系统结构中各结构中各模块间相互联系紧密程度模块间相互联系紧密程度的一种度量。也称的一种度量。也称块块间关系间关系。耦合性越高,模块独立性越弱耦合性越高,模块独立性越弱 影响模块间耦合程度的最主要因素是影响模块间耦合程度的最主要因素是模块间信息传递模块间信息传递的复杂性。的复杂性。 耦合程度由低到高分为耦合程度由低到高分为7种:种:我吓了一跳,蝎子是

22、多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 耦合强度依赖的因素:耦合强度依赖的因素:一模块对另一模块的引用一模块对另一模块的引用一模块向另一模块传递的数据量一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量一模块施加到另一模块的控制的数量模块间接口的复杂

23、程度模块间接口的复杂程度模块的独立性:模块的独立性:不传递任何消息不传递任何消息 如果一个模块访问另一个模块时,彼此之如果一个模块访问另一个模块时,彼此之间是通过间是通过简单数据参数简单数据参数 ( (不是控制参数、公不是控制参数、公共数据结构或外部变量共数据结构或外部变量) ) 来交换输入、输出来交换输入、输出信息的,则称这种耦合为数据耦合。信息的,则称这种耦合为数据耦合。属松散耦属松散耦合。合。传递的是值。传递的是值。模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物开发票开发

24、票计算水费计算水费单价单价数量数量金额金额标记耦合标记耦合 ( (Stamp Coupling)Stamp Coupling)如果一组模块通过参数表传递如果一组模块通过参数表传递记记录信息录信息,就是标记耦合。这个记录,就是标记耦合。这个记录是某一数据结构的子结构,而不是是某一数据结构的子结构,而不是简单变量。简单变量。传递的是数据结构传递的是数据结构。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况“住户

25、情况住户情况”是一个是一个数据结构数据结构, ,图中模块都图中模块都与此数据结构有关与此数据结构有关. .“计算水费计算水费”和和“计算电费计算电费”本无关本无关, ,由于由于引用了此数据结构产生依赖关系引用了此数据结构产生依赖关系, ,它们之间它们之间也是标记偶合也是标记偶合. .我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物计算水电费计算水电费计算水费计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什

26、么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B B我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物控制耦合增加了理解和编程的复控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖块的内部逻辑,增加了

27、相互依赖去除模块间控制耦合的方法:去除模块间控制耦合的方法:(1)(1)将被调用模块内的判定上移到调将被调用模块内的判定上移到调 用模块中进行用模块中进行(2)(2)被调用模块分解成若干单一功被调用模块分解成若干单一功 能模块能模块我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B2外部耦合(外部耦合(External CouplingExternal Coupling) 一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量而

28、不是而不是同一全局数据结构,而且不是通过参数表传同一全局数据结构,而且不是通过参数表传递该全局变量的信息,或递该全局变量的信息,或一组模块均与同一一组模块均与同一外部环境关联外部环境关联( (例如例如, ,I/OI/O模块与特定的设备、模块与特定的设备、格式和通信协议相关联格式和通信协议相关联),),它们之间便存在外它们之间便存在外部耦合。外部耦合必不可少部耦合。外部耦合必不可少, ,但这种模块数目但这种模块数目应尽量少应尽量少。模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物公

29、共耦合(公共耦合(Common CouplingCommon Coupling)若一组模块都访问若一组模块都访问同一个公共数据区同一个公共数据区( (也也称全局数据区、公共数据环境称全局数据区、公共数据环境) ) ,则它们,则它们之间的耦合就称为公共耦合。公共的数据之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。内存的公共覆盖区等。传递的是在公共数据环境中的数据。传递的是在公共数据环境中的数据。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:

30、表里边有一个活的生物公共数据区公共数据区C CB B模块模块A A、B B、C C间存在错综复杂的联系间存在错综复杂的联系我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物(1)(1)软件可理解性降低软件可理解性降低(2)(2)诊断错误困难诊断错误困难(3)(3)软件可维护性差,软件可维护性差,(4)(4)软件可靠性差软件可靠性差( (公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施) )慎用公共数据区和全程变量慎用公共数据区和全程变量! 。模块的独立性:模块的独立性:内容耦合内容耦合 ( (Co

31、ntent Coupling)Content Coupling) 模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息 ( (程序代码程序代码或数据)或数据)最不好的耦合形式最不好的耦合形式 !ABAB模块代码重叠模块代码重叠Entry1 Entry1 多入口模块多入口模块模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边

32、有一个活的生物 一个模块内部元素在功能上相互一个模块内部元素在功能上相互 关联的强度关联的强度 设计目标:高内聚设计目标:高内聚 ( (模块在软件过程中模块在软件过程中 完成单一的任务完成单一的任务) ) 内聚性是根据模块的内聚性是根据模块的内部特征内部特征提出的,是对提出的,是对模块的功能模块的功能强度强度的度量,即的度量,即一个模块内部各个元素彼此结合的紧密程一个模块内部各个元素彼此结合的紧密程度度的度量,也称的度量,也称块内联系块内联系。 影响内聚程度的最主要因素是影响内聚程度的最主要因素是模块内各成分之间相关于模块内各成分之间相关于同一功能的紧密程度。同一功能的紧密程度。 内聚程度由低

33、到高分为内聚程度由低到高分为7 7种:种:功能内聚功能内聚 ( (Functional Cohesion)Functional Cohesion)一个模块中各个部分都是一个模块中各个部分都是完成某一具体完成某一具体功能功能必不可少的组成部分,或者说该模块中必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块工作,紧密联系,不可分割的。则称该模块为功能内聚模块。为功能内聚模块。共同完成同一功能,缺一不可。共同完成同一功能,缺一不可。 模块的独立性:模块的独立性:信息内聚信息内聚 ( (Informat

34、ional Cohesion)Informational Cohesion)这种模块这种模块完成多个功能,各个功能都在完成多个功能,各个功能都在同一数据结构上操作同一数据结构上操作,每一项功能有一个唯,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。因此,它是一个信息内聚的模块。紧密相关于同一功能,且必须顺序执行。紧密相关于同一功能,且必须顺序执行。模块的独立性:模

35、块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物符符 号号 表表查找查找 登录登录 删除删除修改修改几个加工同时引用一个共同的数据几个加工同时引用一个共同的数据 模块的独立性:模块的独立性:通信内聚通信内聚 ( (Communication Cohesion)Communication Cohesion)如果一个模块内各功能部分都使用了相如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模则称之为通信

36、内聚模块。通常,通信内聚模块是通过数据流图来定义的。块是通过数据流图来定义的。都要在同一数据结构上操作,紧密相关于同都要在同一数据结构上操作,紧密相关于同一数据结构。一数据结构。 模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均工资工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块过程内聚(过程内聚(Procedural CohesionProcedura

37、l Cohesion)顺序性组合使用流程图做为工具设计程序时,把流使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程图中的某一部分划出组成模块,就得到过程内聚模块。程内聚模块。模块内各处理成分相关,且必须以模块内各处理成分相关,且必须以特定次序执行特定次序执行例如,把流程图中的循环部分、判定部分、例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过计算部分分成三个模块,这三个模块都是过程内聚模块。程内聚模块。模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有

38、错:表里边有一个活的生物读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查读入并审查成绩单成绩单统计并打印统计并打印成绩单成绩单时间内聚(时间内聚(Classical CohesionClassical Cohesion)时间内聚又称为经典内聚。这种模块大时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一与时间有关,通常要求所有功能必须在同一时间段内执行。时间段内执行。例如例如: :初始化系统模块、初始化系统模块、系统结束模块、紧急故障处理模块等均系统结束模块、紧急

39、故障处理模块等均是时间性聚合模块是时间性聚合模块。都要在同一时间内完成,联系比较紧密。都要在同一时间内完成,联系比较紧密。 模块的独立性:模块的独立性:逻辑内聚(逻辑内聚(Logical CohesionLogical Cohesion)这种模块把几种这种模块把几种相关的功能组合相关的功能组合在一起,每次被在一起,每次被调用时,由传送调用时,由传送给模块的判定参给模块的判定参数来确定该模块数来确定该模块应执行哪一种功应执行哪一种功能。能。具有逻辑上相似,通过具有逻辑上相似,通过参数确定完成哪个功能。参数确定完成哪个功能。模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么

40、把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段巧合内聚又称为偶然内聚。当模块内各部巧合内聚又称为偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种联分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,系也很松散,则称这种模块为巧

41、合内聚模块,它是内聚程度最低的模块。它是内聚程度最低的模块。没有任何联系。没有任何联系。 模块的独立性:模块的独立性:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差,可理解性差, 可修改性差可修改性差例例: :我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的

42、猜测没有错:表里边有一个活的生物函数 A 函数 B 函数 C 函数 D 函数 E 偶然内聚各部分互不相关 时间 T 时间 T+t 时间 T+2t 时间内聚和时间有关的功能 函数 A 函数 B 函数 C 数据集 通信内聚访问同一数据 函数 A 函数 B 函数 C 过 程 内 聚 按 次序 执 行 功能 函数A1 函数A2 函数 A4 逻 辑 内 聚 相 似的功能 函数 A处理 1 函数 A处理 2 函数 A处理 3 功 能 内 聚 充 分 而 必要的功能 顺序内聚一个部分的输入作为下一部分的输入 函数 A 函数 B 函数 C 图 3 一些常见的内聚类型 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为

43、什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物内聚与耦合密切相关,同其内聚与耦合密切相关,同其它模块强耦合的模块意味者它模块强耦合的模块意味者弱内聚,强内聚模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合与其它模块间松散耦合. .设计目标:设计目标:力争强内聚、弱耦合力争强内聚、弱耦合我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物耦合与内聚都是模块独立性的耦合与内聚都是模块独立性的定性标准,都反映模块独立性定性标准,都反映模块独立性的良好程度。但耦合是

44、直接的的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共主导因素,内聚则辅助耦合共同对模块独立性进行衡量。同对模块独立性进行衡量。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物(1)(1)模块功能的完善化模块功能的完善化(2)(2)消除重复功能消除重复功能(3)(3)将模块的影响限制在模块的控制范围内将模块的影响限制在模块的控制范围内(4)(4)深度、宽度、扇出和扇入适中深度、宽度、扇出和扇入适中(5)(5)模块大小适中模块大小适中(6)(6)降低模块接口的复杂性降低模块接口的复杂性(7)(7)模块功能

45、可预测模块功能可预测(8)(8)避免模块的病态连接避免模块的病态连接(9)(9)根据设计约束和可移植性要对软件打包根据设计约束和可移植性要对软件打包我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物完整的模块应包括三部分:完整的模块应包括三部分:(1)(1)执行规定功能部分执行规定功能部分(2)(2)出错处理部分出错处理部分(3)(3)需返回给调用者数据时,需返回给调用者数据时, 返回是否正确结束标志。返回是否正确结束标志。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也

46、感到愉快,证实我的猜测没有错:表里边有一个活的生物Q1Q1C CQ2Q2C CQ1Q1Q2Q2C C改进前改进前Q1Q1、Q2Q2功功能相似能相似X XY YQQX XY YX XY Y重复部分重复部分改进方法改进方法1 1:将将Q1Q1、Q2Q2合并为合并为QQ不可取不可取改进方法改进方法2 2:将将Q1Q1、Q2Q2的公共的公共部分分离出来部分分离出来我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物CHDEGXF(3)(3)将模块的影响限制将模块的影响限制 在模块的控制范围内在模块的控制范围内AILJK

47、B我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物高扇出的模块结构举例:高扇出的模块结构举例:编外编外人员人员工资工资取得取得工资工资数据数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资避免平铺结构我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物编外编外人员人员工资工资取得工取得工资数据资数据 计时计时制工制工资

48、额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资计时工人计时工人实发工资实发工资计薪工人计薪工人实发工资实发工资编外人员编外人员实发工资实发工资我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物模块过大:可理解程度下降模块过大:可理解程度下降模块过小:开销大于有效操作模块过小:开销大于有效操作 系统接口复杂系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能接口传递信息应简单且和模块功能一致。一致。我吓了一

49、跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物模块看成黑盒子,相同输入产生模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。相同输出,其功能为可预测的。模块带有内部状态其功能可能是模块带有内部状态其功能可能是不可预测的。难理解、难测试、不可预测的。难理解、难测试、难维护。难维护。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 功能单一的模块具有高内聚。功能单一的模块具有高内聚。 但如任意限制局部数据结构的但如任意限制局

50、部数据结构的大小,过分限制控制流中可做的选大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。乏灵活性和可扩充性。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 防止指向模块中间的分支或引用防止指向模块中间的分支或引用(针对内容耦合)(针对内容耦合) (9) (9)根据设计约束和可移植性根据设计约束和可移植性 需求对软件打包需求对软件打包 打包指用来为特定环境组装软件的打包指用来为特定环

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

当前位置:首页 > 教育专区 > 教案示例

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

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