999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

J2EE應用軟件靜態模型重構技術研究

2007-12-31 00:00:00傘云飛金茂忠
計算機應用研究 2007年11期

摘要:給出了J2EE應用軟件靜態模型的詳細描述,并提出一種利用靜態分析技術自動重構J2EE應用軟件靜態模型的方法,實現了原型工具,有效地幫助用戶分析、理解、測試J2EE應用軟件系統。最后通過一個實例描述模型的建立過程。

關鍵詞:J2EE靜態模型; J2EE構件; 逆向工程

中圖分類號:TP311.5文獻標志碼:A

文章編號:1001-3695(2007)11-0196-04

0引言

隨著J2EE技術的發展,J2EE應用軟件使用范圍不斷擴大,有效地幫助企業、用戶完成較大規模的應用。但是,隨著企業應用的日益復雜和多元化,J2EE應用軟件日益龐大,在軟件的維護和擴展過程中,對軟件的分析理解、測試都很復雜,甚至難以進行,特別是隨著時間的推移,應用軟件相關文檔可能會發生遺失,使軟件的理解更加困難。因此需要一種針對J2EE應用軟件的理解與建模工具,重構J2EE應用軟件的模型,幫助用戶分析、理解J2EE應用軟件的組成和結構。另外,生成的模型可以為利用模型驅動測試技術測試J2EE應用系統提供測試模型建立依據,甚至可以直接轉換為測試模型[1]。

從廣義上講,這屬于逆向工程[2]研究的范疇。目前,逆向工程的研究大都集中在通過對組成應用軟件的類級代碼分析生成體系結構模型,以UML類圖、活動圖等形式表現,對J2EE應用軟件的逆向工程研究比較少。文獻[3]提出利用北京航空航天大學軟件工程研究所QESat/Java軟件分析與測試工具通過對應用系統進行分析,得到系統的類視圖、關系視圖等。文獻[4,5]給出了描述J2EE應用軟件組成的四種視圖,即導航視圖、概念視圖、模塊視圖、執行視圖,通過它們來顯示J2EE應用系統的結構。這些研究在一定程度上給出了建立J2EE應用軟件模型以及對模型進行重構的方法。但J2EE應用軟件必須運行在特定的容器中,對其動態運行模型的捕捉不僅需要將完整的系統部署到容器中,還要在容器、系統中注入跟蹤方法。因此很難控制和捕捉,得到模型的正確性也受到容器和輸入的影響。靜態模型中記錄的軟件組成、結構、功能信息為理解、分析軟件提供了充分的信息。本文主要考慮軟件靜態模型的重構問題。目前已有的靜態模型,一般是從UML圖的角度出發考慮類及方法調用關系。在文獻[4,5]中雖然給出了四種視圖表現模型概念,但是在靜態模型方面只表現了類、構件內部的靜態關系,對于構件中的耦合、軟件的整體組織都沒有完整地表示。另一方面,目前存在的重構方法,一般是將對J2EE構件的分析轉換成對類文件的分析,但是J2EE應用軟件的組成單元內部都有特定的組織形式,各個單元之間的耦合關系也不盡相同。因此這種方法會丟失部分信息,得到的模型并不完整。

針對以上問題,本文以J2EE規范和現有模型理論為基礎,分析J2EE應用軟件的編碼規則和結構特點,給出了J2EE應用軟件靜態模型的完整描述,并提出了自動重構J2EE應用軟件靜態模型的方法。本方法根據J2EE軟件靜態模型的特點,對目標J2EE應用軟件進行完整的靜態分析,識別J2EE應用軟件的組成構件,逐步生成J2EE應用軟件的靜態模型,為理解程序和構件的結構提供幫助。

1J2EE應用軟件靜態模型概述

1.1J2EE應用軟件概述

J2EE是用于建立服務器方應用程序的一種系統平臺[3],為企業應用提供了一個多層結構的分布式應用程序模型。應用程序邏輯根據其實現的不同功能被封裝到不同的構件中。構件是對外提供一組規約化接口的、符合一定標準的、可替換的軟件系統的程序模塊。J2EE規范中規定,J2EE構件包含JSP、Servlet、EJB等。其中:JSP和Servlet構件可以動態處理用戶的各種請求并作出響應,運行在Web容器中,屬于Web層構件;EJB構件負責處理各種業務邏輯,運行在業務層。每個EJB構件都必須遵守EJB API的規定。按照EJB實現的模式不同,EJB又分為會話Bean、實體Bean和消息驅動Bean。

