簡介
從技術的角度看, 網構軟體在Internet上展現為一種與當前的信息Web類似的Software Web. 以軟體構件等技術支持的軟體實體將以開放、自主的方式存在於Internet的各個節點之上, 任何一個軟體實體可在開放的環境下通過某種方式加以發布, 並以各種協同方式與其他軟體實體進行跨網路的互連、互通、協作和聯盟.
由於Internet的開放、動態和多變, 以及用戶使用方式的個性化要求, 決定了網構軟體的開發不同於傳統軟體開發的“一次成型”式, 具體表現為, 網構軟體在發布之後, 能夠感知外部網路環境的動態變化, 並隨著這種變化按照功能指標、性能指標和可信性指標等進行靜態的調整和動態的演化, 以使系統具有儘可能高的用戶滿意度, 而且, 由於用戶需求的多樣化和個性化以及投資回收等因素,一個軟體系統往往存在時間較長, 因此, 網構軟體的演化過程也在長時間內持續不斷. 因此開發具有上述技術特點的網構軟體面臨著開發過程、開發方法以及支持技術3 個方面的挑戰.
在軟體開發過程方面, 傳統軟體系統的開發因所基於的平台相對封閉、靜態、穩定, 採用自頂向下的途徑, 確定系統的範圍(即scoping)總是建立需求的第一步, 然後通過分解而實施分而治之的策略, 整個開發過程處於有序控制之下.
而網構軟體系統的開發所基於的平台是一個有豐富基礎軟體資源但同時又是開放、動態和多變的框架, 開發活動呈現為通過將原本“無序”的基礎軟體資源組合為“有序”的基本系統, 隨著時間推移, 這些系統和資源在功能、質量、數量上的變化導致它們再次呈現出“無序”的狀態, 這種由“無序”到“有序”的過程往復循環, 基本上是一種自底向上、由內向外的螺旋方式.
軟體生命周期局限性
此外, 在傳統的軟體工程體系中, 軟體生命周期概念所強調的是從問題提出到軟體交付的整個開發過程的重要性, 而對於交付之後的軟體變化過程往往只採用“軟體維護”加以簡單概括.這樣一種軟體生命周期概念對處於靜態封閉環境下的軟體系統的開發是合適的,但對處於Internet 開放、動態和多變環境下網構軟體系統的開發則有明顯的局限性.
首先, 新的軟體實體往往通過已有的軟體實體組裝而成, 由於這些實體彼此獨立、自主運行, 不受任何機構或組織的統一控制, 因此, 在系統交付運行之前,很難由這些被組裝的軟體實體準確無誤地推演出目標系統的功能和質量.
其次,環境的開放、動態和多變決定了軟體實體及其之間的協同均面臨著諸多變化, 不論這些變化能否在運行前準確預知, 運行系統都必須進行持續的適應性調整.
再者, 網構軟體既服務於處在不同時區的用戶也服務於隨時到達的其他網構軟體的請求, 而且, 一個網構軟體系統本身往往由散布在Internet 上的其他軟體組成,因此, 一個網構軟體系統一旦交付使用, 往往就不能完全停機. 這意味著改錯、最佳化、增加新功能等活動均需線上執行, 這些活動也需要經歷分析、設計、實現、測試、部署, 而傳統軟體生存周期中的維護期難以準確刻畫這些活動.
要實現對網構開發的有效支持,必須對網構軟體的以下特徵進行深入認識:
首先,網構軟體自主性是指軟體實體具有相對獨立性、主動性和自適應性. 從技術角度看, 網構軟體實體一般都是獨立開發和管理的, 它們可能在不同的網路節點上獨立運行. 它們的目標和所提供的服務由其所有者來決定, 其行為受自身的目標驅動, 而並非單純地被動用於組裝或部署. 它們在運行過程中可能實時收集環境的各種變化信息, 並根據預先設定好的策略, 在必要時自動調整自身的行為以適應環境的變化;
其次, 協同性是指網構軟體系統中軟體實體與軟體實體之間可按多種靜態連線和動態合作方式在開放的網路環境下加以互連、互通、協作和聯盟. 從技術角度看, 傳統軟體系統在封閉集中環境下往往採用單一靜態的連線模式, 而網構軟體則支持連線模式的適應性調整, 如, 不同互操作協定的切換, 連線安全級別的升降, 同步異步的轉變, 訊息傳遞可靠性的調整等;
第3, 反應性是指網構軟體具有感知外部運行和使用環境並對系統演化提供有用信息的能力. 從技術角度看, 網構軟體的外部環境由其他網構軟體以及底層支撐平台組成, 因此, 反應性既要求網構軟體能夠以某種方式暴露自身的狀態和行為信息, 也要求網構軟體支撐平台能夠開放底層實現細節及運行狀態;
第4, 演化性是指網構軟體結構可根據套用需求和網路環境變化而發生動態演化, 主要表現在其實體元素數目的可變性,結構關係的可調節性和結構形態的動態可配置性. 從技術角度看, 演化性要求軟體體系結構具備動態調整能力;
最後, 多態性是指網構軟體系統的效果體現出相容的多目標性, 它可根據某些基本協同原則, 在動態變化的網路環境下, 滿足多種相容的目標形態. 從技術角度看, 多態性既要求系統開發過程中需要支持多目標建模, 又要求系統運行時能夠基於環境變化進行動態目標的適應性選擇.
基於上述分析, 網構軟體諸多特性在技術上的主要共性可歸結為自適應性, 具體表現為軟體實體的自適應性和件結構的自適應性, 即, 網構軟體在運行過程中能夠在合適的時刻、合適的場合、準確捕捉變化並進行合理的適應性調整, 以滿足功能和質量的需求.
關鍵挑戰
簡介
人在網構軟體適應過程中的參與程度決定了網構軟體自適應能力的高低. 因此, 如何開發出具有這種自適應能力的軟體系統, 並儘可能減少運行過程中人的參與, 是網構軟體開發方法的關鍵挑戰.
在軟體運行支撐技術方面, 傳統的軟體開發工具往往針對軟體交付前的分析、設計、實現、測試中的一個或幾個階段, 而軟體交付後則部署在運行平台上,並利用各種管理工具進行維護.
分析
而基於上述分析, 網構軟體的開發已經不僅僅局限於軟體交付之前, 軟體開發的重心從交付前逐漸轉移到運行過程中, 而網構軟體自動或手動的調整往往依賴於軟體生存周期各個階段的活動與製品. 因此, 網構軟體開發工具不僅要覆蓋整個軟體生存周期, 還有必要與運行平台融合, 從而支持軟體運行中持續不斷的開發活動.
另一方面, 網構軟體的諸多特性對運行平台提出了極大的挑戰, 首先, 運行平台不僅要具備實時顯示自身運行狀態和行為的能力, 還應協助實現上層軟體實體內部狀態和行為的實時展現, 其次, 運行平台必須支持網構軟體實體與結構的動態調整, 否則, 自適應很難甚至在某些情況下無法實現.
總結
綜上所述, 網構軟體的開發在過程方面, 需要遵循自底向上、從“無序”到“有序”的新型構造途徑, 開發重心由系統交付前向系統運行時轉移; 在開發方法方面, 需要重點考慮軟體實體和結構的自適應性; 在支持技術方面, 需要整合開發工具和運行平台以支持跨整個軟體生存周期的開發, 而運行平台應提供軟體實體和結構自適應所需的基本機制.
Internet基本特徵
Internet作為不同於傳統計算機的硬體平台,具有如下基本特徵:
無統一控制的“真”分布性
節點的高度自治性
節點連結的開放性和動態性
人、設備和軟體的多重異構性
實體行為的不可預測性
運行環境的潛在不安全性
使用方式的個性化和靈活性
網路連線環境的多樣性
由 於軟體系統所基於的計算機硬體平台正經歷從集中封閉的計算平台向開放的Internet平台的轉變,軟體系統作為計算機系統的靈魂,隨著其運行環境的演變 也經歷了一系列的變革。目前,面向網路的計算環境正由Client/Server發展為Client/Cluster,並正朝著Client /Network和Client/Virtual Environment的方向發展。那么,未來的基於Internet平台的軟體系統又將會呈現出一個什麼形態呢?
從 技術的角度看,以軟體構件等技術支持的軟體實體將以開放、自主的方式存在於Internet的各個節點之上,任何一個軟體實體可在開放的環境下通過某種方 式加以發布,並以各種協同方式與其它軟體實體進行跨網路的互連、互通、協作和聯盟,從而形成一種與當前的信息Web類似的Software Web。Software Web不再僅僅是信息的提供者,而是各種服務(功能)的提供者。由於網路環境的開放與動態性,以及用戶使用方式的個性化要求,從而決定了這樣一種 Software Web並不能夠像傳統軟體那樣一蹴而就,它應能感知外部網路環境的動態變化,並隨著這種變化按照功能指標、性能指標和可信性指標等進行靜態的調整和動態的 演化,以使系統具有儘可能高的用戶滿意度。我們將這樣一種新的軟體形態稱為網構軟體(Internetware)。
網構軟體特徵
網構軟體區別於傳統軟體形態的獨有特徵
網構軟體是在Internet開放、動態和多變環境下軟體系統基本形態的一種抽象,它既是傳統軟體結構的自然延伸,又具有區別於在集中封閉環境下發展起來的傳統軟體形態的獨有的基本特徵:
自主性
指網構軟體系統中的軟體實體具有相對獨立性、主動性和自適應性。自主性使其區別於傳統軟體系統中軟體實體的依賴性和被動性。
協同性
指網構軟體系統中軟體實體與軟體實體之間可按多種靜態連線和動態合作方式在開放的網路環境下加以互連、互通、協作和聯盟。協同性使其區別於傳統軟體系統在封閉集中環境下單一靜態的連線模式。
反應性
指網構軟體具有感知外部運行和使用環境並對系統演化提供有用信息的能力;反應性使網構軟體系統具備了適應Internet開放、動態和多變環境的感知能力。
演化性
指網構軟體結構可根據套用需求和網路環境變化而發生動態演化,主要表現在其實體元素數目的可變性,結構關係的可調節性和結構形態的動態可配置性;演化性使網構軟體系統具備了適應Internet開放、動態和多變環境的應變能力。
多態性
指網構軟體系統的效果體現出相容的多目標性。它可根據某些基本協同原則,在動態變化的網路環境下,滿足多種相容的目標形態。多態性使網構軟體系統在網路環境下具備了一定的柔性和滿足個性化需求的能力。
可以說,網構軟體的概念是普適而廣泛的。實際上,從單機結構上的軟體系統、到主/從結構的軟體系統、到客戶機/伺服器模式的軟體系統、一直到現有的瀏覽/服 務器結構的軟體系統,從本質上來說,都是網構軟體系統的一種特例(具有網構軟體的某些特性)。例如,當今有代表性的Browser/Server結構在 Server端具有相對獨立性,而眾多Browser與Server端的連線則具有開放環境下跨網路的初級協同性;而Browser搜尋引擎搜尋結果的多 重性則體現了其隨網路環境變化而產生的多態性;JINI技術中所倡導的軟體實體的動態聯盟和Applets技術等則在某種意義下體現了演化性的需求;而 Active Software 和Autonomous Software 則反映了在網路環境下對軟體實體自主性的需求。因此,有理由相信,網構軟體概念基本概括了在Internet開放、動態和多變環境下軟體技術的發展趨勢, 它將在未來5-10年成為軟體的一種主流形態。
局限性
從 網構軟體的角度來考察當今主流軟體技術,可以發現現有軟體技術體系由於其本質上是一種靜態和封閉的框架體系,難以適應Internet開放、動態和多變的 特點。從技術框架看,軟體方法學的核心是程式設計方法學,而程式設計方法學考慮的重點是軟體結構。軟體結構主要包括程式實體和協同方式兩部分。目前在軟體 領域占主導地位的軟體方法是面向對象方法。從網構軟體的角度來看面向對象軟體結構,可以發現以下三方面的問題:
系統目標和結構確定性的限制
一般說來,在構建系統的過程中,系統的基本功能和基本結構是按照系統所要解決的問題和問題領域的特性通過系統分析與設計逐步確定的,未能兼顧Internet開放、多變和動態的特性。因此,它難以適應網構軟體系統的動態協同、逐步適應和不斷演化的需求。
實體單元自主性的欠缺
面向對象方法中的對象概念通常是靜止和被動的,它難以在Internet開放、動態和多變環境下調整自己的目標和行為,以適應網路環境的變化和用戶的個性化要求。
協同方式的單一性