《軟件工程》 課件 4.3 耦合_第1頁(yè)
《軟件工程》 課件 4.3 耦合_第2頁(yè)
《軟件工程》 課件 4.3 耦合_第3頁(yè)
《軟件工程》 課件 4.3 耦合_第4頁(yè)
《軟件工程》 課件 4.3 耦合_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程張爽東北大學(xué)軟件學(xué)院第四章面向?qū)ο笏枷肱c范型4.3耦合4.3耦合模塊之間的耦合Coupling按照從強(qiáng)到弱分為5個(gè)級(jí)別:強(qiáng)弱內(nèi)容耦合公共耦合控制耦合印記耦合數(shù)據(jù)耦合1、內(nèi)容耦合如果兩個(gè)模塊中的一個(gè)直接引用了另一個(gè)模塊的內(nèi)容,則它們之間就是內(nèi)容耦合ContentCoupling。模塊由語(yǔ)句和數(shù)據(jù)構(gòu)成,所謂訪問(wèn)另一個(gè)模塊的內(nèi)容,就是指訪問(wèn)另一個(gè)模塊中的語(yǔ)句或數(shù)據(jù)。1、內(nèi)容耦合例子1.在結(jié)構(gòu)化系統(tǒng)中,把指向變量的指針作為參數(shù)傳遞,則調(diào)用模塊將不僅能夠獲得該變量的值,還能直接訪問(wèn)該指針?biāo)赶虻拇鎯?chǔ)單元,也就是說(shuō)它可以直接重寫該存儲(chǔ)單元的數(shù)值。例子2.一個(gè)對(duì)象直接訪問(wèn)另一個(gè)對(duì)象的屬性。1、內(nèi)容耦合publicclassProduct{ publicfloatunitPrice; ……}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountedPrice){

myProduct.unitPrice=discountedPrice; } …...}1、內(nèi)容耦合內(nèi)容耦合非常不好,因?yàn)檫@會(huì)造成很多問(wèn)題和危險(xiǎn):必然造成兩個(gè)模塊的耦合度高,互相的交織和滲透較多,導(dǎo)致這兩個(gè)模塊的可讀性、可理解性差、可維護(hù)性差。模塊之間的高度耦合。必然導(dǎo)致模塊的獨(dú)立性差,可重用性差。模塊中的內(nèi)容可以被直接訪問(wèn),能夠篡改或損壞系統(tǒng)中重要的數(shù)據(jù),給計(jì)算機(jī)犯罪以可乘之機(jī)。1、內(nèi)容耦合publicclassProduct{

privatefloatunitPrice; publicvoidsetUnitPrice(floatdiscountPrice){ unitPrice=discountPrice; }}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountPrice){

myProduct.setUnitPrice(100.0); } …...}2、公共耦合如果兩個(gè)模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合,也稱為公共耦合CommonCoupling。2、公共耦合如某C語(yǔ)言開發(fā)的系統(tǒng)中模塊A和模塊B都直接訪問(wèn)、讀寫某些全局變量,則模塊A和B之間具有公共耦合。再如Java或C++等面向?qū)ο笳Z(yǔ)言中利用存取控制定義符public來(lái)定義公共數(shù)據(jù),類似于全局變量。2、公共耦合問(wèn)題和危險(xiǎn):(1)具有公共耦合的模塊的可讀性很差do{ ...... f1(); ...... f2(); ......}while(globalFlag<0||globalFlag>100)2、公共耦合問(wèn)題和危險(xiǎn):(2)公共耦合的模塊很難維護(hù)(3)公共耦合的模塊很難重用(4)存在公共耦合的軟件系統(tǒng)的潛在危險(xiǎn)很大盡量避免使用公共耦合慎用finalget*()和set*()3、控制耦合如果兩個(gè)模塊中的一個(gè)模塊向另一個(gè)模塊傳遞控制元素,則它們之間具有控制耦合ControlCoupling,即一個(gè)模塊明確地控制另一個(gè)模塊的邏輯。3、控制耦合3、控制耦合控制耦合導(dǎo)致被調(diào)用模塊模塊的邏輯性內(nèi)聚。反之,邏輯性內(nèi)聚的模塊必然導(dǎo)致與其調(diào)用模塊之間的控制耦合。應(yīng)該盡量避免控制耦合。4、印記耦合一些編程語(yǔ)言支持模塊之間傳遞復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如數(shù)據(jù)集合、記錄集等,如果被調(diào)用模塊只利用到傳遞的數(shù)據(jù)結(jié)構(gòu)中的一部分?jǐn)?shù)據(jù),則這兩個(gè)模塊之間具有印記耦合StampCoupling。4、印記耦合printStudentNameList(ResultSetrsStudent){ ArrayListalStudent=newArrayList();

while(rsStudent.next()){

StringStudentName=

rsStudent.getString("StudentName");

alStudent.add(StudentName);

}}4、印記耦合傳遞的數(shù)據(jù)多于所需要,這將占用多于所必要的資源;接口復(fù)雜,難讀、難懂、難維護(hù);如果預(yù)重用該模塊,那么就得向該模塊提供同樣的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),這給重用造成很大的麻煩;多余的數(shù)據(jù),將增加危險(xiǎn)性;對(duì)于系統(tǒng)運(yùn)行環(huán)境資源有限的情況,更要注意避免出現(xiàn)空間資源被不必要地占用的情況。設(shè)計(jì)和開發(fā)軟件時(shí),應(yīng)該盡量避免印記耦合。5、數(shù)據(jù)耦合如果兩個(gè)模塊之間傳遞的參數(shù),無(wú)論是簡(jiǎn)單數(shù)據(jù)類型還是復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在被調(diào)用模塊中都被全部利用,則這兩個(gè)模塊之間具有數(shù)據(jù)耦合DataCoupling。數(shù)據(jù)耦合是低耦合,是最理想的情況,它克服了前面四種耦合的不足,既不會(huì)造成模塊之間過(guò)多的依賴性,也不會(huì)造成接口的復(fù)雜性,也不會(huì)造成過(guò)多數(shù)據(jù)的傳遞,這種模塊易讀、易懂、易維護(hù)、易重用。小節(jié)理想的低耦合,如數(shù)據(jù)耦合,模塊之間的接口簡(jiǎn)單,所傳遞的參數(shù)數(shù)據(jù)在調(diào)研模塊中全部被使用,模塊有較強(qiáng)的獨(dú)立性,而且易讀、易懂、易維護(hù)、易重用。低耦合能夠促進(jìn)模塊的高內(nèi)聚,反之,高耦合則增加模塊之間的依賴程度,導(dǎo)致模塊的低內(nèi)聚。因此低耦合應(yīng)該是設(shè)計(jì)與實(shí)現(xiàn)軟件系統(tǒng)時(shí)所追求的。小節(jié)內(nèi)聚與耦合是不能割離的兩個(gè)概念,它們息息相關(guān),相輔相成。耦合必然對(duì)內(nèi)聚產(chǎn)生影響,同樣,內(nèi)聚也對(duì)耦合產(chǎn)生必然的影響:高內(nèi)聚必然使低依賴性、低耦合成為可能,而低內(nèi)聚必然導(dǎo)致

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論