一种基于DOM4J的Web应用增量式建模方法

2010-06-22 03:41尹金玉李亚芬
现代电子技术 2009年22期

谭 凯 尹金玉 李亚芬

摘 要:通过对复杂的Web应用需建立恰当的模型可以对系统进行抽象和简化,帮助开发者更好地理解及设计该系统。采用XML格式建立的平台无关模型具有良好的适应性及扩展性,这里通过设计一个建模平台,以JSP页面为交互界面获取复杂Web应用的功能需求;采用面向Java的XML解析技术输出该Web应用的平台无关模型信息;采用增量式开发方法能够对不同开发阶段的模型信息进行合理有效的管理,并最终引导代码开发人员建立符合复杂Web应用功能需求的系统模型。实验证明,采用这种建模方法能快速有效地建立Web应用的平台无关模型。

关键词:Web应用建模;PIM;XML解析;DOM4J;增量式开发

中图分类号:TP311

随着互联网的发展,不受限于操作系统的跨平台的Java语言在Web应用的开发及设计中发挥着越来越重要的作用。然而,客观存在的交互性及功能性的要求,使得Web应用的规模和复杂度日益增加,这使得基于Java的Web应用难以开发、管理和维护。

任何较复杂的系统都需要经过设计和建模,建立恰当的模型可以对系统进行抽象和简化,帮助开发者更好地理解系统。人们为了摆脱软件开发时间长、成本高、生命周期短等弊病,一直以来也在不断摸索更为完善的系统建模方法。从之前的瀑布式开发,原型式开发,到现在流行的面向对象建模技术,都是面对复杂应用系统建立模型的方法。基于模型的Web应用开发方法MDA是新一代的面向对象建模技术,在该框架下,模型在整个软件开发过程中起核心作用,这里着重于采用DOM技术建立MDA的平台无关模型(PIM)。

1 基于MDA的Web应用建模

1.1 Web应用的建模方法

目前,功能较复杂的基于Java的Web应用系统,其开发过程大都存在开发周期长,系统复杂易出错等困难。MVC(模型[CD*2]视图[CD*2]控制)模式解决了部分问题,但在这种传统的面向对象建模方法中,由于涉及的系统模型及业务流程千变万化,随着系统复杂度的增加,代码复用性及维护性受到了越来越严峻的挑战。

MDA(模型驱动架构)是OMG(对象管理组织)提出的新的软件开发方法学。和传统的面向对象建模方法相比,MDA能够创建出高度抽象的模型,这些模型能够以独立于实现的技术开发并且以标准化的方式存储。从而,采用MDA方法建立的模型能够从容地应对平台和需求的变化,它提高了Web应用开发效率,增强了软件系统的可移植性和可维护性。

1.2 基于MDA的平台无关模型

模型在MDA开发过程中扮演着核心的角色,在整个软件生命周期中得到复用[3]。平台无关模型PIM(Platform Independent Model)是MDA中的概念,模型的平台无关概念指的是,此模型仅包含结构信息及业务逻辑,不包含实现平台的任何信息。PIM作为一个软件模型或业务系统,它独立于实现它的特定技术平台(例如,明确的程序设计语言,操作系统或数据库)。在Web应用的建模中使用PIM的优点是可以让业务逻辑与实现方法完全分离,以便于模型的重用。在此就PIM的实现进行研究,也就是研究Web应用最原始的平台无关模型,从而使建立的Web应用模型具备更强的伸缩性及可移植性。

在选择建模语言时,必须考虑到Web应用的功能需求,建模语言必须能精确表达Web应用的功能。UML的可扩展性都是其作为PIM建模语言的优点。但UML和MOF的不协调等也限制了UML的使用[4],而XML建模方法的无限可扩展性使得PIM模型能够充分描述复杂的Web应用的功能及结构特性。

2 利用DOM4J建立及管理PIM模型

2.1 Java与XML的结合

XML作为一种具有通用性、良好操作性的数据交换技术,实现了数据和表达形式的分离,它为Web应用带来了一种完全可移植的数据格式。由于XML文档的内容是一种树状结构,结构上数据库较为相似,因此,它为在数据库之间交换信息提供了一种公共格式。

可以看到,XML可实施独立于平台的数据,Java则可实施独立于平合的解决方案。另一方面,XML通过移植的方式表现数据,因此就对Java技术的可移植性构成了补充。Java和XML的天生绝配使得“一次编写,到处运行”变为现实。在对Web应用的平台无关模型PIM建模上,XML和Java彼此相辅相成,采用这两项技术构建的PIM模型也将具备极好的扩展性和可移植性。

