軟件體系結(jié)構(gòu)描述語言ADL綜述-bycs_第1頁
軟件體系結(jié)構(gòu)描述語言ADL綜述-bycs_第2頁
軟件體系結(jié)構(gòu)描述語言ADL綜述-bycs_第3頁
軟件體系結(jié)構(gòu)描述語言ADL綜述-bycs_第4頁
軟件體系結(jié)構(gòu)描述語言ADL綜述-bycs_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第 頁/共12頁軟件體系結(jié)構(gòu)描述語言ADL綜述AdvancementofArchitectureDescriptionLanguage(ADL)引言60年代的軟件危機(jī)使得人們重新開始重視軟件工程的研究。最初人們選擇了“算法+數(shù)據(jù)結(jié)構(gòu)=程序”的設(shè)計(jì)模式。但隨著軟件系統(tǒng)的規(guī)模和復(fù)雜性越來越大,傳統(tǒng)的設(shè)計(jì)模式已經(jīng)不能適應(yīng)要求。同時(shí)為了保證軟件質(zhì)量,提高軟件的可靠性、可重用行和可維護(hù)性,軟件設(shè)計(jì)的核心逐漸轉(zhuǎn)向?qū)ο到y(tǒng)的總體結(jié)構(gòu)即軟件體系結(jié)構(gòu)(SoftwareArchitecture)的設(shè)計(jì)和規(guī)范。這類方法主要著眼于軟件系統(tǒng)的全局組織形式,在更高層次上把握系統(tǒng)各組件之間的內(nèi)在聯(lián)系。并從全局的,整體的角度

2、去理解和分析整個(gè)系統(tǒng)的行為和特性,有助于解決當(dāng)前開發(fā)復(fù)雜的大型軟件所存在的困難。研究軟件體系結(jié)構(gòu)的首要問題是如何描述軟件體系結(jié)構(gòu)。目前已有很多表現(xiàn)形式和方法表法、模塊連接語言、軟構(gòu)件描述法和體系結(jié)構(gòu)描述語言ADL等。而其中ADL作為形式化的表示軟件體系結(jié)構(gòu)的工具呈現(xiàn)出強(qiáng)大的生命力。它提供了規(guī)范化的體系結(jié)構(gòu)描述,同時(shí)是對軟件體系結(jié)構(gòu)進(jìn)行求精、驗(yàn)證、演化和分析的前提與基礎(chǔ)。目前已經(jīng)成為軟件體系結(jié)構(gòu)方向的研究熱點(diǎn)。實(shí)踐工作者將這些ADL應(yīng)用于實(shí)踐中,獲得了成功。同時(shí),我們應(yīng)注意到不同的ADL所支持的抽象能力及其提供的分析能力變化很大,學(xué)術(shù)領(lǐng)域目前對ADL的定義尚未取得一致。一、軟件體系結(jié)構(gòu)的概述由于

3、對軟件體系結(jié)構(gòu)的研究和應(yīng)用剛剛興起,許多專家學(xué)者從不同的角度和側(cè)面對軟件體系結(jié)構(gòu)進(jìn)行刻畫,因此,目前軟件體系結(jié)構(gòu)還沒有一個(gè)標(biāo)準(zhǔn)定義。這里給出一個(gè)目前學(xué)術(shù)領(lǐng)域廣泛接受的定義。(D.Garlan&MShaw,1993)軟件體系結(jié)構(gòu)是軟件設(shè)計(jì)過程中的一個(gè)層次,在計(jì)算過程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)之上,處理總體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和描述方面的一些問題。包括總體組織與全局控制結(jié)構(gòu)、通訊協(xié)議、同步、數(shù)據(jù)存取、設(shè)計(jì)元素的功能分配,物理分布,設(shè)計(jì)元素的復(fù)臺(tái),設(shè)計(jì)方案的選擇、評估和實(shí)現(xiàn)等。二、軟件體系結(jié)構(gòu)描述語言ADL的概述2.1對ADL的不同理解當(dāng)前在學(xué)術(shù)界對ADL的定義尚未取得一致下面的定義大多來源于自身對某種ADL語

4、言的開發(fā)所得到的體會(huì)。盡管它們不免有以偏概全之賺,但還是為我們了解ADL提供了有價(jià)值的信息。在文1中,Tracz定義一個(gè)ADL包含“C:組件(components),連接子(connectors),配置(configurations),約束(constraints)。根據(jù)其UniCon的經(jīng)歷,Shaw與同事列出了ADI應(yīng)該展示的屬性如下:1)組件建模的能力,帶屬性斷言、接口、實(shí)現(xiàn);2)連接子建模的能力,帶協(xié)議、屬性斷言與實(shí)現(xiàn);3)抽象與封裝;4)類型與類型檢查;5)適應(yīng)分析工具的能力(3)在文2中,將ADL劃分為4個(gè)組成部分:組件,連接子,配置、支持工具。其中,組件、連接子、配置構(gòu)成了ADL的

