其他品牌 品牌
经销商厂商性质
上海市所在地
RITTAL 空调SK 3304540
面议RITTAL SK 3187930 空调正品质保一年
面议RITTAL电器柜配件过滤器 8001850
面议RITTAL 机柜空调风扇 W35 B98080010
面议RITTAL 制冷单元机柜 SK3302100
面议RITTAL 机柜空调 SK3366500
面议RITTAL威图空调6505200 优势供应
面议RITTAL威图 SK3126.100 空调
面议RITTAL威图空调3982070
面议原装RITTAL威图空调3302200 上海壹侨
面议RITTAL威图空调3982070
面议RITTAL 威图机柜空调SK3210110
面议上海壹侨优势RITTAL电器柜配件 8801120
上海壹侨优势RITTAL电器柜配件 7167000
上海壹侨优势RITTAL电器柜配件 5001140
上海壹侨优势RITTAL电器柜配件 8616802
上海壹侨优势RITTAL电器柜配件 9675893
上海壹侨优势RITTAL电器柜配件 9343000
上海壹侨优势RITTAL电器柜配件 6071000
上海壹侨优势RITTAL电器柜配件 9675357
上海壹侨优势RITTAL电器柜配件 3688031
上海壹侨优势RITTAL电器柜配件 8602080
上海壹侨优势RITTAL电器柜配件 7831446
上海壹侨优势RITTAL电器柜配件 8800160
上海壹侨优势RITTAL电器柜配件 5001220
上海壹侨优势RITTAL电器柜配件 3684896
上海壹侨优势RITTAL电器柜配件 9671190
上海壹侨优势RITTAL电器柜配件 7338160
上海壹侨优势RITTAL电器柜配件 9305000
上海壹侨优势RITTAL电器柜配件 3352500
上海壹侨优势RITTAL电器柜配件 7824222
上海壹侨优势RITTAL电器柜配件 9670826
上海壹侨优势RITTAL电器柜配件 7826669
上海壹侨优势RITTAL电器柜配件 3652530
上海壹侨优势RITTAL电器柜配件 9676059
上海壹侨优势RITTAL电器柜配件 3685503
上海壹侨优势RITTAL电器柜配件 3654360
上海壹侨优势RITTAL电器柜配件 9665020
上海壹侨优势RITTAL电器柜配件 7855342
上海壹侨优势RITTAL电器柜配件 9672018
上海壹侨优势RITTAL电器柜配件 9670426
上海壹侨优势RITTAL电器柜配件 9673981
上海壹侨优势RITTAL电器柜配件 9673069
上海壹侨优势RITTAL电器柜配件 9343320
上海壹侨优势RITTAL电器柜配件 7816382
上海壹侨优势RITTAL电器柜配件 1213500
上海壹侨优势RITTAL电器柜配件 7856321
上海壹侨优势RITTAL电器柜配件 8001450
上海壹侨优势RITTAL电器柜配件 9676202
上海壹侨优势RITTAL电器柜配件 8616772
上海壹侨优势RITTAL电器柜配件 9753065
上海壹侨优势RITTAL电器柜配件 2370170
上海壹侨优势RITTAL电器柜配件 3300353
上海壹侨优势RITTAL电器柜配件 1589510
上海壹侨优势RITTAL电器柜配件 2456500
上海壹侨优势RITTAL电器柜配件 3300261
上海壹侨优势RITTAL电器柜配件 9675543
上海壹侨优势RITTAL电器柜配件 3685603
上海壹侨优势RITTAL电器柜配件 9342070
上海壹侨优势RITTAL电器柜配件 6722500
上海壹侨优势RITTAL电器柜配件 9675849
上海壹侨优势RITTAL电器柜配件 9674003
上海壹侨优势RITTAL电器柜配件 3688611
上海壹侨优势RITTAL电器柜配件 9660955
上海壹侨优势RITTAL电器柜配件 7709735
上海壹侨优势RITTAL电器柜配件 9675508
上海壹侨优势RITTAL电器柜配件 7184035
上海壹侨优势RITTAL电器柜配件 3684326
上海壹侨优势RITTAL电器柜配件 3301830
上海壹侨优势RITTAL电器柜配件 9676315
上海壹侨优势RITTAL电器柜配件 8702060
上海壹侨优势RITTAL电器柜配件 9674438
上海壹侨优势RITTAL电器柜配件 7257035
上海壹侨优势RITTAL电器柜配件 9673660
上海壹侨优势RITTAL电器柜配件 6013000
上海壹侨优势RITTAL电器柜配件 3687623
上海壹侨优势RITTAL电器柜配件 3684056
上海壹侨优势RITTAL电器柜配件 7246010
上海壹侨优势RITTAL电器柜配件 3364504
上海壹侨优势RITTAL电器柜配件 8001250
上海壹侨优势RITTAL电器柜配件 8104500
上海壹侨优势RITTAL电器柜配件 9774305
上海壹侨优势RITTAL电器柜配件 9673542
上海壹侨优势RITTAL电器柜配件 9118210
上海壹侨优势RITTAL电器柜配件 9670106
上海壹侨优势RITTAL电器柜配件 3056000
上海壹侨优势RITTAL电器柜配件 7269235
上海壹侨优势RITTAL电器柜配件 3982930
上海壹侨优势RITTAL电器柜配件 3329504
上海壹侨优势RITTAL电器柜配件 9665470
上海壹侨优势RITTAL电器柜配件 9640150
上海壹侨优势RITTAL电器柜配件 2370570
上海壹侨优势RITTAL电器柜配件 9671163
上海壹侨优势RITTAL电器柜配件 8165235
上海壹侨优势RITTAL电器柜配件 6375050
上海壹侨优势RITTAL电器柜配件 7063892
上海壹侨优势RITTAL电器柜配件 3983100
上海壹侨优势RITTAL电器柜配件 7552020
上海壹侨优势RITTAL电器柜配件 3685896
上海壹侨优势RITTAL电器柜配件 7412510
上海壹侨优势RITTAL电器柜配件 9665965
上海壹侨优势RITTAL电器柜配件 9674380
上海壹侨优势RITTAL电器柜配件 3685276
上海壹侨优势RITTAL电器柜配件 9675883
上海壹侨优势RITTAL电器柜配件 8612100
上海壹侨优势RITTAL电器柜配件 8457600
上海壹侨优势RITTAL电器柜配件 8801830
上海壹侨优势RITTAL电器柜配件 2535000
上海壹侨优势RITTAL电器柜配件 9673186
上海壹侨优势RITTAL电器柜配件 3685574
上海壹侨优势RITTAL电器柜配件 3684538
上海壹侨优势RITTAL电器柜配件 9765085
上海壹侨优势RITTAL电器柜配件 9341100
上海壹侨优势RITTAL电器柜配件 9341170
上海壹侨优势RITTAL电器柜配件 3685607
上海壹侨优势RITTAL电器柜配件 1481000
上海壹侨优势RITTAL电器柜配件 2411562
上海壹侨优势RITTAL电器柜配件 8609260
上海壹侨优势RITTAL电器柜配件 7000450
模块独立的概念是功能模块化、抽象、信息隐蔽和局部化概念的直接结果。
抽象是指对事物、状态或过程之间所存在的某些相似的方面集中和概括起来,而暂时忽略他们之间的差异,即考虑抽象事物的本质特征而暂时不考虑他们的细节。信息隐蔽是指再设计功能模块时使得一个功能模块内所包含的信息(过程或数据),对于不需要这些信息的功能模块来说是不能访问的。信息隐蔽原则对于以后在软件维护期间修改软件时会带来极大的好处,因为大量数据和过程是软件的其他部分所不能觉察的,因而再对某个功能模块修改时就不大会影响到软件的其他部分,所谓局部化是指把一些关系密切的软件元素在物理位置上彼此靠近。
功能模块独立性是通过制定具有单一功能并且和其他功能模块没有过多联系的功能模块来实现的。每个功能模块只涉及该软件要求的一个具体子功能,而且与软件结构的其他部分的接口是简单的。
功能模块独立性好的软件接口简单,易于编制,独立的功能模块也比较容易测试和维护,限制了功能模块之间由于联系紧密而引起的修改副作用。独立性是保证软件质量的重要因素。
功能模块独立性度量
编辑
功能模块独立性是由内聚性和耦合性两个定性指标来度量的。内聚性是度量一个功能模块内功能强度的一个相对指标。耦合性则用来度量功能模块之间的相互联系的程度。
功能模块耦合
耦合是软件结构中各功能模块之间相互连接的一种度量,耦合强弱取决于功能模块间接口的复杂程度、进入或访问一个功能模块的点以及通过接口的数据。
耦合有以下几种,他们之间的耦合度由高到低排列:
☆内容耦合。如一个功能模块直接访问另一个功能模块的内容,则这两个功能模块称为内容耦合。
☆公共耦合。如一组功能模块都访问统一全局数据结构,则称之为公共耦合。
☆外部耦合。如一组功能模块都访问统一全局数据项,则称之为外部耦合。
☆控制耦合。如一功能模块明显地把开关量、名字等信息送入另一功能模块,控制另一功能模块的功能,则为控制耦合。
☆标记耦合。如一组功能模块共享了某个记录,而不是简单变量,即这些功能模块都需某一数据的子结构时,就需要按该记录的结构进行操作,并通过参数表来传递记录信息,这样的耦合称之为标记耦合。
☆数据耦合。如一个功能模块访问另一个功能模块,被访问的功能模块的输入和输出都是数据项参数,则这两个功能模块为数据耦合。
☆非直接耦合。若两个功能模块没有直接关系,他们之间的联系*是通过主程序的控制和调用来实现的,便称这两个功能模块为非直接耦合,独立性强。
上面只是对耦合机制进行了一个分类。原则上讲,功能模块化设计总是希望功能模块之间的耦合表现为非直接耦合方式。但是,由于问题所固有的复杂性和空间方面的考虑,有时则要根据实际情况,全面权衡,选用其它类型的耦合。 [1]
功能模块内聚
内聚是从功能角度来度量功能模块内的联系,一个好的内聚功能模块应当恰好做一件事。它描述的是功能模块内的功能联系。
内聚有如下的种类,其内聚度由弱到强排列:
☆偶然内聚。一功能模块中的代码无法定义其不同功能的调用。但它使该功能模块能执行不同的功能,这种功能模块称为巧合强度功能模块。
☆逻辑内聚。这种功能模块把几种相关的功能组合在一起,每次被调用时,有传送给功能模块参数来确定该功能模块应完成那一种功能。
☆时间内聚。这种功能模块顺序完成一类相关功能,比如初始化功能模块,它顺序为变量置初值。
☆过程内聚。如果一个功能模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。
☆通信内聚。这种功能模块除了具有过程内聚的特点外,还有另外一种关系,则它的所有功能都通过使用公共数据而发生关系。
☆顺序内聚。如果一个功能模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常一个处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。
☆功能内聚。如果一个功能模块包括并仅包括未完成某一具体任务所必需的所有成分,或者说功能模块中所有成分结合起来是为了完成一个具体的任务,此功能模块称为功能强度模块。
功能模块软件功能模块指标
编辑
系统中的各功能模块在纳入时间、激活机制和控制方式等方面可以不相同。
1)纳入时间
纳入时间是指一个功能模块被归并到软件的源语言描述之中的时间。比如宏功能模块是由编译器把它作为程序的一部分直接插入到引用位置上去的。而普通的子程序则是通过产生目标代码与连接代码而纳入到软件中的。
2)激活机制
功能模块的激活机制通常有两种:一个是通过引用来调用功能模块,另一个是通过中断来调用一个功能模块。在实时系统中,通常使用后者。比如,使用一个外部时间来引起处理过程的中断,然后使控制转到另一个功能模块。
3)控制方式
一般功能模块具有单一入口和单一出口,并作为程序的一部分顺序地执行,有时,也需要更为复杂的控制方式,如可重入功能模块。这种功能模块不以任何方式修改它自己或它所访问的局部地址,从而这样的功能模块就可以同时被几个任务使用。
4)结构分类
在软件结构中,功能模块可以分为以下几类:
顺序功能模块:它在没有明显中断情况下被应用软件调用和执行。
增量功能模块:它在调用结束之前可以被应用程序中断,然后在中断点重新启动。
并行功能模块:它在并行多处理机环境中与别的功能模块同时执行。 [2]
功能模块设计要素
编辑
1.提高功能模块独立性
在得到软件结构之后,就应首先着眼于改善功能模块的独立性,考验是否应该把一些功能模块提取或合并,力求降低耦合提高内聚。例如,多个功能模块共有的一个子功能可以独立成一个功能模块,由这些功能模块调用,有时可以通过分解或合并功能模块以减少控制信息的传递及对全局数据的引用,并且降低接口的复杂度。
2.功能模块规模适度
经验表明,当功能模块过大时,功能模块的可理解性就会迅速下降。但是对过大的功能模块分解时,也不应降低功能模块的独立性。因为当对一个大的功能模块分解时,有可能增加功能模块之间的依赖。
3.深度、宽度、扇出和扇入要适当
如果深度过大则说明有的控制模块可能简单了。如果宽度过大则说明系统的控制过于集中。而扇出过大则意味着功能模块过于复杂,需要控制和协调过多的下级模块,这时应适当地增加中间层次,扇出太小则可以把下级模块进一步分解成若干个子功能模块,或者合并到上级功能模块中去。一个功能模块的扇入是表明有多少个上级功能模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。
4.要使模块的作用范围保持在该模块的控制范围内
功能模块的作用范围是指受该功能模块内一个判定影响的所有功能模块的集合。功能模块的控制范围是指这个功能模块本身以及所有直接或间接从属于它的功能模块的集合。在一个设计得很好的系统中,所有受判定影响的功能模块应该都从属于作出判定的那个功能模块,好局限于做出判定的那个功能模块本身及它的直接下级模块。对于那些不满足这一条件的软件结构修改的办法是:将判定点上移或者将那些在作用范围内但是不在控制范围内的功能模块移植到控制范围内。
5.应减少功能模块的接口的复杂性和冗余度,并改善*性
功能模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能*。
6.设计成单入口、单出口的功能模块,避免病态连接
要防止内容耦合性,如果功能模块都是从顶部入口、从底部出口的话,这样的软件也更易于理解和易于维护。病态连接关系是指从中部进入或访问一个模块。
7.模块的功能可预测
如果一个功能模块可以当做一个黑箱,即只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。而那些具有内部记忆的功能模块则可能是不可预知的,因为它可能记载了某个内部标志并且利用这个标志去选择处理方案。由于这个标志对上级功能模块来说是看不见的,因而可能引起混乱。
8.组装软件根据设计的约束和移植的需要
组装是指用来把软件组合起来,以便把软件放入特定的处理环境或送往其他的地方。有时,设计约束要求一个程序要在内存中覆盖自己。如果有这种要求的话,原设计结构就可能必须重新组织以便按照重复的次数、存取的频率以及各次调用之间的间隔来把功能模块组合起来。模块独立的概念是功能模块化、抽象、信息隐蔽和局部化概念的直接结果。
抽象是指对事物、状态或过程之间所存在的某些相似的方面集中和概括起来,而暂时忽略他们之间的差异,即考虑抽象事物的本质特征而暂时不考虑他们的细节。信息隐蔽是指再设计功能模块时使得一个功能模块内所包含的信息(过程或数据),对于不需要这些信息的功能模块来说是不能访问的。信息隐蔽原则对于以后在软件维护期间修改软件时会带来极大的好处,因为大量数据和过程是软件的其他部分所不能觉察的,因而再对某个功能模块修改时就不大会影响到软件的其他部分,所谓局部化是指把一些关系密切的软件元素在物理位置上彼此靠近。
功能模块独立性是通过制定具有单一功能并且和其他功能模块没有过多联系的功能模块来实现的。每个功能模块只涉及该软件要求的一个具体子功能,而且与软件结构的其他部分的接口是简单的。
功能模块独立性好的软件接口简单,易于编制,独立的功能模块也比较容易测试和维护,限制了功能模块之间由于联系紧密而引起的修改副作用。独立性是保证软件质量的重要因素。
功能模块独立性度量
编辑
功能模块独立性是由内聚性和耦合性两个定性指标来度量的。内聚性是度量一个功能模块内功能强度的一个相对指标。耦合性则用来度量功能模块之间的相互联系的程度。
功能模块耦合
耦合是软件结构中各功能模块之间相互连接的一种度量,耦合强弱取决于功能模块间接口的复杂程度、进入或访问一个功能模块的点以及通过接口的数据。
耦合有以下几种,他们之间的耦合度由高到低排列:
☆内容耦合。如一个功能模块直接访问另一个功能模块的内容,则这两个功能模块称为内容耦合。
☆公共耦合。如一组功能模块都访问统一全局数据结构,则称之为公共耦合。
☆外部耦合。如一组功能模块都访问统一全局数据项,则称之为外部耦合。
☆控制耦合。如一功能模块明显地把开关量、名字等信息送入另一功能模块,控制另一功能模块的功能,则为控制耦合。
☆标记耦合。如一组功能模块共享了某个记录,而不是简单变量,即这些功能模块都需某一数据的子结构时,就需要按该记录的结构进行操作,并通过参数表来传递记录信息,这样的耦合称之为标记耦合。
☆数据耦合。如一个功能模块访问另一个功能模块,被访问的功能模块的输入和输出都是数据项参数,则这两个功能模块为数据耦合。
☆非直接耦合。若两个功能模块没有直接关系,他们之间的联系*是通过主程序的控制和调用来实现的,便称这两个功能模块为非直接耦合,独立性强。
上面只是对耦合机制进行了一个分类。原则上讲,功能模块化设计总是希望功能模块之间的耦合表现为非直接耦合方式。但是,由于问题所固有的复杂性和空间方面的考虑,有时则要根据实际情况,全面权衡,选用其它类型的耦合。 [1]
功能模块内聚
内聚是从功能角度来度量功能模块内的联系,一个好的内聚功能模块应当恰好做一件事。它描述的是功能模块内的功能联系。
内聚有如下的种类,其内聚度由弱到强排列:
☆偶然内聚。一功能模块中的代码无法定义其不同功能的调用。但它使该功能模块能执行不同的功能,这种功能模块称为巧合强度功能模块。
☆逻辑内聚。这种功能模块把几种相关的功能组合在一起,每次被调用时,有传送给功能模块参数来确定该功能模块应完成那一种功能。
☆时间内聚。这种功能模块顺序完成一类相关功能,比如初始化功能模块,它顺序为变量置初值。
☆过程内聚。如果一个功能模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。
☆通信内聚。这种功能模块除了具有过程内聚的特点外,还有另外一种关系,则它的所有功能都通过使用公共数据而发生关系。
☆顺序内聚。如果一个功能模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常一个处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。
☆功能内聚。如果一个功能模块包括并仅包括未完成某一具体任务所必需的所有成分,或者说功能模块中所有成分结合起来是为了完成一个具体的任务,此功能模块称为功能强度模块。
功能模块软件功能模块指标
编辑
系统中的各功能模块在纳入时间、激活机制和控制方式等方面可以不相同。
1)纳入时间
纳入时间是指一个功能模块被归并到软件的源语言描述之中的时间。比如宏功能模块是由编译器把它作为程序的一部分直接插入到引用位置上去的。而普通的子程序则是通过产生目标代码与连接代码而纳入到软件中的。
2)激活机制
功能模块的激活机制通常有两种:一个是通过引用来调用功能模块,另一个是通过中断来调用一个功能模块。在实时系统中,通常使用后者。比如,使用一个外部时间来引起处理过程的中断,然后使控制转到另一个功能模块。
3)控制方式
一般功能模块具有单一入口和单一出口,并作为程序的一部分顺序地执行,有时,也需要更为复杂的控制方式,如可重入功能模块。这种功能模块不以任何方式修改它自己或它所访问的局部地址,从而这样的功能模块就可以同时被几个任务使用。
4)结构分类
在软件结构中,功能模块可以分为以下几类:
顺序功能模块:它在没有明显中断情况下被应用软件调用和执行。
增量功能模块:它在调用结束之前可以被应用程序中断,然后在中断点重新启动。
并行功能模块:它在并行多处理机环境中与别的功能模块同时执行。 [2]
功能模块设计要素
编辑
1.提高功能模块独立性
在得到软件结构之后,就应首先着眼于改善功能模块的独立性,考验是否应该把一些功能模块提取或合并,力求降低耦合提高内聚。例如,多个功能模块共有的一个子功能可以独立成一个功能模块,由这些功能模块调用,有时可以通过分解或合并功能模块以减少控制信息的传递及对全局数据的引用,并且降低接口的复杂度。
2.功能模块规模适度
经验表明,当功能模块过大时,功能模块的可理解性就会迅速下降。但是对过大的功能模块分解时,也不应降低功能模块的独立性。因为当对一个大的功能模块分解时,有可能增加功能模块之间的依赖。
3.深度、宽度、扇出和扇入要适当
如果深度过大则说明有的控制模块可能简单了。如果宽度过大则说明系统的控制过于集中。而扇出过大则意味着功能模块过于复杂,需要控制和协调过多的下级模块,这时应适当地增加中间层次,扇出太小则可以把下级模块进一步分解成若干个子功能模块,或者合并到上级功能模块中去。一个功能模块的扇入是表明有多少个上级功能模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。
4.要使模块的作用范围保持在该模块的控制范围内
功能模块的作用范围是指受该功能模块内一个判定影响的所有功能模块的集合。功能模块的控制范围是指这个功能模块本身以及所有直接或间接从属于它的功能模块的集合。在一个设计得很好的系统中,所有受判定影响的功能模块应该都从属于作出判定的那个功能模块,好局限于做出判定的那个功能模块本身及它的直接下级模块。对于那些不满足这一条件的软件结构修改的办法是:将判定点上移或者将那些在作用范围内但是不在控制范围内的功能模块移植到控制范围内。
5.应减少功能模块的接口的复杂性和冗余度,并改善*性
功能模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能*。
6.设计成单入口、单出口的功能模块,避免病态连接
要防止内容耦合性,如果功能模块都是从顶部入口、从底部出口的话,这样的软件也更易于理解和易于维护。病态连接关系是指从中部进入或访问一个模块。
7.模块的功能可预测
如果一个功能模块可以当做一个黑箱,即只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。而那些具有内部记忆的功能模块则可能是不可预知的,因为它可能记载了某个内部标志并且利用这个标志去选择处理方案。由于这个标志对上级功能模块来说是看不见的,因而可能引起混乱。
8.组装软件根据设计的约束和移植的需要
组装是指用来把软件组合起来,以便把软件放入特定的处理环境或送往其他的地方。有时,设计约束要求一个程序要在内存中覆盖自己。如果有这种要求的话,原设计结构就可能必须重新组织以便按照重复的次数、存取的频率以及各次调用之间的间隔来把功能模块组合起来。模块独立的概念是功能模块化、抽象、信息隐蔽和局部化概念的直接结果。
抽象是指对事物、状态或过程之间所存在的某些相似的方面集中和概括起来,而暂时忽略他们之间的差异,即考虑抽象事物的本质特征而暂时不考虑他们的细节。信息隐蔽是指再设计功能模块时使得一个功能模块内所包含的信息(过程或数据),对于不需要这些信息的功能模块来说是不能访问的。信息隐蔽原则对于以后在软件维护期间修改软件时会带来极大的好处,因为大量数据和过程是软件的其他部分所不能觉察的,因而再对某个功能模块修改时就不大会影响到软件的其他部分,所谓局部化是指把一些关系密切的软件元素在物理位置上彼此靠近。
功能模块独立性是通过制定具有单一功能并且和其他功能模块没有过多联系的功能模块来实现的。每个功能模块只涉及该软件要求的一个具体子功能,而且与软件结构的其他部分的接口是简单的。
功能模块独立性好的软件接口简单,易于编制,独立的功能模块也比较容易测试和维护,限制了功能模块之间由于联系紧密而引起的修改副作用。独立性是保证软件质量的重要因素。
功能模块独立性度量
编辑
功能模块独立性是由内聚性和耦合性两个定性指标来度量的。内聚性是度量一个功能模块内功能强度的一个相对指标。耦合性则用来度量功能模块之间的相互联系的程度。
功能模块耦合
耦合是软件结构中各功能模块之间相互连接的一种度量,耦合强弱取决于功能模块间接口的复杂程度、进入或访问一个功能模块的点以及通过接口的数据。
耦合有以下几种,他们之间的耦合度由高到低排列:
☆内容耦合。如一个功能模块直接访问另一个功能模块的内容,则这两个功能模块称为内容耦合。
☆公共耦合。如一组功能模块都访问统一全局数据结构,则称之为公共耦合。
☆外部耦合。如一组功能模块都访问统一全局数据项,则称之为外部耦合。
☆控制耦合。如一功能模块明显地把开关量、名字等信息送入另一功能模块,控制另一功能模块的功能,则为控制耦合。
☆标记耦合。如一组功能模块共享了某个记录,而不是简单变量,即这些功能模块都需某一数据的子结构时,就需要按该记录的结构进行操作,并通过参数表来传递记录信息,这样的耦合称之为标记耦合。
☆数据耦合。如一个功能模块访问另一个功能模块,被访问的功能模块的输入和输出都是数据项参数,则这两个功能模块为数据耦合。
☆非直接耦合。若两个功能模块没有直接关系,他们之间的联系*是通过主程序的控制和调用来实现的,便称这两个功能模块为非直接耦合,独立性强。
上面只是对耦合机制进行了一个分类。原则上讲,功能模块化设计总是希望功能模块之间的耦合表现为非直接耦合方式。但是,由于问题所固有的复杂性和空间方面的考虑,有时则要根据实际情况,全面权衡,选用其它类型的耦合。 [1]
功能模块内聚
内聚是从功能角度来度量功能模块内的联系,一个好的内聚功能模块应当恰好做一件事。它描述的是功能模块内的功能联系。
内聚有如下的种类,其内聚度由弱到强排列:
☆偶然内聚。一功能模块中的代码无法定义其不同功能的调用。但它使该功能模块能执行不同的功能,这种功能模块称为巧合强度功能模块。
☆逻辑内聚。这种功能模块把几种相关的功能组合在一起,每次被调用时,有传送给功能模块参数来确定该功能模块应完成那一种功能。
☆时间内聚。这种功能模块顺序完成一类相关功能,比如初始化功能模块,它顺序为变量置初值。
☆过程内聚。如果一个功能模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。
☆通信内聚。这种功能模块除了具有过程内聚的特点外,还有另外一种关系,则它的所有功能都通过使用公共数据而发生关系。
☆顺序内聚。如果一个功能模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常一个处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。
☆功能内聚。如果一个功能模块包括并仅包括未完成某一具体任务所必需的所有成分,或者说功能模块中所有成分结合起来是为了完成一个具体的任务,此功能模块称为功能强度模块。
功能模块软件功能模块指标
编辑
系统中的各功能模块在纳入时间、激活机制和控制方式等方面可以不相同。
1)纳入时间
纳入时间是指一个功能模块被归并到软件的源语言描述之中的时间。比如宏功能模块是由编译器把它作为程序的一部分直接插入到引用位置上去的。而普通的子程序则是通过产生目标代码与连接代码而纳入到软件中的。
2)激活机制
功能模块的激活机制通常有两种:一个是通过引用来调用功能模块,另一个是通过中断来调用一个功能模块。在实时系统中,通常使用后者。比如,使用一个外部时间来引起处理过程的中断,然后使控制转到另一个功能模块。
3)控制方式
一般功能模块具有单一入口和单一出口,并作为程序的一部分顺序地执行,有时,也需要更为复杂的控制方式,如可重入功能模块。这种功能模块不以任何方式修改它自己或它所访问的局部地址,从而这样的功能模块就可以同时被几个任务使用。
4)结构分类
在软件结构中,功能模块可以分为以下几类:
顺序功能模块:它在没有明显中断情况下被应用软件调用和执行。
增量功能模块:它在调用结束之前可以被应用程序中断,然后在中断点重新启动。
并行功能模块:它在并行多处理机环境中与别的功能模块同时执行。 [2]
功能模块设计要素
编辑
1.提高功能模块独立性
在得到软件结构之后,就应首先着眼于改善功能模块的独立性,考验是否应该把一些功能模块提取或合并,力求降低耦合提高内聚。例如,多个功能模块共有的一个子功能可以独立成一个功能模块,由这些功能模块调用,有时可以通过分解或合并功能模块以减少控制信息的传递及对全局数据的引用,并且降低接口的复杂度。
2.功能模块规模适度
经验表明,当功能模块过大时,功能模块的可理解性就会迅速下降。但是对过大的功能模块分解时,也不应降低功能模块的独立性。因为当对一个大的功能模块分解时,有可能增加功能模块之间的依赖。
3.深度、宽度、扇出和扇入要适当
如果深度过大则说明有的控制模块可能简单了。如果宽度过大则说明系统的控制过于集中。而扇出过大则意味着功能模块过于复杂,需要控制和协调过多的下级模块,这时应适当地增加中间层次,扇出太小则可以把下级模块进一步分解成若干个子功能模块,或者合并到上级功能模块中去。一个功能模块的扇入是表明有多少个上级功能模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。
4.要使模块的作用范围保持在该模块的控制范围内
功能模块的作用范围是指受该功能模块内一个判定影响的所有功能模块的集合。功能模块的控制范围是指这个功能模块本身以及所有直接或间接从属于它的功能模块的集合。在一个设计得很好的系统中,所有受判定影响的功能模块应该都从属于作出判定的那个功能模块,好局限于做出判定的那个功能模块本身及它的直接下级模块。对于那些不满足这一条件的软件结构修改的办法是:将判定点上移或者将那些在作用范围内但是不在控制范围内的功能模块移植到控制范围内。
5.应减少功能模块的接口的复杂性和冗余度,并改善*性
功能模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能*。
6.设计成单入口、单出口的功能模块,避免病态连接
要防止内容耦合性,如果功能模块都是从顶部入口、从底部出口的话,这样的软件也更易于理解和易于维护。病态连接关系是指从中部进入或访问一个模块。
7.模块的功能可预测
如果一个功能模块可以当做一个黑箱,即只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。而那些具有内部记忆的功能模块则可能是不可预知的,因为它可能记载了某个内部标志并且利用这个标志去选择处理方案。由于这个标志对上级功能模块来说是看不见的,因而可能引起混乱。
8.组装软件根据设计的约束和移植的需要
组装是指用来把软件组合起来,以便把软件放入特定的处理环境或送往其他的地方。有时,设计约束要求一个程序要在内存中覆盖自己。如果有这种要求的话,原设计结构就可能必须重新组织以便按照重复的次数、存取的频率以及各次调用之间的间隔来把功能模块组合起来。
RITTAL顶装模块TS8801.775配件
RITTAL顶装模块TS8801.775配件
上海壹侨优势RITTAL电器柜配件 7484035
上海壹侨优势RITTAL电器柜配件 9345400
*RITTAL威图* 7484035
*RITTAL威图* 7480300
*RITTAL威图* 7478535
*RITTAL威图* 7474535
*RITTAL威图* 7470535
*RITTAL威图* 7466035
*RITTAL威图* 7465035
*RITTAL威图* 7445000
*RITTAL威图* 7437035
*RITTAL威图* 7412510
*RITTAL威图* 7408510
*RITTAL威图* 7402000
*RITTAL威图* 7401000
*RITTAL威图* 7394035
*RITTAL威图* 7391000
*RITTAL威图* 7338170
*RITTAL威图* 7338168
*RITTAL威图* 7338166
*RITTAL威图* 7338164
*RITTAL威图* 7338163
*RITTAL威图* 7338160
*RITTAL威图* 7338130
*RITTAL威图* 7320830
*RITTAL威图* 7320820
*RITTAL威图* 7320813
*RITTAL威图* 7320812
*RITTAL威图* 7320794
*RITTAL威图* 7320790
*RITTAL威图* 7320730
*RITTAL威图* 7320721
*RITTAL威图* 7320700
*RITTAL威图* 7320631
*RITTAL威图* 7320570
*RITTAL威图* 7320560
*RITTAL威图* 7320530
*RITTAL威图* 7320491
*RITTAL威图* 7320481
*RITTAL威图* 7320475
*RITTAL威图* 7320472
*RITTAL威图* 7320441
*RITTAL威图* 7300335
*RITTAL威图* 7300240
*RITTAL威图* 7300230
*RITTAL威图* 7299000
*RITTAL威图* 7298000
*RITTAL威图* 7297000
*RITTAL威图* 7284135
*RITTAL威图* 7283035
*RITTAL威图* 7282135
*RITTAL威图* 7282035
*RITTAL威图* 7280100
*RITTAL威图* 7269235
*RITTAL威图* 7269135
*RITTAL威图* 7265035
*RITTAL威图* 7257200
*RITTAL威图* 7257105
*RITTAL威图* 7257050
*RITTAL威图* 7257035
*RITTAL威图* 7255035
*RITTAL威图* 7246420
*RITTAL威图* 7246100
*RITTAL威图* 7246060
*RITTAL威图* 7246030
*RITTAL威图* 7246010
*RITTAL威图* 7242015
*RITTAL威图* 7242005
*RITTAL威图* 7241500
*RITTAL威图* 7241065
*RITTAL威图* 7241015
*RITTAL威图* 7241005
*RITTAL威图* 7240600
*RITTAL威图* 7240370
*RITTAL威图* 7240330
*RITTAL威图* 7240305
*RITTAL威图* 7240300
*RITTAL威图* 7240260
*RITTAL威图* 7240250
*RITTAL威图* 7240240
*RITTAL威图* 7240220
*RITTAL威图* 7240210
*RITTAL威图* 7240205
*RITTAL威图* 7240201
*RITTAL威图* 7240200
*RITTAL威图* 7240190
*RITTAL威图* 7240150
*RITTAL威图* 7240130
*RITTAL威图* 7240110
*RITTAL威图* 7228035
*RITTAL威图* 7220600
*RITTAL威图* 7219035
*RITTAL威图* 7200630
*RITTAL威图* 7200450
*RITTAL威图* 7200216
*RITTAL威图* 7200215
*RITTAL威图* 7200001
*RITTAL威图* 7186735
*RITTAL威图* 7186035
*RITTAL威图* 7185035
*RITTAL威图* 7184035
*RITTAL威图* 7183100
*RITTAL威图* 7169535
*RITTAL威图* 7167000
*RITTAL威图* 7164035
*RITTAL威图* 7163565
*RITTAL威图* 7163550
*RITTAL威图* 7163500
*RITTAL威图* 7161700
*RITTAL威图* 7159035
*RITTAL威图* 7157035
*RITTAL威图* 7156035
*RITTAL威图* 7156005
*RITTAL威图* 7153035
*RITTAL威图* 7152035
*RITTAL威图* 7152005
*RITTAL威图* 7151208
*RITTAL威图* 7151206
*RITTAL威图* 7151110
*RITTAL威图* 7151035
*RITTAL威图* 7151005
*RITTAL威图* 7147035
*RITTAL威图* 7145635
*RITTAL威图* 7145605
*RITTAL威图* 7145535
*RITTAL威图* 7145005
*RITTAL威图* 7143035
*RITTAL威图* 7140535
*RITTAL威图* 7124035
*RITTAL威图* 7119455
*RITTAL威图* 7119400
*RITTAL威图* 7119255
*RITTAL威图* 7119250
*RITTAL威图* 7119155
*RITTAL威图* 7119140
*RITTAL威图* 7116500
*RITTAL威图* 7115000
*RITTAL威图* 7113000
*RITTAL威图* 7112000
*RITTAL威图* 7111900
*RITTAL威图* 7111222
*RITTAL威图* 7111220
*RITTAL威图* 7111210
*RITTAL威图* 7111000
*RITTAL威图* 7109200
*RITTAL威图* 7109035
*RITTAL威图* 7102000
*RITTAL威图* 7100000
*RITTAL威图* 7098000
*RITTAL威图* 7097340
*RITTAL威图* 7097300
*RITTAL威图* 7097260
*RITTAL威图* 7097000
*RITTAL威图* 7096000
*RITTAL威图* 7095000
*RITTAL威图* 7094140
*RITTAL威图* 7094130
*RITTAL威图* 7094100
*RITTAL威图* 7091000
*RITTAL威图* 7089535
*RITTAL威图* 7087535
*RITTAL威图* 7081000
*RITTAL威图* 7078000
*RITTAL威图* 7072240
*RITTAL威图* 7072230
*RITTAL威图* 7072200
*RITTAL威图* 7072100
*RITTAL威图* 7067200
*RITTAL威图* 7067100
*RITTAL威图* 7066000
*RITTAL威图* 7065000
*RITTAL威图* 7064110
*RITTAL威图* 7064100
*RITTAL威图* 7063897
*RITTAL威图* 7063895
*RITTAL威图* 7063892
*RITTAL威图* 7063860
*RITTAL威图* 7063850
*RITTAL威图* 7063837
*RITTAL威图* 7063835
*RITTAL威图* 7063752
*RITTAL威图* 7063750
*RITTAL威图* 7063740
*RITTAL威图* 7063720
*RITTAL威图* 7063710
*RITTAL威图* 7063000
*RITTAL威图* 7061000
*RITTAL威图* 7051000
*RITTAL威图* 7050200
*RITTAL威图* 7040361
*RITTAL威图* 7040315
*RITTAL威图* 7040311
*RITTAL威图* 7040301
*RITTAL威图* 7040212
*RITTAL威图* 7040211
*RITTAL威图* 7040203
*RITTAL威图* 7040202
*RITTAL威图* 7040201
*RITTAL威图* 7040120
*RITTAL威图* 7040110
*RITTAL威图* 7040075
*RITTAL威图* 7040070
*RITTAL威图* 7040065
*RITTAL威图* 7040060
*RITTAL威图* 7040040
*RITTAL威图* 7040020
*RITTAL威图* 7040010
*RITTAL威图* 7030230
上海壹侨优势RITTAL电器柜配件 2531000
上海壹侨优势RITTAL电器柜配件 7474535
上海壹侨优势RITTAL电器柜配件 2487000
RITTAL顶装模块TS8801.775
RITTAL顶装模块TS8801.775