摘要:在許多軟體系統的開發運行階段乃至整個生命周期中,軟體可變性都是其設計開發者所要面對的基本問題,
本文分享自華為云社區《如何應對軟體可變性?這4種常用的方法肯定要知道,》,作者: 陳星亮|華為云開天aPaaS專家,
軟體可變性(Software Variability)是指在一定背景關系中一個軟體系統被有效改變(擴展、配置、調整)的能力,在許多軟體系統的開發運行階段乃至整個生命周期中,軟體可變性都是其設計開發者所要面對的基本問題,
在大多數系統中,可變性表現為軟體在某個或某些可變點處對變體的系結,其中可變點是指軟體中可以發生變化(系結變體)的位置,而變體則是變化發生時,人或機器可以在相應位置做出的選擇,
可以看出,在軟體的運行實體中,變化發生的位置、變化發生的程度是在設計階段預定義的,而這種定義又在很大程度上依賴于軟體的需求分析以及在此基礎上做出的種種假設,系統雖然具有變體系結能力來滿足既定的需求,但可變性模型(可變點、變體以及它們之間的關系)本身沒有變化,導致軟體在應對變化的需求或環境時存在一定限制,
在傳統意義上,軟體運行時可變性模型被認為是靜態的,在許多研究作業中,模型被以只讀的方式訪問,以支持軟體適應外部的環境,人們將注意力集中在可變性系結方面(即為什么(重新)系結變體、系結什么變體、怎樣系結),而忽視了對運行時可變性模型本身蘊含的限制的突破,隨著計算機技術的發展進步、用戶需求的增多及變化的加快、系統駐留環境的開放、外界對系統靈活性和可伸縮性要求的提高,這種限制顯得愈加突出,
針對軟體可變性,開發者們根據軟體實作要求和成本投入,采取軟體預留配置點、動態軟體產品線、運行時可變性動態系結、多變非核心功能的快速開發等方法來應對,
1、軟體預留配置點:
軟體預留配置點可以自動地根據環境的變化來調整自身,換言之,它可以收集和分析有關環境的資訊,基于分析的結果決定是否改變自己的行為,如果是,再采取調整動作,
系統設計者指出或假設系統所面對環境變化等資訊,確定系統所能夠感知和收集的環境資料,進而以一定的資料結構將其表示在計算機內,而后才能設計相應的演算法對這些資訊進行分析并做出決策,
在執行環節對于自身的調整,實際上是軟體在可變點處對于變體的動態系結,這是其運行時可變性的表現,
關鍵點:
1)設計者難以在系統部署運行之前設想所有的需求或環境的變化,當超過預期的變化出現時,已經成型的系統無法自動地收集與其相關的資訊,
2)并未改變可變性要素的數量、屬性或關系,只能在設計開發時預定的范圍內,進行選擇,
2、動態軟體產品線:
動態軟體產品線包括一組核心資產和從資產開發而來的一系列具有共同特征的軟體產品,與傳統軟體產品線對比,動態軟體產品線更關注軟體的運行時可變性,本質上是建立具備可配置能力的一系列軟體,
關鍵點:
1)產品線自身的設計者可以快速開發出具有運行時可變性的軟體產品,并賦予其自主選擇系結變體的能力,
2)其關注的運行時可變性大部分都是封閉的而非開放的,這意味著運行時可變性應對的是開發者在設計期設想的環境變化,導致軟體產品難以應對超過預期的環境變化,
3、運行時可變性動態系結
運行時可變性動態系結機制描述一個運行中的軟體如何在一個可變點系結相應的變體,是軟體可變性實作的核心,系結機制涉及對構件內部結構和行為的調整,包括對子構件的重配置和動態系結,
關鍵點:
1) 對構件行為的調整往往通過重新組織構件的作業流或是重新設定構件內部引數來實作,
2) 對于突破了原有設計范圍內的變化,需要能被系統識別,并自動生成對應的邏輯,
4、多變非核心功能的快速開發
為應對行業應用不斷變化的情況,亦有思路是降低軟體應用開發的難度,將軟體的穩定的核心功能與多變的功能分開,對于多變非核心功能,以提供低碼開發的方式,便于開發者能快速的根據訴求,進行近場快速開發并投入使用,
關鍵點:
1) 軟體設計者需要能識別出穩定的核心功能、多變的非核心功能,并且能夠在兩者之間建立好連接,
2) 提供便捷的工具,使得多變的非核心功能能夠被近場開發者,甚至是使用者自己能快速實作,
如何提升軟體的可變性,讓軟體能夠從容應對業務的變化,一直都是軟體工程領域的一個重要話題,針對上述4種在應對軟體可變性經常用到的方法,各自都有其特點,分別在不同的場景下使用,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/502675.html
標籤:其他
上一篇:設計模式之責任鏈模式