J2EE規范規定J2EE應用軟件必須包含Java類文件和部署文件等。其中:Java類文件完成軟件的主要功能;部署文件則記錄構件的各種信息,容器通過讀取部署文件運行構件。

1.2J2EE應用軟件靜態模型

為重構J2EE應用程序靜態模型,首先引入J2EE靜態模型的定義和基本的表現形式。靜態模型是在不需要運行軟件的情況下,對程序結構、程序的組織等信息的描述,包括包、類、屬性、方法、類之間的各種相互關系、方法之間的調用關系、各種復雜度等;這些信息一般可通過分析軟件程序獲得。本文根據J2EE應用程序的特點以及組成結構,根據文獻[4,5]中靜態模型相關的內容并加以擴充,將J2EE應用程序的靜態模型描述為文件視圖、構件視圖、模塊視圖和體系結構視圖。

1.2.1文件視圖

J2EE應用程序由多種類型的文件組成。文件視圖用于表示J2EE應用程序的目錄、包、類文件、配置文件、JSP文件等的組織形式。它以組成J2EE應用程序最基本的文件作為元素,描述文件的物理位置、物理組織形式,記錄文件內部的基本信息,如方法、屬性、各種復雜度信息,以及方法調用關系等。

1.2.2構件視圖

構件視圖構建在文件視圖的基礎上。它以J2EE標準中定義的Servlet、EJB、JSP等基本構件為單位組織J2EE應用程序中的各種文件,描述其組成方面的細節信息、關系信息以及該構件向外提供的接口等信息,如圖1所示。

在該視圖中,在構件的主類中加入標簽〈〈CType+SubType+CName〉〉,用于標志構件的具體類型。標簽的具體含義如表1所示。

在靜態模型中,構件視圖和組織結構視圖中的元素存在著一對多的對應關系。具體關系如表2所示(*代表必須存在)。

1.2.3模塊視圖和體系結構視圖

這兩個視圖都關注應用程序靜態關系,主要區別是模塊視圖關注J2EE應用程序某一模塊的結構以及關系;體系結構視圖則是將所有的模塊組織起來,建立應用軟件整體的結構。這兩個視圖聯合起來反映了J2EE應用程序整體的體系結構整體模型。

J2EE應用程序一般用來處理大規模的業務邏輯,不同的構件聯合起來完成某一特定的功能。因此在本文中將J2EE應用程序劃分為不同的模塊表示應用程序功能的組織形式。但是構件之間存在著復雜的關系,模塊如何劃分是一個重要的問題。文獻[6]中提供了一種通過判斷主動對象和被動對象的方法來劃分模塊。但是由于其中涉及到工作流以及動態運行方面的問題,比較復雜。下面將給出一種簡單的劃分方式。

在J2EE應用軟件中,主要的功能邏輯由Servlet、會話Bean完成,JSP、實體Bean、消息驅動Bean以及其他的一些類文件只是充當表現和提供業務服務特征和屬性的角色。基于這些分析,本文提出的模塊劃分方法如下:

a)獲取程序中所有的Servlet和會話Bean構件,并建立這些構件之間的關系,將完全沒有關系(與之關聯會話Bean也沒有關系)的構件作為不同的模塊;

b)如果同一個Servlet關聯著不同的會話Bean并且之間完全沒有關系,則將會話Bean作為不同的模塊,并將Servlet分配到這兩個模塊中;

c)如果一個會話Bean只與會話Bean有關,則將它加入與其有關的會話Bean模塊中;

d)建立JSP,實體Bean以及其他類與會話Bean、Servlet之間的關系;

e)將JSP、Servlet加入到表示層,EJB加入到邏輯層。

根據以上的模塊劃分標準即可將整個應用軟件劃分為獨立的功能模塊,建立對應的模塊視圖。將所有的模塊視圖,根據共同的訪問界面、調用關系,共同的數據資源、數據一致性等關系組合成整體的體系結構視圖;將入口的JSP作為單獨的部分成為體系結構的入口。

以上四個視圖從系統的結構、組成單元的基本信息、構件關系模型、模塊關系,以及系統的整體體系結構方面等角度描述了J2EE應用軟件完整的靜態模型,反映了J2EE應用軟件的特點。