5、體系結(jié)構(gòu)描述特性。而支持工具則為軟件體系結(jié)構(gòu)設(shè)計(jì)者提供必要的幫助。(4)在文3中,Luckham與Vera在研究Rapide的基礎(chǔ)上提出.ADL應(yīng)該滿足以下要求:1)組件抽象;2)通信抽象;3)通信完整性,要求在結(jié)果實(shí)現(xiàn)中,只有在一個(gè)體系結(jié)構(gòu)中相聯(lián)結(jié)的組件可以通信;4)動(dòng)態(tài)體系結(jié)構(gòu)建模的能力5)分層復(fù)合;6)相關(guān)性.或者是行為與體系結(jié)構(gòu)間關(guān)聯(lián)(映射)的能力;7)組件建模的能力,帶屬性斷言、接口、實(shí)現(xiàn);8)連接子建模的能力,帶協(xié)議、屬性斷言與實(shí)現(xiàn);9)抽象與封裝;10)類型與類型檢查;11)適應(yīng)分析工具的能力。2.2ADL的定義從上述一小節(jié)我們可以看出,學(xué)術(shù)領(lǐng)域?qū)DL的理解還存在著分歧。我們認(rèn)

6、為:ADL是這樣一種形式化語言,它在底層語義模型的支持下,為軟件系統(tǒng)的概念體系結(jié)構(gòu)建模提供了.具體語法與概念框架?;诘讓诱Z義的工具為體系結(jié)構(gòu)的表示、分析、進(jìn)化、細(xì)化、設(shè)計(jì)過程等提供支持。其三個(gè)基本構(gòu)成元素是:1)組件計(jì)算或數(shù)據(jù)存儲(chǔ)單元;2)連接子用于組件問交互建模的體系結(jié)構(gòu)構(gòu)造塊及其支配這些交互的規(guī)則3)體系結(jié)構(gòu)配置描述體系結(jié)構(gòu)的組件與連接于的連接圖。2.3ADL應(yīng)具備的特點(diǎn)2.3.1為了精確描述軟件體系結(jié)構(gòu),ADL首先應(yīng)有一個(gè)形式化理論基礎(chǔ),如Pet“網(wǎng)、狀態(tài)圖、z、CSP”等。有了形式化理論基礎(chǔ),才能對所描述的系統(tǒng)進(jìn)行分析和驗(yàn)證。如Wright用CSP進(jìn)行描述、Rapide采用偏序事件集

7、合等。2.3.2作為一種描述語言,ADL應(yīng)具有嚴(yán)謹(jǐn)?shù)恼Z法和語義。描述能力應(yīng)足夠強(qiáng),至少應(yīng)能描述的基本構(gòu)件如組件、連接件及有關(guān)配置規(guī)范。同時(shí),為了更好的應(yīng)用,一種ADL,應(yīng)有相應(yīng)的支持工具,支持工具的能力直接反映了該ADL的可使用程度和范圍。2.3.3描述軟件體系結(jié)構(gòu)的一個(gè)很重要的目的是為了便于軟件開發(fā)者的理解和交流,因此,ADL描述應(yīng)簡單易懂,最好有圖表輔助理解。對于同一個(gè)體系結(jié)構(gòu),不同的軟件開發(fā)者需要從不同的抽象層次上理解,這就要求ADL能描述不同抽象程度的軟件體系結(jié)構(gòu)。2.3.4分析作為軟件體系結(jié)構(gòu)求精、驗(yàn)證的基礎(chǔ),是一般ADL不可缺少的一種功能分析有靜態(tài)分析和動(dòng)態(tài)分析,如Wright基于

8、CSP能對單個(gè)組件或連接件進(jìn)行靜態(tài)死鎖分析、Rapide基于偏序事件集合(partiallyorderedeventsets)可進(jìn)行動(dòng)態(tài)分析。3.5其他有關(guān)設(shè)計(jì)ADL應(yīng)注意的問題,還有可擴(kuò)展性、演化和重用等。三、常見ADL的介紹與比較3.1常見ADL的介紹ADL是當(dāng)前軟件開發(fā)和設(shè)計(jì)方法學(xué)中一種發(fā)展很快的軟件體系結(jié)構(gòu)描述方法,目前,已經(jīng)有幾十種常見的ADL。其中已經(jīng)開發(fā)和使用的常見ADL有Wright、Unieon、C2、Aesop、Rapide、Darwin、SADL等。這里我們對Unicon、C2SADL、ACME、XADL四種給出介紹和比較。3.1.1UniconUniCon簡介UniCo

