專利名稱::一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,屬于計算機科學軟件工程
技術(shù)領(lǐng)域:
。
背景技術(shù):
:軟件體系結(jié)構(gòu)描述語言ADL(ArchitectureDescriptionLanguage)是對軟件體系結(jié)構(gòu)模型進行描述的語言。目前絕大多數(shù)ADL是為了不同領(lǐng)域與不同目的而開發(fā)的。例如Wright,C2,Rapide,ConMoto,Darwin等,他們各自有專門的應(yīng)用領(lǐng)域和使用范圍。目前,現(xiàn)有的絕大多數(shù)軟件體系結(jié)構(gòu)描述語言ADL不考慮通用與擴展性以及本身的結(jié)構(gòu)問題,使得開發(fā)新ADL與擴展ADL的新特征都會導致不必要的代價。相應(yīng)的開發(fā)工具就必須進行改寫。這樣軟件體系結(jié)構(gòu)的使用人員就不得把大量精力放在以ADL為中心的體系結(jié)構(gòu)開發(fā)工具的開發(fā)和修改工作上。這一定程度上阻礙了軟件體系結(jié)構(gòu)描述語言ADL在實踐中的應(yīng)用。
發(fā)明內(nèi)容為了解決上述技術(shù)問題,本發(fā)明提供了一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法。本發(fā)明包括以下二個步驟(l)構(gòu)建一個可擴展體系結(jié)構(gòu)語言基礎(chǔ)FEAL(FoundationofExtensibleArchitectureLanguage),FEAL指定了一套描述性的抽象元素定義、一組元素結(jié)構(gòu)規(guī)范和一套映射機制規(guī)范,提供一個來構(gòu)造新ADL的各種表義符號的下層架構(gòu)基礎(chǔ),將軟件體系結(jié)構(gòu)描述語言ADL的表義符號映射到FEAL的抽象元素;(2)構(gòu)建一個基于FEAL的軟件體系結(jié)構(gòu)的具有軟件體系結(jié)構(gòu)開發(fā)通用的模型顯示、可視化編輯、屬性顯示、多視圖支持、軟件體系結(jié)構(gòu)描述語言ADL自動生成、模型結(jié)構(gòu)展示功能的用于為軟件體系結(jié)構(gòu)相關(guān)研究提供實驗平臺和展示工具的開發(fā)平臺XArch系統(tǒng)。所有ADL都會定義其表義符號用作其描述的基本詞匯表。其中的一些是獨特的,而其他的從表現(xiàn)上看十分相似甚至是一致的。為了統(tǒng)一那些獨特的原色,必須指出其表達基礎(chǔ)。例如,一些ADL會提供關(guān)于版本與服務(wù)ID以便對構(gòu)件的檢査;一些ADL支持變量,使得可以動態(tài)獲取相關(guān)值。為了達到這一個描述需求,使用屬性(/^rap^^力這一抽象概念。屬性是一個簡單的鍵值對,可以附加一個形式化的表達式來聲明計算規(guī)則或者約束。在FEAL中,定義了實體、類型和實例用于描述像構(gòu)件這樣的表義符號。本發(fā)明的有益效果是:在針對某一軟件體系結(jié)構(gòu)領(lǐng)域研究課題時,一般來講有如下步驟的工作需要依次完成(a)首先要利用問題所處的上下文環(huán)境和技術(shù)特征進行抽象和提取,定制軟件體系結(jié)構(gòu)模型;(b)利用編程技術(shù)實現(xiàn)此模型,比如實現(xiàn)一組Java類來表示模型中的實體和關(guān)系;(c)定義此軟件體系結(jié)構(gòu)模型的描述語法;(d)編寫針對此語法的編譯器,使得軟件系統(tǒng)能夠識別以此語法編寫的軟件體系結(jié)構(gòu)描述文檔。編譯器的工作是將文本描述轉(zhuǎn)換為第(b)步實現(xiàn)的計算機可以識別的類型;(e)編寫相關(guān)的功能模塊來處理實現(xiàn)的模型,以便完成研究內(nèi)容中的分析校驗等工作;(f)為了使得模型更加容易在實踐活動中的使用更加方便,需要變現(xiàn)可視化的編輯器。這些內(nèi)容包括可支持多視圖的可視化編輯工具;串行化和反串行化支持;多視圖自動同步支持等。而這些工作中除了第(a)和第(e)步外,均與核心的研究內(nèi)容無關(guān)。但為了進行實驗卻不花費大量的精力來完成這些工作。同時,由于軟件體系結(jié)構(gòu)描述本身的特點,這些工作的重復性很高。這樣的結(jié)果導致軟件體系結(jié)構(gòu)研究者或者使用者無法將自己的想法快速進行應(yīng)用。而通過使用本發(fā)明方法就可以將第(b)步和第(c)步簡單變換成為編寫一份符合FEAL規(guī)范的XMLSchema,以及編寫一份映射機制文檔。避免了大規(guī)模的編寫代碼以及由此帶來的軟件測試和維護的問題。同時第(d)和第(f)步工作得到的功能可以自動獲得。使用者需要的僅僅從解決問題的角度入手定義相應(yīng)的模型,以及實現(xiàn)模型特有的功能即可。這樣,使用者可以更加專心的投入到自身研究或者建模分析工作中來。此外,本發(fā)明的插件式的開發(fā)模式有利于系統(tǒng)功能重用。例如,可以實現(xiàn)一種形式化語法的解析器用于不同的ADL或者體系結(jié)構(gòu)模型,只要形式化語法本身一致即可。這樣,不同工具就可以根據(jù)需要任意整合,易于滿足軟件體系結(jié)構(gòu)實際應(yīng)用的需要,本發(fā)明使得定義ADL的工作更加方便和快捷,極大的方便了對軟件體系結(jié)構(gòu)的研究和分析。有利于軟件體系結(jié)構(gòu)在實際工程中應(yīng)用的推廣。圖1是本發(fā)明所述一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法的XArch系統(tǒng)方框圖,圖2是本發(fā)明所述一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法的插件式軟件體系結(jié)構(gòu)開發(fā)平臺ADP的方框圖。具體實施方式下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明,本發(fā)明定義了十種FEAL抽象元素定義,也可稱之為FEAL元素類別(FEALElementCategories,F(xiàn)EC),它們是體系結(jié)構(gòu)表義符號的抽象表達,F(xiàn)EAL抽象元素定義如下所示視圖模型ViewModel:—系列代表結(jié)構(gòu)模型的元素,一個視圖模型包含一系列FEAL的其他元素以及它們的配置,視圖模型還可以有輸入?yún)?shù),WRIGHT中的配置以及ACME的術(shù)語風格適合被映射成視圖模型;容器Container:容器就容納其他FEC元素(包括容器元素)的器皿,特定FEC的容器寫作Container{FEC};實體Entity:實體是一種元素,它不需要類型/實例的支持。類型Type:類型是特殊的實體,它支持重用和一致性檢測,在類型上,可以定義構(gòu)件類型、連接器類型、端口類型、服務(wù)類型或者任意相近的元素,類型也適合于靜態(tài)設(shè)計模型,該模型的元素會被運行時模型所引用,類型的許多特征與一般實體不同,例如類型的繼承,導出與導入;實例Instance:實例是某些類型元素的實例化對象,是一種特殊的實體;屬性類型PropertyType:屬性類型是屬性的集合,用于限制實例的值,可定義如整型、雙精度浮點型、日期型和字符串型等基本屬性類型,或者將值標記為只讀或可選;屬性Property:屬性是一個簡單鍵值對,記錄了簡單信息,其中的值可以是變量,通過對子腳本元素運行時分析計算而來,屬性可以從屬性類型實例化而來,或者獨立存在;連接Link:連接聲明元素之戀的關(guān)系,尤其是實體、類型、實例之間的關(guān)系,一系列的連接關(guān)系構(gòu)成了配置,配置聲明元素如何綁定在一起;腳本Script:用來表述ADL的行為、使用約束與計算規(guī)則,通常使用進程代數(shù)、邏輯或者是自定義語法的形式來書寫;備注Comment:為便于閱讀與學習的描述性的備注。當開發(fā)一種新的ADL時,它的相關(guān)概念與術(shù)語必須被映射成FEC元素。在本發(fā)明中,可擴展體系結(jié)構(gòu)語言基礎(chǔ)FEAL搭建一個可擴展的體系結(jié)構(gòu)建模系統(tǒng)。當獲得一個FEAL兼容的ADL時,將該ADL的術(shù)語映射至FEC,這個步驟由FEAL映射機制完成。FEAL映射機制有一系列順序記錄的映射記錄,映射記錄實現(xiàn)兩種轉(zhuǎn)換,先是ADL-FEAL映射,將ADL術(shù)語映射到相應(yīng)的FEC;其次是相關(guān)的建模工作,F(xiàn)EAL映射機制確定基于FEAL的ADP如何處理特定的ADL符號,例如用什么形狀表達,用什么樣的背景顏色,使用什么樣的紋飾來裝飾,是否能夠被編輯等等。在本發(fā)明中,可擴展體系結(jié)構(gòu)語言基礎(chǔ)FEAL處理那些與FEAL兼容的ADL,這些ADL必須服從FEAL的結(jié)構(gòu)。更具體的說,ADL的表義符號被安排成樹形且服從一些規(guī)則,這些規(guī)則就是FEAL元素結(jié)構(gòu)規(guī)范,如下正則表達式所示,<formula>formulaseeoriginaldocumentpage11</formula>上述公式中各符號含義表示如下C表示Container,FM表示ViewModel,T表示Type,I表示Instance,E表示Entity,P表示Property,PT表示PropertyType,L表示Link,S表示Script,CO表示Gommsnt。在上述公式中需要說明的是FEAL-ROOT只包含一個視圖模型的容器,可選屬性用于記錄meta信息。為了遵守此規(guī)則,所有類型,實例與實體元素的定義都必須封裝在視圖模型中。一方面,為非視圖模型元素設(shè)置范圍來執(zhí)行訪問與交叉引用控制,為了實現(xiàn)全局類型、實例、實體定義,可定義一個帶全局范圍的視圖模型;另一方面,視圖模型中的元素能夠在基于FEAL結(jié)構(gòu)建模工具中被視圖表示。FEAL工作步驟是FEAL接受了基于FEAL的ADL,并且利用FEAL映射機制將ADL元素映射為對應(yīng)的FEC。FEAL映射機制的附加信息幫助基于FEAL的插件式軟件體系結(jié)構(gòu)開發(fā)平臺ADP。它利用對待FEAL的方法來為ADL提供一些基本功能。于是,軟件體系結(jié)構(gòu)開發(fā)者可以利用FEAL來快速定義ADL,并得到相應(yīng)的工具支持。那些針對于特定ADL的功能可以利用插件的形式來對開發(fā)平臺進行補充,如圖2所示插件部分(插件1、插件2……插件n)提供特定ADL的功能;開發(fā)平臺ADP部分提供可用于符合FEAL規(guī)范的ADL的通用功能。FEAL映射機制的規(guī)范中最核心的兩個元素是feal-element和adl-element。是由它們完成的從具體ADL的內(nèi)從向FEC的映射,其它的映射項均是圍繞這兩者之間進行更具體描述的。FEAL映射機制的規(guī)范詳細說明如下所示adl-element:使用XML定義的ADL中要映射的內(nèi)容;feal-element:映射到FEC的具體類型;name-content:用于標定ad卜element中可以被識別為名稱的域;value-content:用于標定表達當前元素中可以被識別為值的域。當feal-element為Property日寸,name-content禾口value-content—起可以表示屬性的key和value;baseon-content:用以表示實例化關(guān)系,表明表示實例化類型所用的實際屬性。inherit-content:用以表示繼承關(guān)系,表明繼承的類型所用的實際屬性;source-content禾口destination-content:同時用來表示Link中的源禾口目標。visible:表示此adl-element在開發(fā)平臺上是否可見;shape:表示此adl-element在開發(fā)平臺上需要顯示的形狀;fill-color:表示此adl-element在開發(fā)平臺上的填充色;line-style:表示此adl-element在開發(fā)平臺上的線型;editable:表示lt匕adl—element在開發(fā)平臺上是否可編輯;icon:表示此adl-element在開發(fā)平臺上的工具欄中的圖標是什么。XArch系統(tǒng)是基于FEAL的插件式軟件體系結(jié)構(gòu)開發(fā)平臺ADP。該平臺主要用于為通用軟件體系結(jié)構(gòu)相關(guān)研究提供實驗平臺和展示工具,平臺本身要求的可擴展性很強,從而可以方便的在日后的研究過程中添加新的功能。XArch基于Eclipse插件開發(fā)環(huán)境進行開發(fā),目的是利用其強大的插件機制來提高體系結(jié)構(gòu)開發(fā)平臺的擴展性能。XArch系統(tǒng)整體由5個部分組成,如圖1所示,包括核心(Core)部分用于XArch和底層Eclipse平臺的通訊,以及其他部分之間的相互引用。模型(Model)部分用于維護整個XArch系統(tǒng)的模型。數(shù)據(jù)(Data)部分用于對軟件體系結(jié)構(gòu)描述語言ADL的解析以及模型和語言之間的相互生成。展示層(Presentation)部分用于軟件體系結(jié)構(gòu)模型的顯示、自動布局和可視化編輯等操作。特定功能(Features)部分用于實現(xiàn)針對特定軟件體系結(jié)構(gòu)描述語言ADL的特定功能,以插件的形式存在。XArch系統(tǒng)的功能如下正確解析并顯示符合FEAL規(guī)范的軟件體系結(jié)構(gòu)模型,體系結(jié)構(gòu)模型為單(多)模型系統(tǒng),即一個軟件體系結(jié)構(gòu)的不同側(cè)面,如靜態(tài)模型,動態(tài)模型,邏輯模型等;顯示模型語言的文本描述,即基于FEAL的ADL語言文本;正確察看模型元素屬性,可以對顯示的軟件體系結(jié)構(gòu)模型元素進行屬性察看;對軟件體系結(jié)構(gòu)模型可以進行可視化編輯,即通過可視化的方法修改模型的元素,從而修改原有ADL;實現(xiàn)模型元素的自動布局功能;可對模型進行語義檢查和校驗;模型-多視圖同步。在本發(fā)明實施例1中,F(xiàn)EAL被用于表示W(wǎng)RIGHT語言。FEAL映射機制將WRIGHT變化為FEC。WRIGHT語言的基本元素總結(jié)如下配置Configuration,系統(tǒng)模型的封裝,包含其他所有的定義。構(gòu)件Component,包含一系列端口與唯一計算定義,前者定義構(gòu)件的接口,后者使用CSP腳本或者子配置來定義構(gòu)件的實際功能。連接器Connector,與構(gòu)件相似,包含一些角色聲明與粘合申明來描述所有角色的內(nèi)在聯(lián)系。實例Instances,聲明配置中使用的構(gòu)件與連接器實例。連接關(guān)系A(chǔ)ttachments,將所有的實例綁定到一起。接口類型InterfaceType,CSP定義用于描述端口或者角色的類型。綁定Bindings,用于分層系統(tǒng)中描述不同層級中的共同元素。約束Constraints,形式化定義用戶聲明內(nèi)部元素的有效情況。風格Style,擁有參數(shù)的配置模板。表1WRIHGT表義符號與FEAL描述的映射關(guān)系表。<table>tableseeoriginaldocumentpage15</column></row><table>表1修改了WRIGHT語言語法使得它與FEAL兼容。一方面,如分層配置應(yīng)符合FEAL結(jié)構(gòu)規(guī)范來適應(yīng)視圖模型ViewModel的要求;另一方面,一些表義符號在不同情況下使用不同的表達,例如構(gòu)件,端口角色,需要在修訂WRIGHT中特別標記來說明它究竟是什么。上表修訂的WRIGHT語言能夠很容易的映射到FEAL表達,且并不喪失其表達能力。在本發(fā)明實施例2中,將一個軟件體系結(jié)構(gòu)還原插件作為應(yīng)用。軟件體系結(jié)構(gòu)還原插件(SoftwareArchitectureRecovery,以下簡稱SAR)通過讀取一組以C語言編寫的系統(tǒng)源代碼來還原其體系結(jié)構(gòu)信息,目的是為了方便對缺失體系結(jié)構(gòu)設(shè)計文檔的遺留系統(tǒng)進行維護或改造。為了快速構(gòu)建SAR,利用本發(fā)明提出的快速構(gòu)建方法為SAR定義ADL、模型、語法、可視化編輯器和支持工具。首先定義SAR中的模型,在SAR中,導入的源代碼被抽象成為可聚類的實體。實體與實體之間存在使用關(guān)系。SAR可以利用聚類算法計算不同實體之間的相似度。在自動合并狀態(tài)下,SAR會將相似度最大的兩個實體合并;也可以采用手動的方法指定兩個實體進行合并,合并過程可以進行歷史回退,即可以進行回滾操作。并且,編輯器本身可以根據(jù)SAR的操作進行自動更新和自動布局,可清晰演示源代碼之間的關(guān)系??梢暬庉嬈魇荴Arch的基本功能,凡是采用FEAL來編寫的ADL均可獲得其支持。而作為插件的SAR可以對模型進行直接訪問和更新,達到和XAch其他部分通訊的效果。這樣使用者可快速辨識源代碼的靜態(tài)體系結(jié)構(gòu)信息。本發(fā)明不限于上述實施例,對于本領(lǐng)域技術(shù)人員來說,對本發(fā)明的上述實施例所做出的任何改進或變更都不會超出僅以舉例的方式示出的本發(fā)明的實施例和所附權(quán)利要求的保護范圍。權(quán)利要求1.一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,其特征在于包括以下步驟(1)構(gòu)建一個可擴展體系結(jié)構(gòu)語言基礎(chǔ)FEAL(FoundationofExtensibleArchitectureLanguage),F(xiàn)EAL指定了一套描述性的抽象元素定義、一組元素結(jié)構(gòu)規(guī)范和一套映射機制規(guī)范,提供一個來構(gòu)造新ADL的各種表義符號的下層架構(gòu)基礎(chǔ),將軟件體系結(jié)構(gòu)描述語言ADL的表義符號映射到FEAL的抽象元素;(2)構(gòu)建一個基于FEAL的軟件體系結(jié)構(gòu)的具有軟件體系結(jié)構(gòu)開發(fā)通用的模型顯示、可視化編輯、屬性顯示、多視圖支持、軟件體系結(jié)構(gòu)描述語言ADL自動生成、模型結(jié)構(gòu)展示功能的用于為軟件體系結(jié)構(gòu)相關(guān)研究提供實驗平臺和展示工具的開發(fā)平臺系統(tǒng)XArch。2.如權(quán)利要求1所述的一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,其特征在于所述的FEAL抽象元素定義包括視圖模型ViewModel:—系列代表結(jié)構(gòu)模型的元素,一個視圖模型包含一系列FEAL的其他元素以及它們的配置,視圖模型還可以有輸入?yún)?shù),WRIGHT中的配置以及ACME的術(shù)語風格適合被映射成視圖模型;容器Container:容器就容納其他FEC元素(包括容器元素)的器皿,特定FEC的容器寫作Container{FECh實體Entity:實體是一種元素,它不需要類型/實例的支持。類型Type:類型是特殊的實體,它支持重用和一致性檢測,在類型上,定義構(gòu)件類型、連接器類型、端口類型、服務(wù)類型或者任意相近的元素,類型也適合于靜態(tài)設(shè)計模型,該模型的元素會被運行時模型所引用,類型的許多特征與一般實體不同,例如類型的繼承,導出與導入;實例Instance:實例是某些類型元素的實例化對象,是一種特殊的實體;屬性類型Pr叩ertyType:屬性類型是屬性的集合,用于限制實例的值,可定義如整型、雙精度浮點型、日期型和字符串型等基本屬性類型,或者將值標記為只讀或可選;屬性Property:屬性是一個簡單鍵值對,記錄了簡單信息,其中的值可以是變量,通過對子腳本元素運行時分析計算而來,屬性可以從屬性類型實例化而來,或者獨立存在;連接Link:連接聲明元素之戀的關(guān)系,尤其是實體、類型、實例之間的關(guān)系,一系列的連接關(guān)系構(gòu)成了配置,配置聲明元素如何綁定在一起;腳本Script:用來表述ADL的行為、使用約束與計算規(guī)則,通常使用進程代數(shù)、邏輯或者是自定義語法的形式來書寫;備注Comment:為便于閱讀與學習的描述性的備注。3.如權(quán)利要求l所述的一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,其特征在于所述的XArch系統(tǒng)包括核心(Core)部分用于XArch和底層Eclipse平臺的通訊,以及其他部分之間的相互引用;模型(Model)部分用于維護整個XArch系統(tǒng)的模型;數(shù)據(jù)(Data)部分用于對軟件體系結(jié)構(gòu)描述語言ADL的解析以及模型和語言之間的相互生成;展示層(Presentation)部分用于軟件體系結(jié)構(gòu)模型的顯示、自動布局和可視化編輯等操作;特定功能(Features)部分用于實現(xiàn)針對特定軟件體系結(jié)構(gòu)描述語言ADL的特定功能,以插件的形式存在。4.如權(quán)利要求l所述的一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,其特征在于所述的FEAL元素結(jié)構(gòu)規(guī)范如下正則表達式所示,<formula>formulaseeoriginaldocumentpage4</formula>5.如權(quán)利要求l所述的一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,其特征在于所述的FEAL映射機制規(guī)范包括adl-element:使用XML定義的ADL中要映射的內(nèi)容;feal-element:映射到FEC的具體類型;扁e-content:用于標定adl_element中可以被識別為名稱的域;value-content:用于標定表達當前元素中可以被識別為值的域,當feal-element為Property時,name-content禾口value-content—起可以表示屬性的key和value;baseon-content:用以表示實例化關(guān)系,表明表示實例化類型所用的實際屬性;inherit-content:用以表示繼承關(guān)系,表明繼承的類型所用的實際屬性;source-content禾口destination-content-同時用來表示Unk中的源和目標;visible:表示所述adl-element在開發(fā)平臺上是否可見;shape:表示所述adl-element在開發(fā)平臺上需要顯示的形狀;fill-color:表示所述adl-element在開發(fā)平臺上的填充色;line-style:表示所述adl-element在開發(fā)平臺上的線型;editable:表示所述adl-element在開發(fā)平臺上是否可編輯;icon:表示所述adl-element在開發(fā)平臺上的工具欄中的圖標是什么。全文摘要本發(fā)明公開了一種軟件體系結(jié)構(gòu)描述語言的快速構(gòu)建和支持的方法,其特征在于包括(1)構(gòu)建一個可擴展體系結(jié)構(gòu)語言基礎(chǔ)FEAL,F(xiàn)EAL指定一套描述性的抽象元素定義、一組元素結(jié)構(gòu)規(guī)范和一套映射機制規(guī)范,提供構(gòu)造新ADL的各種表義符號的下層架構(gòu)基礎(chǔ),將軟件體系結(jié)構(gòu)描述語言ADL的表義符號映射到FEAL內(nèi)部元素;(2)構(gòu)建基于FEAL的軟件體系結(jié)構(gòu)的具有軟件體系結(jié)構(gòu)開發(fā)通用的模型顯示、可視化編輯、屬性顯示、多視圖支持、ADL自動生成、模型結(jié)構(gòu)展示功能的插件式開發(fā)平臺XArch。本發(fā)明可實現(xiàn)一種形式化語法的解析器用于不同的ADL或者體系結(jié)構(gòu)模型,使定義ADL的工作更加方便和快捷,極大的方便了對軟件體系結(jié)構(gòu)的研究和分析。有利于軟件體系結(jié)構(gòu)在實際工程中應(yīng)用的推廣。文檔編號G06F9/44GK101211262SQ20071030172公開日2008年7月2日申請日期2007年12月25日優(yōu)先權(quán)日2007年12月25日發(fā)明者征覃,邢劍寬申請人:征覃