2靜態模型重構技術

2.1靜態模型建立過程概述

利用靜態分析技術實現J2EE靜態模型重構的具體過程如圖2所示。主要包括以下步驟:

a)獲取組織結構信息。讀取J2EE應用軟件的組成結構信息,得到J2EE應用程序的組織結構信息。

b)靜態分析。對應用程序進行靜態分析,包括類文件分析、JSP文件分析、XML文件分析,記錄其組成的各種基本信息,建立文件視圖。

c)構件識別。根據從J2EE規范中對Servlet、EJB、JSP等構件的定義中提取出的構件識別規則,從靜態分析后得到的信息中識別出各種J2EE構件,并得到構件視圖。

d)模塊劃分。按照1.2.3節提供的模塊劃分標準,根據b)c)中得到的信息,將組成J2EE應用程序的構件劃分到不同的模塊,得到模塊視圖。

e)建立體系結構視圖。按照關聯關系,將模塊視圖組織成體系結構視圖,完成整個靜態模型的建立過程。

2.2對應用軟件進行靜態分析

自動重構J2EE應用軟件靜態模型過程中,首先要對其進行靜態分析,得到組成應用軟件的基本單元、單元內部信息、關系信息等。完整的J2EE應用軟件一般包括類文件、XML文件、JSP文件。因此,靜態分析包括類文件分析器、XML文件分析器、JSP文件分析器。

對類文件的分析采用QESat/ Java軟件的靜態分析器對文件進行分析。該靜態分析器的主要部分是由JavaCC根據Java語法生成的一個分析器,通過詞法與語法匹配,得到代碼的各種基本信息以及調用關系信息。

該靜態分析器只能分析Java代碼,對XML文件和JSP文件無能為力。因此,在該靜態分析器后,提供了對XML和JSP文件的分析器。

XML分析器主要采用XPPXML文件讀取器為核心,將XML按照標簽讀取;然后根據XML標簽的具體內容,獲取其屬性以及標簽包含的內容,記錄到靜態信息中。

JSP分析器則是封裝了一個HTML分析器,通過讀取JSP文件,根據JSP標簽,記錄〈jsp:XX〉等標簽信息,并分析〈%..%〉內部的Java代碼,獲得JSP與其他文件的關系。

通過以上的分析過程,最終得到如下信息:

a)類的基本信息。包括包名、類名、類型、父類和實現的接口等信息。

b)類內部的信息。包括類包含的屬性信息、方法名稱、參數、返回值。

c)類方法的內部信息。

d)構件基本信息。包括構件名、類型、關系信息的記錄。

e)JSP基本信息。包括JSP名、內部調用信息。

得到以上信息后,就可以建立J2EE應用軟件靜態模型中的文件視圖。

2.3構件識別

構件識別主要是根據J2EE規范中對JSP、Servlet、EJB構件的定義,總結構件識別的基本規則,按照構件識別規則,將屬于同一構件的信息進行合并,建立完整的構件信息。

2.3.1構件識別規則

J2EE規范中為J2EE構件(包括Servlet、EJB等)提供了完整的定義。根據對J2EE規范的提取,得到對J2EE構件的識別規則。

1)Servlet構件

父類為javax.servlet.HttpServlet或者javax.servlet.Gene ̄ricServlet[3],且在部署描述文件中由〈〈Servlet〉〉標簽描述的public類型的Java類稱之為一個Servlet。

Servlet構件包括一個Servlet主類和一個與之相關的部署文件。

2)EJB構件

EJB可分為實體Bean、會話Bean和消息驅動Bean。對于會話Bean,將實現javax.ejb.SessionBean接口;對于實體Bean,將實現javax.ejb.EntityBean接口;對于消息驅動Bean,將實現javax.ejb.MessageBean接口[3]。每個EJB構件都是由一個主類、本地接口、遠程接口以及一個與之相關的部署文件組成的。對于home接口繼承javax.ejb.EJBHome或者javax.ejb.EJBLocalHome接口;對于EJBObject接口繼承javax.ejb.EJBObject或者javax.ejb.EJBLocalObject接口。

2.3.2構件識別方法

構件識別過程就是依照上面的構件識別規則,在得到的信息中找到構件的特征,將相關聯的內容組合在一起。

