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