內聚

內聚

內聚(Cohesion)是一個模塊內部各成分之間相關聯程度的度量。

內聚的概念


內聚的概念是Constantine、Yourdon、Stevens等人提出的。按他們的觀點,把內聚按緊密程度從低到高排列次序為偶然內聚、邏輯內聚、時間內聚、過程內聚、通信內聚、順序內聚、功能內聚。但是緊密程度的增長是非線性的。偶然內聚和邏輯內聚的模塊聯繫鬆散,後面幾種內聚相差不多,功能內聚一個功能、獨立性強、內部結構緊密,是最理想的內聚。

內聚強度類型


內聚按強度從低到高有以下幾種類型:

偶然內聚

如果一個模塊的各成分之間毫無關係,則稱為偶然內聚,也就是說模塊完成一組任務,這些任務之間的關係鬆散,實際上沒有什麼聯繫。

邏輯內聚

幾個邏輯上相關的功能被放在同一模塊中,則稱為邏輯內聚。如一個模塊讀取各種不同類型外設的輸入。儘管邏輯內聚比偶然內聚合理一些,但邏輯內聚的模塊各成分在功能上並無關係,即使局部功能的修改有時也會影響全局,因此這類模塊的修改也比較困難。

時間內聚

如果一個模塊完成的功能必須在同一時間內執行(如系統初始化),但這些功能只是因為時間因素關聯在一起,則稱為時間內聚。

通信內聚

如果一個模塊的所有成分都操作同一數據集或生成同一數據集,則稱為通信內聚。

順序內聚

如果一個模塊的各個成分和同一個功能密切相關,而且一個成分的輸出作為另一個成分的輸入,則稱為順序內聚。

過程內聚

構件或者操作的組合方式是,允許在調用前面的構件或操作之後,馬上調用後面的構件或操作,即使兩者之間沒有數據進行傳遞。
模塊完成多個需要按一定的步驟一次完成的功能。(過程相關---控制耦合)。例如:在用程序流程圖設計模塊時,若將程序流程圖中的一部分劃出各自組成模塊,便形成過程內聚。

信息內聚

模塊完成多個功能,各個功能都在同一數據結構上操作,每一項功能有一個唯一的入口點。這個模塊將根據不同的要求,確定該模塊執行哪一個功能。由於這個模塊的所有功能都是基於同一個數據結構(符號表),因此,它是一個信息內聚的模塊。

功能內聚

模塊的所有成分對於完成單一的功能都是必須的,則稱為功能內聚。