作(Do)爲(For)Internet 環境下的(Of)一(One)種新型的(Of)軟件形态, 網構軟件對傳統的(Of)軟件開發理論、方法與技術提出(Out)了(Got it)一(One)系列的(Of)挑戰. 作(Do)爲(For)一(One)種以(By)軟件複用(Use)爲(For)核心思想、以(By)軟件構件爲(For)基本實體、以(By)軟件體系結構爲(For)中心、以(By)軟件中間件爲(For)運行支撐的(Of)軟件開發方法學, ABC(architecture based component composition)方法能夠有力支持網構軟件的(Of)開發. 其中, 基于(At)特征的(Of)領域建模以(By)及特定應用(Use)的(Of)特征模型剪裁方法和(And)技術, 反映了(Got it)網構軟件在(Exist)問題空間實現自底向上(Superior)、從“無序”到“有序”的(Of)構造過程;基于(At)自适應軟件體系結構的(Of)分析與設計方法, 支持自适應網構軟件的(Of)開發; 具有反射機制、支持自主構件的(Of)中間件平台則爲(For)網構軟件的(Of)運行, 尤其是(Yes)網構軟件結構的(Of)自适應和(And)實體的(Of)自适應提供支撐機制Internet 的(Of)發展爲(For)信息技術的(Of)應用(Use)開啓了(Got it)新的(Of)篇章, 同時(Hour)也帶來(Come)了(Got it)諸多的(Of)技術挑戰, 并由此産生了(Got it)多個(Indivual)信息技術研究與實踐的(Of)熱點領域. 這(This)些領域往往從某種側面或層次對信息技術提出(Out)一(One)種新型模式或理念, 如, 網格計算從資源共享與管理的(Of)角度探讨未來(Come)網絡系統的(Of)應用(Use)與構造模式; 普适計算從“人(People)機交互”的(Of)角度研究未來(Come)網絡系統的(Of)應用(Use)模式; 服務計算從“軟件即服務”的(Of)理念出(Out)發, 提出(Out)了(Got it)一(One)種新型的(Of)軟件形态并着重探讨軟件的(Of)協同性和(And)動态性; 模型驅動的(Of)開發以(By)特定于(At)領域的(Of)代碼自動生成爲(For)基礎, 探讨基于(At)中間件的(Of)軟件系統的(Of)開發方法與技術。基于(At)類似的(Of)出(Out)發點, 網構軟件從軟件形态的(Of)角度考察開放、動态、多變的(Of)Internet環境對軟件理論、方法和(And)技術的(Of)挑戰. 作(Do)爲(For)傳統軟件結構的(Of)自然延伸, 網構軟件具有區别于(At)傳統軟件形态的(Of)獨有的(Of)基本特征, 包括自主性、演化性、協同性、多态性和(And)反應性等 從網構軟件的(Of)角度來(Come)考察當今有代表性的(Of)軟件工程方法學,可以(By)發現傳統的(Of)軟件工程方法學體系由于(At)其本質上(Superior)是(Yes)一(One)種靜态和(And)封閉的(Of)框架體系, 難以(By)支持由開放、動态、多變的(Of)Internet 環境衍生的(Of)網構軟件的(Of)開發.從技術的(Of)角度看, 網構軟件在(Exist)Internet 上(Superior)展現爲(For)一(One)種與當前的(Of)信息Web 類似的(Of)Software Web. 以(By)軟件構件等技術支持的(Of)軟件實體将以(By)開放、自主的(Of)方式存在(Exist)于(At)Internet 的(Of)各個(Indivual)節點之上(Superior), 任何一(One)個(Indivual)軟件實體可在(Exist)開放的(Of)環境下通過某種方式加以(By)發布, 并以(By)各種協同方式與其他(He)軟件實體進行跨網絡的(Of)互連、互通、協作(Do)和(And)聯盟. 由于(At)Internet 的(Of)開放、動态和(And)多變, 以(By)及用(Use)戶使用(Use)方式的(Of)個(Indivual)性化要(Want)求, 決定了(Got it)網構軟件的(Of)開發不(No)同于(At)傳統軟件開發的(Of)“一(One)次成型”式, 具體表現爲(For), 網構軟件在(Exist)發布之後, 能夠感知外部網絡環境的(Of)動态變化, 并随着這(This)種變化按照功能指标、性能指标和(And)可信性指标等進行靜态的(Of)調整和(And)動态的(Of)演化, 以(By)使系統具有盡可能高的(Of)用(Use)戶滿意度, 而且, 由于(At)用(Use)戶需求的(Of)多樣化和(And)個(Indivual)性化以(By)及投資回收等因素,一(One)個(Indivual)軟件系統往往存在(Exist)時(Hour)間較長, 因此, 網構軟件的(Of)演化過程也在(Exist)長時(Hour)間内持續不(No)斷. 顯然, 開發具有上(Superior)述技術特點的(Of)網構軟件面臨着開發過程、開發方法以(By)及支持技術3 個(Indivual)方面的(Of)挑戰在(Exist)軟件開發過程方面, 傳統軟件系統的(Of)開發因所基于(At)的(Of)平台相對封閉、靜态、穩定, 基本采用(Use)自頂向下的(Of)途徑, 确定系統的(Of)範圍(即scoping)總是(Yes)建立需求的(Of)第一(One)步, 然後通過分解而實施分而治之的(Of)策略, 整個(Indivual)開發過程處于(At)有序控制之下. 而網構軟件系統的(Of)開發所基于(At)的(Of)平台是(Yes)一(One)個(Indivual)有豐富基礎軟件資源但同時(Hour)又是(Yes)開放、動态和(And)多變的(Of)框架, 開發活動呈現爲(For)通過将原本“無序”的(Of)基礎軟件資源組合爲(For)“有序”的(Of)基本系統, 随着時(Hour)間推移, 這(This)些系統和(And)資源在(Exist)功能、質量、數量上(Superior)的(Of)變化導緻它們再次呈現出(Out)“無序”的(Of)狀态, 這(This)種由“無序”到“有序”的(Of)過程往複循環, 基本上(Superior)是(Yes)一(One)種自底向上(Superior)、由内向外的(Of)螺旋方式. 此外, 在(Exist)傳統的(Of)軟件工程體系中, 軟件生命周期概念所強調的(Of)是(Yes)從問題提出(Out)到軟件交付的(Of)整個(Indivual)開發過程的(Of)重要(Want)性, 而對于(At)交付之後的(Of)軟件變化過程往往隻采用(Use)“軟件維護”加以(By)簡單概括. 這(This)樣一(One)種軟件生命周期概念對處于(At)靜态封閉環境下的(Of)軟件系統的(Of)開發是(Yes)合适的(Of),但對處于(At)Internet 開放、動态和(And)多變環境下網構軟件系統的(Of)開發則有明顯的(Of)局限性. 首先, 新的(Of)軟件實體往往通過已有的(Of)軟件實體組裝而成, 由于(At)這(This)些實體彼此獨立、自主運行, 不(No)受任何機構或組織的(Of)統一(One)控制, 因此, 在(Exist)系統交付運行之前,很難由這(This)些被組裝的(Of)軟件實體準确無誤地推演出(Out)目标系統的(Of)功能和(And)質量. 其次,環境的(Of)開放、動态和(And)多變決定了(Got it)軟件實體及其之間的(Of)協同均面臨着諸多變化, 不(No)論這(This)些變化能否在(Exist)運行前準确預知, 運行系統都不(No)得不(No)進行持續的(Of)适應性調整.第3, 網構軟件既服務于(At)處在(Exist)不(No)同時(Hour)區的(Of)用(Use)戶也服務于(At)随時(Hour)到達的(Of)其他(He)網構軟件的(Of)請求, 而且, 一(One)個(Indivual)網構軟件系統本身往往由散布在(Exist)Internet 上(Superior)的(Of)其他(He)軟件組成,因此, 一(One)個(Indivual)網構軟件系統一(One)旦交付使用(Use), 往往就不(No)能完全停機. 這(This)意味着改錯、優化、增加新功能等活動均需在(Exist)線執行, 這(This)些活動也需要(Want)經曆分析、設計、實現、測試、部署, 而傳統軟件生存周期中的(Of)維護期難以(By)準确刻畫這(This)些活動.在(Exist)軟件開發方法方面, 對于(At)網構軟件所具備的(Of)自主性、演化性、協同性、多态性和(And)反應性, 傳統的(Of)開發方法考慮不(No)多、支持遠遠不(No)夠. 首先, 網構軟件自主性是(Yes)指軟件實體具有相對獨立性、主動性和(And)自适應性. 從技術角度看, 網構軟件實體一(One)般都是(Yes)獨立開發和(And)管理的(Of), 它們可能在(Exist)不(No)同的(Of)網絡節點上(Superior)獨立運行. 它們的(Of)目标和(And)所提供的(Of)服務由其所有者來(Come)決定, 其行爲(For)受自身的(Of)目标驅動, 而并非單純地被動用(Use)于(At)組裝或部署. 它們在(Exist)運行過程中可能實時(Hour)收集環境的(Of)各種變化信息, 并根據預先設定好的(Of)策略, 在(Exist)必要(Want)時(Hour)自動調整自身的(Of)行爲(For)以(By)适應環境的(Of)變化;其次, 協同性是(Yes)指網構軟件系統中軟件實體與軟件實體之間可按多種靜态連接和(And)動态合作(Do)方式在(Exist)開放的(Of)網絡環境下加以(By)互連、互通、協作(Do)和(And)聯盟. 從技術角度看, 傳統軟件系統在(Exist)封閉集中環境下往往采用(Use)單一(One)靜态的(Of)連接模式, 而網構軟件則支持連接模式的(Of)适應性調整, 如, 不(No)同互操作(Do)協議的(Of)切換, 連接安全級别的(Of)升降, 同步異步的(Of)轉變, 消息傳遞可靠性的(Of)調整等; 第3, 反應性是(Yes)指網構軟件具有感知外部運行和(And)使用(Use)環境并對系統演化提供有用(Use)信息的(Of)能力. 從技術角度看, 網構軟件的(Of)外部環境由其他(He)網構軟件以(By)及底層支撐平台組成, 因此, 反應性既要(Want)求網構軟件能夠以(By)某種方式暴露自身的(Of)狀态和(And)行爲(For)信息, 也要(Want)求網構軟件支撐平台能夠開放底層實現細節及運行狀态; 第4, 演化性是(Yes)指網構軟件結構可根據應用(Use)需求和(And)網絡環境變化而發生動态演化, 主要(Want)表現在(Exist)其實體元素數目的(Of)可變性,結構關系的(Of)可調節性和(And)結構形态的(Of)動态可配置性. 從技術角度看, 演化性要(Want)求軟件體系結構具備動态調整能力; 最後, 多态性是(Yes)指網構軟件系統的(Of)效果體現出(Out)相容的(Of)多目标性, 它可根據某些基本協同原則, 在(Exist)動态變化的(Of)網絡環境下, 滿足多種相容的(Of)目标形态. 從技術角度看, 多态性既要(Want)求系統開發過程中需要(Want)支持多目标建模, 又要(Want)求系統運行時(Hour)能夠基于(At)環境變化進行動态目标的(Of)适應性選擇. 基于(At)上(Superior)述分析, 網構軟件諸多特性在(Exist)技術上(Superior)的(Of)主要(Want)共性可歸結爲(For)自适應性, 具體表現爲(For)軟件實體的(Of)自适應性和(And)軟件結構的(Of)自适應性, 即, 網構軟件在(Exist)運行過程中能夠在(Exist)合适的(Of)時(Hour)刻、合适的(Of)場合、準确捕捉變化并進行合理的(Of)适應性調整, 以(By)滿足功能和(And)質量的(Of)需求. 人(People)在(Exist)網構軟件适應過程中的(Of)參與程度決定了(Got it)網構軟件自适應能力的(Of)高低. 因此, 如何開發出(Out)具有這(This)種自适應能力的(Of)軟件系統, 并盡可能減少運行過程中人(People)的(Of)參與, 是(Yes)網構軟件開發方法的(Of)關鍵挑戰在(Exist)軟件運行支撐技術方面, 傳統的(Of)軟件開發工具往往針對軟件交付前的(Of)分析、設計、實現、測試中的(Of)一(One)個(Indivual)或幾個(Indivual)階段, 而軟件交付後則部署在(Exist)運行平台上(Superior),并利用(Use)各種管理工具進行維護. 而基于(At)上(Superior)述分析, 網構軟件的(Of)開發已經不(No)僅僅局限于(At)軟件交付之前, 軟件開發的(Of)重心從交付前逐漸轉移到運行過程中, 而網構軟件自動或手動的(Of)調整往往依賴于(At)軟件生存周期各個(Indivual)階段的(Of)活動與制品. 因此, 網構軟件開發工具不(No)僅要(Want)覆蓋整個(Indivual)軟件生存周期, 還有必要(Want)與運行平台融合, 從而支持軟件運行中持續不(No)斷的(Of)開發活動. 另一(One)方面, 網構軟件的(Of)諸多特性對運行平台提出(Out)了(Got it)極大(Big)的(Of)挑戰, 首先, 運行平台不(No)僅要(Want)具備實時(Hour)顯示自身運行狀态和(And)行爲(For)的(Of)能力, 還應協助實現上(Superior)層軟件實體内部狀态和(And)行爲(For)的(Of)實時(Hour)展現, 其次, 運行平台必須支持網構軟件實體與結構的(Of)動态調整,否則, 自适應很難甚至在(Exist)某些情況下無法實現綜上(Superior)所述, 網構軟件的(Of)開發在(Exist)過程方面, 需要(Want)遵循自底向上(Superior)、從“無序”到“有序”的(Of)新型構造途徑, 開發重心由系統交付前向系統運行時(Hour)轉移; 在(Exist)開發方法方面, 需要(Want)重點考慮軟件實體和(And)結構的(Of)自适應性; 在(Exist)支持技術方面, 需要(Want)整合開發工具和(And)運行平台以(By)支持跨整個(Indivual)軟件生存周期的(Of)開發, 而運行平台應提供軟件實體和(And)結構自适應所需的(Of)基本機制.本文針對網構軟件需求, 考慮網構軟件更關注實體組合的(Of)特點, 提出(Out)一(One)種以(By)軟件體系結構爲(For)中心的(Of)網構軟件開發方法, 該方法采用(Use)ABC(architecture basedcomponent composition)方法框架, 即以(By)構件組裝爲(For)基本手段, 使用(Use)軟件體系結構的(Of)理論與概念來(Come)指導軟件開發, 以(By)提高系統開發的(Of)效率和(And)質量. 考慮網構軟件的(Of)特性, 該方法重點關注3 個(Indivual)問題: (1)Internet 上(Superior)“無序”軟件資源的(Of)有效建模、組織和(And)管理, (2)網構軟件自适應建模, (3)支持網構軟件特征的(Of)支持工具和(And)運行平台 ABC 方法概覽 ABC 方法于(At)2000 年正式提出(Out), 從支持軟件複用(Use)的(Of)角度來(Come)看, 是(Yes)軟件體系結構(SA)研究和(And)基于(At)構件的(Of)軟件開發(CBSD)途徑的(Of)結合. SA 研究提供了(Got it)一(One)種自頂向下實現基于(At)構件的(Of)複用(Use)的(Of)途徑, 即通過體系結構描述語言(ADL, architecturedescription language)在(Exist)較高抽象層次上(Superior)描述構件接口的(Of)語法和(And)語義、系統中的(Of)構件和(And)連接子以(By)及它們之間的(Of)交互關系、構件的(Of)非功能屬性、以(By)及構件間協議, 從而建立系統的(Of)體系結構模型. 但是(Yes), 當前的(Of)SA 研究大(Big)都局限于(At)體系結構描述和(And)一(One)些高層的(Of)性質驗證, 對體系結構求精和(And)實現的(Of)支持能力明顯不(No)足. 另一(One)方面,CBSD提供了(Got it)一(One)種 通過使用(Use)現存的(Of)中間件基礎設施自底向上(Superior)地實現基于(At)構件的(Of)軟件複用(Use)的(Of)途徑, 強調使用(Use)已經開發好的(Of)構件來(Come)構造軟件系統. 但是(Yes), 當前CBSD讨論的(Of)重點主要(Want)局限于(At)COM, CORBA 和(And)EJB 等二進制構件, 這(This)些中間件技術僅僅提供了(Got it)在(Exist)實現層次上(Superior)支持構件交互的(Of)基礎機制, 缺少指導CBSD 過程的(Of)系統化的(Of)方法學, 特别是(Yes)對高抽象層次的(Of)構件組裝無能爲(For)力. 作(Do)爲(For)一(One)種自然的(Of)解決方案,ABC 方法有機組合了(Got it)這(This)兩種途徑, 以(By)支持有效的(Of)基于(At)構件的(Of)複用(Use).ABC 方法的(Of)核心思想是(Yes)将軟件體系結構引入到軟件開發的(Of)各個(Indivual)階段, 作(Do)爲(For)系統開發的(Of)藍圖, 利用(Use)工具支持的(Of)自動轉換機制縮小從高層設計到實現的(Of)距離,而後在(Exist)構件運行平台(軟件中間件)的(Of)支持下實現自動的(Of)系統組裝生成. ABC 方法過程模型如圖1 |
嘉興雷鳥是(Yes)一(One)家集企業軟件開發,WEB網站建設,移動APP制作(Do)等綜合型的(Of)互聯網公司,爲(For)嘉興顧客提供一(One)站式的(Of)企業軟件開發,安卓app開發,ios開發服務,同時(Hour)爲(For)嘉興企業提供全面移動互聯軟件技術解決方案,是(Yes)嘉興知名的(Of)綜合型APP軟件外包開發公司。根據前期調研方案和(And)客戶實際需求,以(By)專業獨到的(Of)設計理念、精益求精的(Of)技術精神、嚴格完善的(Of)品控系統,爲(For)嘉興每一(One)位客戶提供專屬的(Of)移動互聯軟件技術解決方案。經過不(No)斷積累,嘉興雷鳥陸續推出(Out)視頻直播APP、電商商城APP、P2P網貸APP、智能硬件APP開發、移動APP開發、微信公衆平台開發、一(One)元購APP、智慧社區服務APP、生活服務O2O系統APP等各類APP産品,爲(For)嘉興各行企業向移動互聯網轉型奠定了(Got it)堅實基礎。在(Exist)激烈的(Of)市場競争中,嘉興雷鳥創造了(Got it)嘉興軟件定制開發行業的(Of)卓越口碑,是(Yes)具有更高品質的(Of)移動互聯網軟件技術定制服務商。