9、n是由CMU和SEI設(shè)計(jì)的一個(gè)體系結(jié)構(gòu)描述語言.該語言關(guān)注軟件體系結(jié)構(gòu)的結(jié)構(gòu)化特性,將系統(tǒng)(本身也是一個(gè)復(fù)合構(gòu)件)描述為構(gòu)件和連接子的配置,其中構(gòu)件表示計(jì)算或者數(shù)據(jù),而連接子表示構(gòu)件之間的交互.每個(gè)構(gòu)件的接口都對外提供一些演員(player).構(gòu)件通過這些演員與外界發(fā)生交互與構(gòu)件類似,一個(gè)連接子的協(xié)議對外提供一些角色(role),連接子通過這些角色來調(diào)解構(gòu)件之間的交互.在UniCon建立連接通過演員與角色的關(guān)聯(lián),最終就可以建立整個(gè)系統(tǒng)各個(gè)部分之間的配置.最新版本的UniCon不僅支持類似于上例的管道-過濾器系統(tǒng),還支持使用過程調(diào)用和共享數(shù)據(jù)的模塊交互系統(tǒng)基于RPC調(diào)用的分布式系統(tǒng),根據(jù)各種實(shí)時(shí)

10、要求共享處理器的進(jìn)程以及基于SQL命令的數(shù)據(jù)庫訪問.UniCon的提出是為了達(dá)到如下目的:解決系統(tǒng)描述和組裝的實(shí)際問題,為實(shí)際工具提供一個(gè)原型;為各種連接機(jī)制提供一個(gè)一致的訪問方式;幫助軟件設(shè)計(jì)師區(qū)分不同的構(gòu)件類型和連接子類型并驗(yàn)證構(gòu)件和連接子配置的正確性;支持圖形化和文本化符號以及二者之間的互換;兼容現(xiàn)存的用常見的編程語言編寫的構(gòu)件(這些構(gòu)件并不需要特定于UniCon);盡可能的將運(yùn)行時(shí)開銷降到最低;以下將具體介紹UniCon中構(gòu)件和連接子的定義UniCon中的構(gòu)件UniCon中的構(gòu)件定義包括規(guī)約部分和實(shí)現(xiàn)部分.構(gòu)件的規(guī)約稱為構(gòu)件的接口(interface).接口定義了構(gòu)件所能進(jìn)行的計(jì)算以及

11、使用構(gòu)件必須遵循的約束.構(gòu)件的接口包含三類信息:構(gòu)件類型:構(gòu)件類型表示構(gòu)件提供的功能的類型,它限制了該構(gòu)件所能定義的演員的數(shù)量,類型和規(guī)約.特性:由屬性和值組成的二元組,用于指定與構(gòu)件整體相關(guān)的附加信息,例如斷言,約束等.演員:從構(gòu)件外部可見的語義單元,構(gòu)件通過演員與其它構(gòu)件發(fā)生交互.構(gòu)件的實(shí)現(xiàn)有兩種形式:原子(primitive)實(shí)現(xiàn):原子實(shí)現(xiàn)是一個(gè)指向存在于UniCon語言外部的文檔鏈接,該文檔包含了相應(yīng)的構(gòu)件實(shí)現(xiàn).它可能是某種編程語言的源代碼(目前UniCon工具集僅僅支持C語言的源代碼),也可以是目標(biāo)碼,或者是包含目標(biāo)碼的Unix檔案庫文件,或者是二進(jìn)制可執(zhí)行文件,shell腳本,數(shù)據(jù)

