隨筆-31  評(píng)論-2  文章-0  trackbacks-0
          什么是內(nèi)聚?什么是耦合?
          內(nèi)聚是從功能角度來(lái)度量模塊內(nèi)的聯(lián)系,一個(gè)好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事。它描述
          的是模塊內(nèi)的功能聯(lián)系; 耦合是軟件結(jié)構(gòu)中各模塊之間相互連接的一種度量,耦合強(qiáng)弱取決
          于模塊間接口的復(fù)雜程度、進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn)以及通過(guò)接口的數(shù)據(jù)。
          耦合性也稱塊間聯(lián)系。指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強(qiáng),模塊的獨(dú)立性則越差。模塊間耦合高低取決于模塊間接口的復(fù)雜性、調(diào)用的方式及傳遞的信息。

          2. 內(nèi)聚分為哪幾類?耦合分為哪幾類?
                內(nèi)聚有如下的種類,它們之間的內(nèi)聚度由弱到強(qiáng)排列如下:
          (1) 偶然內(nèi)聚。模塊中的代碼無(wú)法定義其不同功能的調(diào)用。但它使該模塊能執(zhí)行不同
          的功能,這種模塊稱為巧合強(qiáng)度模塊。
          (2) 邏輯內(nèi)聚。這種模塊把幾種相關(guān)的功能組合在一起, 每次被調(diào)用時(shí),由傳送給模
          塊參數(shù)來(lái)確定該模塊應(yīng)完成哪一種功能
          (3) 時(shí)間內(nèi)聚:把需要同時(shí)執(zhí)行的動(dòng)作組合在一起形成的模塊為時(shí)間內(nèi)聚模塊。
          (4) 過(guò)程內(nèi)聚:構(gòu)件或者操作的組合方式是,允許在調(diào)用前面的構(gòu)件或操作之后,馬上調(diào)用后面的構(gòu)件或操作,即使兩者之間沒(méi)有數(shù)據(jù)進(jìn)行傳遞。
          (5) 通信內(nèi)聚:指模塊內(nèi)所有處理元素都在同一個(gè)數(shù)據(jù)結(jié)構(gòu)上操作(有時(shí)稱之為信息內(nèi)聚),或者指各處理使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù)。
          (6) 順序內(nèi)聚:指一個(gè)模塊中各個(gè)處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能元素輸出就是下一功能元素的輸入。
          (7) 功能內(nèi)聚:這是最強(qiáng)的內(nèi)聚,指模塊內(nèi)所有元素共同完成一個(gè)功能,缺一不可。
          耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
          (1) 內(nèi)容耦合:如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合
          一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù)
          一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部;
          兩個(gè)模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編語(yǔ)言中);
          一個(gè)模塊有多個(gè)入口。
          (2) 公共耦合:若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。
          (3) 外部耦合:一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。
          (4) 控制耦合:如果一個(gè)模塊通過(guò)傳送開(kāi)關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合
          (5) 標(biāo)記耦合:一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。其實(shí)傳遞的是這個(gè)數(shù)據(jù)結(jié)構(gòu)的地址;也就是地址傳遞。
          (6) 數(shù)據(jù)耦合:指兩個(gè)模塊之間有調(diào)用關(guān)系,傳遞的是簡(jiǎn)單的數(shù)據(jù)值,一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量) 來(lái)交換輸入、輸出信息的,相當(dāng)于高級(jí)語(yǔ)言的值傳遞。
          (7) 非直接耦合:兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。
          耦合強(qiáng)度,依賴于以下幾個(gè)因素:
          (1)一個(gè)模塊對(duì)另一個(gè)模塊的調(diào)用;
          (2)一個(gè)模塊向另一個(gè)模塊傳遞的數(shù)據(jù)量;
          (3)一個(gè)模塊施加到另一個(gè)模塊的控制的多少;
          (4)模塊之間接口的復(fù)雜程度。


          參考資料:

          http://baike.baidu.com/view/156245.html

          http://www.cnblogs.com/dqshll/articles/1116799.html

          http://blog.zol.com.cn/858/article_857495.html

          posted on 2009-08-03 23:06 xiaoxinchen 閱讀(1610) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 开封市| 崇文区| 正定县| 库车县| 田阳县| 双牌县| 永丰县| 伊金霍洛旗| 肇源县| 巴彦淖尔市| 成都市| 新干县| 云阳县| 河源市| 乌拉特中旗| 锦屏县| 台中县| 大港区| 时尚| 保定市| 天水市| 承德县| 从江县| 永平县| 建德市| 绥中县| 泸水县| 上高县| 平陆县| 镇安县| 龙游县| 琼中| 德安县| 库车县| 突泉县| 四川省| 临城县| 新密市| 黄石市| 定日县| 湾仔区|