構件的識別既可通過判斷類文件中類的繼承信息獲得,也可通過分析部署文件中對構件結構的描述獲得。為了能夠使構件識別更加準確,本文中將兩種方法結合在一起。具體過程如下:

a)讀取類文件中父類信息,按照構件識別規則判斷該父類是否符合某一標準(如是否為HttpServlet);如果符合,則將該類記錄為特定的類型。

b)遍歷部署文件信息中對構件結構的記錄,按照構件名在類文件信息中查找對應的組成元素,并判斷類型是否正確;如果符合,則將該類加入到該構件信息中。這樣就完成了J2EE構件的識別過程。

2.4模塊劃分

在1.2.3節中已給出了模塊劃分的基本規則。在此簡單介紹模塊劃分的實現。在構件識別過程中,各種構件均已被識別。因此在模塊劃分階段:a)基于識別的構件信息查找所有Servlet構件、會話EJB構件;b)在構件主類的靜態信息中查找構件間的相互關系,按照劃分規則將這些構件劃分到不同的模塊中,并予以標志;c)從靜態分析的文件中讀取其他的JSP、EJB與已建立的模塊中的構件之間的關系,進行添加。

3實例分析

QESat/Java(Java軟件分析與測試工具)是北京航空航天大學軟件工程研究所“十一五預研項目”的課題,而對J2EE應用程序的分析、理解與測試是其中一項關鍵技術。目前已基本實現分析和理解功能,并在一定程度上得到了應用。本章以北航軟件所基于J2EE平臺開發的實驗室管理系統為例,實現其靜態模型的重構過程。

3.1實例介紹

實驗室管理系統是依照J2EE應用軟件模式開發的分布式管理平臺,包括實驗室人員管理、信息開放、設備管理、經費管理、產品介紹等。該應用軟件系統依照J2EE特點,采用三層體系架構,采用JSP、Servlet、EJB和數據庫技術實現,有效地幫助實現實驗室的管理和對外開放的功能。

該系統規模較大,包含的各種類、構件以及之間的關系比較復雜,因此在進行系統維護時,很難通過閱讀程序代碼和現有文檔了解系統的內部結構和組織關系。使用模型重構工具可以迅速獲得該系統的靜態模型,了解程序內部各部分的關系。

3.2模型重構及結果說明

建立測試項目,并配置測試所需的環境。通過對項目進行完整的分析后得到系統的靜態模型(圖3)。在圖3(a)中給出了bookSession構件的基本結構。通過視圖不難看出,該構件是一個會話EJB,名字為bookSession,它包括bookSessionBean類。其中bookSession、bookSessionLoca、bookSessionHome和bookSessionLocalHome分別是它的四個接口。它們共同完成該構件的功能。在(b)中表現了以bookSession為主要構件的模塊,該模塊通過viewBook、bookModify等與用戶交互,訪問該會話Bean,進而操作數據庫,實現對圖書操作的業務邏輯。(c)則是將全部模塊組織起來,形成整個系統完整的體系結構。

3.3小結

以上實例自動實現了J2EE應用軟件靜態模型重構過程,并得到重構模型,從系統的結構、組成單元的基本信息、構件關系模型、模塊關系,以及系統的整體體系結構方面重構了系統完整的靜態信息;充分體現了工具在模型重構、輔助分析理解程序方面的作用;得到的靜態模型不僅為理解程序組成單元內部信息,也為了解系統整體信息提供了幫助。程序分析理解人員可基于其了解軟件系統的細節信息、構件的組織結構,以及獨立的單元如何組織完成業務邏輯。該模型同時為程序的分析、理解提供了可視化的方法,方便了對J2EE應用軟件進行理解,并為程序測試人員提供了程序的基本信息,用于幫助測試人員在單元測試、構件測試、模塊測試中選擇測試對象;與QESat/Java的代碼視圖配合還可以幫助用戶選取測試用例、分析測試結果等。同時,獲得的構件模型、模塊關系模型以及體系結構模型還可以為模型驅動測試提供幫助和模型基礎。

4結束語