12、文件,C語言的include文件等復(fù)合(composite)實(shí)現(xiàn):某個(gè)UniCon構(gòu)件的復(fù)合實(shí)現(xiàn)是對其它已定義的構(gòu)件和連接子的配置的描述,該實(shí)現(xiàn)包含三類信息:片段(piece):用于構(gòu)造某個(gè)配置的構(gòu)件和連接子實(shí)例配置信息:描述構(gòu)件和連接子的關(guān)聯(lián)抽象信息:描述該構(gòu)件的接口如何由其復(fù)合實(shí)現(xiàn)中的構(gòu)件接口實(shí)現(xiàn).構(gòu)件實(shí)現(xiàn)的語法如下:UniCon中的連接子連接子的定義也包含規(guī)約和實(shí)現(xiàn)兩個(gè)部分,其中規(guī)約部分通過協(xié)議(protocol進(jìn)行描述.連接子的協(xié)議定義了構(gòu)件之間允許產(chǎn)生的交互,并確保這些交互能夠順利進(jìn)行.連接子的協(xié)議包含三類信息:連接子類型:連接子類型表示連接子所能調(diào)解的構(gòu)件之間的交互類型,它限制了連

13、接子的角色的數(shù)量,類型和規(guī)約.特性:由屬性和值組成的二元組,用于指定和連接子整體相關(guān)的附加信息,例如斷言,約束等(例如和時(shí)間和順序相關(guān)的規(guī)則)角色:從連接子外部可見的語義單元,通過角色連接子對構(gòu)件的交互進(jìn)行調(diào)解.角色通過與演員發(fā)生關(guān)聯(lián),從而形成系統(tǒng)的連接,它定義了參與連接的演員的需求與責(zé)任.連接子的實(shí)現(xiàn)是UniCon內(nèi)置的,即UniCon只支持連接子的原子實(shí)現(xiàn),它本身不提供用戶自定義連接子實(shí)現(xiàn)的機(jī)制.連接子的定義的語法如下(從中也可以看出UniCon目前支持的連接子實(shí)現(xiàn)的類型):UniCon是最早的體系結(jié)構(gòu)描述語言之一.從上述介紹可以看出,UniCon強(qiáng)調(diào)將系統(tǒng)劃分為構(gòu)件后,用適當(dāng)?shù)倪B接子將其

14、組裝起來構(gòu)成一個(gè)完整的系統(tǒng).構(gòu)件和連接子之間是松耦合關(guān)系UniCon備受詬病的一點(diǎn)是它只支持預(yù)定義的連接子,并且不支持復(fù)合連接子.為了解決這個(gè)問題,相關(guān)研究人員在UniCon的基礎(chǔ)上對其進(jìn)行了增強(qiáng).增強(qiáng)后的UniCon稱為UniCon-2.UniCon-2提供了一個(gè)比較靈活的類型系統(tǒng),并且引入了責(zé)任(duty)這個(gè)概念用于描述演員,角色等與屬性的關(guān)系.某個(gè)系統(tǒng)配置的責(zé)任還可以用于描述體系結(jié)構(gòu)風(fēng)格.由于UniCon-2允許用戶引入新類型為了便于對與新類型相關(guān)的約束進(jìn)行檢查,UniCon-2采用了一種開放的編譯器結(jié)構(gòu)以便于增加相應(yīng)的檢測方法.3.1.2C2SADLC2SADL是UCI設(shè)計(jì)的一種基于

15、消息傳遞的體系結(jié)構(gòu)描述語言,主要用于描述符合C2風(fēng)格的軟件系統(tǒng)的體系結(jié)構(gòu).C2風(fēng)格C2風(fēng)格是一種基于構(gòu)件和消息的體系結(jié)構(gòu)風(fēng)格,主要是應(yīng)用于帶有圖形用戶接口(GUI)的應(yīng)用系統(tǒng),但也能用于其它類型的應(yīng)用.這種風(fēng)格要求構(gòu)件之間通過消息交換進(jìn)行通信因此每個(gè)C2構(gòu)件和C2連接子都有一個(gè)top接口和一個(gè)bottom接口,其中top接口定義了該構(gòu)件所能接收的應(yīng)答消息和向上發(fā)出的請求消息,而bottom接口定義了該構(gòu)件能夠進(jìn)行應(yīng)答的請求消息及其向下發(fā)出的應(yīng)答.所有消息都以連接子為橋梁在構(gòu)件之間進(jìn)行傳遞.這種風(fēng)格的體系結(jié)構(gòu)將系統(tǒng)中的構(gòu)件用連接子劃分為不同層次,.C2風(fēng)格的體系結(jié)構(gòu):可視化堆棧(Stack)C2

16、風(fēng)格的核心在于構(gòu)件之間的有限可見性,即處于系統(tǒng)中某個(gè)層次的構(gòu)件只能看到上層的構(gòu)件,而不清楚下層到底是什么構(gòu)件在與之進(jìn)行通信.具體表現(xiàn)在如下所述的構(gòu)件之間的通信規(guī)則(即系統(tǒng)的組裝規(guī)則):構(gòu)件的top接口只可能與某一個(gè)連接子的bottom接口相連構(gòu)件的bottom接口只可能與某一個(gè)連接子的top接口相連與連接子相連的構(gòu)件或者連接子沒有數(shù)量限制兩個(gè)連接子相連時(shí),只能是其中一個(gè)的bottom接口與另一個(gè)的top接口相連C2SADLC2SADL目前還只是一個(gè)原型語言,其相應(yīng)的支撐工具還在開發(fā)中該語言包含三個(gè)部分:接口定義符號(IDN,interfacedefinitionnotation):是C2中的構(gòu)

