耦合性什么意思
耦(ou)合性,也(ye)叫(jiao)耦(ou)合度(du),是(shi)對模塊間關聯程(cheng)度(du)的度(du)量。耦(ou)合的強弱取決于(yu)模塊間接口的復雜性、調用模塊的方(fang)式以及通(tong)過界面(mian)傳送數據的多少(shao)。
模塊間的耦合度是指模塊之間的依賴關系,包括控制關系、調用關系、數據傳遞關系。模塊間聯系越多,其耦合性越強,同時表明其獨立性越差(降低耦合性,可以提高其獨立性)。軟件設計中(zhong)通(tong)常用耦合(he)度和內(nei)聚(ju)度作為(wei)衡量模(mo)塊(kuai)獨(du)立程(cheng)度的標準。劃(hua)分模(mo)塊(kuai)的一個準則就(jiu)是高內(nei)聚(ju)低耦合(he)。
形象的(de)(de)說,就(jiu)是要將代碼寫的(de)(de)和主機(ji)的(de)(de)排線(xian)一(yi)(yi)樣,低耦(ou)合的(de)(de)模(mo)塊(kuai)好像你看你主機(ji)排線(xian)中的(de)(de)隨便一(yi)(yi)條(tiao)就(jiu)知道這條(tiao)線(xian)是干啥一(yi)(yi)樣拔(ba)掉會(hui)不(bu)會(hui)影響其他排線(xian)的(de)(de)功(gong)能一(yi)(yi)樣,低耦(ou)合的(de)(de)模(mo)塊(kuai)就(jiu)好比鼠(shu)標(biao)線(xian)一(yi)(yi)樣拔(ba)掉它(ta)只影響它(ta)自(zi)身(shen)的(de)(de)鼠(shu)標(biao)功(gong)能,高耦(ou)合的(de)(de)模(mo)塊(kuai)就(jiu)好比主機(ji)電源線(xian)一(yi)(yi)拔(ba)掉不(bu)只影響它(ta)自(zi)身(shen)的(de)(de)功(gong)能其他功(gong)能也被影響了。
耦合性和內聚性是什么意思
1、耦合(he)性(xing)(塊(kuai)間聯(lian)系(xi))
指軟件系統結構中各模(mo)塊間(jian)相互聯系緊(jin)密(mi)程度的(de)一(yi)種(zhong)度量。模(mo)塊之間(jian)聯系越(yue)緊(jin)密(mi),其耦合性就越(yue)強,模(mo)塊的(de)獨立性則越(yue)差。模(mo)塊間(jian)耦合高低取決(jue)于(yu)模(mo)塊間(jian)接口的(de)復雜性、調用的(de)方式及傳遞(di)的(de)信息。
2、內聚性(塊內聯系)
指模塊的功(gong)能(neng)強度(du)的度(du)量(liang),即一(yi)個(ge)模塊內部各(ge)個(ge)元(yuan)素(su)彼(bi)此結合的緊密程(cheng)度(du)的度(du)量(liang)。若一(yi)個(ge)模塊內各(ge)元(yuan)素(su)(語名之間、程(cheng)序段之間)聯系的越緊密,則它的內聚性就越高。
因此(ci),現(xian)代程序講究(jiu)高內(nei)聚(ju)(ju)低耦合,即將(jiang)功(gong)能(neng)內(nei)聚(ju)(ju)在(zai)同一模塊(kuai),模塊(kuai)與模塊(kuai)間盡可能(neng)獨立,互相(xiang)依(yi)賴低。沒有絕對(dui)沒有耦合的模塊(kuai)組(zu),只有盡量降低互相(xiang)之間的影響,使(shi)模塊(kuai)越(yue)(yue)獨立越(yue)(yue)好。
耦合性的七種類型
1、非直接耦合
如果兩(liang)個模(mo)塊(kuai)之間(jian)(jian)沒有(you)直接關系,它們之間(jian)(jian)的聯(lian)系完全是通過主模(mo)塊(kuai)的控制和調用來實現(xian)的,這(zhe)就是非直接耦(ou)合。這(zhe)種耦(ou)合的模(mo)塊(kuai)獨立(li)性最強(qiang)。
2、數據耦合
如果一(yi)個模塊(kuai)訪問另一(yi)個模塊(kuai)時,彼此之間是(shi)通過數(shu)(shu)據(ju)參數(shu)(shu)(不是(shi)控制(zhi)參數(shu)(shu)、公共數(shu)(shu)據(ju)結(jie)構或外部變量)來交(jiao)換輸入(ru)、輸出(chu)信息的(de)(de),則稱這種耦(ou)(ou)合(he)為數(shu)(shu)據(ju)耦(ou)(ou)合(he)。由于限制(zhi)了只通過參數(shu)(shu)表傳遞數(shu)(shu)據(ju),按數(shu)(shu)據(ju)耦(ou)(ou)合(he)開(kai)發的(de)(de)程(cheng)序界面(mian)簡單、安全(quan)可靠。因(yin)此,數(shu)(shu)據(ju)耦(ou)(ou)合(he)是(shi)松散的(de)(de)耦(ou)(ou)合(he),模塊(kuai)之間的(de)(de)獨立性比(bi)較強。在軟件程(cheng)序結(jie)構中至(zhi)少必須有這類耦(ou)(ou)合(he)。
3、標記耦合
如果(guo)一組模(mo)塊(kuai)(kuai)通(tong)過參數(shu)表傳(chuan)遞記(ji)錄信(xin)(xin)息,就是(shi)標記(ji)耦合(he)。事實上,這組模(mo)塊(kuai)(kuai)共享了這個(ge)記(ji)錄,它是(shi)某一數(shu)據(ju)(ju)結(jie)構(gou)(gou)的子結(jie)構(gou)(gou),而不是(shi)簡單變量(liang)。這要求(qiu)這些模(mo)塊(kuai)(kuai)都(dou)必須(xu)清楚(chu)該記(ji)錄的結(jie)構(gou)(gou),并按結(jie)構(gou)(gou)要求(qiu)對此記(ji)錄進行操(cao)作(zuo)。在(zai)(zai)設(she)計中應盡量(liang)避免這種(zhong)耦合(he),它使(shi)在(zai)(zai)數(shu)據(ju)(ju)結(jie)構(gou)(gou)上的操(cao)作(zuo)復雜化(hua)了。如果(guo)采取“信(xin)(xin)息隱蔽”的方法,把在(zai)(zai)數(shu)據(ju)(ju)結(jie)構(gou)(gou)上的操(cao)作(zuo)全部集(ji)中在(zai)(zai)一個(ge)模(mo)塊(kuai)(kuai)中,就可以消除這種(zhong)耦合(he)。
4、控制耦合
如果一個模(mo)塊通過傳送開關(guan)(guan)、標志、名字(zi)等控(kong)制(zhi)(zhi)(zhi)信息(xi),明顯(xian)地控(kong)制(zhi)(zhi)(zhi)選(xuan)擇另一模(mo)塊的功(gong)能,就是控(kong)制(zhi)(zhi)(zhi)耦合。這種耦合的實質是在單一接口(kou)上選(xuan)擇多功(gong)能模(mo)塊中的某項功(gong)能。因此,對所(suo)控(kong)制(zhi)(zhi)(zhi)模(mo)塊的任何(he)修(xiu)改,都會影響控(kong)制(zhi)(zhi)(zhi)模(mo)塊。另外,控(kong)制(zhi)(zhi)(zhi)耦合也意(yi)味著(zhu)控(kong)制(zhi)(zhi)(zhi)模(mo)塊必須知道(dao)所(suo)控(kong)制(zhi)(zhi)(zhi)模(mo)塊內部的一些(xie)邏(luo)輯(ji)關(guan)(guan)系,這些(xie)都會降低(di)模(mo)塊的獨立性。
5、外部耦合
一組模塊都(dou)訪問同(tong)(tong)一全局(ju)簡單變(bian)(bian)量(liang)而不是(shi)同(tong)(tong)一全局(ju)數據結構,而且不是(shi)通過參數表傳遞(di)該全局(ju)變(bian)(bian)量(liang)的信息(xi),則稱之為外部耦合。
6、公共耦合
若一組模塊都訪問同一個公共數據環境,則它們之間的耦合就稱為公共耦合。公共的互聯網數(shu)據環境可以是全局數(shu)據結構(gou)、共享的(de)通信區(qu)、內存(cun)的(de)公共覆蓋區(qu)等。
7、內容耦合
如果發生下列情(qing)形,兩個(ge)模塊之間就發生了內(nei)容耦合。
(1)一(yi)個模塊直接訪(fang)問(wen)另一(yi)個模塊的內部數據。
(2)一(yi)個模塊不通過正常入口轉到另一(yi)模塊內部。
(3)兩個模塊有一部分程序代(dai)碼(ma)重疊(只可能出現在匯(hui)編語言中(zhong))。
(4)一個(ge)(ge)模塊有多個(ge)(ge)入口。