耦合性什么意思
耦合性,也叫耦合度,是對模塊間關聯(lián)程度的度量。耦合的強弱取決于模塊間接口的復雜性、調(diào)用模塊的方式以及通過界面?zhèn)魉蛿?shù)據(jù)的多少。
模塊間的耦合度是指模塊之間的依賴關系,包括控制關系、調(diào)用關系、數(shù)據(jù)傳遞關系。模塊間聯(lián)系越多,其耦合性越強,同時表明其獨立性越差(降低耦合性,可以提高其獨立性)。軟件設計中通常用耦合度和內(nèi)聚度作為衡量模塊獨立程度的標準。劃分模塊的一個準則就是高內(nèi)聚低耦合。
形象的說,就是要將代碼寫的和主機的排線一樣,低耦合的模塊好像你看你主機排線中的隨便一條就知道這條線是干啥一樣拔掉會不會影響其他排線的功能一樣,低耦合的模塊就好比鼠標線一樣拔掉它只影響它自身的鼠標功能,高耦合的模塊就好比主機電源線一拔掉不只影響它自身的功能其他功能也被影響了。
耦合性和內(nèi)聚性是什么意思
1、耦合性(塊間聯(lián)系)
指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性、調(diào)用的方式及傳遞的信息。
2、內(nèi)聚性(塊內(nèi)聯(lián)系)
指模塊的功能強度的度量,即一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。若一個模塊內(nèi)各元素(語名之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越高。
因此,現(xiàn)代程序講究高內(nèi)聚低耦合,即將功能內(nèi)聚在同一模塊,模塊與模塊間盡可能獨立,互相依賴低。沒有絕對沒有耦合的模塊組,只有盡量降低互相之間的影響,使模塊越獨立越好。
耦合性的七種類型
1、非直接耦合
如果兩個模塊之間沒有直接關系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的,這就是非直接耦合。這種耦合的模塊獨立性最強。
2、數(shù)據(jù)耦合
如果一個模塊訪問另一個模塊時,彼此之間是通過數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。由于限制了只通過參數(shù)表傳遞數(shù)據(jù),按數(shù)據(jù)耦合開發(fā)的程序界面簡單、安全可靠。因此,數(shù)據(jù)耦合是松散的耦合,模塊之間的獨立性比較強。在軟件程序結(jié)構(gòu)中至少必須有這類耦合。
3、標記耦合
如果一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。事實上,這組模塊共享了這個記錄,它是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。這要求這些模塊都必須清楚該記錄的結(jié)構(gòu),并按結(jié)構(gòu)要求對此記錄進行操作。在設計中應盡量避免這種耦合,它使在數(shù)據(jù)結(jié)構(gòu)上的操作復雜化了。如果采取“信息隱蔽”的方法,把在數(shù)據(jù)結(jié)構(gòu)上的操作全部集中在一個模塊中,就可以消除這種耦合。
4、控制耦合
如果一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。這種耦合的實質(zhì)是在單一接口上選擇多功能模塊中的某項功能。因此,對所控制模塊的任何修改,都會影響控制模塊。另外,控制耦合也意味著控制模塊必須知道所控制模塊內(nèi)部的一些邏輯關系,這些都會降低模塊的獨立性。
5、外部耦合
一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。
6、公共耦合
若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的互聯(lián)網(wǎng)數(shù)據(jù)環(huán)境可以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。
7、內(nèi)容耦合
如果發(fā)生下列情形,兩個模塊之間就發(fā)生了內(nèi)容耦合。
(1)一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù)。
(2)一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部。
(3)兩個模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編語言中)。
(4)一個模塊有多個入口。