17、件接口的規(guī)約如下所示是一個(gè)堆棧(Stack)構(gòu)件的C2IDN.體系結(jié)構(gòu)描述符號(ADN,architecturedescriptionnotation):是C2體系結(jié)構(gòu)的聲明性規(guī)約.體系結(jié)構(gòu)構(gòu)造符號(ACN,architectureconstruetionnotation):主要用于表達(dá)體系結(jié)構(gòu)的動(dòng)態(tài)變化,例如如果要在運(yùn)行時(shí)刪除堆棧的一種可視化表示方式,可以用ACN進(jìn)行如下描述:C2SADL中的連接子本質(zhì)上是一種消息總線,復(fù)合這種結(jié)構(gòu)的應(yīng)用系統(tǒng)往往具有比較良好的靈活性和可擴(kuò)展性不過由于C2SADL還沒有針對大型實(shí)際系統(tǒng)進(jìn)行建模和使用,因此對使用該結(jié)構(gòu)所可能導(dǎo)致的性能問題還不是很明確.3.1.3

18、基于XML消息的體系結(jié)構(gòu)描述語言XADL體系結(jié)構(gòu)描述語言XADL的基礎(chǔ)是一種基于消息的體系結(jié)構(gòu)模型,即構(gòu)件通過端口接收請求消息和發(fā)送響應(yīng)消息構(gòu)件之間通過端口的連接進(jìn)行消息交換,從而組合為復(fù)合構(gòu)件或應(yīng)用系統(tǒng)因此,中包含了對構(gòu)件接口的描述和對系統(tǒng)組合的描述,第1.1節(jié)和1.2節(jié)分別介紹了這兩部分內(nèi)容,第1.3節(jié)給出了完整的例子.3.1.3.1構(gòu)件借口描述在XADL中構(gòu)件通過端口接收和發(fā)送消息端口,分為輸入端口和輸出端口,分別用來接收請求消息和發(fā)送響應(yīng)消息。我們用關(guān)鍵字inports和ouports定義端口。在構(gòu)件組合過程中只有在不同輸入、輸出方向的端口之間才能進(jìn)行連接。端口除了具有方向之外,還必須

19、指明其所允許的消息類型一個(gè)端口上可以允許多個(gè)不同的消息類型。為了使系統(tǒng)具有良好的可擴(kuò)展性采用XML來描述消息,因此在接口描述中,我們采用文檔類型定義(DTD)表示消息類型,并把DTD作為定義消息類型的關(guān)鍵字。實(shí)際上,端口及其所允許的消息類型定義了接口的基調(diào),描述了構(gòu)件與外界所能交換的消息的類型和方向。我們把某個(gè)端口上某個(gè)消息的出現(xiàn)稱為一個(gè)事件,而把由端口和其所允許的消息類型所組成的二元組定義為事件類型:事件:e=port,XMLMessage事件類型示:E=換句話說,事件類型的集合定義了接口的基調(diào)與傳統(tǒng)的IDL不同的是,在XML的接口描述中,除了定義接口基調(diào)外,還將對事件之間的次序約束關(guān)系進(jìn)行

20、描述。我們采用有限狀態(tài)自動(dòng)機(jī)來進(jìn)行次序約束關(guān)系的刻畫。有限狀態(tài)自動(dòng)機(jī)由一組狀態(tài)和一組遷移構(gòu)成。自動(dòng)機(jī)在某個(gè)狀態(tài)下會(huì)響應(yīng)某個(gè)類型的事件,并轉(zhuǎn)移到另外的狀態(tài)::-自動(dòng)機(jī)的定義由關(guān)鍵字Constraints引導(dǎo),包含狀態(tài)的定義和遷移的定義,分別以states和Transitions為關(guān)鍵字,在自動(dòng)機(jī)的狀態(tài)中,有一個(gè)起始狀態(tài)和一個(gè)或多個(gè)終結(jié)狀態(tài),分別用init和final來標(biāo)注。3.1.3.2系統(tǒng)組合描述在XADL中,不僅支持對構(gòu)件接口的描述,還支持對構(gòu)件組合關(guān)系的描述。構(gòu)件之間通過端口的連接進(jìn)行系統(tǒng)組合,只有方向相反和消息類型相同的端口才能進(jìn)行連接。在參與某個(gè)連接的端口中,不允許存在屬于同一個(gè)構(gòu)件的

