午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

基于語法重構(gòu)的代碼級構(gòu)件組裝方法

文檔序號:6466994閱讀:339來源:國知局
專利名稱:基于語法重構(gòu)的代碼級構(gòu)件組裝方法
技術(shù)領(lǐng)域
本發(fā)明涉及軟件工程技術(shù)領(lǐng)域,尤其是指軟件開發(fā)中基于語法重構(gòu)的代碼級構(gòu)件組裝方法。
背景技術(shù)
構(gòu)件是指具有相對獨(dú)立功能和可復(fù)用的軟件模塊,它使得軟件開發(fā)人員在開發(fā)新系統(tǒng)時(shí) 能夠充分利用過去的經(jīng)驗(yàn)和功能模塊,而不必重復(fù)"制造輪子",從而避免了軟件開發(fā)中的重 復(fù)勞動。隨著CBSE(Component-Based Software Engineering,基于構(gòu)件的軟件工程)成為一種 重要的中間件技術(shù)以來,在金融、教育、電子商務(wù)、電子政務(wù)、醫(yī)療衛(wèi)生等應(yīng)用領(lǐng)域中得到 了大量應(yīng)用,為提高軟件利用程度和軟件開發(fā)的效率發(fā)揮了很好的作用。
作為基于構(gòu)件的軟件開發(fā)的核心技術(shù),構(gòu)件組裝技術(shù)的研究已得到了廣泛開展。構(gòu)件組 裝方法一般分為"黑盒"、"白盒"、"灰盒"三種,其中"灰盒"組裝方法一直備受關(guān)注。其研究重 點(diǎn)主要集中在基于框架的方法、基于連接子的方法和基于膠合代碼的方法等,本發(fā)明提出的 基于語法重構(gòu)的代碼級構(gòu)件組裝方法與其中的膠合代碼的方法相近。
在軟件開發(fā)過程中,選擇使用哪種程序語言往往是依據(jù)領(lǐng)域需求而定。例如,在流程處 理較為明顯的軟件系統(tǒng)中,通常使用面向過程的語言(如C,Pascal, COBOL等)來編程,而 在信息處理較為常見的軟件系統(tǒng)中,則多數(shù)采用面向?qū)ο蟮恼Z言(如0++, Java等)。程序語 言的分類不只這兩種,但目前存在的大多數(shù)程序語言普遍都有一個(gè)缺陷,那就是不支持代碼 的構(gòu)件化和組裝,而這將大大阻礙代碼片斷的復(fù)用。而今,許多粗粒度構(gòu)件的復(fù)用已經(jīng)得到 了大量的研究,而程序語言缺乏內(nèi)建的可重用和可組裝機(jī)制這一缺憾,無疑阻礙了針對細(xì)粒 度的代碼級構(gòu)件的復(fù)用研究。