2.2 利用DOM4J开发Web应用的PIM模型

从上文的分析可以看到,与平台无关的语言Java加上与平台无关的数据XML,能够完成最为复杂且弹性很好的Web应用建模。在Java中开发XML常用到几种模型, 这些模型可以是面向对象的, 如文档对象模型DOM,JDOM和DOM4J,也可以是面向事件的,如SAX(Simple API for XML)。其中,较为流行的就是SAX和DOM。

面向对象的文档对象模型DOM定义了文档的逻辑结构以及存取和维护文档的方法。DOM主要由两部分组成:DOM核心(DOM Core)和DOM HTML,前者主要定义了处理XML文件所需的功能,后者定义了处理HTML文件所需功能。

DOM4J(DOM For Java) 具有性能优异、功能强大和极端易用使用的特点,它基于DOM标准,采用了㎎ava的集合框架并完全支持DOM ,SAX和JAXP,并最终成为优秀的基于Java平台的XML API框架。DOM4J主要的接口都在org.DOM4J包中,其中读取和解析XML文档主要依赖于org.DOM4J.io包,这也是采用DOM4J建立PIM模型时主要使用的包。

同样衍生于DOM的JDOM在国内比较流行的,是使用Java平台的XML另一解析技术,与DOM4J相比,两者各有特点,但JDOM但丰富及强大的API也是它比JDOM更为灵活的原因。

在采用各种XML解析工具建立PIM模型的实际操作中,面向对象、衍生于DOM的DOM4J 和JDOM 内存占用都比较少。对于大型的文件,面向事件SAX处理性能较差,而JDOM 和 DOM 在测试较大的XML文档时内存溢出[7]。在各项官方及非官方的针对XML文件解析能力的综合测试中,DOM4J也几乎总是拔得头筹,因此DOM4J得到越来越广泛的使用。例如,著名的三大框架之一的Hibernate用DOM4J来读取XML配置文件,Sun公司的JAXM都在┦褂锚狣OM4J。

3 采用增量式开发方法进行建模实验

[BT3]3.1 增量式开发的概念

在进行软件设计时,由于程序开发人员和用户在专业知识上的差距,用户很难一开始就清楚完整地提供系统的需求,开发人员也很难一下子完整无误地理解和定义用户所提出的需求,也就是说用户和程序员之间存在一道语义鸿沟[13]。

而在增量式开发方法中,程序员在软件开发的各个阶段并不需要交付一个完整软件版本,而是根据此阶段的用户需求来生产满足客户需求的一个子集的可运行模型。整个产品被划分为成若干个组件后,开发人员便可以逐个组件地设计及交付阶段性产品,这样做的好处是软件开发可以较好地适应变化,某种程度上也降低了软件的开发风险。[HJ1][HJ]

[BT(3+1]3.2 [ZK(]在Web应用PIM模型结构上应用增量式开发的具体实现[ZK)][BT)]

[BT4+*4]3.2.1 采用面向组件方法划分Web应用

在Web应用的开发中,传统的MVC设计模式将应用程序被分成三个核心部件:模型、视图、控制器,它们各自处理自己的任务。但是,在Web应用的PIM模型建立中,不可能单纯按照MVC三层模型的框架来建立PIM模型。MVC的分层方式过于抽象,还不能够完善表述Web应用的功能需求。这样,就需要在MVC的基础上进一步对Web应用进行细化。

[JP2]这样,视图层、模型层的静态结构与控制层的静态结构相映射,从而根据用户需求产生对应的响应。这种映射的结构及视图层、模型层、控制层自身的静态与动态结构即构成Web应用PIM模型的基础组件,如图1所示。[BT4]3.2.2 采用DOM4J建立PIM模型的基本框架

DOM4J针对Java提供了方便API接口,为了测试DOM4J与Java结合的性能,接下来采用的PIM模型生成平台采用JSP页面编写,利用DOM4J实现XML格式模型文件的建立及解析。

利用DOM4J,可以按照Web应用的具体功能需求建立一套完整的PIM模型建立规则。是特定的Web应用(信息发布系统)的控制层中三个基本静态结构有:栏目、文章及用户以组件形式建立PIM对应代码的过程。其中,相关组件属性值的初始化过程需要配合测试平台的用户交互界面(相关JSP页面),获取控制层静态结构对应的功能需求来完成,相应PIM生成代码如图2所示(已省略部分结构类似的代码片段)。

