
Product category
软件功能BECKHOFF??橹副昙疤岣吖δ苣?槎懒⑿?/p>
BECKHOFF??楣δ苣?榛母菔?,如果一个问题有多个问题组合而成,那么这个组合问题的复杂程度将大于分别考虑这个问题时的复杂程度之和。这个结论使得人们乐于利用功能模块化方法将复杂的问题分解成许多容易解决的局部问题。
功能??榛椒ú⒉坏扔谖尴拗频胤指钊砑蛭孀殴δ苣?榈脑龆啵淙豢⒌ジ龉δ苣?榈墓ぷ髁考跎倭耍巧杓乒δ苣?榧浣涌谒璧墓ぷ髁恳步黾?,而且会出现意想不到的软件缺陷。因此,只有选择合适的功能模块数目才会使整个系统的开发成本最小。
功能??槎懒⒌母拍钍枪δ苣?榛?、抽象、信息隐蔽和局部化概念的直接结果。
抽象是指对事物、状态或过程之间所存在的某些相似的方面集中和概括起来,而暂时忽略他们之间的差异,即考虑抽象事物的本质特征而暂时不考虑他们的细节。信息隐蔽是指再设计功能??槭笔沟靡桓龉δ苣?槟谒男畔ⅲü袒蚴荩?,对于不需要这些信息的功能??槔此凳遣荒芊梦实?。信息隐蔽原则对于以后在软件维护期间修改软件时会带来极大的好处,因为大量数据和过程是软件的其他部分所不能觉察的,因而再对某个功能??樾薷氖本筒淮蠡嵊跋斓饺砑钠渌糠?,所谓局部化是指把一些关系密切的软件元素在物理位置上彼此靠近。
功能??槎懒⑿允峭ü贫ň哂械ヒ还δ懿⑶液推渌δ苣?槊挥泄嗔档墓δ苣?槔词迪值?。每个功能??橹簧婕案萌砑蟮囊桓鼍咛遄庸δ?,而且与软件结构的其他部分的接口是简单的。
功能模块独立性好的软件接口简单,易于编制,独立的功能??橐脖冉先菀撞馐院臀?,限制了功能??橹溆捎诹到裘芏鸬男薷母弊饔谩6懒⑿允潜Vと砑柿康闹匾蛩?。
功能??槎懒⑿允怯赡诰坌院婉詈闲粤礁龆ㄐ灾副昀炊攘康?。内聚性是度量一个功能??槟诠δ芮慷鹊囊桓鱿喽灾副?。耦合性则用来度量功能??橹涞南嗷チ档某潭?。
各功能??橹湎嗷チ拥囊恢侄攘?,耦合强弱取决于功能??榧浣涌诘母丛映潭?、进入或访问一个功能??榈牡阋约巴ü涌诘氖荨?/p>
耦合有以下几种,他们之间的耦合度由高到低排列:
上面只是对耦合机制进行了一个分类。原则上讲,功能??榛杓谱苁窍Mδ苣?橹涞鸟詈媳硐治侵苯玉詈戏绞健5?,由于问题所固有的复杂性
如果一个功能??榘ú⒔霭ㄎ赐瓿赡骋痪咛迦挝袼匦璧乃谐煞?,或者说功能??橹兴谐煞纸岷掀鹄词俏送瓿梢桓鼍咛宓娜挝?,此功能??槌莆δ芮慷饶?椤?/p>
系统中的各功能??樵谀扇胧奔洹⒓せ罨坪涂刂品绞降确矫婵梢圆幌嗤?。
1)纳入时间
纳入时间是指一个功能??楸还椴⒌饺砑脑从镅悦枋鲋械氖奔?。比如宏功能模块是由编译器把它作为程序的一部分直接插入到引用位置上去的。而普通的子程序则是通过产生目标代码与连接代码而纳入到软件中的。
2)激活机制
功能模块的激活机制通常有两种:一个是通过引用来调用功能???,另一个是通过中断来调用一个功能???。在实时系统中,通常使用后者。比如,使用一个外部时间来引起处理过程的中断,然后使控制转到另一个功能???。
3)控制方式
一般功能??榫哂械ヒ蝗肟诤偷ヒ怀隹?,并作为程序的一部分顺序地执行,有时,也需要更为复杂的控制方式,如可重入功能???。这种功能??椴灰匀魏畏绞叫薷乃约夯蛩梦实木植康刂?,从而这样的功能??榫涂梢酝北患父鋈挝袷褂?。
4)结构分类
1.提高功能模块独立性
在得到软件结构之后,就应首先着眼于改善功能??榈亩懒⑿裕佳槭欠裼Ω冒岩恍┕δ苣?樘崛』蚝喜?,力求降低耦合提高内聚。例如,多个功能??楣灿械囊桓鲎庸δ芸梢远懒⒊梢桓龉δ苣??,由这些功能模块调用,有时可以通过分解或合并功能??橐约跎倏刂菩畔⒌拇菁岸匀质莸囊?,并且降低接口的复杂度。
2.功能模块规模适度
经验表明,当功能??楣笫保δ苣?榈目衫斫庑跃突嵫杆傧陆?。但是对过大的功能模块分解时,也不应降低功能模块的独立性。因为当对一个大的功能??榉纸馐保锌赡茉黾庸δ苣?橹涞囊览怠?/p>
3.深度、宽度、扇出和扇入要适当
如果深度过大则说明有的控制??榭赡芗虻チ?。如果宽度过大则说明系统的控制过于集中。而扇出过大则意味着功能??楣诟丛?,需要控制和协调过多的下级模块,这时应适当地增加中间层次,扇出太小则可以把下级??榻徊椒纸獬扇舾筛鲎庸δ苣??,或者合并到上级功能??橹腥ァR桓龉δ苣?榈纳热胧潜砻饔卸嗌俑錾霞豆δ苣?橹苯拥饔盟?,扇入越大则共享该??榈纳霞赌?槭吭蕉啵馐怯泻么Φ?。
4.要使??榈淖饔梅段П3衷诟媚?榈目刂品段?/p>
功能??榈淖饔梅段侵甘芨霉δ苣?槟谝桓雠卸ㄓ跋斓乃泄δ苣?榈募稀9δ苣?榈目刂品段侵刚飧龉δ苣?楸旧硪约八兄苯踊蚣浣哟邮粲谒墓δ苣?榈募?。在一个设计得很好的系统中,所有受判定影响的功能模块应该都从属于作出判定的那个功能???,最好局限于做出判定的那个功能??楸旧砑八闹苯酉录赌??。对于那些不满足这一条件的软件结构修改的办法是:将判定点上移或者将那些在作用范围内但是不在控制范围内的功能模块移植到控制范围内。
5.应减少功能??榈慕涌诘母丛有院腿哂喽?,并改善一致性
功能??榻涌诟丛邮侨砑⑸砦蟮囊桓鲋饕?。应该仔细设计??榻涌冢沟眯畔⒋菁虻ゲ⑶液湍?榈墓δ芤恢隆?/p>
6.设计成单入口、单出口的功能模块,避免病态连接
要防止内容耦合性,如果功能??槎际谴佣ゲ咳肟?、从底部出口的话,这样的软件也更易于理解和易于维护。病态连接关系是指从中部进入或访问一个??椤?/p>
7.??榈墓δ芸稍げ?/p>
如果一个功能??榭梢缘弊鲆桓龊谙洌粗灰淙氲氖菹嗤筒氖涑?,这个??榈墓δ芫褪强梢栽げ獾?。而那些具有内部记忆的功能模块则可能是不可预知的,因为它可能记载了某个内部标志并且利用这个标志去选择处理方案。由于这个标志对上级功能模块来说是看不见的,因而可能引起混乱。