天天看點

軟體架構品質屬性之可修改性

作者:系統架構設計師

軟體架構的品質屬性分為 6 種:可用性、可修改性、性能、安全性、可測試性、易用性。其他的品質屬性一般可納入這幾個屬性中。

軟體架構的可修改性

可修改性是指軟體架構重要的品質屬性,是架構能在不影響其他部分的情況下對其進行更改。可修改性是軟體工程中的一個重要原則,因為随着需求的變化,需要對軟體進行不斷的更改。如果軟體架構不具有可修改性,則可能需要重新設計整個系統,這是非常昂貴和麻煩的。

可修改性可以通過采用子產品化設計、分層架構和抽象程式設計等方法來實作。例如,使用子產品化設計可以確定系統的各個部分獨立于其他部分,并且可以單獨修改和更新。分層架構可以確定系統的各個層之間是獨立的,并且可以分開修改和更新。抽象程式設計可以幫助隐藏系統的複雜性,并簡化對系統的修改。

總的來說,軟體架構的可修改性是一個非常重要的因素,對于確定軟體的長期可用性和可擴充性至關重要。

軟體架構品質屬性之可修改性

采用品質屬性場景作為一種描述品質屬性需求的規範,它由6個部分組成(刺激源、刺激、環境、制品、響應、響應度量)。

軟體架構品質屬性之可修改性

刺激源:生成該刺激的實體(人、計算機系統或其他激勵器);

刺激:刺激到達系統時可能産生的影響(即需要考慮和關注的情況);

環境:該刺激在某條件内發生。如系統可能正處于過載情況;

制品:系統中受刺激的部分(某個制品被刺激);

響應:刺激到達後所采取的行動;

響應度量:當響應發生時,應能夠以某種方式對應其度量,用于對是否滿足需求的測試。

可修改性及其實作戰術

(1)可修改性的描述。

軟體架構品質屬性之可修改性

對于可修改性一般場景的圖示及可修改性具體場景,讀者可仿照前面可用性的描述方式,自行練習。

(2)可修改性戰術。包括局部化修改、防止連鎖反應、推遲綁定時間。

① 局部化修改。在設計期間為子產品配置設定責任,以便把預期的變更限制在一定的範圍内,進而降低修改的成本。

維持語義的一緻性:語義的一緻性指的是子產品中責任之間的關系,使這些責任能夠協同工作,不需要過多地依賴其他子產品。耦合和内聚名額反映一緻性,應該根據一組預期的變更來度量語義一緻性。使用“抽象通用服務”(如應用架構的使用和其他中間軟體的使用)來支援可修改性是其子戰術。

預期期望的變更:通過對變更的預估,進行預設、準備,進而使變更的影響最小。

泛化該子產品:使一個子產品更通用、更廣泛的功能。

限制可能的選擇:如在更換某一子產品(如處理器)時,限制為相同家族的成員。

② 防止連鎖反應。由于子產品之間有各種依賴性,是以,修改會産生連鎖反應。防止連鎖反應的戰術如下。

資訊隐藏:就是把某個實體的責任分解為更小的部分,并選擇哪些資訊成為公有的,哪些成為私有的,通過接口獲得公有責任。

維持現有的接口:盡可能維持現有接口的穩定性。例如通過添加接口(通過新的接口提供新的服務)可以達到這一目的。

限制通信路徑:限制與一個給定的子產品共享資料的子產品。這樣可以減少由于資料産生/使用引入的連鎖反應。

仲裁者的使用:在具有依賴關系的兩個子產品之間插入一個仲裁者,以管理與該依賴相關的活動。仲裁者有很多種類型,例如:橋、調停者、代理等就是可以提供把服務的文法從一種形式轉換為另一種形式的仲裁者。

③ 推遲綁定時間。系統具備在運作時進行綁定并允許非開發人員進行修改(配置)。

運作時注冊:支援即插即用。

配置檔案:在啟動時設定參數。

多态:在方法調用的後期綁定。

構件更換:允許載入時綁定。

繼續閱讀