發(fā)明內(nèi)容
為解決以上問題,本發(fā)明提出了一種靈活,開放,且獨(dú)立于各類語由的基于語法重構(gòu)的 代碼級構(gòu)件組裝方法。
一種基于語法重構(gòu)的代碼級構(gòu)件組裝方法,包括如下步驟
1) 將程序語言的語法規(guī)范進(jìn)行擴(kuò)展,建立使該語言可構(gòu)件化、可組裝化的新語 法規(guī)范;
2) 對依據(jù)所述新語法規(guī)范創(chuàng)建的代碼級構(gòu)件進(jìn)行組裝。 進(jìn)一步的,所述步驟l)具體包括以下步驟
3(1) 從程序語言的語法規(guī)范中分離出抽象語法和具體語法;
(2) 在任一個(gè)語法項(xiàng)目添加可用來作為之后構(gòu)件組裝時(shí)的插入口的新的語法子 項(xiàng),成為新的語法項(xiàng)目,并針對新的語法項(xiàng)目,分別編寫其抽象語法與具體語法。
(3) 根據(jù)擴(kuò)展后的語法規(guī)范,創(chuàng)建其語法識別及分析器。
更進(jìn)一步的,所述抽象語法是對語法樹的層次和語法節(jié)點(diǎn)間的關(guān)聯(lián)關(guān)系進(jìn)行描述;所述 具體語法是編譯器可用的語法規(guī)則。
進(jìn)一步的,所述步驟2)具體包括以下步驟
① 建立符合所述新語法規(guī)范的代碼級構(gòu)件;
② 進(jìn)行圖形化的構(gòu)件組裝;
③ 在組裝腳本的執(zhí)行階段中根據(jù)組裝構(gòu)件的特性生成組裝結(jié)果。 更進(jìn)一步的,所述步驟②屮圖形化的構(gòu)件組裝,包括各個(gè)構(gòu)件的關(guān)聯(lián)和對各個(gè)構(gòu)件類型
進(jìn)行匹配驗(yàn)證。
木發(fā)明提出了一種在現(xiàn)有的程序語言中添加可構(gòu)件化以及可復(fù)用性的方法,對程序語言 的固有語法進(jìn)行拓展,從而能夠依據(jù)此新語法,創(chuàng)建并組裝代碼級構(gòu)件,增加代碼片斷的可 重用性,快速生成新的程序。首先對程序語言的語法模型進(jìn)行擴(kuò)展,建立一套促進(jìn)該語言可 構(gòu)件化、可組裝化的新語法規(guī)范,進(jìn)而對依據(jù)新語法規(guī)范創(chuàng)建的代碼級構(gòu)件進(jìn)行組裝,保證 代碼級構(gòu)件的可復(fù)用性。
本發(fā)明的方法,同一個(gè)構(gòu)件在不同應(yīng)用中復(fù)用時(shí),只要擁有相同的程序語言拓展基礎(chǔ), 就能方便地起到構(gòu)件復(fù)用的效果;在保持組裝圖形不修改的情況下,只要構(gòu)件名稱和類型未 經(jīng)改動,其他構(gòu)件內(nèi)的變更都可實(shí)時(shí)反映到組裝結(jié)果中,這對于程序的開發(fā)、集成、演化具 有十分重大的意義。本發(fā)明具有語言獨(dú)立的優(yōu)點(diǎn),可用于各類領(lǐng)域中的軟件復(fù)用。結(jié)合領(lǐng)域 構(gòu)件庫,可支持不同應(yīng)用領(lǐng)域的業(yè)務(wù)流程集成、復(fù)用,以及面向用戶的個(gè)性化服務(wù)的定制和 集成。


