軟體架構設計的目的簡單說就是在保持軟體內在聯絡的前提下,分解軟體系統,降低軟體系統開發的複雜性,而分解軟體系統的基本方法無外乎分層和分割。但是在保持軟體內在聯絡的前提下,如何分層分割系統,分層分割到什麼樣的力度,並不是一件容易的事,這方面有各種各樣的分解方法,比如:關注點分離,面向方面,物件導向,面向介面,面向服務,依賴注入,以及各種各樣的設計原則等,
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內容耦合:有下列情形之一,兩個模組就發生了內容耦合:
*乙個模組訪問另乙個模組的內部資料
*乙個模組不通過正常入口而轉到另乙個模組的內部
*乙個模組有多個入口
(2) 公共耦合:當兩個或多個模組通過公共資料環境相互作用時,他們之間的耦合稱為公共環境耦合。
(3) 控制耦合:如果兩個模組通過引數交換資訊,交換的資訊有控制資訊,那麼這種耦合就是控制耦合。
(4) 特徵耦合:如果被呼叫的模組需要使用作為引數傳遞進來的資料結構中的所有資料時,那麼把這個資料結構作為引數整體傳送是完全正確的。但是,當把整個資料結構作為引數傳遞而使用其中一部分資料元素時,就出現了特徵耦合。在這種情況下,被呼叫的模組可以使用的資料多於它確實需要的資料,這將導致對資料的訪問失去控制,從而給計算機犯錯誤提供機會。
(5) 資料耦合:如果兩個模組通過引數交換資訊,而且交換的資訊僅僅是資料,那麼這種耦合就是資料耦合。
內聚有如下的種類,它們之間的內聚度由弱到強排列如下:
(1) 偶然內聚:模組中的**無法定義其不同功能的呼叫。但它使該模組能執行不同的功能,這種模組稱為巧合強度模組。
(2) 邏輯內聚。這種模組把幾種相關的功能組合在一起, 每次被呼叫時,由傳送給模組引數來確定該模組應完成哪一種功能
(3) 時間內聚:把需要同時執行的動作組合在一起形成的模組為時間內聚模組。
(4) 過程內聚:構件或者操作的組合方式是,允許在呼叫前面的構件或操作之後,馬上呼叫後面的構件或操作,即使兩者之間沒有資料進行傳遞。
(5) 通訊內聚:指模組內所有處理元素都在同乙個資料結構上操作(有時稱之為資訊內聚),或者指各處理使用相同的輸入資料或者產生相同的輸出資料。
(7) 功能內聚:共同完成同一功能,缺一不可,模組不可再分割。
高內聚,低耦合的系統有什麼好處呢?事實上,短期來看,並沒有很明顯的好處,甚至短期內會影響系統的開發進度,因為高內聚,低耦合的系統對開發設計人員提出了更高的要求。高內聚,低耦合的好處體現在系統持續發展的過程中,高內聚,低耦合的系統具有更好的重用性,維護性,擴充套件性,可以更高效的完成系統的維護開發,持續的支援業務的發展,而不會成為業務發展的障礙。
高內聚,低耦合
大家都在說高內聚,低耦合。問題是什麼是高內聚?什麼是低耦合?那它們的作用是什麼?先來談談什麼是耦合,耦合就是不同模組之間粘稠的程度。耦合度高證明你的模組之間粘稠,不好剝離模組功能。造成後續修改難度加大,所謂 動一發而牽全身 當你的 粘稠在一起的時候,就代表你的 需要重寫了。那麼避免這些個事情的發生,...
高內聚,低耦合
內聚,更為專業的說法叫功能內聚,是對軟體系統中元素職責相關性和集中度的度量。如果元素具有高度相關的職責,除了這些職責內的任務,沒有其它過多的工作,那麼該元素就具有高內聚性,反之則為低內聚性。其實結合oop的思想,高內聚應該是更加趨向於介面化,工廠模式可以很容易體現這種思想。即方法呼叫,只要通過相應的...
高內聚低耦合
明確一點,乙個程式如果是高內聚零耦合會是最完美的,但是沒有絕對的零耦合。也就不存在什麼完美的程式了。1 什麼是高內聚 低耦合?首先了解什麼是內聚 耦合 1.1.1內聚性 每乙個程式中可能會按照不同功能,將整個 段劃分為不同的模組,每乙個模組內部元素彼此之間會有某些聯絡,此種聯絡就是內聚性。同乙個模組...