21、兩個(gè)端口支持一對多的連接,對于輸出端口來說,其上的消息將被同時(shí)輸出到所有與其相連的輸入端口上;而對于輸入端口來說,同一時(shí)刻最多只能有一個(gè)與其相連的輸出端口上的消息被輸入到該端口上。對于具有連接關(guān)系的輸入端口A和輸出端口B來說,以下的約束成立:事件和事件為同時(shí)發(fā)生,其中X是滿足兩個(gè)端口上的消息類型的XML消息。我們稱這種約束為連接約束。構(gòu)件接口描述定義了構(gòu)件的類型,而在系統(tǒng)組合描述中,我們首先要定義構(gòu)件實(shí)例構(gòu)件實(shí)例的定義以Instances為關(guān)鍵字,一個(gè)系統(tǒng)中可以包含同一構(gòu)件類型的多個(gè)實(shí)例。構(gòu)件端口之間的鏈接關(guān)系用關(guān)鍵字to表示,具有一下的形式:C1.p1toC2.p4或C1.p1toC2.p3

22、,C3.p4.其中C1,C2和C3分別為構(gòu)件實(shí)例,而pl,p3和p4分別為各個(gè)構(gòu)件的端口。3.1.4AcmeAcme是一種體系結(jié)構(gòu)互換語言,支持體系結(jié)構(gòu)的規(guī)格說明在不同的ADL之間轉(zhuǎn)換。Acme可作為體系結(jié)構(gòu)設(shè)計(jì)工具的通用交換格式,也可以作為開發(fā)閑的體系結(jié)構(gòu)設(shè)計(jì)和分析工具的基礎(chǔ)。Acme有如下主要特點(diǎn):用7種基本的設(shè)計(jì)元素來表示軟件體系結(jié)構(gòu):提供了一種靈活的注釋機(jī)制,支持把體系結(jié)構(gòu)和用子語言表示的非結(jié)構(gòu)化信息結(jié)合起來,這些子語言是外部定義的;提供了一種類型機(jī)制,用于抽象出共同的、可重用的體系結(jié)構(gòu)用法和風(fēng)格;提供了一個(gè)開放的語義框架,用于體系結(jié)構(gòu)的描述的推理。Acme語言和Acme工具開發(fā)庫有以

23、下三種基本功能:體系結(jié)構(gòu)的相互交互。通過提供一種體系結(jié)構(gòu)設(shè)計(jì)的交換格式,ACME允許各種開發(fā)工具與其它補(bǔ)充工具協(xié)同工作。這樣,使用ACME的設(shè)計(jì)師與使用其它ADL設(shè)計(jì)師相比,就多了很多可供選擇的開發(fā)工具。為新的體系結(jié)構(gòu)設(shè)計(jì)和分析工具提供了可擴(kuò)展的基礎(chǔ)。許多體系結(jié)構(gòu)設(shè)計(jì)和分析工具需要一個(gè)用于描述、存儲(chǔ)、操縱體系結(jié)構(gòu)設(shè)計(jì)的表示法。但開發(fā)好的表示法往往需要很高的時(shí)間和經(jīng)濟(jì)成本。使用ACME可以有效減少這方面的成本,因?yàn)榭梢杂盟峁┑恼Z言和用于工具開發(fā)的函數(shù)庫作為基礎(chǔ)。使用ACME還使得所開發(fā)的工具能夠有更好的通用性,因?yàn)樗梢耘c其它使用ACME格式的工具交流設(shè)計(jì),協(xié)作開發(fā)。體系結(jié)構(gòu)描述。ACME本身

24、是一個(gè)很好的開發(fā)語言。盡管不是適合于所有的應(yīng)用系統(tǒng),ACME體系結(jié)構(gòu)描述語言能夠讓開發(fā)者很好地認(rèn)識體系結(jié)構(gòu)建模,提供了一個(gè)相對容易的對簡單軟件系統(tǒng)的描述方法。Acme體系結(jié)構(gòu)設(shè)計(jì)元素類型:ACME的核心概念以7種類型的實(shí)體為基礎(chǔ):構(gòu)件、連接件、系統(tǒng)、端口、角色、表述和表述圖(rep-maps,representationmap的縮寫)。在這7個(gè)類型圖1一個(gè)Acme描述元素構(gòu)件代表系統(tǒng)中基本的計(jì)算元素和數(shù)據(jù)存儲(chǔ)。直觀上看,在用方框和連線表示的體系結(jié)構(gòu)圖中,它們對應(yīng)的就是方框。典型的構(gòu)件有客戶、服務(wù)器、過濾器、對象、黑板、數(shù)據(jù)庫等。連接件代表構(gòu)件之間的交互。它是構(gòu)件之間通信和交互活動(dòng)的媒介,像“膠