由于XML结构的无限扩展特性,使得无论多复杂的Web应用都可以被分级细化并存入PIM模型中。而具体的细化规则及建模规则均可以在类似与上文的Java代码中提现,不同的细化规则及建模规则对应了不同Web应用的具体功能需求。控制层的静态结构细化过程已经由上文的示例给出,视图层及模型层的细化类似。如图3为静态结构对应的XML格式PIM模型(图3中的白色高亮代码部分为图5中对应部分,下文会具体叙述)。

3.2.3 采用增量式开发方法管理PIM模型

[JP2]基于这里已经在PIM的初始化中就采用了组件的概念,使用面向组件的增量式开发方法将更有利于Web应用的完善。每生成一个增量,也就是一次迭代开发,这就要求测试平台能够随时复现之前增量的建立过程,也就是用户需求的功能子集的提出过程,以便于对需求进行更改。特定的Web应用增量开发生成相应PIM生成代码如图4所示(已省略部分结构类似的代码片段)。

采用这部分代码生成PIM模型如图5所示,图中的白色高亮代码与上文图3相对应。实际上这部分代码即图4中Java代码上半部分中采用的DOM4J集成的SAXReader方法读取的图3中代码。而新增的部分则是采用DOM4J集成的XPath技术找到该特定Web应用的相关静态结构节点(Column,Article,User),再插入与动态结构功能需求相对应的PIM代码片段(即图5中每个节点的action部分)。

基于类似的方法,可以将Web应用的MVC各层依照Web应用的功能需求,分为各个功能组件进行细化,接下来就细化的功能组件编写相应的PIM模型生成及解析代码,最后按照增量式开发逐步生成Web应用最终的PIM模型。

4 结 语

在此探讨了采用DOM4J建立PIM模型的一种方法,并且建立了一个测试平台,采用增量式开发方法进行了实验。鉴于不同Web应用的功能需求及系统的复杂程度不一,按组件细化的过程并没有现成规律可循,需要根据具体需求进行相应规则的建立。另一方面,就Web应用的最终实现而言,PIM模型的建立还应该为MDA开发的下一阶段模型即平台相关模型PSM预留[LL]相关的接口,以更好地实现其复用及扩展。

参 考 文 献

[1]沈剑波,潘金贵.基于角色的面向对象建模[J].计算机应用与软件,2002(6):19[CD*2]23.

[2]David.Model Driven Architecture[CD*2]Foundations and Applications[A].Second European Conference,ECMDA[CD*2]FA 2006[C].Bilbao,Spain,2006.

[3]侯金奎,万建成,张玉艳.一种支持MDA的PIM建模方法[J].计算机工程,2007(8):71[CD*2]73.

[4]刘华,姜宏.信息系统中PIM功能元模型的构建研究[J].计算机技术与发展,2007(5):213[CD*2]216.

[5]李伟.基于XML+DOM4J的数据库集成技术研究[J].电脑知识与技术(学术交流),2007(5):1 192,1 203.

[6]陈军,山岚,赵恒永.用Java & XML构建网络应用系统的方法[J].计算机工程,2008(3):181[CD*2]183.

[7]杨珉池.XML处理工具性能比较[J].电脑知识与技术(学术交流),2006(11):117[CD*2]119.

[8]蔚晓娟,冉静,李爱华,等.基于DOM的XML解析与应用[J].计算机技术与发展,2007(4):86[CD*2]88,139.[HJ*2]

[9]孙霞,程宏斌.基于Java的DOM解析技术[J].计算机时代,2004(7):71[CD*2]72.

[10]王军,黄传华.DOM4J在数据交换中的应用[J].计算机与现代化,2007(5):98[CD*2]110.

[11]Dennis M,Sosnoaki.Java中的XML:文档模型(第一部分:性能)[EB/OL].http://www[CD*2]128.ibm.com/developerrvorks/cn/xml/x[CD*2]injava,2005.

[12]王宇,程国忠,张世禄.基于DOM4J实现数据库表单转换成XML文档[J].福建电脑,2007(1):129[CD*2]130.

[13]Herrejon [CD*2],Batory D.Improving Incremental Development in Aspectj by Bounding Quantification[A].SPLAT[C].2005.

作者简介 谭 凯 男,1984年出生,湖南娄底人,硕士研究生。研究方向为Web应用与基础。

尹金玉 女,1942年出生,山东人,教授,硕士。主要研究领域为现代电气控制技术、自动控制、可编程控制器、楼宇自动化。

李亚芬 女,1963年出生,北京人,高级工程师,硕士。主要研究领域为Web应用与基础、数据库、计算机控制系统。