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