耦合性什么意思
耦合性,,也叫耦合度,,是對(duì)模塊間關(guān)聯(lián)程度的度量。耦合的強(qiáng)弱取決于模塊間接口的復(fù)雜性,、調(diào)用模塊的方式以及通過(guò)界面?zhèn)魉蛿?shù)據(jù)的多少,。
模塊間的耦合度是指模塊之間的依賴(lài)關(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ō),就是要將代碼寫(xiě)的和主機(jī)的排線(xiàn)一樣,,低耦合的模塊好像你看你主機(jī)排線(xiàn)中的隨便一條就知道這條線(xiàn)是干啥一樣拔掉會(huì)不會(huì)影響其他排線(xiàn)的功能一樣,,低耦合的模塊就好比鼠標(biāo)線(xiàn)一樣拔掉它只影響它自身的鼠標(biāo)功能,高耦合的模塊就好比主機(jī)電源線(xiàn)一拔掉不只影響它自身的功能其他功能也被影響了,。
耦合性和內(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ú)立,互相依賴(lài)低,。沒(méi)有絕對(duì)沒(méi)有耦合的模塊組,,只有盡量降低互相之間的影響,使模塊越獨(dú)立越好,。
耦合性的七種類(lèi)型
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)交換輸入、輸出信息的,,則稱(chēng)這種耦合為數(shù)據(jù)耦合,。由于限制了只通過(guò)參數(shù)表傳遞數(shù)據(jù),按數(shù)據(jù)耦合開(kāi)發(fā)的程序界面簡(jiǎn)單,、安全可靠,。因此,數(shù)據(jù)耦合是松散的耦合,,模塊之間的獨(dú)立性比較強(qiáng),。在軟件程序結(jié)構(gòu)中至少必須有這類(lèi)耦合。
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ù)表傳遞該全局變量的信息,則稱(chēng)之為外部耦合,。
6,、公共耦合
若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱(chēng)為公共耦合,。公共的互聯(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è)入口,。