① 簡述軟體設計中內聚和耦合的概念
撇開通信、機械行業的耦合概念不提,單純針對軟體工程中的耦合概念,與之如影隨形的另一個名詞——內聚。
耦合:是對一個軟體結構內各個模塊之間相互依賴程度的度量;耦合的強弱取決於模塊間介面的復雜程度、進入或訪問一個模塊的點以及通過介面的數據。
內聚:則標志一個模塊內各個元素彼此結合的緊密程度;內聚從功能角度衡量模塊內的聯系,好的內聚模塊應當恰好做一件事。
需求的原則是:強內聚,弱耦合。然而在實際需求過程中,往往會因為技術驅動,導致需求間耦合很緊,不利於後期有效地迭代開發。有效的解決辦法是按流程、和業務梳理需求。
實際中,任何一個軟體都不可能完全做到弱耦合的。提倡弱耦合的最終目的是為了防止變更時牽扯過廣,難以控制,以及後期的有效迭代開發。因此根據實際情況,靈活的控制耦合度才是根本。比如,變更可能性很小的需求,即便耦合度高一些,也是不會有太大影響。而變更系數較大的需求,在設計時則需重點關注耦合性的問題,防止牽一發動全身的情況發生。
② 高內聚、低耦合的含義是什麼如何提高代碼的可重用性
高內聚它描述的是模塊內的功能聯系;
耦合是軟體結構中各模塊之間相互連接的一種度量,耦合強弱取決於模塊間介面的復雜程度、進入或訪問一個模塊的點以及通過介面的數據。
耦合性也稱塊間聯系。指軟體系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決於模塊間介面的復雜性、調用的方式及傳遞的信息。
③ 耦合性和內聚性
A 我剛考完 答案補充 不好意思看錯選項了 應該是B
內聚性是一個模塊內部各個元素之間彼此結合的緊密程度的度量,內聚從功能角度開度量模塊內的聯系;耦合性事模塊間互相連接的緊密程度的度量,它反映了模塊的獨立性,也反映了系統分解後的復雜程度。因此高內聚,低耦合有利於提高模塊的獨立性。
④ 如何理解"高內聚,低耦合"的軟體結構設計原則
高內聚,低耦合在軟體工程里有,主要是說模快之間和模塊內部之間的關系緊密程度
高內聚就是提高模快內部的關聯程度,低耦合當然就是降低模快之間的關聯程度
耦合性比較高的話,模塊代碼不易分離,是不好的編程模式
內聚是越高越好,內聚個人認為是只是實現一個功能,不是很多的功能
⑤ 結構化設計方法強調高內聚低耦合,OO強調類的責任單一,這些設計原則共同追求的NFR 是什麼
網路粘過來的,你看看:
基本解釋
高內聚低耦合,是軟體工程中的概念,是判斷設計好壞的標准,主要是面向對象的設計,主要是看類的內聚性是否高,耦合度是否低。
高內聚
內聚就是一個模塊內各個元素彼此結合的緊密程度,高內聚就是一個模塊內各個元素彼此結合的緊密程度高。 所謂高內聚是指一個軟體模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
低耦合
耦合:一個軟體結構內不同模塊之間互連程度的度量(耦合性也叫塊間聯系。指軟體系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差,模塊間耦合的高低取決於模塊間介面的復雜性,調用的方式以及傳遞的信息。) 對於低耦合,粗淺的理解是: 一個完整的系統,模塊與模塊之間,盡可能的使其獨立存在。 也就是說,讓每個模塊,盡可能的獨立完成某個特定的子功能。 模塊與模塊之間的介面,盡量的少而簡單。 如果某兩個模塊間的關系比較復雜的話,最好首先考慮進一步的模塊劃分。 這樣有利於修改和組合。[1]
編輯本段為什麼要追求高內聚和低耦合
軟體架構設計的目的簡單說就是在保持軟體內在聯系的前提下,分解軟體系統,降低軟體系統開發的復雜性,而分解軟體系統的基本方法無外乎分層和分割。但是在保持軟體內在聯系的前提下,如何分層分割系統,分層分割到什麼樣的粒度,並不是一件容易的事,這方面有各種各樣的分解方法,比如:關注點分離,面向方面,面向對象,面向介面,面向服務,依賴注入,以及各種各樣的設計原則等,而所有這些方法都基於高內聚,低耦合的原則。 高內聚和低耦合是相互矛盾的,分解粒度越粗的系統耦合性越低,分解粒度越細的系統內聚性越高,過度低耦合的軟體系統,軟體模塊內部不可能高內聚,而過度高內聚的軟體模塊之間必然是高度依賴的,因此如何兼顧高內聚和低耦合是軟體架構師功力的體現。 高內聚,低耦合的系統有什麼好處呢?事實上,短期來看,並沒有很明顯的好處,甚至短期內會影響系統的開發進度,因為高內聚,低耦合的系統對開發設計人員提出了更高的要求。高內聚,低耦合的好處體現在系統持續發展的過程中,高內聚,低耦合的系統具有更好的重用性,維護性,擴展性,可以更高效的完成系統的維護開發,持續的支持業務的發展,而不會成為業務發展的障礙。[2]
⑥ 高內聚 低耦合
這是判斷設計好壞的標准,主要是面向OO的設計,主要是看類的內聚性是否高,偶合度是否低。
高內聚:類與類之間的關系而定,高,意思是他們之間的關系要簡單,明了,不要有很強的關系,不然,運行起來就會出問題。一個類的運行影響到其他的類。
低偶合:類內部的方法而言。把程序的功能盡量分散,別在一個類里只寫一個或很好的方法,因為那樣會給你的調試等帶來很多問題。出了錯你都不知道在什麼地方。
⑦ 什麼是高內聚低耦合
高內聚低耦合,是軟體工程中的概念,是判斷設計好壞的標准,主要是面向對象的設計,主要看類的內聚性是否高,耦合度是否低。目的是使得模塊的可重用性、移植性大大增強。
通常程序結構中各模塊的內聚程度越高,模塊間的耦合程度就越低。內聚是從功能角度來度量模塊內的聯系,一個好的內聚模塊應當恰好做一件事。
它描述的是模塊內的功能聯系;耦合是軟體結構中各模塊之間相互連接的一種度量,耦合強弱取決於模塊間介面的復雜程度、進入或訪問一個模塊的點以及通過介面的數據。
(7)軟體工程內聚耦合擴展閱讀
實例說明:
比如訂單模塊,訂單是跟庫存息息相關的,沒有庫存就沒有訂單,訂單強依賴庫存。
把扣減庫存的邏輯直接寫在在訂單模塊中,那麼訂單模塊和庫存模塊就耦合了另一方面,訂單模塊中有扣減庫存的邏輯會造成訂單模塊的功能比較分散,功能就不夠集中,便構成了低內聚。
把訂單中的庫存邏輯給拆分出來一個獨立的庫存模塊,庫存模塊對外暴露扣減庫存的介面,訂單模塊調用介面實現減少庫存的操作,將訂單邏輯與庫存邏輯的依賴降低到最小,減小了訂單與庫存的耦合。
同時訂單模塊只包含訂單處理的邏輯,庫存系統只包含庫存的處理邏輯,兩個系統的業務上更加內聚
⑧ 計算機編程語言中的耦合是什麼意思
軟體工程中耦合
簡單地說,軟體工程中對象之間的耦合度就是對象之間的依賴性。指導使用和維護對象的主要問題是對象之間的多重依賴性。對象之間的耦合越高,維護成本越高。因此對象的設計應使類和構件之間的耦合最小。
有軟硬體之間的耦合,還有軟體各模塊之間的耦合。
耦合性是程序結構中各個模塊之間相互關聯的度量。它取決於各個模塊之間的介面的復雜程度、調用模塊的方式以及哪些信息通過介面。
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內容耦合。當一個模塊直接修改或操作另一個模塊的數據時,或一個模塊不通過不正常入口而轉入另一個模塊時,這樣的耦合被稱為內容耦合。內容耦合是最高程度的耦合,應該避免使用之。
(2) 公共耦合。兩個或兩個以上的模塊共同引用一個全局數據項,這種耦合被稱為公共耦合。在具有大量公共耦合的結構中,確定究竟是哪個模塊給全局變數賦了一個特定的值是十分困難的。
(3) 外部耦合 。一組模塊都訪問同一全局簡單變數而不是同一全局數據結構,而且不是通過參數表傳遞該全局變數的信息,則稱之為外部耦合。
(4) 控制耦合 。一個模塊通過介面向另一個模塊傳遞一個控制信號,接受信號的模塊根據信號值而進行適當的動作,這種耦合被稱為控制耦合。
(5) 標記耦合 。若一個模塊A通過介面向兩個模塊B和C傳遞一個公共參數,那麼稱模塊B和C之間存在一個標記耦合。
(6) 數據耦合。模塊之間通過參數來傳遞數據,那麼被稱為數據耦合。數據耦合和最低的一種耦合形式,系統中一般都存在這種類型的耦合,因為為了完成一些有意義的功能,往往需要將某些模塊的輸出數據作為另一些模塊的輸入數據。
(7) 非直接耦合 。兩個模塊之間沒有直接關系,它們之間的聯系完全是通過主模塊的控制和調用來實現的
總結:耦合是影響軟體復雜程度和設計質量的一個重要因素,在設計上我們應採用以下原則:如果模塊間必須存在耦合,就盡量使用數據耦合,少用控制耦合,限制公共耦合的范圍,盡量避免使用內容耦合。
e...,我猜測你所說的「計算機編程語言中的耦合」指的應該就是「如何在計算機編程時處理耦合」,那就是上面所說的了。否則,。。偶也不曉得啦
⑨ 什麼是高耦合低內聚
高耦合低內聚:塊間聯系高,塊內聯系低。
其中內聚是從功能角度來度量模塊內的聯系,一個好的內聚模塊應當恰好做一件事。它描述的是模塊內的功能聯系。
而耦合是軟體結構中各模塊之間相互連接的一種度量,耦合強弱取決於模塊間介面的復雜程度、進入或訪問一個模塊的點以及通過介面的數據。
高內聚低耦合,是軟體工程中的概念,是判斷設計好壞的標准,主要是面向對象的設計,主要是看類的內聚性是否高,耦合度是否低。
程序開發中的低耦合高內聚
模塊之間聯系越緊密,其耦合性就越強,模塊之間越獨立則越差,模塊間耦合的高低取決於模塊間介面的復雜性,調用的方式以及傳遞的信息。
形象的說,就是要將代碼寫的和電腦一樣,主類就是電腦的主機箱,當程序需要實現什麼功能的時候只需要加其他的類引入介面,就像電腦上的usb介面。
一個完整的系統,模塊與模塊之間,盡可能的使其獨立存在。也就是說,讓每個模塊,盡可能的獨立完成某個特定的子功能。
模塊與模塊之間的介面,盡量的少而簡單。如果某兩個模塊間的關系比較復雜的話,最好首先考慮進一步的模塊劃分。這樣有利於修改和組合。
在程序開發中,盡量做到低耦合高內聚,這樣程序的維護成本以及可讀性也會大大增強。