《软件设计的基本原理--模块ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件设计的基本原理--模块ppt课件.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目软件设计的基本原理 模块模块化独立性抽象信息隐藏认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目模块一般把用一个名字就可调用的一段程序称为“模块”。模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序等等。模块是可组合、分解和更新的单元。模块具有四个基本属性:接口:指模块的输入与输出。功能:即指该模块要完成的任务。逻辑:即描述模块为了完成任务,模块内
2、部怎么做。状态:即使用该模块时的环境和条件。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目模块化模块化就是把整个系统划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个系统的功能。模块化设计方法强调的是清楚地定义每个模块的功能和它的输入/输出参数,而模块的实现细节隐藏在各自的模块之中,与其它模块之间的关系可以是调用关系,因此,模块化程序易于调试和修改。模块规模越小,模块的开发成本越少。反之,模块之间的接口变得越复杂,模块的集成成本越高。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家
3、对扶贫工作高度重视,已经展开了“精准扶贫”项目模块化设计的目的 模块化产品设计的目的是以少变应多变,以尽可能少的投入生产尽可能多的产品,以最为经济的方法满足各种要求。由于模块具有不同的组合可以配置生成多样化的满足用户需求的产品的特点,同时模块又具有标准的几何连接接口和一致的输入输出接口,如果模块的划分和接口定义符合企业批量化生产中采购、物流、生产和服务的实际情况,这就意味着按照模块化模式配置出来的产品是符合批量化生产的实际情况的,从而使定制化生产和批量化生产这对矛盾得到解决。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目模
4、块化设计的作用模块化设计的作用模块化设计是绿色设计方法之一,它已经从理念转变为较成熟的设计方法。将绿色设计思想与模块化设计方法结合起来,可以同时满足产品的功能属性和环境属性:1.一方面可以缩短产品研发与制造周期,增加产品系列,提高产品质量,快速应对市场变化;2.另一方面,可以减少或消除对环境的不利影响,方便重用、升级、维修和产品废弃后的拆卸、回收和处理。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目抽象抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同性而暂不考虑它的细节,不考虑其他因素。抽象的概念被广泛应用于就
5、算计软件领域,在学中更是如此。软件工程过程中的每一步都可以看作是对软件解决方法的抽象层次的一次细化。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目信息隐蔽 信息隐蔽是指,每个模块的实现细节对于其他模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。通常有效的模块化可以通过定义一组相互独立的模块来实现,这些模块相互间的通信仅 仅使用对于实现软件功能来说是必要的信息。通过抽象,可以确定组成软件的过程(或信息)实体,而通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取
6、限制。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目模块独立性 耦合:指模块间相互关联的程度 内聚:衡量一个模块内部各个元素彼此结合的紧密程度 耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目一般模块之间可能的连接方式有七种,构成耦合性的七种类型:(1)非直接耦合非直接耦合(2)数据耦合数据耦合(3)标记耦合标记耦合(4)控制耦合控制耦合
7、(5)外部耦合外部耦合(6)公共耦合公共耦合(7)内容耦合内容耦合认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目1.非直接耦合(Nondirect Coupling)如果两个模块之间没有直接关系,如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块它们之间的联系完全是通过主模块的控制和调用来的控制和调用来实现的,这就是实现的,这就是非直接耦合。这非直接耦合。这种耦合的模块独种耦合的模块独立性最强。立性最强。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶
8、贫”项目2.数据耦合数据耦合(Data Coupling)如果一个模块访问另一个模块时,彼如果一个模块访问另一个模块时,彼此之间是通过简单数据参数此之间是通过简单数据参数 (不是控不是控制参数、公共数据结构或外部变量制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种来交换输入、输出信息的,则称这种耦合为数据耦合。耦合为数据耦合。3.标记耦合标记耦合(Stamp Coupling)如果一组模块通过参数表传递记录信如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。数据结构的子结构,而不是简单变量。认识到了
9、贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目4.控制耦合控制耦合(Control Coupling)(Control Coupling)如果一个模如果一个模块通过传送开块通过传送开关、标志、名关、标志、名字等控制信息,字等控制信息,明显地控制选明显地控制选择另一模块的择另一模块的功能,就是控功能,就是控制耦合。制耦合。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目5.外部耦合(外部耦合(External Coupling)一组模块都访问一组模块都访问同一全局
10、简单变量同一全局简单变量而不是而不是同一全局数据结构,而且不是通过参数表同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦传递该全局变量的信息,则称之为外部耦合。合。外部耦合引起的问题类似于公共耦合外部耦合引起的问题类似于公共耦合 6.公共耦合(公共耦合(Common Coupling)若一组模块都访问若一组模块都访问同一个公共数据环境同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。通信区、内存的公共覆盖区等。认识到了贫困户贫困的
11、根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目q公共耦合的复杂程度随耦合模块的个数增加而显公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况:共耦合有两种情况:松散公共耦合和紧密公共耦合松散公共耦合和紧密公共耦合。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目若一个模块只是往公共数据环境里传送数若一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中据,而另一个模块
12、只是从公共数据环境中取数据,则这种公共耦合叫做松散公共耦取数据,则这种公共耦合叫做松散公共耦合。若两个模块都从公共数据环境中取数合。若两个模块都从公共数据环境中取数据,又都向公共数据环境里送数据,则这据,又都向公共数据环境里送数据,则这种公共耦合叫做紧密公共耦合。只有在模种公共耦合叫做紧密公共耦合。只有在模块之间共享的数据很多,且通过参数表传块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合。递不方便时,才使用公共耦合。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目这种耦合会引起下列问题:这种耦合会引起下列问题
13、:1)所有公共耦合模块都与某一个公共数所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改据环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。某个数据的大小,将会影响到所有的模块。2)无法控制各个模块对公共数据的存取,无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。严重影响软件模块的可靠性和适应性。3)公共数据名的使用,明显降低了程序公共数据名的使用,明显降低了程序的可读性的可读性 认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目 7.内容耦合内容耦合(Content
14、 Coupling)如果发生下列情形,两个模块之间就如果发生下列情形,两个模块之间就发生了内容耦合发生了内容耦合(1)一个模块直接访问另一个模块的一个模块直接访问另一个模块的内部数据内部数据;(2)一个模块不通过正常入口转到另一个模块不通过正常入口转到另一模块内部一模块内部;(3)两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭(只可能出现在汇编语言中只可能出现在汇编语言中);(4)一个模块有多个入口。一个模块有多个入口。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目在内容耦合的情形,所访问模块的任何变在内容耦合的
15、情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都更,或者用不同的编译器对它再编译,都会造成程序出错。好在大多数高级程序设会造成程序出错。好在大多数高级程序设计语言已经设计成不允许出现内容耦合。计语言已经设计成不允许出现内容耦合。它一般出现在汇编语言程序中。这种耦合它一般出现在汇编语言程序中。这种耦合是模块独立性最弱的耦合。是模块独立性最弱的耦合。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目高 低弱 强模块耦合性模块独立性内容耦内容耦合合公共耦公共耦合合外部耦外部耦合合控制耦控制耦合合标记标记耦耦合合数据耦数据
16、耦合合非直接耦非直接耦合合认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目模块内聚模块内聚功能内聚功能内聚信息内聚信息内聚通信内聚通信内聚过程内聚过程内聚时间内聚时间内聚逻辑内聚逻辑内聚巧合内聚巧合内聚认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目功能内聚功能内聚(Functional Cohesion)一个模块中各个部分都是一个模块中各个部分都是完成某完成某一具体功能一具体功能必不可少的组成部分,必不可少的组成部分,或者说该模块中所有部分都是为或者说该
17、模块中所有部分都是为了完成一项具体功能而协同工作,了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该紧密联系,不可分割的。则称该模块为功能内聚模块。模块为功能内聚模块。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目功能内聚模块的优点是它们容易修改和维护,因为它们的功能是明确的,模块间的耦合是简单的。但是,如果把一个功能分成两个模块来解决,就会导致模块之间的很强的耦合,而且它们不易单独理解和实现。功能内聚模块的内聚程度最高。在把一个系统分解成模块的过程中,应当尽可能使模块达到功能内聚这一级,便于主程序的调用和控制。认
18、识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目信息内聚信息内聚(Informational Cohesion)这种模块这种模块完成多个功能,各个功完成多个功能,各个功能都在同一数据结构上操作,能都在同一数据结构上操作,每每一项功能有一个唯一的入口点。一项功能有一个唯一的入口点。这个模块将根据不同的要求,确这个模块将根据不同的要求,确定该执行哪一个功能。由于这个定该执行哪一个功能。由于这个模块的所有功能都是基于同一个模块的所有功能都是基于同一个数据结构(符号表),因此,它数据结构(符号表),因此,它是一个信息内聚的模块。是一个
19、信息内聚的模块。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目q信息内聚模块可以看成是多个功信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,资源或设备隐蔽在一个模块内,不为别的模块所知晓。不为别的模块所知晓。这类模块的这类模块的优点是,当把程序某些方面细节隐藏在一优点是,当把程序某些方面细
20、节隐藏在一个模块中时,各个模块的独立性就增加了。个模块中时,各个模块的独立性就增加了。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目通信内聚通信内聚(Communication Cohesion)如果一个模块内各功能部分都使如果一个模块内各功能部分都使用了相同的输入数据,或产生了用了相同的输入数据,或产生了相同的输出数据,则称之为通信相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块内聚模块。通常,通信内聚模块是通过数据流图来定义的。是通过数据流图来定义的。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除
21、。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目通信内聚模块的内聚程度比过程内聚模块通信内聚模块的内聚程度比过程内聚模块的内聚程度要高,因为在通信内聚模块中的内聚程度要高,因为在通信内聚模块中包括了许多独立的功能。但是,由于模块包括了许多独立的功能。但是,由于模块中各功能部分使用了相同的输入输出缓中各功能部分使用了相同的输入输出缓冲区,因而降低了整个系统的效率。冲区,因而降低了整个系统的效率。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶
22、贫工作高度重视,已经展开了“精准扶贫”项目过程内聚(过程内聚(Procedural Cohesion)使用流程图做为工具设计程序时,把流程使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。这三个模块都是过程内聚模块。这类模块这类模块的内聚程度比时间内聚模块的内聚程度更的内聚程度比时间内聚模块的内聚程度更强一些。另外,因为过程内聚模块仅包括强一些。另外,因为过程内聚模块
23、仅包括完整功能的一部分,所以它的内聚程度仍完整功能的一部分,所以它的内聚程度仍然比较低,模块间的耦合程度还比较高。然比较低,模块间的耦合程度还比较高。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目时间内聚(时间内聚(Classical Cohesion)时间内聚又称为经典内聚。这种时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块模块大多为多功能模块,但模块的各个功能的执行与时间有关,的各个功能的执行与时间有关,通常要求所有功能必须在同一时通常要求所有功能必须在同一时间段内执行。例如初始化模块和间段内执行。例如初始化
24、模块和终止模块。终止模块。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目时间内聚模块比逻辑内聚模块的内聚程度时间内聚模块比逻辑内聚模块的内聚程度又稍高一些。因为时间内聚模块中所有各又稍高一些。因为时间内聚模块中所有各部分都要在同一时间段内执行,而且在一部分都要在同一时间段内执行,而且在一般情形下,各部分可以以任意的顺序执行,般情形下,各部分可以以任意的顺序执行,所以它的内部逻辑更简单,存在的开关所以它的内部逻辑更简单,存在的开关(或或判定判定)转移更少转移更少。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。
25、近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目逻辑内聚(逻辑内聚(Logical Cohesion)这种模块把几种这种模块把几种 相关的功能组合相关的功能组合 在一起,每次被在一起,每次被 调用时,由传送调用时,由传送 给模块的判定参给模块的判定参 数来确定该模块数来确定该模块 应执行哪一种功应执行哪一种功 能。能。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目逻辑内聚模块比巧合内聚模块的内聚程度逻辑内聚模块比巧合内聚模块的内聚程度要高。因为它表明了各部分之间在功能上要高。因为它表明了各部分之间在功能上的相关关系
26、。但是它所执行的不是一种功的相关关系。但是它所执行的不是一种功能,而是执行若干功能中的一种,因此它能,而是执行若干功能中的一种,因此它不易修改。另外,当调用时需要进行控制不易修改。另外,当调用时需要进行控制参数的传递,这就增加了模块间的耦合程参数的传递,这就增加了模块间的耦合程度。而将未用的部分也调入内存,这就降度。而将未用的部分也调入内存,这就降低了系统的效率。低了系统的效率。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目巧合内聚(巧合内聚(Coincidental Cohesion)巧合内聚又称为偶然内聚。当模块内各部
27、巧合内聚又称为偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种分之间没有联系,或者即使有联系,这种联联 系也很松散,系也很松散,则称这种模则称这种模 块为巧合内块为巧合内 聚模块,它聚模块,它 是内聚程度是内聚程度 最低的模块。最低的模块。认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目模块内聚模块内聚认识到了贫困户贫困的根本原因,才能开始对症下药,然后药到病除。近年来国家对扶贫工作高度重视,已经展开了“精准扶贫”项目内聚和耦合是相互关联的。在程序结构中内聚和耦合是相互关联的。在程序结构中各模块的内聚程度越高,模块间的耦合程各模块的内聚程度越高,模块间的耦合程度就越低。但这也不是绝对的。软件概要度就越低。但这也不是绝对的。软件概要设计的目标是力求增加模块的内聚,尽量设计的目标是力求增加模块的内聚,尽量减少模块间的耦合,但增加内聚比减少耦减少模块间的耦合,但增加内聚比减少耦合更重要,应当把更多的注意力集中到提合更重要,应当把更多的注意力集中到提高模块的内聚程度上来。高模块的内聚程度上来。
限制150内