25、水”一樣把構(gòu)件聯(lián)系成為一個(gè)體系結(jié)構(gòu)。直觀上看,它們對應(yīng)方框連線圖中的連線。連接件的例子包括簡單的交互形式,如管道、過程調(diào)用、事件廣播等。但連接件也可以表示更復(fù)雜的交互,如客戶/服務(wù)器協(xié)議或數(shù)據(jù)庫和應(yīng)用程序之間的SQL連接。系統(tǒng)代表構(gòu)件和連接件的配置。構(gòu)件的接口定義為端口(Port)的集合。每個(gè)端口表示構(gòu)件與它外部環(huán)境的一個(gè)交互點(diǎn)。通過使用不同類型的端口,一個(gè)構(gòu)件能提供多個(gè)接口。一個(gè)端口可以表示很簡單的接口,也可以表示復(fù)雜接口,如必須按某種指定順序被調(diào)用的過程集合,或一個(gè)事件廣播交互點(diǎn)。連接件的接口可以用角色(Role)來定義。連接件的每一個(gè)角色定義了連接件所代表的交互中的一個(gè)參與方。二重連接件

26、有兩個(gè)角色,如RPC連接件的Caller和Callee,或管道連接件的reading和writing,或消息發(fā)送連接件的sender和receiver角色。其他類型的連接件的角色可能多于兩個(gè)。例如,事件廣播連接件,可能有一個(gè)事件播報(bào)角色和任意數(shù)目的事件接收角色。Acme的屬性:Acme并不明確定義屬性的含義,但是它支持對屬性含義的共享使用。其屬性由名字、可選類型和值構(gòu)成。對7種設(shè)計(jì)實(shí)體里的任何一種都可以添加注釋。為了使不同的ADL都能夠使用屬性所表達(dá)的信息,這些ADL對于屬性應(yīng)該有共同的理解。當(dāng)前已經(jīng)有一些屬性子語言被開發(fā)出來。其中之一是用來規(guī)定在使用圖形化的體系結(jié)構(gòu)描述編輯工具時(shí)的可視化屬性

27、,還有一個(gè)子語言用于描述體系結(jié)構(gòu)上的臨時(shí)約束。Acme語言引入模板機(jī)制。它是一種類型化、參數(shù)化的宏,用于對反復(fù)出現(xiàn)的模式做規(guī)格說明。在應(yīng)用或初始化這些模式時(shí),只要給它們提供適當(dāng)類型的參數(shù)就可以了。模板定義了句法結(jié)構(gòu),可以被擴(kuò)展到需要生成新的聲明的位置。它們非常靈活,可以像在構(gòu)件和連接件中一樣定義它們的聯(lián)結(jié)。Acme開放語義框架:Acme主要考慮的是體系結(jié)構(gòu)的構(gòu)造,因此并不包含體系結(jié)構(gòu)的計(jì)算語義,而是依靠一個(gè)開放的語義框架。這個(gè)框架提供了基本的結(jié)構(gòu)語義,它用構(gòu)建屬性的方式,允許特定的ADL把體系結(jié)構(gòu)和運(yùn)行時(shí)的行為結(jié)合起來。這個(gè)框架還提供了從語言的結(jié)構(gòu)外觀到基于關(guān)系和約束的邏輯形式的直接映射。在這

