(计算机系统结构专业论文)面向表现的web工程的方法与工具.pdf_第1页
(计算机系统结构专业论文)面向表现的web工程的方法与工具.pdf_第2页
(计算机系统结构专业论文)面向表现的web工程的方法与工具.pdf_第3页
(计算机系统结构专业论文)面向表现的web工程的方法与工具.pdf_第4页
(计算机系统结构专业论文)面向表现的web工程的方法与工具.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(计算机系统结构专业论文)面向表现的web工程的方法与工具.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向表现的w e b 工程的方法与工具 摘要 f w e b 工程( w e be n g i n e e r i n g ) 是近年来随着基于w e b 的信息系 统的复杂性日益增加而出现的探索如何在w e b 应用系统开发中实 现工程化的一项新兴研究领域。庠文所提出的面向表现的w e b 工 程p r e s e n t a t i o n o r i e n t e dw e be n g i n e e r i n g ,简称p o w e r l 是 w e b 工程的一个新的研究方法,其目的是解决w e b 应用开发中数据 表现与业务逻辑代码相互混合所带来的诸多问题,从而降低代码 错误率、提高系统的可维护性、缩短开发周期并降低项目人力资 源成本。 本文首先回顾了w e b 工程产生的历史并归纳了当前该领域的主 要研究方向并分析了其不足之处。然后在此基础上,结合对目前 w e b 应用开发中存在的问题的分析,本文提出了面向表现的w e b 工程( p o w e r ) 的概念,详尽叙述了p o w e r 在w e b 应用系统开发中 的实施方法并以实例做进一步说明。f p o w e r 的实现以c o c o o n 为平 台,以x m l x s l t 为核心技术,本文在将它与其他代码分离的解决 方案( 如j s p s e r v e l e t 等) 进行比较的基础上分析了其技术方案 的优越性。) 本文还分析了p o w e r 所需要的辅助开发环境所必须具备的特性 与功能,并在此框架下实现了一套简单的辅助开发工具,即m o t h 系统。本文描述了m o t h 系统的设计、构成以及实现方法,对其关 键技术如代码自动生成等做了着重阐释。通过将m o t h 系统与同类 产品进行多角度的比较,总结了m o t h 系统在多个方面所具有的优 势。最后,本文探讨了下一步研究的方向,提出在商业项目中推 广使用、开发更强大的辅助工具以及完善相关指导理论是p o w e r 将来发展的重点。 关键宇:w e b 工程,软件工程,w e b 应用,c a s e 工具,x m l 上海变通大学硕士学位论文 p r e s e n t a t i o n o r i e n t e dw e be n g i n e e r i n g p r i n c i p l e sa n dc a s et o o l s a b s t r a c t w i m i nas h o r tp e r i o d , t h ei n t e m e ta n dw b r i dw i d ew e bh a v e g r o w nr a p i d l y i nt h e i rs c o p ea n de m e n to fu s ew h i l et h ec o m p l e x 时o f b u i l d i n gaw 曲a p p l i c a t i o n i n c r e a s e ds i g n i f i c a n t l y w e be n g i n e e r i n g w a se s t a b l i s h e da san e wd i s c i p l i n et oh a n d l et h ei s s u e si nw e b a p p l i c a t i o nd e v e l o p m e n t p r o p o s e d i nt h i s p a p e r , p r e s e n t a t i o n - o r i e n t e dw e be n g i n e e r i n g ( p o w e r ) i san e wb r a n c ho fw e b e n g i n e e r i n g p o w e r c a n h e l pt os e p a r a t et h ep r e s e n t a t i o na n dl o g i c t or e a c hh i 曲e r r e l i a b i l i t ya n dm a i n t a l n a b i l i t ya l o n gw i t hl o w e rc o s ti n d e v e l o p m e n t t i m ea n dh u m a n - r e s o u r c e t oi n t r o d u c ep o w e r , t h eh i s t o r ya n dm a j o rr e s e a r c ha p p r o a c h e s o f w 曲e n g i n e e r i n g a r er e v i e w e df i r s ti nt h i sp a p e r t h e nad i a g n o s i s o fw 曲a p p l i c a t i o nd e v e l o p m e n tl c a d st ot h ed e b u to fp o w e r t h e m e t h o da n dp r i n c i r i l eo fp o 、肫ra r ee l a b o r a t e da n dd e m o n s t r a t e d s u b s e q u e n t l y i m p l e m e n t a t i o ns o l u t i o n o fp o w e r , w h i c ha d o p t s ) ( 地t e c h n o l o g i e s a n dc o c o o np l a t f o r m i sa l s od e s c r i b e da n d c o m p a r e dw i t ho t h e rc o d e s e p a r a t i o ns o l u t i o n ss u c ha si s p s e r v e l e t a n d m t i l i sp a p e ra n a l y z et h er e q u i r e m e n t sf o rt h ed e v e l o p m e n te n v i r o n m e n t 幻s u p p o r tp o 瓣a n dp r o v i d e sas e to fc a s et o o l s m o t h , c o m p l i a n tt ot h e s er e q u i r e m e n t s t h ed e s i g n c o m p o s i n ga n dk e y t e c h n o l o g i e so fm o t hh a v eb e e np r e s e n t e d , s u c ha sc o d e g e n e r a t i o n s t r a t e g y t h e n , t h ec o m p a r i s o nb e t w e e nm o t ha n do t h e ro p p o n e n t p r o d u c t si n d i c a r e st h a tm o 也i sm o r ec o m d 酏瞰ti np r a c t i c e f i n a l l y , t h i sp a p e rp o i n to u tt h a tf u 劬e rr e s e a r c h e so np o w e rs h o u i df o c u s o nd e p l o y m e n ti nc o m m e r c i a l p r o j e c t a sw e l la s b u i l d i n g b o 廿l a d v a n c e dt h e o r ya n dc a s et o o l s k e yw o r d s :w e b e n g i n e e r i n g , s o f t w a r ee n g i n e e r i n g ,w e b a p p l i c a t i o n , c a s et o o l s ,x m l 上海交通大学硕士学位论文 绪论 随着互联网经济在过去几年中的高速增长,各种w e b 网站的开发成为一 个常见的软件开发类型但是当网站规模越来越大,开发团队人数变得越来 越多,人员构成越来越复杂,参加这些w e b 网站开发的人员开始发现完成项 目的难度和所需要投入的精力成倍增加,最终失败或者半失败的项目比比皆 是。 一个典型的失败的w e b 网站项目往往是以开发人员无法准确把握客户的 需求开始的。在项目初期,系统工程师无法从客户那里得到完整而且具有可 操作性的需求说明书,大多数客户往往自己也只有一个模糊的概念,只能提 供一份长度仅数页的描述性文件,文件中仅简单罗列了类似于大纲的一些条 目而没有细节性的描述。客户希望这些大纲的内部细节由只是精通技术而不 熟悉客户所从事的业务的开发人员来补充。同时,客户也无法明确的表达对 需要开发的w e b 网站的外观的要求。这时,无论是客户还是开发人员此时都 无心继续完善项目的设计:客户急于看到一个实际的原型系统以确信开发人 员能够理解其需求,开发人员在别无选择的情况下也只能希望能够通过原型 系统与客户进行交流。这时,项目的需求说明书已如同虚设,项目的设计阶 段被匆匆掠过,项目的开发阶段草率开始。 项目开发的前期是一段相对平静的时期。这一时期持续时间较长,因为 较之传统软件系统的原型,w e b 网站的原型更接近一个最终成品的测试版而 不是以往概念上的简单演示版本。在这段时期内客户不再感受到开发人员 要求其明确需求的压力,开发人员也可以将主要精力放在开发原型系统上。 由于没有完整的前期文档,加之自项目之初起即无法与客户就各业务细节的 确定进行及时有效的沟通,开发人员在开发原型系统时经常以自身的判断和 决定作为依据这种闭门造车的开发进一步为项目后期的各类问题的集中凸 现埋下了根源。 当开发人员完成了一个初步版本的网站并提交客户后,项目开发便进入 一个无休止的“修改一提交一再修改”的循环中。由于投有在设计阶段充分 沟通明确目标,几乎在所有的项目中当客户看到初步版本后都会提出大量的 修改要求。同时,客户还会把自己在开发前期这段时间中想到的一些新想法 添加到对开发人员的要求中。这种新增加的需求对开发人员的负面作用是破 坏性的。由于缺乏具有法律效力的需求说明书和系统设计文档,开发人员不 得不接受客户提出的大部分新需求,否则客户完全可能拒绝支付尚未支付的 大部分项目开发费用。而为了完成这些新需求由于w e b 网站的开发技术本 身的特点,开发人员可能需要数倍的工作量来完成和传统软件开发程度相当 的改动此时开发人员不得不在时间非常紧迫的情况下重写大量源码以及页 面,甚至需要重构整个系统。当客户再次提出修改要求和新需求,开发人员 先前所作的修改又有可能完全失去意义,被迫再次阅读并更改大量已经定型 的程序和页面开发人员的精力将被迅速耗尽,一次次被客户否定而导致的 士气低落使得此后客户提出的任何小的意见咀及对一些非常小的b u g 的修改 一 上毒交通大学硕士学位论文 要求都会引发开发人员的极度反感此时,开发团队中弥漫着一种消极、厌 倦、仇视客户和后悔的情绪,工作效率降低到最低项目的失败这时已经不 可避免经过若干次的大小惨改,系统中存在大量的错误,但开发人员已经 不再有精力进行完备的测试,也没有精力整理一份详尽的系统维护说明和使 用手册,客户也无心进行项目的验收和移交。当客户和开发人员都精疲力竭 时,项目只能草草收场 在过去的几年中,这样失败的例子俯拾皆是。当一些项目管理者或开发 者经历了一次或者几次这样失败的项目时,当一些1 1 r 专业人士注意到这些失 败的项目时,他们开始探询为什么这些w e b 网站的项目会失败,以及怎样避 免失败他们在研究中很自然的借鉴了软件工程的成果,并和w e b 开发自身 的特点结合,逐渐开辟了一个新的研究领域,即w e b 工程( w e be n g i n e e r i n g ) 。 本文将对w e b 工程傲总体的叙述,进而针对由于页面外观代码开发与业务逻 辑代码开发不独立而引起的种种问题,着重阐述了面向表现的w e b 工程( 简 称p o w e r ) 的原理、方法以及辅助工具 本人工作 本人自1 9 9 9 年起先后参加了数个大中型的w e b 开发项目,针对在开发 过程中遇到的共性闯题进行了分析和思考本人在参考和查阅大量国内外最 新技术与研究成果的基础上,提出了“面向表现的w e b 工程”( p o w e r ) 的 概念,对其实旆方法进行了探索和初步实践,并开发了一套具有一定是用价 值的辅助工具- - m o t h 系统 章节安捧 本文按咀下方式组织: - 第一章:介绍了w e b 工程的概念、历史、研究内容以及相关概念。 对面向对象的w e b 工程做了分析和比较提出“面向表现的w e b 工 程”并阐述其基本思想和研究意义。 - 第二章:介绍了p o 啪e r 中使用的x m l 等核心技术,阐述了p o w e r 的实施方法和流程,并通过一个具体的例子做进一步说明。 - 第三章:介绍了m 0 1 哪系统的功能、设计、实现以及使用方法 - 第四章:总结全文,提出后续研究的方向 上海交通大学硕士学位论文 第一章w e b 工程的思想与研究内容 w e b 工程的概念源于“w e b 应用开发中的软件工程”。w e b 工程提出于 9 0 年代末期,是近年来兴起的一个新的研究领域其初衷类似于与6 0 年代 软件工程的提出动机它主要使用工程的手段解决由于w w w 的规模的膨胀 以及w 曲应用( w e b a p p l i c a t i o n ) 的复杂度迅速上升而产生各种问题,主要 研究内容是在基于w e b 的信息系统开发中实现工程化,研究内容包括方法、 模式、工具等。w e b 工程目前已经成为一个多领域交叉的研究方向,它涉及 人机交互、信息检索、计算机图形学、信息工程、建模以及项目管理学等多 方面课题1 1 】。近年来w e b 工程的概念已经逐渐技广泛接受并关注,它的研究 为如何更有效的实现基于w e b 的计算提供了方法学及工程化的手段。 面向表现的w e b 工程( p r e n t 砌o n - o 血n t c dw e be n g i n e e r i n g ,简称 p o w e r ) 是w e b 工程的一个研究方向,致力于在w e b 应用开发过程中实现 数据的产生代码与表现代码相分离的设计模式和开发模式。 1 1w e b 危机与w e b 工程的历史 w e b 危机( w e bc r i s i s ) 口1 指的是近年来在中太规模的w e b 应用( 尤其是 各类大规模的基于w e b 的信息系统) 开发中已经出现了大量从根本上影响了 w e b 应用开发质量和效率的问题。与6 0 年代软件危机时所凸现的各种症状 类似,由于目前开发方法发展的滞后无法适应有关w e b 的应用开发的规模的 不断增大阻及各项技术的日益复杂,大量网站项目开发过程中产生诸多具有 共性的问题,其中包括: - 项目管理者无法准确估算网站开发周期与成本, 单个页面长度以及页面总数膨胀, - 页面可读性差、可维护程度低, - 难以满足日趋复杂的需求,客户对产品不满意现象经常发生, - 开发人员有效工作时间比例低 - 项目进度与质量失去控制, - 出现大量失败或半失败的项目等。 w e b 危机产生的根源也与软件危机类似吲。通过回顾软件危机的产生可 以看到,在计算机系统发展的初期,程序常常是为特定目的编制的,大多数 程序是由使用该程序的个人和机构编制其产品缺乏通用型,开发过程带有 强烈的个人色彩。而且除源码之外往往没有任何说明性的文档,所有的资料 仅仅存在于程序开发人员的大脑中从6 0 年代中期开始,软件开始作为一 种产品被广泛应用,出现了专业从事软件生产的技术人员及作坊式的小型组 织但在这一阶段,早期的个体化软件开发方式仍然被沿用程序员仍然停 留在编写程序的层次而不是上升到编写软件的高度开发规模和开发方式之 上海交通大学硬士学位论文 问的巨大差距导致了软件危机 同样的情况也发生在与w e b 相关的开发中,即所谓的w e b 危机。以h t m l 标记语言与h t i t 传输协议为核心的w e b 技术是9 0 年代早期出现的一种网 络信息技术出现之初,w e b 的主要用途是实现超文本的表示和远距传输 主要被一些个人或科研机构用于发布信息或公布文档。在早期阶段,大多数 w e b 上的文档均由文档所有者或者文档发布人自己制作,文档总数较少而且 样式相对简单这一时期w e b 上的信息系统的特点是l l j : , 以文本内容的存储和发布为主, 已存在的文档很少更动内容, 文档群内部的导航结构简单, - 对性能要求低等 从9 0 年代中期开始,w e b 信息系统的规模开始趋于大型化,在这一时期, 一系列的大型商业门户站点开始出现,它们主要从事复杂内容的提供以及一 些简单服务的提供另外,一些大型的企业也开始进入w e b 设立自己的站点 提供有关企业的各项信息,亦即通常所称的企业黄页从这一时期开始,基 于w e b 的信息系统由面向内容发布逐渐转为面向提供特性的功能服务,其主 要特点是: 页面复杂、和数据库及其他信息系统集成, - 内容变更频繁, - 对性能要求高 - 对开发团队的人员构成及素质要求高等。 因此,一些专业团队和机构开始出现,为客户提供网站建设以及页面制作的 服务,但其开发方式仍然沿袭了早期的个人化的页面开发方式开发者只是 专注于制作大量的网页而没有注意到如何从w e b 信息系统的整体角度进行开 发。这些开发者在开发过程中对需求缺乏明确的分析,没有详细确切而且可 以实用的设计文档,没有实施项目管理和风险控制,项目的成败完全依赖于 开发者的经验。同时,由于缺乏文档和有效的测试,开发完成的网站难以维 护和更新可扩展性差 w e b 危机还源于超文本标记语言本身的缺陷。正如软件危机源于结构化 语言出现以前的高级语言本身的不足,超文本标记语言的不规范化以及不受 约束的超链接使得w e b 上的应用系统天然的缺乏较好的可靠性、可维护性和 可读性而一些新技术的出现,如通用两关接口( c g d 以及服务器端脚本 ( s e , 1 v e rs i d es c r i p t ) 等,以及在此基础上的新应用的开发更加剧了w 曲危机 的严重程度2 0 0 0 年1 1 月的一份调查【i j 显示在大型的基于w e b 的项目中, 有“的系统在交付客户时不能完全达到客户的需求, - 有7 9 的项目被迫延期 有6 3 的项目预算超支 因此,如何在复杂w e b 开发中确保性能、质量和效率正在收到越来越多 的关注从9 0 年代后期开始,相关研究开始增多1 9 9 8 年,w e be n g i n e e r i n g 的概念被提出【i 】此后相关研究便逐渐归于该课题的研究领域。从1 9 9 8 年至 今,在关于网络、多媒体以及软件工程的一系列重要田际学术会议上,w e b 上海交道大学硕士学位论文 工程都已经被单列为一个重要讨论主题叫,大批学术论文以及一些演示系统 也不断涌现。 1 2w e b 工程的涵义及相关概念 “工程就是系统性的利用科学知识以有成本效益( c o s t - e f f e c t i v e ) 的方 案解决实际问题” 3 1w e b 工程的主要就是在基于w e b 的信息系统的开发中 实现工程化。 w e b 工程的主要研究对象是运用动态w e b 网站技术开发的w e b 应用 ( w e ba p p l i c a t i o n ) 尤其是复杂的w e b 应用。类似于软件工程,w e b 工程 其主要研究内容是w e b 应用的整个生命周期内的系统化方法以及非技术层 面的问题【4 j ,包括系统分析、网站设计、项目计划、网站开发、系统测试、 文档管理、质量控制、风险控制以及系统维护等:其主要研究目标是确保和 提高w e b 应用开发的质量、性能和效率【1 1 1 2 1 ”。 其中,w e b 应用和动态w e b 网站( d y n a m i cw e b s i t e ) 是w e b 工程的讨论中 的两个被广泛使用的重要相关概念。 1 2 1w e b 应用 w e b 应用是当前基于w e b 的信息系统的主要表现形式。目前的w e b 已经 与其原先设计目的大相径庭。w e b 最初只是一些相互链接的超文本,目的只 是在一些物理学家之间共享与科研有关的信息。而随着技术的发展、商业应 用推广以及规模的爆炸式膨胀,现在的w e b 已经远远不再是一个庞大的文档 库而是越来越多的带有应用程序的特征。目前,几乎所有大规模的w e b 信 息系统都多多少少提供一些具有特定功能的服务其中主要可以分成五类 1 】: 信息提供类:包括目录服务、在线新闻、产品目录等, 用户互动类:包括各类注册服务、内容定制、在线游戏等, - 交易事务类:包括网上银行、在线购物、订货等, - 网上社区类:包括公告板、聊天、拍卖等 - 协同工作类:包括远程合作系统、行程管理等。 人机交互以及大量数据流动是这些服务的主要特征,同时这些服务的开发涉 及到大量的程序编写而不仅仅是页面制作。这些特性使得这些w e b 信息系统 从使用和开发两方面都趋向于一个w e b 上的分布计算应用系统,因此将其称 为w e b 应用。所不同的只是w e b 应用以浏览器为用户接口m s e ti n t e r f a c e ) 。 与此同时,大规模的w e b 应用仍不可避免的会涉及到大量静态的超文本页面 和图象及多媒体资源。因此,w e b 工程在使用新的方法来适应目前w e b 信息 系统开发与维护的工程化研究需要的同时,仍然需要借鉴和运用传统的针对 超文本文档群的内容管理的手段来处理大量超文本内容。 上海变迁太学磺士学位论文 1 2 2 动态w e b 网站 动态w e b 网站和w e b 应用是同一事物通过不同视角得到的观察结果。 w e b 应用是动态w e b 网站从外在功能角度的概括,动态w e b 网站是w e b 应 用的实际存在形式和实现技术。 动态w e b 网站的概念主要是相对“静态”而言,相对于全部页面内容都 + 来自事先存放在w e b 服务器文件系统中的h t m l 文件的网站而言。动态w e b 同站的一部分页面内容通过服务器端的计算得到,这些帷时生成的页面称为 动态页面( d y n a m i cw e bp a g e ) 。 动态w e b 网站的底层核心技术是服务器扩展a p i ,面向程序员的主要技 术是c g i 与服务器端脚本。动态w e b 网站通过这些技术实现服务嚣端的计 算。例如数据库查询、目录访问以及访问其他传统应用系统等。并将计算的 结果作为动态页面的一部分返回至客户端浏览器。图1 - 1 分类并列举了目前 学术研究中和实际开发中常见的若干开发技术。 田卜1w e b 应用开发常撒术“ 目前,动态w e b 网站的主要特征是以数据为中心( i ) a t ai n t e m v e ) ,常见 的运行模式是根据一定的用户输入返回一定的数据在上文提及的w e b 应用 的五大类型中绝大多数都符合这一运行模式只有如聊天、在线游戏及远 程协作等少数具有很强实时性与交互性特点的服务类型才在数据阻外更多 上海交通大学硕士学位论文 的体现出服务器端计算的内容。 1 3w e b 工程与软件工程 从广义上说,w e b 应用也是一种软件产品。因此软件工程的方法和原则 对w e b 应用的开发仍然具有实际意义1 6 j 。同时,w e b 工程的提出与软件工程 的产生有非常相似的背景,因此软件工程的研究方法、思路和指导思想在 w e b 应用开发中可以被充分借鉴【2 j 。但是,w e b 工程并不仅仅是软件工程在 w e b 引用开发中的一项具体应用。w e b 应用不同于传统意义上软件系统的一 些特点p 】使得w e b 工程含有一些传统软件工程未曾涉及的研究内容和课题, 传统的软件工程的方法和原则在w e b 开发中的应用需要经过调整以适应其 特点。 1 3 ,1 软件工程方法在w e b 开发中的应用 虽然在相当长的一段时间内w e b 开发曾经被更多的视作一种艺术创作而 不是一种产品生产,但已经可以看到有软件工程的一些简单方法的使用。开 发人员的精力经常过多的专注于单个页面的外观及备类表现技巧,在开发过 程中主要围绕页面制作来强调布局、色彩、风格和基调,要求开发人员本身 不但有页面制作的熟练技术,而且有很强的周边知识背景。但是随着w e b 应 用复杂度上升,工程化的手段已经不断的引入了w e b 开发。由于开发团队规 模变大,构成产生变化,成员之间分工更明确,单个开发人员技能趋于单一。 在这种情况下,为了保证页面外观风格和基调的一致,在开发中通常会使用 一些朴素的工程化方法,如服务器端包含( s e r v e r - s i d ei n c l u d e ) 、统一的风格 页( c a s c a d es y t e ls h e e t ) 等。和早期的一些高级语言类似,这些简单的方法 已经带有模块化、结构化的色彩而在项目团队中的分工合作,如专职美术 设计、专职文字工作人员等,也可以被看作是项目管理的一些简单实施。 目前在大型的w e b 应用开发中,软件工程的应用已经很普遍。随着 w e b 危机的产生,w e b 开发人员和有关研究人员很自然的将w e b 开发和软件 开发联系起来进行类比,并尽可能的照搬成熟的软件工程方法来解决w e b 危 机。例如,目前w e b 应用开发的总体过程已经与传统软件开发并无二致。 w e b 应用开发也体现出从需求分析到系统测试与系统维护的生命周期( l i f e c y c l e ) ,同时还伴随着项目管理、文档管理、质量管理和风险控制( 如图1 2 ) 。 在这种开发流程中可以很明显看到瀑布模型和螺旋开发模型的特征。 大型w e b 应用开发与传统的大型软件系统开发同样具有开发量大 ( p r o g r a m m i n g i nl a r g e ) 和开发人员多( p r o g r a m m i n gi nm a n y ) 的特点。软 件工程正是针对这种情况为开发人员提供思想方法和工具、为开发项目提供 良好组织与严密管理的一门学科软件工程的一些核心思想,如自动编程、 自动测试、代码重用、细节包装、文档书写等对于w e b 应用开发来说仍然有 很重要的意义 上海空迁大学磺士学位论文 i r e c l u i r e m e n t la n a l y s i s , o 岳 p r o d u c t 可 葺 h o d e l 亘 口 q 9 4 c 暑 j p r o j e c t z j 曼 p l a n 兽 m 皇 邑 盘 w e b s l t e j 奢 j d e v e l o p m e n t昌 3 芝 一 a i w e b $ 1 t e 暑 【h a i n t e n a n c e 西 囤卜2w e b 应用开发流程”1 从另一个角度来说,动态w e b 网站的开发涉及到大量服务器端计算的编 程实现。这部分的程序开发和以往的应用程序和系统程序开发井无明显区 别。仍然使用原先的高级语言以及组件技术、数据库技术等,仍然由传统意 义上的系统分析员和程序员完成对于这部分的开发本身,如果用良好的模 块分割予以隔离则阻往的软件工程完全可以适用于设计、实现、测试、文 档与维护等 1 3 2 软件工程方法在w e b 开发中的局限性 传统的软件工程方法虽然可以在w e b 应用开发中发挥一定作用,但由于 w e b 应用及其开发过程本身的特点,在w e b 应用开发中难以全部照搬软件工 程的一套理论、规则和经验1 4 j 。大量的开发经验也表明,结构化开发、建模、 面向对象、快速原型等常见的软件工程手段在实践中无法发挥所期望的作 用,因而也没有得到广泛的运用例 w e b 应用与传统的软件系统的区别首先在于w 曲应用本身处于连续的更 新中,不完全适台阻螺旋模型等软件生存期模型描述。传统的软件在交付用 户后便进入一个相对稳定的阶段,即软件的维护在这个阶段中客户所持 有的软件代码保持不变即使客户在使用中发现各种问题和缺陷开发者也 只会收集这些反馈并在内部对程序进行小的咎改,直至这类小的修改积累到 一定程度才以一个。补丁”或者一个新版本的形式交付客户,呈现明显的“发 布一反馈一更新一再发布”的阶段性过程而w e b 应用的生命周期则没有明 显的阶段划分【”一般来说,客户发现在w e b 应用系统中发现各类问题后总 是要求开发人员立即进行修改。另一方面,内容增加导致新的页面不断被添 加到系统中来也使得w e b 应用系统处于一十不断变更的过程中。因此,w e b 应用开发中的生龠周期界限模糊,缺乏版本控制的基础 其次,w e b 应用开发的需求分析比传统软件开发的需求分析更困难【。 上海交通大学硕士学位论文 需求分析在传统软件开发中占有非常的地位。能否明确的了解客户的需 要是项目能否顺利进展的关键因素,客户需求的中途改变会对项目的质量管 理、进度控制及成本控制产生非常严重的负面影响,因此传统的软件工程非 常重视需求分析的质量,并已经总结出一套相当有效的需求分析的方法与规 则,例如用来形式化表达需求的用例图( u s ec a s e ) 和用来充分了解客户需 求的问答循环( q a c y c l e ) 和快速原型( r a p i d p r o t o t y p e ) 等。 然而这些方法在w e b 应用开发中效果不佳。一方面,和传统软件系统的 客户需求相比,w e b 应用系统的客户需求中涉及界面和外观的比例大大增加, 功能性需求和外观需求往往相互交织。而传统的需求描述手段如用例图只适 合进行功能性的描述,对外观缺乏描述能力。目前w e b 应用系统中的前端部 分的需求以自然语言描述附以非标准化的草图居多,大大降低了需求分析及 其相关文档的作用。另一方面,w e b 应用系统开发的客户对需求的概念更模 糊,往往缺乏一个完整的构想和期望,其需求比传统软件系统的客户更容易 随着时间而改变。而且,由于w e b 应用开发的技术门橙相对较低,也使得客 户提出的需求更具有随意性。部分对w e b 应用开发的技术有一定了解的客户 更容易忽视需求变更可能损害项目质量的警告,使得在项目开发初期所做的 需求分析形同虚设。凡此种种都导致目前w e b 应用开发的需求分析中缺乏一 种真正有效而规范的手段。 此外w e b 页面属于一类特殊的人机接口( h m a n m a c h m ei n t e r f a c e ) 。 虽然目前w e b 页面中出现了越来越多传统应用程序中的用户界面元素( u s e r i n t e r f a c ee l e m e n t ) ,如按钮、下拉框等,但w e b 页面的主体仍然是超文本文 档w e b 应用中最主要的界面元素仍然是超链接。通过单向超链接相互关联 的超文本文档群在结构特性上也与传统的应用程序大大不同。这些差异使得 w e b 页面的用户使用习惯需要重新进行研究,例如已有一些研究着重探讨页 面导航( n a v i g a t i o n ) 对用户使用感受的影响j 。同时,从传统应用程序归 纳出来的一些界面易用性准则也不再全部适用于w e b 应用。 1 4 面向对象的w e b 工程 面向对象( o b j e c t - o r i e n t e d ) 是目前软件工程中最核心的思想,围绕面向 对象的概念有一系列的软件工程理论和方法,包括分析、建模、设计和实现。 面向对象理论和方法在客观世界和面向对象的程序设计语言之间建立了沟 通的桥梁,系统分析员和程序员可以很自然的将面向对象的分析和建模的结 果通过面向对象的高级语言进行编程实现面向对象的分析与开发方法是软 件工程中继结构化设计与开发方法后又一重大进步。 面向对象思想也已经大量出现在w e b 应用开发的研究中。面向对象理论 与方法的主要出发点是程序开发应该尽可能的模拟人类的思维方式,尽量反 映客观世界的组成结构与特点。因此从理论上说面向对象的方法可以适用于 任何软硬件的设计与开发过程基于这种外推,在w e b 应用开发领域,面向 对象的方法尤其是面向对象的分析与建模,也很自然的被作为很多研究的 上 i 交薯大学硕士学也论文 重点1 1 2 卜印】这些研究的共同特点是用u i v i l 或者) 西儿对一簇w e b 页面或者 整个w e b 应用进行描述并建立模型,然后在运行前( p r e - r u n t i m e ) 或者运行 时( r u n t i m e ) 发布成h n 肛页面。 面向对象的方法具有理论上的先进性,但在目前阶段并不能被有效且自 然的导入w e b 应用开发中发挥作用,其应用的必然性和可行性稍显不足。 首先,方法和技术必须适应,正如结构化的方法需要和结构化的程序设 计语言配合( 如c 、p a s c a l ) ,面向对象的方法必须和面向对象的高级语言配 合( 如c + + 、j a v a 、s m a l l t a l k ) 。而目前w e b 应用开发中使用的主要技术都不 具备面向对象的特性,包括客户端的h t m l 标记和服务器端的c g i 和服务 器端脚本,都尚停留在结构化和半结构化的水平。此时,即使使用了面向对 象的分析和建模方法,也无法在客观世界和程序代码之间建立起直接的联 系,面向对象分析和建模的结果往往只能用于研究和表达,或者仅仅用于局 部的分析如对w e b 页面的建模,无法直接体现在程序代码中。 其次,w e b 应用系统开发所涉及的技术与以往的面向对象以及基于组件 的程序开发技术有很大的不同,。除了后端的核心功能模块以外,w e b 应用开 发的其他部分都不可避免的会涉及到界面与外观同时,w e b 应用中通过超 链接导航关联的内部结构也与以往的软件通过继承、聚合等关联的内部结构 有很大不同不具备清晰且有层次的模块划分与运行流程。因此,运用面向 对象的方法在w e b 应用开发中的使用需要经过调整并寻找适合的切入点。 另外,在w e b 应用开发中使用面向对象技术对辅助工具提出了很高要求。 w e b 应用开发技术在短期内根难实现向面向对象的转变。胁虹等“原始” 的开发技术在相当长的一段时间内仍然将占据主导地位,更先进的技术如 x m l 等虽然在不断出现,但技术的逐渐成熟和寻找技术的适用方向尚需要一 定的研究和实践而且新技术的广泛采用还必须取决于能否产生商业利益上 的驱动以抵消向新技术迁移的成本因此在目前阶段,虽然各种辅助分析、 辅助建模和自动程序生成工具在模型表达上可以采用u m l 和) 0 订l 等先进的 方法并已经可以根据建立的模型自动生成h t m l 页面等代码,但这些工具有 些只能处理静态文档田j ,有些缺乏对已经存在的代码的分析能力,无法从中 将模型还原提取出来这大大限制了这些工具在实际应用中的灵活性 ( f l e x b i l t y ) ,也限制了面向对象方法在w e b 应用开发中的有效性。 虽然目前遇到一些困难,但面向对象方法在w e b 工程中的运用的前景是 乐观的面向对象技术在软件工程中的出现和推广也同样经历了一段相当长 的由被怀疑到被接受的过程随着相关技术的演进和辅助工具功能的日益强 大,面向对象方法能够成为w e b 工程中的一个重要组成部分 就目前阶段而言,除了面向对象的分析和建模以外,w e b 工程还有其他 很多研究方向和切入点例如w e b 应用分析与规划、客户靖无关性( d e v i c e i n d z p e n d e n c c ) 的开发嗍呻l 、测试和维护f 即1 k 3 钔、项目流程1 7 1 、数据外观与 代码的分离等其中针对数据外观与代码的分离的研究方向即称为面向表 现的w e b 工程,是本文的主要讨论内容 上海交通大学硬士学位论文 1 5 面向表现的w e b 工程( p o w e r 】 面向表现的w e b 工程( p r e s e n t a t i o n - o r i e n t e dw e be n g i n e e r i n g ,简称 p o w e r ) 是由本人在总结实践开发经验并参考国内外w e b 工程研究领域最 新研究成果的基础上提出的,是以w e b 应用中的外观开发及其与业务逻辑开 发之间的关系为研究重点的一个w e b 工程研究方向。从程序设计与开发方法 的角度来看,诸如m v c 等基于“表示一内容一逻辑”模式以实现外观、数 据及运算逻辑相分离的设计模式已经普遍运用,但在w e b 应用的开发尚未采 用此类先进思想和手段。同时,在w e b 应用开发中,与外观相关的开发是整 个开发工作的一个重要组成部分,与传统软件系统相比所占比重更太,而且 与传统软件制造中的用户界面开发存在一定的差别。因此,研究如何使与数 据的表现相关的代码开发和产生数据的业务逻辑代码开发相分离也是w e b 工程的一个研究课题。 1 5 1 “表现一内容一逻辑”模式 “表示一内容一逻辑”三层模式”4 j ( p r e s e n t a t i o n - c o n t e n t - l o g i c ) 是软件 系统框架中的一个以数据为中心的重要概念。简单的说,“内容”即数据本 身“逻辑”即数据如何产生,“表示”即数据如何显示。在字面表达方面, 也有部分研究中将“表示”称为“外观( l a y o u t ) ”、“风格( s t y l e ) ”或“格 式( f o r m a t ) ”,但总体上说,各种提法的内在涵义是接近的。在软件系统制 造过程中依照该三层模式进行设计实现内容、表示与逻辑三部分相关程序 的模块分离与独立开发,可以为系统的开发、维护以及部署带来极大的灵活 性,例如可以实现并行开发,有利于隔离产生错误的代码,有利于在系统的 一部分上进行平滑的升级,易于在一个数据核心上实现多种外观( 如多语言 版本) 等。“表示一内容一逻辑”三层分离的开发已经在传统软件系统的开 发中运用多年,具有代表性的例子包括s u n 的m v c 模型、m f c 中的 d o c u m e n t v i e w 结构,以及可以共存运行在同一个l i n u x 内核上的各种 x w i n d o w ( 如k d e 、心心伍) 等。 传统软件系统中,“袭示一内容一逻辑”三层模式的概念相对清晰明确, 易于设计与开发绝大多数传统意义上的应用软件系统界面都比较简单,而 且彼此之间具有相当程度的类似:除游戏软件等以外,一般由标准的g u i 控件( 如窗口、对话框、按钮、菜单等) 构成,界面的风格也不外乎多文档 界面( m d i ) 、单文档界面( s d i ) 或是基于对话框( d i a l o gb a s e d ) 的样式。 正是这种类似性,使得程序的用户可阻快速掌握新的软件的操作,不需要针 对每一套系统学习复杂的命令行命令格式。同时,这种类似性也使得程序开 发降低了难度,程序员可以不需要在界面设计上花费太多精力。另外,传统 应用软件系统的图形用户界面( g u l ) 可以通过通用类库进行编程控制。对 于每一种主流的程序设计语言都有相应的g u i 类库支持,如c + + 的o w l 和 上海交通大学硕士学位论文 m f c 、j a v a 的a w t 和s w i n g 等。这些类库都提供面向对象的支持提供一 套完整的程序编程接口( a p i ) ,使得程序员可以方便的将后台程序模块和前 台程序界面整合在一起,也可以明确的划分表现数据的代码与产生数据的代 码之间的界限,便于分工与合作 相比之下,w e b 应用的用户界面和传统软件完全不同。w e b 应用的界面 构成复杂且彼此间相似度小,设计自由度大,对界面视觉效果要求高。同时, w e b 应用的界面开发手段相对原始界面元素通过半结构化的标记语言 + ( m a r k u pl a n g u a g e ) 进行编程,用简单的解释型脚本语言进行控制,无法很 好的与用高级程序语言开发的后台程序整合。 一般来说,在w e b 应用系统中,表现层对应于与最终页面外观有关的 h t m l 标记,逻辑层对应于运行在服务器端上实现各种业务逻辑( 如查询数 据库等) 的程序代码,而内容层即服务器端程序所产生的数据。逻辑层代码 产生的内容数据将通过某种方式在某一时间与表现层代码绑定,形成一个完 整的h t t p r e s p o n s e 的文本内容( 如图1 - 3 ) 。 困卜3w e b 应用中的。表现一内容一辽辑 特别的,在较为复杂的情况下表现层的代码还可以细分为外观布局 ( l a y o u t ) 与显示逻辑( p r 鼬- n t a t i o nl o g i c ) 两部分外观布局部分只包含纯 粹的h t m l 代码,它是整个外观的框架部分以及与被显示的数据无关的部 分显示逻辑指的是致据以何种方式被显示以及显示时的具体策略等。例如, 上海交通大学顼士学位论文 在有些应用中当多条记录以表示形式显示时,表格中每行的背景色会交替 使用深色或浅色以使数据的显示更友好避免用户在查看包含大量数据并具 有一定宽度的表格时出现跳行等视觉错觉。数据在页面外观中的位置,如数 据库查询结果中的字段在表格中的对应位置等,也属于显示逻辑的范畴。和 业务逻辑相同,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论