您好,登錄后才能下訂單哦!
軟件架構(gòu)設(shè)計(jì)的目的簡(jiǎn)單說(shuō)就是在保持軟件內(nèi)在聯(lián)系的前提下,分解軟件系統(tǒng),降低軟件系統(tǒng)開發(fā)的復(fù)雜性,而分解軟件系統(tǒng)的基本方法無(wú)外乎分層和分割。但是在保持軟件內(nèi)在聯(lián)系的前提下,如何分層分割系統(tǒng),分層分割到什么樣的粒度,并不是一件容易的事,這方面有各種各樣的分解方法,比如:關(guān)注點(diǎn)分離,面向方面,面向?qū)ο?,面向接口,面向服?wù),依賴注入,以及各種各樣的設(shè)計(jì)原則等,
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內(nèi)容耦合:一個(gè)模塊直接訪問另一模塊的內(nèi)容,則稱這兩個(gè)模塊為內(nèi)容耦合。
若在程序中出現(xiàn)下列情況之一,則說(shuō)明兩個(gè)模塊之間發(fā)生了內(nèi)容耦合:
1. 一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù)。
2. 一個(gè)模塊不通過(guò)正常入口而直接轉(zhuǎn)入到另一個(gè)模塊的內(nèi)部。
3. 兩個(gè)模塊有一部分代碼重疊(該部分代碼具有一定的獨(dú)立功能)。
4. 一個(gè)模塊有多個(gè)入口。
內(nèi)容耦合可能在匯編語(yǔ)言中出現(xiàn)。大多數(shù)高級(jí)語(yǔ)言都已設(shè)計(jì)成不允許出現(xiàn)內(nèi)容耦合。這種耦合的耦合性最強(qiáng),模塊獨(dú)立性最弱。
(2) 公共耦合:一組模塊都訪問同一個(gè)全局?jǐn)?shù)據(jù)結(jié)構(gòu),則稱之為公共耦合。公共數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。如果模塊只是向公共數(shù)據(jù)環(huán)境輸入數(shù)據(jù),或是只從公共數(shù)據(jù)環(huán)境取出數(shù)據(jù),這屬于比較松散的公共耦合;如果模塊既向公共數(shù)據(jù)環(huán)境輸入數(shù)據(jù)又從公共數(shù)據(jù)環(huán)境取出數(shù)據(jù),這屬于較緊密的公共耦合。
公共耦合會(huì)引起以下問題:
1. 無(wú)法控制各個(gè)模塊對(duì)公共數(shù)據(jù)的存取,嚴(yán)重影響了軟件模塊的可靠性和適應(yīng)性。
2. 使軟件的可維護(hù)性變差。若一個(gè)模塊修改了公共數(shù)據(jù),則會(huì)影響相關(guān)模塊。
3. 降低了軟件的可理解性。不容易清楚知道哪些數(shù)據(jù)被哪些模塊所共享,排錯(cuò)困難。
一般地,僅當(dāng)模塊間共享的數(shù)據(jù)很多且通過(guò)參數(shù)傳遞很不方便時(shí),才使用公共耦合。
(3) 外部耦合:一組模塊都訪問同一全局簡(jiǎn)單變量,而且不通過(guò)參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。
(4) 控制耦合:模塊之間傳遞的不是數(shù)據(jù)信息,而是控制信息例如標(biāo)志、開關(guān)量等,一個(gè)模塊控制了另一個(gè)模塊的功能。
(5) 標(biāo)記耦合:調(diào)用模塊和被調(diào)用模塊之間傳遞數(shù)據(jù)結(jié)構(gòu)而不是簡(jiǎn)單數(shù)據(jù),同時(shí)也稱作特征耦合。表就和的模塊間傳遞的不是簡(jiǎn)單變量,而是像高級(jí)語(yǔ)言中的數(shù)據(jù)名、記錄名和文件名等數(shù)據(jù)結(jié)果,這些名字即為標(biāo)記,其實(shí)傳遞的是地址。
(6) 數(shù)據(jù)耦合:調(diào)用模塊和被調(diào)用模塊之間只傳遞簡(jiǎn)單的數(shù)據(jù)項(xiàng)參數(shù)。相當(dāng)于高級(jí)語(yǔ)言中的值傳遞。
(7) 非直接耦合:兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。耦合度最弱,模塊獨(dú)立性最強(qiáng)。
總結(jié):耦合是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的一個(gè)重要因素,為提高模塊的獨(dú)立性,應(yīng)建立模塊間盡可能松散的系統(tǒng),在設(shè)計(jì)上我們應(yīng)采用以下原則:若模塊間必須存在耦合,應(yīng)盡量使用數(shù)據(jù)耦合,少用控制耦合,慎用或有控制地使用公共耦合,并限制公共耦合的范圍,盡量避免內(nèi)容耦合。
紫云(深圳)軟件有限公司
云數(shù)據(jù)時(shí)代引領(lǐng)者
微信:Chizcloud
微博:http://weibo.com/Chizcloud
官網(wǎng):http://www.chizcloud.com/
聯(lián)系&投稿:service@chizcloud.com
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。