軟體系統設計的正交性

2021-07-11 16:26:58 字數 1442 閱讀 4346

《程式設計師修煉之道:從小工到專家》讀書筆記:第二章 注重實效的途徑 第8部分 正交性

「正交性」是幾何學中的術語,互為直角的直角座標系就具有正交性;在計算技術中表示不依賴性或解耦性。

非正交的系統意味著系統中各元件互相高度依賴,這類系統中是不再有區域性修正的情況了。

改動得以區域性化,所以開發時間和測試時間得以降低。

正交還能促進復用。

基於正交的元件進行組合,生產率會有相當微妙的提高。(例:windows的gui,和unix的各個小命令)

能降低開發中固有的風險。

有問題的**區域被隔離。

所得系統更健壯。

正交系統能得到更好的測試。

不會與特定的**商、產品、或是平台**在一起。

有正交性的團隊特點:每個人都知道自己要做什麼,並全力做出貢獻。

不具有正交性的團隊特點:團隊的成員總在爭吵,而且好像無法避免互相妨礙;沒一次改動都需要整個團隊開會,因為任何乙個人都有可能受到影響。

如何提高團隊的正交性呢?可以從使基礎設施與應用分離開始。每個主要的基礎設施元件(資料庫、通訊介面、中介軟體,等等)有自己的子團隊。如果應用功能能明顯的區分,可以按此劃分。

專案團隊的正交性的衡量方法:每個所需改動會涉及多少人。人數越多正交性越差。

系統應該由一組相互協作的模組組成,每個模組的實現都不依賴於其他模組的功能。有時,這些元件被組織為多個層次,每層提供一級抽象。這種分層的途徑是設計正交系統的強大方式。因為每層都只使用在其下面的層次提供的抽象,在改動底層實現、而又不影響其他**方面,擁有極大的靈活性。分層也降低了模組間依賴關係的風險。

在設計元件時,可以多問問自己乙個問題:如果我顯著的改變某個特定功能背後的需求,有多少模組會受影響?

設計自己的元件時要注意:不要依賴你無法控制的事物。

也需要注意自己系統的正交性。

它是否會迫使你對**做不必要的改動。

讓細節與**隔離的好處:它使得你在以後更容易更換**商。

可維持**正交性的方法:

讓**儲存解耦:不會沒必要地向其他模組暴露任何事情,也不依賴其他模組的實現。如果要改變物件的狀態,讓這個物件替你去做。

避免使用全域性資料:每當在**中引用全域性資料時,它都把自己與共享該資料的其他元件綁在了一起。一般而言,把所需的資料顯式地傳入模組,**將更易於理解和維護。可以建立結構體,並傳入此結構的位址。

避免編寫相似的函式:重複的**是結構問題的一種症狀。關於這點可參考《設計模式》中的策略(strategy)模式。

正交地設計和實現的系統也更易於測試,因為系統的各元件間的互動是形式化的和有限的,更多的系統測試可以在單個的模組級進行。因為相比整合測試,單元測試更容易規定和進行。

正交性原則與不要重複(dry: don't repeat yourself)原則緊密相關。運用dry原則,可使系統中的重複降至最小;運用正交性原則,可降低系統中各元件間的相互依賴。結合使用這兩個原則,你會發現你開發的系統會變得更為靈活、更易於理解、並且更易於除錯、測試和維護。

軟體測試 正交試驗測試用例設計方法

正交試驗法是在大量的試驗點中挑選出適量的。有代表性的點,應用根據伽羅瓦理論匯出的正交表,合理的安排試驗的一種科學的實驗設計方法,是研究多因素多水平的一種設計方法。假設乙個web站點,需要對該站點做相容性測試,該站點相容大量的伺服器和作業系統,並且有許多具有各種外掛程式的瀏覽器 web瀏覽器 fire...

軟體測試 正交實驗法設計測試用例

正交實驗法設計基本原理 正交實驗法又稱為正交實驗設計法,是根據伽瓦羅 galois 理論,研究與處理多因素實驗的一種科學方法。正交實驗法利用已有的規格化的 正交表 從大量的實驗點中挑選出適量的 有代表性的點,合理地安排實驗,用較少的實驗次數,取得較為準確和可靠的實驗結果。例子 研究氮 磷 鉀肥施用量...

系統設計 後台系統的伸縮性

1 軟體分層 分層思想很普及,把資料流拆成幾段,比如接入層 load balancer webserver 應用服務層 platformserver 資料儲存層 資料庫database nosql 2 伸縮性定義 2.1 接入層 loadbalancer webserver 請參考乙個客戶端請求到後...