什么是內聚?什么是耦合?
內聚是從功能角度來度量模塊內的聯系,一個好的內聚模塊應當恰好做一件事。它描述
的是模塊內的功能聯系; 耦合是軟件結構中各模塊之間相互連接的一種度量,耦合強弱取決
于模塊間接口的復雜程度、進入或訪問一個模塊的點以及通過接口的數據。
耦合性也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性、調用的方式及傳遞的信息。
2. 內聚分為哪幾類?耦合分為哪幾類?
內聚有如下的種類,它們之間的內聚度由弱到強排列如下:
(1) 偶然內聚。模塊中的代碼無法定義其不同功能的調用。但它使該模塊能執行不同
的功能,這種模塊稱為巧合強度模塊。
(2) 邏輯內聚。這種模塊把幾種相關的功能組合在一起, 每次被調用時,由傳送給模
塊參數來確定該模塊應完成哪一種功能
(3) 時間內聚:把需要同時執行的動作組合在一起形成的模塊為時間內聚模塊。
(4) 過程內聚:構件或者操作的組合方式是,允許在調用前面的構件或操作之后,馬上調用后面的構件或操作,即使兩者之間沒有數據進行傳遞。
(5) 通信內聚:指模塊內所有處理元素都在同一個數據結構上操作(有時稱之為信息內聚),或者指各處理使用相同的輸入數據或者產生相同的輸出數據。
(6) 順序內聚:指一個模塊中各個處理元素都密切相關于同一功能且必須順序執行,前一功能元素輸出就是下一功能元素的輸入。
(7) 功能內聚:這是最強的內聚,指模塊內所有元素共同完成一個功能,缺一不可。
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內容耦合:如果發生下列情形,兩個模塊之間就發生了內容耦合
一個模塊直接訪問另一個模塊的內部數據
一個模塊不通過正常入口轉到另一模塊內部;
兩個模塊有一部分程序代碼重疊(只可能出現在匯編語言中);
一個模塊有多個入口。
(2) 公共耦合:若一組模塊都訪問同一個公共數據環境,則它們之間的耦合就稱為公共耦合。公共的數據環境可以是全局數據結構、共享的通信區、內存的公共覆蓋區等。
(3) 外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局數據結構,而且不是通過參數表傳遞該全局變量的信息,則稱之為外部耦合。
(4) 控制耦合:如果一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合
(5) 標記耦合:一組模塊通過參數表傳遞記錄信息,就是標記耦合。這個記錄是某一數據結構的子結構,而不是簡單變量。其實傳遞的是這個數據結構的地址;也就是地址傳遞。
(6) 數據耦合:指兩個模塊之間有調用關系,傳遞的是簡單的數據值,一個模塊訪問另一個模塊時,彼此之間是通過簡單數據參數 (不是控制參數、公共數據結構或外部變量) 來交換輸入、輸出信息的,相當于高級語言的值傳遞。
(7) 非直接耦合:兩個模塊之間沒有直接關系,它們之間的聯系完全是通過主模塊的控制和調用來實現的。
耦合強度,依賴于以下幾個因素:
(1)一個模塊對另一個模塊的調用;
(2)一個模塊向另一個模塊傳遞的數據量;
(3)一個模塊施加到另一個模塊的控制的多少;
(4)模塊之間接口的復雜程度。
參考資料:
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 閱讀(1602)
評論(0) 編輯 收藏