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