標籤:
軟體架構設計的目的簡單說就是在保持軟體內在聯絡的前提下,分解軟體系統,降低軟體系統開發的複雜性,而分解軟體系統的基本方法無外乎分層和分割。但是在保持軟體內在聯絡的前提下,如何分層分割系統,分層分割到什麼樣的粒度,並不是一件容易的事,這方面有各種各樣的分解方法,比如:關注點分離,面向方面,物件導向,面向介面,面向服務,依賴注入,以及各種各樣的設計原則等,
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內容耦合:一個模組直接存取另一模組的內容,則稱這兩個模組為內容耦合。
若在程式中出現下列情況之一,則說明兩個模組之間發生了內容耦合:
1. 一個模組直接存取另一個模組的內部資料。
2. 一個模組不通過正常入口而直接轉入到另一個模組的內部。
3. 兩個模組有一部分代碼重疊(該部分代碼具有一定的獨立功能)。
4. 一個模組有多個入口。
內容耦合可能在組合語言中出現。大多數進階語言都已設計成不允許出現內容耦合。這種耦合的耦合性最強,模組獨立性最弱。
(2) 公用耦合:一組模組都訪問同一個全域資料結構,則稱之為公用耦合。公用資料環境可以是全域資料結構、共用的通訊區、記憶體的公用覆蓋區等。如果模組只是向公用資料環境輸入資料,或是只從公用資料環境取出資料,這屬於比較鬆散的公用耦合;如果模組既向公用資料環境輸入資料又從公用資料環境取出資料,這屬於較緊密的公用耦合。
公用耦合會引起以下問題:
1. 無法控制各個模組對公用資料的存取,嚴重影響了軟體模組的可靠性和適應性。
2. 使軟體的可維護性變差。若一個模組修改了公用資料,則會影響相關模組。
3. 降低了軟體的可理解性。不容易清楚知道哪些資料被哪些模組所共用,排錯困難。
一般地,僅當模組間共用的資料很多且通過參數傳遞很不方便時,才使用公用耦合。
(3) 外部耦合:一組模組都訪問同一全域簡單變數,而且不通過參數表傳遞該全域變數的資訊,則稱之為外部耦合。
(4) 控制耦合:模組之間傳遞的不是資料資訊,而是控制資訊例如標誌、開關量等,一個模組控制了另一個模組的功能。
(5) 標記耦合:調用模組和被調用模組之間傳遞資料結構而不是簡單資料,同時也稱作特徵耦合。表就和的模組間傳遞的不是簡單變數,而是像進階語言中的資料名、記錄名和檔案名稱等資料結果,這些名字即為標記,其實傳遞的是地址。
(6) 資料耦合:調用模組和被調用模組之間只傳遞簡單的資料項目參數。相當於進階語言中的值傳遞。
(7) 非直接耦合:兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和調用來實現的。耦合度最弱,模組獨立性最強。
總結:耦合是影響軟體複雜程度和設計品質的一個重要因素,為提高模組的獨立性,應建立模組間儘可能鬆散的系統,在設計上我們應採用以下原則:若模組間必須存在耦合,應盡量使用資料耦合,少用控制耦合,慎用或有控制地使用公用耦合,並限制公用耦合的範圍,盡量避免內容耦合。
易悅(深圳)科技有限公司
讓快樂更簡單
:EJoyYOJOY
微博:http://weibo.com/EJoyYOJOY
官網:http://www.ejoytec.com/
軟體架構設計的目的