圖1為本發(fā)明所述的組裝方法整體方案圖 圖2為本發(fā)明一實(shí)施例的組裝過程示意圖
具體實(shí)施例方式
以下結(jié)合附圖和具體實(shí)例對本發(fā)明進(jìn)行詳細(xì)說明。
一種基于語法重構(gòu)的代碼級構(gòu)件組裝方法,如圖l,包括兩大步驟, 一是對程序語言的語 法進(jìn)行抽象和拓展,二是通過語法重構(gòu)的方式對代碼級構(gòu)件進(jìn)行組裝。其中,前者是后者得以成功進(jìn)行的基礎(chǔ),后者則體現(xiàn)了前者的功用。
由于本方法具有語言獨(dú)立的優(yōu)點(diǎn),在本實(shí)例中,我們暫以流行的Java語言為例,將其語 法進(jìn)行拓展后,針對Java語言的代碼級構(gòu)件實(shí)現(xiàn)組裝。
接下來,依序?qū)Ρ緦?shí)例的各個(gè)步驟進(jìn)行說明。
Java語言語法拓展部分
步驟一、抽象出Java語言的語法規(guī)范,分別列出其抽象語法與具體語法。 由于Java語言的語法結(jié)構(gòu)相當(dāng)龐大,本例中僅抽取其中較為簡單的語法片斷為例子,對 其進(jìn)行拓展。以類的成員變量聲明語法片斷為例,我們抽取出其相對應(yīng)的抽象語法和具體語
法分別如下:_
AttributeDeclaration = modifier-Modifier*, type: Identifier, name: Identifier;
Identifier = value: String;__
如上是成員變量聲明(AttributeDeclaration)的抽象語法,其中Modifier類型是一個(gè)語法 終結(jié)符,即各類修飾符,如public, private, protected, final, static等;Identifier是一般字符
串類型。_
AttributeDeclaration ::= modifier* type name ";"; Identifier ::= value[('a'..'zTA'..'Z') 0'..'2'|'八'.."'0'..'9')*];
如上是以EBNF規(guī)范表達(dá)的具體語法,以正則表達(dá)式的方式確定了 AttributeDeclaration 的具體書寫規(guī)范。
歩驟二、針對AttributeDeclaration這一節(jié)點(diǎn),我們對其進(jìn)行擴(kuò)展。首先在其下增加一個(gè)新
的語法子項(xiàng)AttributeSlot,作為組裝時(shí)的插槽,并為之編寫相應(yīng)的抽象和具體語法。
AttributeSlot ==> java.AttributeDeclaration; AttributeSlot => metaModel.Slot; AttributeSlot = name:Identifier, type:Type;
Type = value:String;_
如上是AttributeSlot的抽象語法,表明AttributeSlot同時(shí)繼承自Java語法(先前定義的Java
語法)中的AttributeDeclaration屬性以及一個(gè)Slot屬性(本方法己內(nèi)建了 Slot語法的定義)。 AttributeSlot ::= "<<" name ":" type " ";
Type ::= value[('a'..'zTA'..'Z') ('a'..'z'rA'..'ZT0'..'9')*] "."construct[('a'..'zTA'..'Z') ('a'..,z'rA'..'Z'|'0,..'9')*];_
如上是AttributeSlot的具體語法,要求其在代碼中書寫為"<< name : type >>"形式。 步驟三、從拓展后的語法生成相應(yīng)的語言解析器,此步驟可通過一些編譯器框架實(shí)現(xiàn)。 在本例中我們采用了 ANTLR框架實(shí)現(xiàn)。 Java代碼級構(gòu)件組裝部分步驟四、創(chuàng)建符合新的Java語法規(guī)范的代碼構(gòu)件。在語法完備的情況下,所有的Java文 件應(yīng)該都可以作為新規(guī)范的代碼級構(gòu)件。但根據(jù)組裝的需要,我們在Java構(gòu)件中添加了相應(yīng) 的Slot語法,作為組裝時(shí)的插槽,如下即是一個(gè)相對簡單的Java構(gòu)件片斷,用作組裝時(shí)的宿
主構(gòu)件:_
public class Car {
private String name)
《myAttribute : java.AttributeDecIaration》
public void startEngine() { engine, start();
j_
其中,《myAttribute :』3¥&汍《1^1^06(;1虹&11011 句便是符合AttributeSIot規(guī)范的一個(gè)組裝 插槽定義,并且規(guī)定了可插入此處的代碼必須符合AttributeDeclaration語法規(guī)范。
接下來,準(zhǔn)備一個(gè)符合AttributeDeclaration規(guī)范的代碼片斷,如下所示 private Engine engine;_
步驟五、對兩個(gè)代碼級構(gòu)件進(jìn)行組裝。根據(jù)本發(fā)明,可以設(shè)計(jì)出多種不同的組裝方法,
從最基本的插入組裝,到可依據(jù)用戶需求定制的其他組裝(抽取、聲明、調(diào)用等)均可實(shí)現(xiàn)。 以下我們介紹最基本的插入組裝,此類組裝要求將一個(gè)代碼級構(gòu)件插入到一個(gè)指定類型的 Slot中(即前者的代碼類型與后者Slot中指定的類型相同)。
出于用戶操作便利性的考慮,本發(fā)明中提供了圖形化的組裝方式,以組裝節(jié)點(diǎn)的形式展 示構(gòu)件,以連接線的形式展示組裝過程。
如圖2所示,從代碼級構(gòu)件Engine指向Car構(gòu)件中的MyAttribute這個(gè)Slot,即構(gòu)成了我 們的插入組裝,并且將組裝后的Car輸出到一個(gè)NewCar文件中。
第六步、針對相應(yīng)的組裝圖形,后臺自動生成組裝腳本,腳本的內(nèi)容是依照組裝圖形自
動轉(zhuǎn)換的。如上圖中,相應(yīng)的組裝腳本如下-composition program
fragmentlist java.CompilationUnit Car=/Car,rjava;
fragmentlist java.AttributeDecIaration Engine=/Engine, rjava;
bind myAttribute on Car with Engine;
print Carto /NewCar Java;
執(zhí)行組裝腳本后,即進(jìn)行組裝,最終的組裝結(jié)果如下:
public class Car {
private String name;
6private Engine engine;
public void startEngine() { engine.start();
j_
權(quán)利要求
1. 一種基于語法重構(gòu)的代碼級構(gòu)件組裝方法,其特征在于包括如下步驟1)將程序語言的語法規(guī)范進(jìn)行擴(kuò)展,建立使該語言可構(gòu)件化、可組裝化的新語法規(guī)范;2)對依據(jù)所述新語法規(guī)范創(chuàng)建的代碼級構(gòu)件進(jìn)行組裝。
2. 根據(jù)權(quán)利要求1所述的基于語法重構(gòu)的代碼級構(gòu)件組裝方法,其特征在于所 述步驟l)具體包括以下步驟(1) 從程序語言的語法規(guī)范中分離出抽象語法和具體語法;(2) 在任一個(gè)語法項(xiàng)目添加可用來作為之后構(gòu)件組裝時(shí)的插入口的新 的語法子項(xiàng),成為新的語法項(xiàng)目,并針對新的語法項(xiàng)目,分別編寫其抽象語 法與具體語法。(3) 根據(jù)擴(kuò)展后的語法規(guī)范,創(chuàng)建其語法識別及分析器。
3. 根據(jù)權(quán)利要求2所述的基于語法重構(gòu)的代碼級構(gòu)件組裝方法,其特征在于 所述抽象語法是對語法樹的層次和語法節(jié)點(diǎn)間的關(guān)聯(lián)關(guān)系進(jìn)行描述;所述具體 語法是編譯器可用的語法規(guī)則。
4. 根據(jù)權(quán)利要求1所述的基于語法重構(gòu)的代碼級構(gòu)件組裝方法,其特征在于 所述步驟2)具體包括以下步驟① 建立符合所述新語法規(guī)范的代碼級構(gòu)件;② 進(jìn)行圖形化的構(gòu)件組裝;③ 在組裝腳本的執(zhí)行階段中根據(jù)組裝構(gòu)件的特性生成組裝結(jié)果。
5. 根據(jù)權(quán)利要求4所述的基于語法重構(gòu)的代碼級構(gòu)件組裝方法,其特征在于 所述步驟②中圖形化的構(gòu)件組裝,包括各個(gè)構(gòu)件的關(guān)聯(lián)和對各個(gè)構(gòu)件類型進(jìn)行 匹配驗(yàn)證。
全文摘要
本發(fā)明涉及軟件工程技術(shù)領(lǐng)域,尤其是指軟件開發(fā)中基于語法重構(gòu)的代碼級構(gòu)件組裝方法。一種基于語法重構(gòu)的代碼級構(gòu)件組裝方法,包括如下步驟1)將程序語言的語法規(guī)范進(jìn)行擴(kuò)展,建立使該語言可構(gòu)件化、可組裝化的新語法規(guī)范;2)對依據(jù)所述新語法規(guī)范創(chuàng)建的代碼級構(gòu)件進(jìn)行組裝。本發(fā)明具有語言獨(dú)立的優(yōu)點(diǎn),可用于各類領(lǐng)域中的軟件復(fù)用。結(jié)合領(lǐng)域構(gòu)件庫,可支持不同應(yīng)用領(lǐng)域的業(yè)務(wù)流程集成、復(fù)用,以及面向用戶的個(gè)性化服務(wù)的定制和集成。
文檔編號G06F9/44GK101446895SQ20081016339
公開日2009年6月3日 申請日期2008年12月18日 優(yōu)先權(quán)日2008年12月18日
發(fā)明者健 吳, 吳朝暉, 尹建偉, 瑩 李, 琳 趙, 鄧水光 申請人:浙江大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1