英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
Web组件与数据库资源之间依赖关系的自动提取应用
介绍
正如之前的研究[1]所指出的,Web应用程序已经变得越来越复杂[2,3]并且正在迅速变化[4]。但是,关于这些应用程序的文档还不够完善[3,5]。因此,Web应用程序开发人员在维护应用程序时遇到了困难[2,6,7],并且没有足够的研究来理解它们[1,7]。此外,Java Web应用程序被认为是需要维护的具有代表性的遗留应用程序,并且强调了对这些应用程序进行逆向工程的必要性[8,9]。
为了有效维护Web应用程序,我们需要了解它如何利用其Web组件来创建其网页[1、10、11]。这意味着需要一个抽象模型来表示网页创建。此外,如果希望使用这样的模型维护一个web应用程序,需要从web应用程序中提取模型自动地。
当页面请求发生在Web浏览器中时,多个Web组件(例如JavaServer Pages(JSP)和servlet)会在Web服务器上进行交互。在此过程中,Web组件访问数据库资源,例如用于存储、更新、删除或检索持久数据的表和属性。该过程完成后,将创建结果页面并将其返回给浏览器。因此,代表页面创建过程的模型需要表达Web组件和数据库资源之间的关系,以便有效地理解和维护Web应用程序。
先前的研究[1,10-12]已经提出了定义和提取模型以表示此类页面创建过程的方法。这些学习有利用动态的[10]或者静止的[1,11,12]分析以提取Java Web组件及其交互。也就是说,仅通过分析源代码(在静态分析中)或通过执行Web应用程序(在动态分析中)来提取Java Web组件及其交互。然而,这些研究没有提取数据库资源和网络组件之间的交互。如果页面生成过程的模型包括Web组件和数据库资源之间的交互,则与以前的研究不同,该模型将产生以下结果:好处。首先,依赖于数据库资源的实体可以在软件架构方面在语义层面上进行识别。以前的一些研究[1,10-12]没有确定数据库资源。其他人(在第II-B小节中详细描述)已经识别了数据库资源,但将与数据库资源交互的基本实体视为源文件单元。例如,一个模型识别访问数据库的源代码的位置(文件名和行号)[13]。我们的方法允许Web开发人员在每个Web组件的基础上理解这种依赖关系,以便可以更抽象地管理Web应用程序等级。其次,当改变需求,特别是数据库资源时,可以在更抽象的单元中分析涟漪效应,即基于Web组件而不是基于源文件。第三,Web工程师可以分析和管理Web组件对数据库资源的访问,并尝试在软件架构方面提高质量方面,例如性能。第四,在对Web应用程序进行架构一致性检查[14]时,我们可以检查Web组件和数据库资源方面是否存在架构不一致[14,15],这样可以更多地进行这样的测试有效的。
本文提出了一种页面生成图模型,该模型表示Java Web组件、数据库资源及其交互。我们还提出了一种动态分析方法,可以从Java Web应用程序中自动提取该模型。我们使用开源Web应用程序进行实验,以验证所提出的模型和提取方法的有效性。为了减少我们提出的方法受新技术(如编程语言和开发框架)引入的影响,该方法动态提取页面生成图模型。我们方法的主要职责是识别Web组件何时访问数据库资源。为此,我们的方法动态地观察Java标准库中提供的与数据库相关的对象。
本文介绍了背景、页面生成图模型和模型提取方法,并分别分析了提取方法的应用。最后,我们的结论和未来研究的方向被描述。
- 背景
在介绍我们的技术之前,我们描述了表示Web组件之间交互的现有模型[1,10-12]。特别是,我们更详细地描述了[10]中介绍的协作模型,这里提出的图模型是基于该模型并对其进行扩展的。其次,我们检查了以前关于应用程序和应用程序之间交互的研究。数据库。
- 合作模型
用户通常单击网络浏览器上的超链接以请求新网页。当此类请求发生时,各种Web组件(例如JSP、servlet和超文本标记语言(HTML)页面)在Web服务器内相互交互。然后,创建一个新页面并将其返回到Web浏览器。为了表示这些交互,[10]中的研究提出了协作模型,这是一种处理页面请求的模型,由有向图表示。协作模型的示例如图1(a)所示,它显示了当单击超链接从在线书店应用程序(http://www.han-bit.co.kr)阅读书籍信息时Web组件之间的交互。/store/books/look.php?p_code=B5476653696)。图1(b)显示了生成的页面。Online Bookstore应用程序是一个开源Java Web应用程序,它提供书籍信息和这功能性到写和读书评论。图1(a)所示的相互作用可以描述如下。当用户发出阅读书籍信息的请求时,该请求被传递到Web服务器上的Web容器。Web容器调用books-info servlet,它作为一个控制器[16]来处理这个请求。books-info servlet执行与检索图书信息相关的业务逻辑。然后,servlet将请求转发到WebTemplate.jsp组件,该组件充当视图[16]以生成结果页面。该JSP在图1(b)页面的左上角包含LoginWindow.html,以显示登录帐户的用户界面。此外,该JSP包括BooksInfoView.jsp,用于在屏幕中央以表格的形式显示图书信息。生成的页面通过Web容器传递到Web浏览器。当用户请求页面时,Web组件通常会在Web服务器上相互交互。Web组件在此过程中访问数据库资源以进行持久数据操作。因此,一个代表页面创建过程的模型需要表达Web组件和数据库资源之间的关系,以便有效地理解和维护Web应用程序。然而,在[10]中,数据库资源没有在协作模型中表示,因为作者只考虑了Web组件方面的交互。为了进行有效的维护,有必要识别和记录处理用户页面请求所需的数据库资源。因此,我们提出了图2中描述的模型。图2显示了为什么每个Web组件在每个Web组件的基础上都需要特定的数据库资源。这个例子展示了请求图书信息时在Web服务器上发生的交互,如图1所示。与图1的不同之处在于,我们可以理解books-info servlet检索货物信息表以获取图书信息,并且随后将此信息转发到WebTemplate.jsp组件以创建页面。其他先前的研究[1,11,12]已经提出了用于表示Web服务器上Web组件之间的交互的模型,类似于[10]。[1,10]中的研究通过动态分析提取模型,[11,12]中的研究通过静态分析提取模型。但是,与[10]一样,方法[1,11,12]没有考虑数据库资源或数据库使用权。本研究旨在通过动态分析生成图2所示的图形模型。换句话说,它代表了Web组件和数据库之间的依赖关系资源。
图 1. Online Bookstore 应用程序用户检索图书信息时发生的 Web 组件与生成的页面之间的交互。
图 2. Online Bookstore 应用程序用户检索图书信息时发生的 Web 组件和数据库资源之间的交互。
- 数据库识别使用权
根据[17],在应用程序中识别对数据库的访问的目的包括检测结构化查询语言(SQL)错误、增强与数据库相关的安全性以及帮助数据库发展。下面,我们就这些目的简要回顾现有的研究。首先,一些研究已经确定了访问数据库的SQL语句。在识别之后,他们分析这些陈述在句法或语义上是否正确。这些包括[18]和[19]。其次,一些研究[20,21]已经识别和分析了访问数据库的查询语句,确定这些语句是否易受攻击到SQL注射攻击,和所以在。第三,[22]中的研究使用符号执行来静态识别访问PHP Web应用程序中的数据库的语句。与[22]不同,我们的目标是识别访问数据库的Web组件,而不是语句。差异可以解释如下。假设方法m中的语句s访问数据库资源r。[22]中的目标是静态识别s。然而,m可以被web组件c 1或c 2动态调用。在我们的研究中,如果c 2调用m,那么我们可以识别web之间的依赖关系零件2_和数据库资源r。[23]中的研究提出了一种方法来识别从Java Web应用程序访问数据库的语句。作者还提出了一个衡量在应用程序中生成SQL语句的复杂性的指标。像[22]一样,它们识别语句但不识别网页组件。[24]中的研究提出了一种通过识别和分析从源代码访问数据库的语句来提取数据库模式约束的方法。这项研究可以帮助确保源代码和应用程序的数据库模式的共同演化始终如一地发生。这些先前的研究没有解决识别访问数据库资源的Web组件的问题。我们将为Java Web应用程序讨论这个问题。
- 动态提取A页GENERA-包含数据库的TION图用法
本研究旨在通过动态分析生成如图2所示的图形模型。换句话说,它不仅代表了Web服务器上Web组件之间的交互,还代表了Web组件与数据库之间的依赖关系。资源。
- 提取包含数据库的页面生成图用法
动态提取概述方法
本研究提出了一种新颖的动态分析方法,用于从Java Web应用程序中提取PG2ID。我们扩展了[10]中提出的方法,该方法提取页面创建期间发生在Web服务器上的Java Web组件之间的交互,并通过协作来表达交互模型。
该扩展的主要目的是将数据库资源作为节点提取和添加到协作模型中,并将Web组件和数据库资源之间的Select、Insert、Update、Delete、Create和Drop关系识别和添加为边。
根据[10]中提出的方法,使用Java servlet过滤器和包装器标准应用程序编程接口(API)[25]识别Web组件之间的关系。然而,仅使用[10]中提出的方法不能满足新的需求(即,了解哪些Web组件访问哪些Web数据库资源)。因此,本研究应用代理设计模式[26],并稍微检测Web应用程序的源代码来识别数据库资源和Select、Insert、Update、Delete、Create和Drop边缘。
识别何时访问数据库的关键思想是动态观察Java标准库中提供的与数据库相关的对象。为了实现这一点,我们决定采用代理模式,该模式可用于控制对所需对象的访问,并在对象被访问时向对象添加功能。执行。
JDBC分析API
Java数据库连接(JDBC)API由Java标准库提供用于数据库访问。一般来说,程序为了一种网络应用程序到使用权一种数据库使用这JDBC API的进展如下。一个网络应用程序试图在图3(a)的步骤1中连接到数据库。如果连接到数据库成功了,那么Connection对象就是回来。要从数据库中读取数据,CreateState-ment()方法首先必须在Connection对象上调用,然后获取Statement对象(步骤2)。数据然后可以通过调用执行来检索数据库中的Statement对象上的Query()方法(步骤3)。交替-tively,在步骤3中,数据库中的数据可以通过以下方式更新在Statement对象上调用executeUpdate()方法。本研究检测executeXXX()类型的执行方法,例如executeQuery()和executeUpdate(),以识别哪个Web组件访问哪个数据库资源。那么executeXXX()方法的参数就是解析以识别目标数据库资源(例如表和属性)并确定关系的类型(例如Select、Delete、Update或Insert)。此外,我们利用Java servlet的标准过滤器和包装器API来识别关系的源Web组件,即请求执行executeXXX()方法的Web组件多于。
提取的动态视图系统
图 3.使用 JDBC API 访问数据库的原始代码和修改后的代码以识别与数据库的依赖关系。
图 4.提取 Web 组件和数据库资源之间依赖关系的动态视图。
图4展示了一个序列图,表示我们的系统从Web应用程序中提取PG2ID的操作。我们在上面的图3(a)中的每个步骤中放置一个代理对象,并最终检测executeXXX()方法的执行。提取系统的主要元素在用于处理数据库请求的顺序。
在图4的步骤1中,Web应用程序尝试使用与DriverManager类对应的DriverManagerProxy类连接到数据库。然后,代理类在其原始DriverManager类的帮助下创建一个Connection对象。然后代理创建并返回一个Connection-Proxy对象,该对象对应于Connection对象。
ConnectionProxy类实现了Connection接口,因为代理必须充当Connection接口。此时,应用委托来增加现有源代码的重用性。换句话说,要定义Connection接口的方法,ConnectionProxy通过调用原始Connection对象的相应方法来处理请求。下面给出一个例子。
第2步,Web应用调用ConnectionProxy对象的CreateStatement()方法访问数据库中的数据时,利用其原有的Connection对象创建Statement对象,并创建对应的StatementProxy对象,回来。
在第3步中,当Web应用程序使用executeXXX()方法请求对StatementProxy对象的数据访问时,我们检测到此数据库访问。检测后,Statement-Proxy对象使用原始Statement对象与数据库一起工作。然后,我们的提取系统执行数据库使用分析。
在此分析过程中,StatementProxy对象首先识别当前调用executeXXX()方法的Web组件。为了这个识别,我们扩展了提取[10]中提出的协作模型的方法。
在[10]中,当一个Web组件被执行时,记录Web组件之间交互的记录器会记录执行的开始和结束,以及Web组件的调用类型(Enter、Forward
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[603550],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。