原文地址:
web应用开发方法研究
鹿旭东 万建成
山东大学计算机科学与技术学院 济南 250061
【摘要】目前,web系统开发缺乏严格和系统的方法,大多数应用开发和管理实践在很大程度上依赖于开发人员个人的知识和经验,造成的后果是所开发的web系统大多是低质量的产品。而传统的软件工程方法不能适应web设计的要求,为此人们研究提出了众多的web开发方法。这些研究旨在提供全面支持web应用开发生命周期的模型和方法,但由于这些方法本身存在的局限性及其它方面的原因,还没有得到广泛的应用。论文首先讨论了成熟的web开发方法应该具有什么样的特性和功能,然后分析了现有web开发方法各自的特点,最后总结了这些方法所存在的问题和今后的研究重点。
【关键词】web开发方法;web工程;web应用
1 引言
随着intemet和intranet、extranet的快速增长,web已经对商业、工业、银行、财政、教育、政府、娱乐及我们的工作和生活产生了深远的影响,许多传统的信息和数据库系统正在被移植到互联网上。
但web系统开发缺乏严格和系统的方法,很少有人注意开发方法、度量和评估技术、系统质量和项目管理,当前的大多数web应用开发和管理实践在很大程度上依赖于开发人员个人的知识和经验,造成的后果是所开发的web系统大多是低质量的产品。而随着基于web的系统变得越来越复杂和重要,一个项目的失败将可能导致很多问题,当这种情况发生时,人们对web和internet的信心可能会无法挽救地产生动摇,从而引起web危机。
澳大利亚的yogeshdeshpande和stevehansen最早(1998年)提出了web工程的概念,他们认为web工程是用系统的、严密的、可以测量的方法来开发、实施和维护基于web的应用或基于web的软件的工程应用。
基于web的应用系统开发方法倍受关注,主要体现在web应用系统的开发和传统软件开发的显著区别上,传统软件工程方法和技术应用到基于web的系统开发中,显得力不从心问。在开发复杂的基于web的系统中,为了避免web危机的发生,达到更大的成功,迫切需要一个严格的步骤和新方法、新工具来开发、发布和评估基于web的系统。
由于在web应用的开始阶段,只是将web作为信息中介和信息发布的平台(简单的网站),因此,所提供的工具只是集中于网页的创建和编辑,如微软的frontpage等。它们都限于被动的超文本表示、网页布局和部分的导航模型,缺乏系统的、结构化的方法以及抽象、重用的支持。随着web应用的规模和复杂度日益增加,web已经成为各种应用的主要平台。和传统的web站点相比,web应用程序不但支持导航和浏览,而且操作还会影响内容和导航状态。这使得web应用的开发变得更加复杂。目前web应用的工程化方法已经成为web应用开发研究的热点,这些研究旨在提供能全面支持web应用开发生命周期的模型和方法。
成熟的web开发方法应该具有什么样的特性和功能?现有的方法是否已经具备这些特性?还有哪些差距?本文将对这些问题展开讨论。
2 开发方法应具备的特性
web开发方法的目标是系统化web应用的开发全过程,提高开发效率和开发质量。为达到此目标,我们认为,一个成熟的web开发方法应该具备以下的主要特征或功能:
易于掌握:开发方法的一个目的是为了减轻开发人员的工作量,所以应该具有易于掌握的特点,但这不应以牺牲表达能力为代价,即web开发方法应该能对web程序的各个方面进行全面详细的描述。为平衡表达能力和掌握难度,可采用的方法是封装细节,对那些具有共性的细节进行抽象,以模式的方式提供选择,这样开发方法为开发者提供的是高层次的设计概念和方法,掩藏了细节,在不牺牲表达能力的基础上降低了掌握难度,但必要时设计者仍然可以对细节进行设计以满足特殊的情况。另外,设计方法应充分考虑用户已有的设计经验和技术。
对复杂系统建模的能力:web应用的范围涵盖从简单的静态站点到动态交互的web应用。近年来,web应用发展迅速,特别地,当大量传统信息和数据库系统被移植到web环境下,一种新型的web应用程序出现了,这些程序利用web平台支持和执行商业过程以及工作流,例如出租和预订服务,虚拟拍卖、在线保险等闯。成熟的web开发方法应该能适用这种需求,这就需要有对商业过程、工作流进行建模的能力,并和web系统设计的其他部分有机结合。
表现层建模的能力:传统的设计方法一般不很重视界面设计,而和传统的软件系统相比,web系统表现设计有自己的特点:(1)系统的很多高级功能体现在表现层,这需要提高界面的设计质量;(2)界面中包含着大量的多媒体信息;(3)web设计方法一般不仅给设计人员使用,而且需要给美工、编辑等使用,他们更关心系统的表现设计。所以web开发方法需要能针对这些特点对表现层建模。
系统定制的支持:web系统成功与否主要依赖于用户的满意程度。成功的web系统应该具有丰富的功能,易于使用的界面和定义良好的导航结构。而为了达到更高的用户满意度,一个主要的技术是通过个性化定制把合适的内容在合适的时间分发给合适的人。开发方法需要提供系统定制能力,这主要通过对用户的定义和描述来完成,其中包括对用户分组以及用户之间联系的处理。
模型集成和连通的能力:能够在较高的抽象层次上表达系统和资源是怎样集成的。一方面,在很多组织中,新开发的web系统需要和以前存在的业务系统密切关联。这些业务系统可能在不同的平台和实现语言下开发。开发方法应该能支持和这些遗产系统无缝连接。另一方面,组件的集成大部分依赖于接口描述,开发方法应提供精确的和无二义的对组件接口建模和文档化的能力;最后,web系统需要和大量的资源和信息服务等相联接,这些可能不局限于组织内部,开发方法应提供表达和存取机制。
自动生成能力:能否提供自动生成能力以及能力的大小是web开发方法成熟度的一个重要衡量标准,理想的开发方法应能提供从模型描述到运行、配置代码的自动生成。
工具和文档支持:理想的工具应能支持在用户参与下,完成从需求确定到实现维护的整个开发过程。丰富的文档支持是设计者能否掌握开发方法的重要方面。可以说,工具和文档的支持能力是开发方法能否得到广泛应用的关键。
3 web开发方法研究现状
认识到web开发的重要性,近年来,一些系统化开发web应用的方法应运而生,这些方法来源于不同领域的研究,来源于数据库研究领域的有rmm、araneus等,来源于多媒体研究领域的有hdm、webml等,来源于面向对象研究领域的有oohdm、uwe、00-h等,图1表示的是几种典型web应用开发方法的演变过程。
web应用开发方法的共同点在于一般将web系统模型分为领域模型、导航模型和展示模型,经过概念建模、逻辑建模、物理建模和实现四个过程完成web系统开发p)。其中领域、导航、展示模型分别描述系统的一个不同侧面,可以看成是web模型的不同视图。
领域模型描述web应用中领域对象及其关系,是导航模型的基础;展示模型描述web页面展示形式,是导航对象和导航行为的最终体现;而导航模型是web模型区别于传统系统模型的重要部分,描述了web应用的导航特性,并起着衔接领域模型和展示模型的作用。
本文第二部分列出了web开发方法应该具备的主要特征和功能,下面我们将从这几个方面考察几个典型的web开发方法已经具备了哪些特性以及还存在哪些差距。
(1)hdm1ite
hdm(hypermedia design method)是众多web设计方法的先驱者,hdm lite是hdm的进一步发展。特别应用于web信息系统。主要是定义结构、导航和表现。分别用hyperbase、access、表现方案形式化。
hyperbase方案是一个扩展的e-r实体关系图。由实体、部件(实体子结构)、有类型的属性、实体和部件间的语义链接、数级约束等构成。access方案描述hyperbase方案的进入方式。包括traversals(描述从源到目标的直接导航)、collections(描述集合,可以嵌套定义,共分为8种子类型),另外还定义了导航模式(1ndex,guidedtour,indexedguidedtour,showall)。
hdmlite的表现模型是一系列样式单的集合,使用类sgml的语法来表示。多个表现方案可以被映射到一个结构导航方案但没有提供设计结构。表现方案的基本单元是pase。一个样式单表针对一种特殊类型的页面,从逻辑上看可分为两层:布局层,每个页面建模为一个grid,grid中的每个单元包含表示元素;元素层:有两种类型的元素,内置的和用户定义的,所谓内置元素是前面所涉及概念的表示抽象,用户定义的则为图形设计者设计的banners,applets等。
hdmlite的主要特点是为了自动生成的目的对hdm做了适当扩充,完成从概念方案到逻辑表示乃至到物理表示的模型转换。这些转换被autoweb系统工具支持,自动产生程序数据方案、导航方案和表现方案。这些逻辑方案进一步被用来自动产生页面。但此自动生成主要是针对静态只读信息页面。
(2)webml
webml(webmodelinglanguage)是w313(web-basedintelligentlnformationlnfrastructure)项目所定义的web模型描述语言,是hdmlite的进一步演化,是在概念层次上描述复杂web应用的符号体系,也被称为“针对web的uml"。它提供了图形化高度抽象的web应用描述方法,并包括完整的设计过程和支撑工具。另外,webml还支持xml语法,以便于利用代码生成工具来自动产生代码。
在webml开发设计过程中,对web应用的描述分为以下模型:结构模型,通过实体和实体之间的关系来描述内容层,为描述导出和计算信息,结构模型还定义了一个简单的查询语言侈媒体模型,描述web应用的多媒体特性,又分为组成模型和导航模型两个子模型,组成模型描述页面是由哪些数据单元组成的,导航模型描述页面和组织单元是怎样导航的;展示模型,使用抽象的xml语言来定义页面的布局和图形表现;定制模型,主要是对用户和用户组进行建模,对应web应用的定制化需求。
webml的导航模型是在组成模型的基础上定义链接,体现导航的链接有上下文无关和上下文相关两种类型。所谓上下文相关指的是链接的单元存在语义上的关系。在实际的应用中,导航链接经常以导航链的形式出现,webml还分析总结了多步索引、筛选索引、索引向导、环等web导航模式来体现这些特征。
此外,后期的webml版本可以采用扩展数据和多媒体模型的方式来定义轻型的web工作流。
(3)rmm
rmm(relationshipmanagementmethodology)是一种用于设计、构建和维护intranet及intemetweb系统的方法。它的根本目标是降低动态数据库驱动的web站点的维护成本。它提倡系统进行形象化表示,以便展开设计上的讨论。它是一个迭代式过程,包括web页可视元素的分解,及这些元素与数据库实体的关联关系。rmm是一种用于动态web站点创建和维护的方案。
rmm受er模型和hdm的影响。模型分为三层:内容层、多媒体层和表示层。在rmm中内容层是单独建模的,而表示层是结合多媒体层定义的。提出了rmdm(relationshipman—agementdatamodel)模型进行形式定义。
在rmm中,领域模型由实体构成,每个实体有多个属性,而m—slice设计元素是对实体属性的分组。在rmdm中,导航是通过6种进入结构支持的,分为实体内和实体向导航两种。
rmm方法设计过程主要分为e-r设计:领域模型设计,采用e-r图;slice设计:web应用设计中特有的一步,决定信息怎样呈现给用户,以及怎样进入,主要是对实体属性进行分组;导航设计:设计导航路径。利用进入结构和结构组来组织。一般导航到实体的主要"slice”,但也可以由设计者指定;转换规则设计:利用一系列转换规则把rmdm图中的元素转换为目标平台上的对象,已经有一些工具从rmdm转换为html;用户界面设计:界面布局设计;运行行为设计:链接途径、历史、导航机制实现;构建和测试:传统的软件工程步骤,特别测试所有导航路径。
(4)araneus(adm)
araneus是从数据库研究领域发展而来的。araneus中的内容层采用er模型对领域对象进行建模,多媒体层把多媒体的设计分成概念设计和逻辑设计两个阶段,分别用navigationconceptualmodel(ncm,从rmm方法中发展而来)和araneusdatamodel(adm)形式化。adm允许基于页面类型和链接描述站点,而且一旦adm方案建立后,一种特殊的语言penelope就可以从数据库结构映射到超文本结构,并自动生成html页面。
araneus中导航设计主要在概念设计阶段完成,ncm中定义了三种节点类型和两种链接类型来描述web导航,描述包括哪些领域对象将作为导航对象出现在导航中,导航对象之间的导航路径以及如何从源节点进入感兴趣信息。ncm模型完成后就可以建立adm模型,adm是用来建立页面抽象描述的。
adm的基础特性是page-scheme符号。page-scheme是页面抽象描述,实例是一个具有标识(url)和一组属性的页面。属性有简单或复杂类型,如文本、图片、联接、列表等,提供两种结构:异构联合(提供灵活性)和表单(主要针对动态页面)。
araneus方法更强调内容层和多媒体层的设计。着重于数据库中的数据怎样在页面中呈现,而且以自动生成页面为目标。明确区分数据库设计和多媒体设计,明确区分逻辑设计和概念设计是araneus方法的一个特色。
为解决商业过程建模问题,araneus2提供了一个机制使得构成商业过程的活动可以组织到一起。
(5)oohdm
oohdm(obiect-orientedhypermediadesignmethod)是rossi等人在1998年提出的web应用程序开发方法。oohdm的形式模型基础前期是omt,后期是uml,但都作了自己的扩充。如属性可以有多重类型等。
oohdm把导航设计作为重要的一个阶段分离出来并建立相应的模型。导航模型又分为导航类模型(navigationalclassmodel)和导航上下文模型(navigationalcontextmodel)。导航类模型是领域模型在导航设计中映射的视图,是通过面向对象定义语言对领域对象属性进行组合或剪切,以及进行属性和关系筛选而建立的,模型元素为节点和链接,描述了导航对象及导航对象之间的导航关系。导航上下文模型中利用六种上下文元素描述导航空间结构,上下文是可以嵌套定义的。导航上下文模型中还有进入结构(向导、简单索引、动态索引等)来描述进入上下文和导航对象的结构。
oohdm主要采用类图来描述静态页面的导航结构,至于导航的复杂行为语义,可以通过使用一个面向对象的状态转移模型navigationcharts来描述。
oohdm用abstractdataview(adv)来描述导航对象和其他界面对象如菜单条、按钮等的结构布局。界面复杂行为方面则采用advcharts来描述。
oohdm后期的发展允许在原有模型上定义商业过程,即把商业过程作为基本的设计元素,而不再把商业过程看作是概念和导航设计的副产品。
oohdm-web是一个采用oohdm描述的设计工具,但主要针对的是只读的web站点。软件自动生成由html代码和oohdm-web函数库调用相结合的页面,所以它产生的页面必须在oohdm-web环境下运行。
(6)ume
ume(nora koch et a1,1999)基于oohdm但采用uml作为统一的模型技术。如有需要,可以采用uml的扩展机制stereotypcs和constraints。
ume导航设计的基础是领域模型,输出是导航模型。导航模型的建立被分为两个过程,首先建立导航类模型然后是导航结构模型。导航类模型是在领域模型上定义一个视图,用来表示在web应用程序中哪些对象能够被访问以及对象之间的直接导航关系,一般用类图来表示,模型元素是导航类和直接导航关联,是从领域模型中的类以及关联映射过来的。导航结构模型定义导航对象是怎样被访问的。它基于导航类模型,加入了一些模型元素来描述导航结构,这些元素包括菜单,索引,向导,查询,外部节点和导航上下文。
ume将商业过程建立为单独的模型,分析阶段采用usecase图,进一步的细节描述采用活动图,并定义和已经存在的领域,导航和/或表现模型之间的关系。由于ume采用uml作为统一的模型符号,模型之间的映射关系相对明确,但在ume中主要从设计方法角度提出了映射原则,缺乏模型映射关系描述机制,还无法做到真正的全自动生成。ume和其他方法的区别在于和其他模型引入自己的符号不同,它采用的是标准的uml和扩展。这样可以利用现有的工具,模型的集成和连通能力得到了加强。
(7)00-h
oo-h(objectoriented-hypermedia)是一种面向对象的用来构建复杂web应用程序的工程方法,所采用的形式模型是扩展的uml。基于xml,和其他方法的主要区别在于能应对复杂功能需求。主要着重web界面和已有业务模型间的集成。提供了调用服务的机制。
在领域模型基础上,oo-h增加了导航视图和展示视图,用来捕捉web应用的静态和动态特性。其中导航模型是通过为每一类用户建立不同的nad(navigationaccessdiagram)来实现的。每个nad对应着相关用户导航需求的信息、服务和导航路径。当nad构造后就可以根据映射规则生成默认的用户界面。
nad的构建基于四种类型的模型元素:导航类、导航目标、导航链接和汇集。导航类是导航对象的描述,根据用户的存取权限和导航需求对领域类属性和方法加以扩展而得到;导航目标是一个模型元素的集合,用来描述用户的某项导航需求,在导航目标中一般要定义人口点;导航链接定义了导航关系;汇集是在导航类或导航目标上定义的层次结构。
在oo-h中,设计过程是在领域模型基础上建立导航类视图,进一步用导航目标汇集组织导航空间,而不同类型的导航链接则定义了导航关系,这些建模元素的采用可以定义复杂的静态页面导航结构,而对动态页面和导航的行为则没有描述。在导航模式的支持方面,oo-h提供了丰富的模式分类,其中导航模式分为静态模式和动态模式,动态模式中又分为流控制模式和跳转模式等,可以采用不同粒度的模式来简化设计和加强重用。在00-h方法中还定义了导航视图和展示视图之间的映射规则,可以最终产生用户界面代码,但生成的页面是简单的静态页面,实用程度仍然不够。
至于商业过程的处理oo-h采用和ume类似的思想:由于采用了面向对象的建模思想,也体现出一定的模型集成能力。
(8)其它方法
web开发方法还有很多,限于篇幅我们不再详细比较,下面介绍一些它们的主要特色。
conallencq对uml使用标准的扩展机制进行了扩展。进行扩展是为了让web特有的构件能与系统模型的其余部分集成,向web应用程序的设计人员、实施人员以及构架设计师展示适当的抽象和明细级别。但conallen主要提供建模符号,缺乏设计过程的描述。
w2000是一个web应用程序的框架,基于已经存在的两个技术:uml——标准的面向对象系统的建模语言以及hdm。uml和hdm的集成使模型的集成成为可能,但w2000在表现层设计方面比较缺乏。
wsdm是以用户为中心的方法,着眼于系统的定制。它试图解决信息过时,链接丢失以及允许不同用户浏览不同信息等可用性问题。其主要思想是先分组用户,根据不同用户特征建立"观察”,然后才开始概念设计。
oows是一个模型驱动的web应用建立方法。强调web应用从需求获取到模型建立,经过模型转换到最终实现的开发全过程。ontowebbei091是一个基于本体的方法,着眼于集成异构数据源建立数据丰富的web门户。整个设计采用基于xml的元方案表示,使用了rdf和daml oil。
4 结论
以上介绍了几种典型的web开发方法,可以看到虽然它们各具特点,但都还不能完全满足我们所提出的web开发方法应具有的特性(具体比较见表1)。
这也使得这些方法缺乏工程应用,经统计”只有大约3%的web开发工程运用了研究所提出的方法,甚至只有5%左右的工程人员知道这些方法的存在。造成这种状况的原因是多方面的,一方面这些方法的提出是在一些学术杂志或会议上,工程人员缺乏对它们的关注,另一方面工程人员的技术惯性也阻碍了他们采用新的技术。但更主要的还是这些web开发方法本身存在着不完备性和缺陷造成的。具体来说,现有的web开发方法主要存在以下问题:
方法比较复杂,难于掌握。web开发方法研究人员基于各自的研究领域所提出的方法一般自成体系,不熟悉其研究领域的人员在掌握上存在一定的难度。近期,更多的方法基于面向对象理论,采用uml作为描述手段,而这也是工程实现人员熟悉的技术,掌握难度有所降低,但大多数方法还是存在滥用uml扩展机制的倾向,设计粒度太细,仍然比较复杂。
不能对复杂功能建模。大多数开发方法针对的主要是只读站点,静态视图,缺乏对复杂功能特别是动态web应用及商业过程的支持。主要原因是对那些从多媒体背景得到的方法主要着眼于信息的组织,表示和导航。功能特别是核心商业过程往往被忽略;对那些从面向对象建模发展起来的方法,对web系统特殊的功能缺少合适的描述,通常把web系统模型看作是和传统软件系统一样的,或者在实现层次上定义一些扩展。
界面设计大多比较简略。虽然web开发方法大多都提供表现层建模,但大多都比较简略,没有表现层设计细节。这里主要的原因是没有在概念和逻辑建模概念中捕捉表现层凹,而只是就表现层界面元素进行抽象设计,而且界面元素之间的结构和操作关系过于简单,无法满足用户的复杂细致的需求。
模式支持和利用不够。web模式是在总结web应用基础上提炼出来的可重复使用的设计模式。支持模式的开发方法可以把模式作为建模元素,简化设计、加强重用,给代码生成提供强有力的支持,而且也为系统的定制提供更好的支持。web模式有导航层模式和表现层模式等。现有web设计方法虽然也总结了一些web模式,但仍显不够,更主要的是没有把总结出的模式有机地结合到开发过程中。
模型之间缺少清楚和灵活的映射。大多数方法是一个分层的方法,把设计分为一些独立的过程:首先进行领域映射,体现web应用的结构、内容和工作流等;然后是关系分析,包括领域关系和导航关系;最后是表现层设计。设计结果是分别建立各层模型。现有方法普遍缺少层间的连接,模型之间缺少清楚和灵活的映射。这不但使得web应用的自动生成无法真正达到,而且还影响了模型集成和连通的能力。
缺少工具支持。虽然有的开发方法提供了一些集成或辅助工具,但由于目前的方法主要是针对设计和实现阶段,其他开发过程中重要的阶段象需求工程和维护等都还没有考虑,而且也缺少完善的开发过程支持,工具还不能给设计人员全面的支持,特别是方法普遍缺少文档和用户说明,严重影响了web开发方法的实用程度。
总之,现有的方法更多的是从规范化设计的角度,而没有从工程化应用的角度出发。认识到这一点,下一步我们的工作主要是围绕开发方法的工程化方面展开。
本博客为学习交流用,凡未注明引用的均为本人作品,转载请注明出处,如有凯发k8网页登录的版权问题请及时通知。由于博客时间仓促,错误之处敬请谅解,有任何意见可给我留言,愿共同学习进步。