專利名稱:腳本驅動軟件構建方法和裝置的制作方法
技術領域:
本發(fā)明涉及軟件開發(fā)領域,尤其涉及一種增強軟件產品可維護性的腳本驅動軟件構建方法和裝置。
背景技術:
在軟件工程領域,軟件維護周期是軟件生命周期中持續(xù)時間最長的階段,占到整個生命周期的70%,而其維護成本占到總成本的約80%。目前,很多技術方法用于增強軟件的可維護性,其目的是通過最小的成本適應用戶的變化。這些方法包括:A)結構化技術;B)使用更高級的開發(fā)語言;C)使用例行程序包; D)使用腳本等。其中,方法A和B針對源碼級維護。采用方法A和B方法,當業(yè)務流程發(fā)生改變,需要要對原有軟件的部分代碼作更換。方法C只允許在特定的系統(tǒng)上使用。在某些情況下, 如某些操作系統(tǒng)下,或在嵌入式硬件環(huán)境下,無法實現(xiàn)。使用方法D,即使用腳本構造軟件, 可以做到在一般系統(tǒng)上,靈活改變軟件的功能,達到維護擴充的目的。
發(fā)明內容
本發(fā)明提供了一種腳本驅動軟件構建方法和裝置,解決了現(xiàn)有腳本平臺依賴性強、執(zhí)行效率低下的問題。一種腳本驅動軟件構建方法,包括構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件。進一步的,所述構建腳本解釋器和腳本執(zhí)行器包括如下步驟構建一個文本解析工具,所述文本解析工具用于完成對腳本的解析與轉換,生成二進制數(shù)據(jù)文件,所述文本解析工具即為所述腳本解釋器;構建一個從二進制數(shù)據(jù)文件中識別節(jié)點描述符,并根據(jù)所述節(jié)點描述符執(zhí)行描述符里的可執(zhí)行命令的工具,該工具即為所述腳本執(zhí)行器。進一步的,上述腳本驅動軟件構建方法還包括使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件;使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件。進一步的,所述使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件的步驟具體為使用所述腳本解釋器將腳本解析成由多個節(jié)點描述符構成的二進制數(shù)據(jù)文件,所述節(jié)點描述符包含所述腳本中的可執(zhí)行命令的命令引用信息、命令參數(shù)信息和跳轉控制信肩、ο進一步的,使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件包括如下步驟
確定當前節(jié)點描述符的偏移,根據(jù)該偏移,獲取當前節(jié)點描述符;執(zhí)行所述當前節(jié)點描述符對應的可執(zhí)行命令;根據(jù)所述可執(zhí)行命令的執(zhí)行結果和所述當前節(jié)點描述符的跳轉控制信息,確定下一當前節(jié)點描述符。進一步的,上述腳本驅動軟件構建方法還包括將軟件業(yè)務流程分解為多個原子操作,并將這些原子操作分別封閉成獨立的可執(zhí)行命令;根據(jù)預置的語法規(guī)則,調用所述可執(zhí)行命令構建腳本,所述預置的語法規(guī)則包括可執(zhí)行命令的引用方式、參數(shù)的傳遞表示和判斷與跳轉控制表示。本發(fā)明還提供了一種腳本驅動軟件構建裝置,包括編譯模塊,用于構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件。進一步的,所述編譯模塊包括解釋器構建單元,用于構建一個文本解析工具,所述文本解析工具用于完成對腳本的解析與轉換,生成二進制數(shù)據(jù)文件,所述文本解析工具即為所述腳本解釋器;執(zhí)行器構建單元,用于構建一個從二進制數(shù)據(jù)文件中識別節(jié)點描述符,并根據(jù)所述節(jié)點描述符執(zhí)行描述符里的可執(zhí)行命令的工具,該工具即為所述腳本執(zhí)行器。進一步的,上述腳本驅動軟件構建裝置還包括執(zhí)行模塊,用于使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件,使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件。進一步的,上述腳本驅動軟件構建裝置還包括運行期庫維護模塊,用于將軟件業(yè)務流程分解為多個原子操作,并將這些原子操作分別封閉成獨立的可執(zhí)行命令。本發(fā)明提供了一種腳本驅動軟件構建方法和裝置,在需要在某一平臺上運行腳本時,構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件,實現(xiàn)了根據(jù)平臺靈活構建腳本驅動軟件,腳本可跨平臺運行;并將腳本解釋器和腳本執(zhí)行器分離,提高了腳本執(zhí)行的效率。
圖1為本發(fā)明的實施例一提供的一種腳本驅動軟件構建方法的流程圖;圖2為本發(fā)明的實施例二提供的一種腳本驅動軟件構建方法的流程圖;圖3為圖2中步驟201的具體流程圖;圖4為本發(fā)明實施例所使用的命令管理實體的結構示意圖;圖5為圖2中步驟202的具體流程圖;圖6為本發(fā)明的實施例所使用的二進制的數(shù)據(jù)文件格式示意圖;圖7為圖2中步驟204的具體流程圖。
具體實施例方式目前,使用腳本構造軟件的方法存在以下不足
1、一般的腳本語言需要龐大的支持平臺,即必須安裝虛擬機或解釋執(zhí)行引擎,而支持平臺本身又依賴于特定的操作系統(tǒng)平臺;2、一般的腳本所使用的解釋執(zhí)行平臺都是邊解釋邊執(zhí)行的,解釋工作占用腳本的運行時間,尤其是在嵌入式系統(tǒng)中,腳本的這種邊解釋邊執(zhí)行的方式造成腳本的執(zhí)行效率低下。為了解決上述問題,本發(fā)明的實施例提供了一種腳本驅動軟件構建方法,解決了腳本執(zhí)行過程中平臺依賴性強、執(zhí)行效率低下的問題。本發(fā)明的實施例提供的基于節(jié)點描述符的腳本解釋執(zhí)行方法,不依賴于任何第三方平臺,在對腳本解釋完成后再執(zhí)行,其執(zhí)行效率接近于直接代碼運行水平。下面結合附圖,對本發(fā)明的實施例提供的腳本驅動軟件構建方法進行說明。如圖1所示,使用本發(fā)明的實施例提供的腳本驅動軟件構建方法執(zhí)行腳本的流程包括步驟101、將軟件業(yè)務流程分解為多個原子操作,并將這些原子操作分別封裝成獨立的可執(zhí)行命令;其中,將所述原子操作分別封裝成獨立的可執(zhí)行命令包括將每個原子操作分別實現(xiàn)為一個獨立的可執(zhí)行例程,并統(tǒng)一管理這些例程的名字,入口向量,參數(shù)表描述信息等命令信息。管理方法包括生成一張索引表,或者注冊到一個命令管理實體,及其他方法。 在腳本執(zhí)行時通過根據(jù)可執(zhí)行命令的名稱查找獲取相應的命令信息。步驟102、使用所述可執(zhí)行命令,構建腳本;本發(fā)明實施例中,首先需要約定一套語法規(guī)則,遵循此語法規(guī)則,使用所述的可執(zhí)行命令書寫腳本,構建特定的業(yè)務流程。其中,所述的語法規(guī)則用以完成將所述可執(zhí)行命令表示成節(jié)點描述符。為此,所述語法規(guī)則需要包括三個方面命令引用方式,命令參數(shù)的傳遞表示,判斷與跳轉控制表示。具體的語法規(guī)則可按照實際使用情況配置調整,只要能滿足本發(fā)明實施例需求的語法規(guī)則,均在本發(fā)明實施例的保護范圍之內。步驟103、構建腳本解釋器和腳本執(zhí)行器;本步驟主要包括以下兩方面1、構建一個文本解析工具,所述文本解析工具用于完成對腳本的解析與轉換,生成二進制數(shù)據(jù)文件,所述文本解析工具即為所述腳本解釋器;將腳本解析成二進制數(shù)據(jù)文件,包括對腳本中,對命令引用的識別,命令參數(shù)的確定和對跳轉控制的識別。識別的結果表示為一個二進制的節(jié)點描述符,這一二進制的節(jié)點描述符包括此節(jié)點在二進制文件中的偏移,此節(jié)點包含的命令的入口向量,此命令的參數(shù),此命令執(zhí)行結果為真和假時的跳轉分支的偏移。最后將二進制的結點描述符數(shù)據(jù)寫入一個二進制數(shù)據(jù)文件。2、構建一個從二進制數(shù)據(jù)文件中識別節(jié)點描述符,并根據(jù)所述節(jié)點描述符執(zhí)行描述符里的可執(zhí)行命令的工具,該工具即為所述腳本執(zhí)行器。上述腳本解釋器和腳本執(zhí)行器構成了腳本驅動軟件,在腳本驅動軟件構成后,即可通過該軟件運行腳本,具體流程參見以下步驟。步驟104、使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件;步驟105、使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件;本步驟具體包括1、開始執(zhí)行時,根據(jù)腳本解釋器解析獲得的二進制數(shù)據(jù)文件,腳本執(zhí)行器初始化一組上下文信息,確定當前節(jié)點描述符的偏移;2、若當前節(jié)點描述符的偏移指示為流程結束,則跳轉到步驟6,否則,根據(jù)當前節(jié)點描述符的偏移,找到當前節(jié)點描述符;3、執(zhí)行當前節(jié)點描述符里的命令;4、根據(jù)當前節(jié)點描述符的命令的執(zhí)行結果及當前節(jié)點描述符的的跳轉分支的偏移,更新當前上下文中的當前節(jié)點描述符的偏移;5、跳轉到步驟2。6.退出執(zhí)行流程。本發(fā)明實施例提供的腳本驅動軟件構建方法,在需要在某一平臺上運行腳本時, 構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件,實現(xiàn)了根據(jù)平臺靈活構建腳本驅動軟件,腳本可跨平臺運行;并將腳本解釋器和腳本執(zhí)行器分離, 提高了腳本執(zhí)行的效率。綜合來看,本發(fā)明實施例提供的腳本驅動軟件構建方法在軟件產品適應業(yè)務變更上的適應能力,適應變化的靈活程度,軟件的獨立性及效率方面達到很好的平衡,這使得此種構建方法可以適應任何規(guī)模和形式的系統(tǒng)。從而解決了目前腳本應用中的平臺依賴造成的適用范圍差的問題。同時,本方法使用了基于節(jié)點描述符的二進制數(shù)據(jù)結構,將腳本的解析與執(zhí)行相分離,腳本的執(zhí)行器不再需要解釋過程,從而極大地提高了腳本的執(zhí)行效率,令其可以應用于對效率有嚴格要求的系統(tǒng)。下面結合附圖,對本發(fā)明的實施例二進行詳細說明。本發(fā)明實施例剝離腳本的解析和執(zhí)行過程,用以解決運行期效率問題。當業(yè)務發(fā)生變化,用戶需要使用新的腳本時,用戶通過配置和運行兩個階段完成對軟件系統(tǒng)的更新維護。在配置階段,本發(fā)明實施例首先對用戶提交的為新的業(yè)務流程而編寫的腳本進行解釋,生成一個二進制數(shù)據(jù)文件。在執(zhí)行階段,執(zhí)行器在二進制文件上運行,從而,達到提高運行期效率目的。本發(fā)明的實施例二提供了一種腳本解釋執(zhí)行方法,在腳本驅動軟件構建完成后, 使用該方法執(zhí)行腳本的流程如圖2所示,包括步驟201、將業(yè)軟件務流程分解為多個原子操作,并將這些原子操作分別封裝成獨立的可執(zhí)行命令;本步驟具體如圖3所示,包括步驟2011、將業(yè)務流程分解為多個原子操作;一個典型的協(xié)議實體的處理流程包括兩個過程接收過程和發(fā)送過程。接收過程包括PDU(Protocol Data Unit,協(xié)議數(shù)據(jù)單元)消息接收;PDU消息解析過程;消息執(zhí)行過程;相鄰協(xié)議層的SDUGerver Data Unit,服務數(shù)據(jù)單元)創(chuàng)建;
相鄰協(xié)議層的SDU發(fā)送過程。發(fā)送過程包括相鄰協(xié)議層的SDU接收;消息執(zhí)行過程;PDU創(chuàng)建過程;PDU發(fā)送過程。接收過程分解消息接收一般采用阻塞接收的方式,即當沒有消息到達時,系統(tǒng)作其他工作,當有消息到達,則接收模塊被激活,調用消息處理模塊進行處理。這里,分解到一個接收操作bool PDUReceive(Context);其中,Context是協(xié)議實體的上下文,其中包含有用以存儲接收到的消息的緩存區(qū)和一組必需的協(xié)議狀態(tài)及控制變量。返回值為布爾類型,真表示成功,假表示失敗(返回值含義下同)。PDU消息解析過程按照協(xié)議所約束的格式信息,解碼收到的協(xié)議數(shù)據(jù)。設定當前協(xié)議的PDU包含有可選和必選的N個字段,則對此,我們可以將對每個字段的解析過程分解為一個原子操作bool PduPaserX(Context);此處,X表示從1到N。每解析完一個字段,都可能對應兩個操作,分別為成功(返回真)的操作和失敗 (返回假)的操作bool PduPaserTrueOperateX (Context);bool PduPaserFalseOperateX(Context);此處,X表示從1到N。經過以上操作后,在Context上,一組必需的協(xié)議狀態(tài)及控制變量被更新。針對這些協(xié)議狀態(tài)及控制變量的變化及當前值,一個有效的操作將被執(zhí)行
PduPaserEnd (Context);最后,一個正確的相鄰協(xié)議層的SDU被生成CreateSdu (Context);這個SDU將被發(fā)往指定的目標(Destination)SduSendTo(Context, Destination);在協(xié)議層的運行期間,我們可以根據(jù)需要設定Context里的協(xié)議狀態(tài)及控制變量。假設有M個這樣的變量,則存在如下M個讀取操作和M個設定操作GetContextField(Context, FieldX, Value);SetContextField(Context, FieldX, Value);此處,X表示從1到Μ。發(fā)送過程分解如下發(fā)送過程開始于相鄰協(xié)議層的SDU接收SduReceive(Context);
根據(jù)Context的內容,接收到數(shù)據(jù)后,協(xié)議實體可能進行多個操作。我們可以通過限定Context的內容,定制接收操作的行為OnSduReceive(Context);接下來創(chuàng)建PDU。PDU消息創(chuàng)建過程按照協(xié)議所約束的格式可以分解為多個原子操作。設定當前協(xié)議的PDU包含有可選和必選的N個字段,則對此,我們可以將對每個字段的解析過程分解為一個原子操作bool PduConstructX(Context);此處,X表示從1到N。最后,這個PDU將被發(fā)往指定的目標(Destination)PduSendTo (Context, Destination)。出以上協(xié)議實體相關的原子操作外,如果必要還可定義一些支持的操作,比如booICmmdCmpGE (A, B);執(zhí)行操作(A > = B),返回結果;boo 1 CmmdCmpG (A, B);執(zhí)行操作(A > B),返回結果;boolCmmdDec(A);執(zhí)行操作(A = A-1),返回結果;boolCmmdlnc (A);執(zhí)行操作(A = A+1),返回結果;booICmmdEqu (A, B);執(zhí)行操作(A == B),返回結果;boo 1 CmmdAdd (A, B);執(zhí)行操作(A = A+B),返回結果;booICmmdSub (A, B);執(zhí)行操作(A = A-B),返回結果;boolCmmdClr(A);執(zhí)行操作(A = 0),返回結果;boolCmmdNot (A);執(zhí)行操作(A = A),返回結果;boolCmmdSet (A,B);執(zhí)行操作(A = B),返回 A 為結果boolPrintError (ErrorCode, String);打印錯誤碼及錯誤信息.步驟2012、將這些原子操作分別封裝成獨立的可執(zhí)行命令;業(yè)務相關的操作依據(jù)業(yè)務不同有所不同,以支持的操作實現(xiàn)。本發(fā)明實施例中以 C語言為例進行說明,舉例如下boolCmmdCmpGE(int A, int B){return A > = B ;}bool CmmdAdd(int*A, int B){*A = *A+B ;return 0 ! = *A ;}其他不在贅述。統(tǒng)一管理這些例程的名字,入口向量,參數(shù)表描述信息。管理方法采用將命令注冊到一個命令管理實體。注冊方法如下boolRegistCmmdToLib (Name, Vector, ParameterList);
Name 例程的名字,字符串;Vector 例程的有效引用;ParameterList 參數(shù)列表,包括參數(shù)個數(shù)及每個參數(shù)的類型信息使用時,可以使用讀取函數(shù)booIGetCmmdFromLib (Name, Vector, ParameterList);指定名字的命令的向量和參數(shù)列表將被返回到Vector和ParameterList中。這些信息在命令管理實體的存儲如圖4所示。步驟202、遵循約定的語法規(guī)則,使用所述的可執(zhí)行命令書寫腳本,構建特定的業(yè)務流程;本步驟具體如圖5所示,包括步驟2021、確定語法規(guī)則;命令引用方式名字引用。如CmmdAdd表示命令boo 1 CmmdAdd(int*A,int B);參數(shù)引用方式名字+類型+值。分支結構使用表達式?真分支假分支形式。變量的定義類型+名字分割符分號(;)表示其后內容被忽略。每個腳本行必需以分號結束。問號(?)判斷之前的表達式的值。冒號()分割真分支和假分支的分支值。當無假分支(假分支為順序執(zhí)行)時, 分號和假分支均可省略。不填寫分支值表示順序執(zhí)行下一個命令。步驟2022、書寫腳本,構建業(yè)務流程;本步驟中,首先需要構建接收過程腳本,具體如下PDUReceive(this) ? RCV_0K ;PrintError (0,“接收錯誤”)? RETURN RETURN ;RCV_0K PduPaserl(this) ? PDUPASERl_0k ;PduPaserFalseOperatel(this);PrintError (1,“解析 PDU 錯誤”)? RETURN RETURN ;PDUPASERl_0k PduPaserTrueOperatel(this);PduPaserl(this) ? PDUPASER2_0k ;PduPaserFalse0perate2(this);PrintErroH2,“解析 PDU 錯誤”)? RETURN RETURN ;PDUPASER2_0k PduPaserTrue0perate2 (this);PduPaserEnd(this);CreateSdu(this);SduSendTo (this, "ULP");RETURN
此外,還需構建發(fā)送過程腳本,因發(fā)送過程與接收過程類似,在此不作詳細說明。步驟203、使用腳本解釋器,將所述腳本解析成二進制數(shù)據(jù)文件;本發(fā)明的實施例所使用的二進制的數(shù)據(jù)文件格式如圖6所示。步驟204、使用一個腳本執(zhí)行器,基于所述二進制數(shù)據(jù)文件完成業(yè)務流程的執(zhí)行;本步驟具體如圖7所示,包括步驟2041、根據(jù)二進制數(shù)據(jù)文件,初始化腳本執(zhí)行器上下文信息;步驟2042、若當前上下文信息為流程結束,則跳轉到步驟2044,否則執(zhí)行當前命令;步驟2043、根據(jù)當前命令執(zhí)行結果及二進制數(shù)據(jù)的內容,更新當前上下文中的入口向量及參數(shù)的值,并在執(zhí)行完成后跳轉到步驟2042 ;步驟2044、退出執(zhí)行流程。本發(fā)明實施例提供了一種腳本驅動軟件構建方法,在需要在某一平臺上運行腳本時,構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件,實現(xiàn)了根據(jù)平臺靈活構建腳本驅動軟件,腳本可跨平臺運行;并將腳本解釋器和腳本執(zhí)行器分離,提高了腳本執(zhí)行的效率。將軟件的業(yè)務流程分解為多個原子操作,將每個原子操作封裝成獨立的可執(zhí)行命令。然后使用這些可執(zhí)行命令書寫腳本,構建特定的業(yè)務流程。最后,將腳本解析成二進制數(shù)據(jù)文件并驅動腳本運行引擎執(zhí)行腳本流程,完成業(yè)務流程處理軟件的構建。在保證效率的前提下,可使業(yè)務流程處理軟件能夠迅速響應業(yè)務流程的變化,同時, 改變可軟件的維護方法,極大的提高了軟件的可維護性能,降低了軟件的維護成本。本發(fā)明的實施例還提供了一種腳本驅動軟件構建裝置,包括編譯模塊,用于構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件。進一步的,所述編譯模塊包括解釋器構建單元,用于構建一個文本解析工具,所述文本解析工具用于完成對腳本的解析與轉換,生成二進制數(shù)據(jù)文件,所述文本解析工具即為所述腳本解釋器;執(zhí)行器構建單元,用于構建一個從二進制數(shù)據(jù)文件中識別節(jié)點描述符,并根據(jù)所述節(jié)點描述符執(zhí)行描述符里的可執(zhí)行命令的工具,該工具即為所述腳本執(zhí)行器。進一步的,該裝置還包括執(zhí)行模塊,用于使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件,使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件。進一步的,該裝置還包括運行期庫維護模塊,用于將軟件業(yè)務流程分解為多個原子操作,并將這些原子操作分別封閉成獨立的可執(zhí)行命令。上述腳本驅動軟件構建方法,可以與本發(fā)明的實施例提供的一種腳本驅動軟件構建平臺相結合,在需要在某一平臺上運行腳本時,構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件,實現(xiàn)了根據(jù)平臺靈活構建腳本驅動軟件,腳本可跨平臺運行;并將腳本解釋器和腳本執(zhí)行器分離,提高了腳本執(zhí)行的效率。本領域普通技術人員可以理解上述實施例的全部或部分步驟可以使用計算機程序流程來實現(xiàn),所述計算機程序可以存儲于一計算機可讀存儲介質中,所述計算機程序在相應的硬件平臺上(如系統(tǒng)、設備、裝置、器件等)執(zhí)行,在執(zhí)行時,包括方法實施例的步驟之一或其組合。可選地,上述實施例的全部或部分步驟也可以使用集成電路來實現(xiàn),這些步驟可以被分別制作成一個個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。上述實施例中的各裝置/功能模塊/功能單元可以采用通用的計算裝置來實現(xiàn), 它們可以集中在單個的計算裝置上,也可以分布在多個計算裝置所組成的網(wǎng)絡上。上述實施例中的各裝置/功能模塊/功能單元以軟件功能模塊的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。上述提到的計算機可讀取存儲介質可以是只讀存儲器,磁盤或光盤等。
權利要求
1.一種腳本驅動軟件構建方法,其特征在于,包括構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件。
2.根據(jù)權利要求1所述的腳本驅動軟件構建方法,其特征在于,所述構建腳本解釋器和腳本執(zhí)行器包括如下步驟構建一個文本解析工具,所述文本解析工具用于完成對腳本的解析與轉換,生成二進制數(shù)據(jù)文件,所述文本解析工具即為所述腳本解釋器;構建一個從二進制數(shù)據(jù)文件中識別節(jié)點描述符,并根據(jù)所述節(jié)點描述符執(zhí)行描述符里的可執(zhí)行命令的工具,該工具即為所述腳本執(zhí)行器。
3.根據(jù)權利要求1所述的腳本驅動軟件構建方法,其特征在于,該方法還包括 使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件; 使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件。
4.根據(jù)權利要求3所述的腳本驅動軟件構建方法,其特征在于,所述使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件的步驟具體為使用所述腳本解釋器將腳本解析成由多個節(jié)點描述符構成的二進制數(shù)據(jù)文件,所述節(jié)點描述符包含所述腳本中的可執(zhí)行命令的命令引用信息、命令參數(shù)信息和跳轉控制信息。
5.根據(jù)權利要求3所述的腳本驅動軟件構建方法,其特征在于,使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件包括如下步驟確定當前節(jié)點描述符的偏移,根據(jù)該偏移,獲取當前節(jié)點描述符; 執(zhí)行所述當前節(jié)點描述符對應的可執(zhí)行命令;根據(jù)所述可執(zhí)行命令的執(zhí)行結果和所述當前節(jié)點描述符的跳轉控制信息,確定下一當前節(jié)點描述符。
6.根據(jù)權利要求1所述的腳本驅動軟件構建方法,其特征在于,該方法還包括將軟件業(yè)務流程分解為多個原子操作,并將這些原子操作分別封閉成獨立的可執(zhí)行命令;根據(jù)預置的語法規(guī)則,調用所述可執(zhí)行命令構建腳本,所述預置的語法規(guī)則包括可執(zhí)行命令的引用方式、參數(shù)的傳遞表示和判斷與跳轉控制表示。
7.一種腳本驅動軟件構建裝置,其特征在于,包括編譯模塊,用于構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件。
8.根據(jù)權利要求7所述的腳本驅動軟件構建裝置,其特征在于,所述編譯模塊包括 解釋器構建單元,用于構建一個文本解析工具,所述文本解析工具用于完成對腳本的解析與轉換,生成二進制數(shù)據(jù)文件,所述文本解析工具即為所述腳本解釋器;執(zhí)行器構建單元,用于構建一個從二進制數(shù)據(jù)文件中識別節(jié)點描述符,并根據(jù)所述節(jié)點描述符執(zhí)行描述符里的可執(zhí)行命令的工具,該工具即為所述腳本執(zhí)行器。
9.根據(jù)權利要求7所述的腳本驅動軟件構建裝置,其特征在于,該裝置還包括執(zhí)行模塊,用于使用所述腳本解釋器將腳本解析成可被所述腳本執(zhí)行器執(zhí)行的二進制數(shù)據(jù)文件,使用所述腳本執(zhí)行器執(zhí)行所述二進制數(shù)據(jù)文件。
10.根據(jù)權利要求7所述的腳本驅動軟件構建裝置,其特征在于,該裝置還包括運行期庫維護模塊,用于將軟件業(yè)務流程分解為多個原子操作,并將這些原子操作分別封閉成獨立的可執(zhí)行命令。
全文摘要
本發(fā)明提供了一種腳本驅動軟件構建方法和裝置。涉及軟件開發(fā)領域;解決了現(xiàn)有腳本平臺依賴性強、執(zhí)行效率低下的問題。該方法包括構建腳本解釋器和腳本執(zhí)行器,所述腳本解釋器和腳本執(zhí)行器組成腳本驅動軟件。本發(fā)明提供的技術方案,適用于軟件工程。
文檔編號G06F9/44GK102289365SQ20101020604
公開日2011年12月21日 申請日期2010年6月21日 優(yōu)先權日2010年6月21日
發(fā)明者劉福財 申請人:中興通訊股份有限公司