J2EE技術的廣泛應用以及J2EE應用軟件規模的日益龐大使得對J2EE應用軟件的分析、理解、測試變得越來越復雜和困難。本文通過分析J2EE規范和J2EE應用軟件的特點,給出了J2EE應用軟件靜態模型的詳細描述,并提出對J2EE應用軟件進行完整靜態分析,得到了J2EE應用軟件靜態模型的方法,概述了原型工具的實現技術。本方法實現了J2EE應用軟件靜態模型重構,不僅幫助系統開發人員分析、理解J2EE應用軟件,生成的靜態模型還可以作為J2EE應用軟件幫助文檔,豐富逆向工程對J2EE構件建模的研究領域;另一方面,生成的靜態模型可以為模型驅動測試J2EE應用軟件提供模型依據。但是,在模型表現方面,它還存在著一定的不足,工具在模型的顯示還未涉及圖形排布問題。因此下一步工作將考慮使用何種排布算法以更好地顯示該模型。

參考文獻:

[1]劉冬懿,金茂忠,劉超,等.從UML設計模型到測試模型的研究[J].計算機應用研究,2007,24(5):56-59.

[2]袁望洪,陳向葵.逆向工程研究與發展[J].計算機科學,1999,26(2):50-55.

[3]沈艷芳.面向J2EE的分析和測試技術的研究和實現[D].北京:北京航空航天大學,2004:40-48.

[4]CLEMENTS P, BACHMANN F, BASS L, et al. Documenting software architectures: views and beyond[M]. Boston: Addison-Wesley, 2002.

[5]HAN Min-min, HOFMEISTER C, NORD R L. Reconstructing software architecture for J2EE Web applications[C]//Proc ofthe 10th Working Conference on Reverse Engineering. 2003:30-34.

[6]蔣建民.基于組件的分析模型[J].重慶工商大學學報:自然科學版,2003,20(1):37-40.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 九九免费观看全部免费视频| 熟女日韩精品2区| 久久久久青草大香线综合精品| 国产sm重味一区二区三区| 国产精品爆乳99久久| 色偷偷综合网| 亚洲国语自产一区第二页| 日韩不卡免费视频| 亚洲精品中文字幕无乱码| 四虎影视国产精品| 欧美a在线看| 91无码人妻精品一区| 国产一区二区三区在线观看视频| 波多野结衣一区二区三区88| 香港一级毛片免费看| 亚洲青涩在线| A级毛片无码久久精品免费| 精品视频91| 在线日韩一区二区| 无码福利日韩神码福利片| 日韩专区欧美| 欧美一区二区三区不卡免费| 天天色天天操综合网| 国产乱肥老妇精品视频| 亚洲系列中文字幕一区二区| 国产99精品久久| 亚洲成人77777| 性视频一区| 伊人网址在线| 欧美一区二区三区国产精品| 亚洲男人的天堂网| WWW丫丫国产成人精品| 2021国产v亚洲v天堂无码| 亚洲精品无码久久久久苍井空| 无码精油按摩潮喷在线播放| 中文无码毛片又爽又刺激| 综合亚洲网| 三级国产在线观看| 亚洲精品第一在线观看视频| 欧美亚洲国产精品第一页| 精品综合久久久久久97超人| 亚洲最新网址| 在线看片免费人成视久网下载| 免费一级大毛片a一观看不卡| 亚洲色图在线观看| 国产精品妖精视频| 国产欧美自拍视频| 中文字幕在线欧美| 欧美日韩中文国产va另类| 老司机aⅴ在线精品导航| 毛片卡一卡二| 成人亚洲天堂| 久久久成年黄色视频| 国产人妖视频一区在线观看| 女人18一级毛片免费观看 | 尤物精品视频一区二区三区| 中国成人在线视频| 不卡网亚洲无码| 99激情网| 国模私拍一区二区三区| 伊人色在线视频| 色综合久久久久8天国| 国产毛片网站| 啪啪啪亚洲无码| 日韩国产另类| 在线高清亚洲精品二区| 欧美翘臀一区二区三区| 精品久久久久久中文字幕女 | 亚洲欧美综合另类图片小说区| 国产主播福利在线观看| 中文字幕调教一区二区视频| 国产午夜一级淫片| 国产在线视频自拍| 色综合久久88色综合天天提莫| 亚洲日韩在线满18点击进入| 一本大道无码高清| 第一页亚洲| 四虎AV麻豆| 亚洲国产成人自拍| 亚洲日韩第九十九页| 天堂岛国av无码免费无禁网站| 国产麻豆精品久久一二三|