28、個(gè)框架里,ACME規(guī)格說明表示一個(gè)由此推導(dǎo)出的邏輯謂詞,稱為它的指示規(guī)則。3.2常見ADL的比較3.2.1體系結(jié)構(gòu)描述語言的連接子建能力比較描述語言特性接口類型語義約束演化非功能屬性UniCon支持顯式的連接子用role進(jìn)行建模預(yù)定義連接子類型隱含在連接子類型中;可以使用屬性列表定義語義信息通過接口進(jìn)行約束;能夠限制指定的role所能連接的player類型無用于可調(diào)度性分析的屬性C2SADL支持顯式的連接子通過獨(dú)立的port與構(gòu)件進(jìn)行交互,接口區(qū)分provided和required基于協(xié)議的可擴(kuò)展類型系統(tǒng)通過消息過濾器支持部分語義通過語義進(jìn)行約束;風(fēng)格不變量(每個(gè)port只與一個(gè)鏈接相關(guān)上下文

29、反射接口;可演化的過濾機(jī)制無ACME支持顯式的連接子用role進(jìn)行建?;趨f(xié)議的可擴(kuò)展的類型系統(tǒng);使用模板實(shí)現(xiàn)參數(shù)化不支持,但可以在屬性列表中使用其它ADL的語義模型通過接口和類型對實(shí)例進(jìn)行約束通過extends對結(jié)構(gòu)進(jìn)行子類型化通過屬性列表進(jìn)行定義,但是不對其進(jìn)行操作xADL支持顯式的連接子用interface進(jìn)行建??蓴U(kuò)展的類型系統(tǒng),可自定義類型不變量和前置,后置條件通過接口和語義進(jìn)行約束支持產(chǎn)品線建模,版本建模無3.2.2體系結(jié)構(gòu)描述語言對配置的建模能力的比較描述語.言特性易理解性組裝性精化/易追蹤性異構(gòu)性易伸縮性演化性動(dòng)態(tài)性約束非功能屬性UniCon使用顯式的連接子來描述配置顯式的文本

30、和圖形化規(guī)約;配置描述可以是分布式的通過復(fù)合構(gòu)件和連接子實(shí)現(xiàn)組裝支持系統(tǒng)生成;對實(shí)現(xiàn)有所限制僅支持預(yù)定義的構(gòu)件和連接子類型;支持構(gòu)件的包裝受益于顯式的配置和可變數(shù)目的連接子角色對體系結(jié)構(gòu)的局部描述提供了部分支持;受益于顯式的配置無連接子只能和role相連無C2SADL顯式的體系結(jié)構(gòu)拓?fù)浣Y(jié)構(gòu)顯式的精確的文本與圖形化規(guī)約支持組裝;通過內(nèi)部構(gòu)件的體系結(jié)構(gòu)加以支持無通過內(nèi)部構(gòu)件的體系結(jié)構(gòu)加以支持;支持Java,C+和Ada的開發(fā)得益于顯式的配置和可變的連接子端口;用于自身工具集的構(gòu)建支持體系結(jié)構(gòu)的局部描述;受益于顯式的的配置;構(gòu)件間的相互依賴最小不可預(yù)期的動(dòng)態(tài)性;支持元素的插入,刪除與重新連接確定的風(fēng)

31、格不變量無化;異構(gòu)的連接子ACME顯式的attachment顯式的精確的文本規(guī)約模版,表示層以及表示層映射表示層映射開放的屬性列表;需要顯式的ADL之間的映射得益于顯式的配置;但受制于固定的角色數(shù)量受益于顯式的配置;一階的家族概念無Port只能與role相連通過屬性列表進(jìn)行定義,但是不對其進(jìn)行操作xADL使用顯式的連接子來描述配置顯式的精確的文本規(guī)約通過復(fù)合構(gòu)件和連接子實(shí)現(xiàn)組裝支持系統(tǒng)生成;有一定的工具支持支持不同語言的實(shí)現(xiàn)體;實(shí)現(xiàn)與規(guī)約分離得益于顯式的配置;使用schema從而具有schema的可擴(kuò)展性受益于顯式的配置;支持產(chǎn)品線和版本概念使用variant支持一定的動(dòng)態(tài)能力構(gòu)件的inter

32、face只能與連接子的interface相連無四、現(xiàn)有軟件體系結(jié)構(gòu)描述語言ADL的不足4.1大部分ADL領(lǐng)域相關(guān)且互不兼容目前提出的眾多的ADL及它們的支持工具,都是獨(dú)立的形式存在的,且描述語法互不兼容,同時(shí)又有許多共同的特征,這使設(shè)計(jì)人員很難選擇一種合適的ADL,若設(shè)計(jì)特定領(lǐng)域的軟件體系結(jié)構(gòu)又需要從頭開始描述,不利于對不同領(lǐng)域的體系結(jié)構(gòu)進(jìn)行分析。大部分ADL是領(lǐng)域相關(guān)的,不利于對不同領(lǐng)域的體系結(jié)構(gòu)進(jìn)行分析。一些ADL在某些方面大同小異,有很多冗余的部分。4.2支持工具有效性和可用性差現(xiàn)有的ADL伴生的支持工具有效性和可用性較差,在多視圖、細(xì)化與回溯、跨體系結(jié)構(gòu)層一致性檢查等方面有很多不足的地方。甚至一些ADL還沒有可用的支持工具。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論