徐瑩

[摘要] 過去幾十年的研究表明,在組件和連接器方面對軟件進行模塊化構建是用途廣泛的,這導致了大量模塊標記的產生。每種標記專注于系統模塊化的不同方面,一般來說這些標記致力于利用已有的標記來發展新的標記而忽略了重用和擴展。為了解決這一問題,本文研究了一種新的辦法——允許快速地構建新的描述性語言(ADLs),該語言利用XML和XML的擴展機制來完成。本文定義了一組類別,重用ADL模塊稱作XADL 2.0,它可以作為ADL單獨使用,也可以擴展支持新的應用和領域,實驗驗證了本文方法的有效性、可擴展性和靈活性。
[關鍵詞] 軟件架構; 模塊化; ADL; XADL; XML
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 05. 029
[中圖分類號]TP311.5[文獻標識碼]A[文章編號]1673 - 0194(2012)05- 0054- 02
1引言
與對象或代碼行相比,軟件體系是對軟件的更高層的抽象。在最低限度上,軟件體系處理包含組件(計算點)、連接器(交流點)和配置(組件和連接器安排,性能的安排)的軟件系統。在這個抽象層,可以對一個軟件系統的許多方面進行建模,如拓撲、行為、使用情境、部署屬性等。這些方面中每一個也可能在不同細節層以不同的方法進行建模。各個方式的建模都有其自身的優勢,可能提供一個新方法去分析、模擬系統或向其他開發人員解釋系統結構。
雖然有這些優點,但軟件體系結構的研究仍沒有在實踐中對軟件工程有重大影響。要使軟件架構性價比合理需要符號、工具和在適當的細節層模擬系統重要方面的技術。十幾年研究的結果已經形成許多標記軟件體系的的符號,通常的形式是體系結構描述語言(ADLs)。一般來說,那些相互標記的的符號支持單一的研究目標。然而,要想在現實生活的語境中有效,軟件架構的研究必須超出單個目標符號,架構必須同時獲得軟件系統的多個方面。此外,對模塊化足夠重要的各個方面的范圍相互區別。例如,由于時耗和功耗需要,嵌入式系統項目可能需要更廣泛更詳細的建模能力,而分布式系統則可能在建模容錯和帶寬方面有所要求。例如,嵌入式和分布式系統的建構師都會通過發布產品來跟蹤和管理他們的體系結構的進展;同一個領域內的項目通常會有許多共同關心的方面。
各領域建模優先考慮的事情和需求巨大的差異說明,一個令人滿意的“適用于所有情況的”ADL是不太可能出現的。然而,即便是在截然不同的領域里也依然存在的重要共性表明,為每個域(或項目)開發新標記意味著始終如一地去做重復性的工作。因此,允許建構師從軟件系統的共同架構層選擇那些他們想的方面并很容易添加一些他們自己感興趣的東西是十分必要的。
本文假定一個中間層以基礎架構形式存在,這樣ADLs可以很快地構造,兼容建模特點并允許集成一些必要的新特點。這些ADLs將模塊化,而不是單一的,建模特點會在模塊中封裝,各單元組成ADLs。
本文為建立和使用模塊化ADLs創建了一個基礎架構,這個基礎架構提供如下功能:
(1) 一種定義ADLs的基于XML的模塊化的擴展機制。
(2) 一個在ADL發展中可重用的特點集,支持設計時間和運行時間的建模、實施映射和生產線。
(3) 一個支持ADL發展和使用的靈活的工具集。
2軟件架構、描述語言和XML
本節介紹軟件架構、體系結構描述語言和XML等方面的基礎知識。
2.1軟件架構
由于抽象化和模塊化在軟件工程方面的發展,抽象化模塊在許多軟件系統中起著越來越重要的作用。軟件架構(Software Architecture)是一系列相關的抽象模式,用于指導大型軟件系統各個方面的設計。軟件架構是一個系統的草圖。軟件架構描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向對象領域中,組件之間的連接通常用接口來實現。
軟件架構至少包含3部分:組件(軟件架構中的計算點)、連接器(軟件架構中的交換點)、配置(描述如何安排組件和連接器)。
2.2體系結構描述語言ADLs
除了組件、連接器、配置之外,對軟件系統在架構層上的描述可以包含各種類型的信息。架構描述中的各種信息受軟件的應用領域和架構描述使用方法的影響。這種支持構件、連接和配置的描述語言就是體系結構描述語言。
ADLs語言最基本的要求:
(1) 適合架構表達給所有有關方面。
(2) 支持架構創建,完善和驗證任務。
(3) 提供一個進一步實現的基礎,因此它必須能夠給ADLs規范添加信息,使最終的系統規范衍生自ADLs。
(4) 提供表現通用類型架構的能力。
(5) 支持分析能力或提供快速生成原型的實現。
2.3XML
為軟件系統創建一個可擴展建模語言,要求一種方法去使用這種語言去定義適當的架構,并且使用該語言去增加或調整特征以擴展架構,于是XML應運而生。XML(eXtensible Markup Language,可擴展標記語言),它可以創建個性化的標記語言,可以稱之為元語言,XML的標記語言可以自定義,這樣可以提供更多的數據操作。
3方法
現有的結構描述語言不是過于專用就是過于通用,并且改變一個標記或一個工具來支持一個新的特征花費是巨大的。為改善變種情況,本文開發了一個基礎結構來支持模塊化擴展。本文構建基礎結構的目標如下:
(1) 它必須在架構層表達上具有盡可能少的限制。
(2) 它應當允許新的模塊化待征的增加和已有特征的修改。
(3) 它應當允許新特征和其他特征結合并進行實驗。
(4) 它應對各領域提供一個通用的模塊。
(5) 它應提供即使潛在標記改變也能夠支持創建和處理架構模型的創建工具。
基礎結構的核心元素在圖1中顯示。
4XADL 2.0: 一個通用基礎特征集
本文使用XML模式來定義一組在許多領域構造軟件體系結構有用的通用結構。這些結構都可以使用或者擴展到新增的模型特征中而無需在一個大的、完全統一的XML模式中定義所有的通用建構,可以根據它們的目標在模式中進行分組。結果是一系列重用模塊組成一個通用ASL,稱為XADL 2.0。
XADL 2.0的核心特點是:
(1) 一個軟件系統的運行時間和設計時間模型分離。
(2) 實施映射,將一個架構的ADL規格映射到執行代碼。
(3) 架構評估和生產線架構的建模方面的能力。
5總結
自20世紀90年代后期以來,軟件體系結構的研究成為一個熱點。廣大軟件工作者已經認識到軟件體系結構研究的重大意義及其對軟件系統設計開發的重要性,開展了很多研究和實踐工作。這導致了大量表示軟件架構標記的產生,每種標記基于系統模塊化的不同方面。一般來說,這些標記致力于發展新的標記來改進現在的標記,忽略了可重用性和可擴展性。為解決這個問題,本文提出了一個新的方法:允許快速地構造新的體系結構描述語言(ADLs)。該方法利用XML和XML模式的擴展機制來完成。本文定義了一組類型,重用ADL模塊稱作XADL 2.0,它可以作為一個ADL自己使用,也可以擴展支持新的應用和領域。為支持這種擴展,開發了一系列自動適應語言改變的基于句法的工具和提供XADL 2.0先進特征支持的語義工具。實驗證明了所提方法的有效性、可擴展性和靈活性。