随笔-128  评论-55  文章-5  trackbacks-0
 

Web工程过程及其中MVC模式的应用

     作者:orangelizq      2007-05

   

近年来,基于Web的应用系统的开发备受关注。Web应用系统有着自己独特的属性,Web系统的开发也不同于传统的软件开发。根据这些属性和特征讨论了结构化的分析和设计方法以及螺旋模型在Web开发过程中的应用,并且具体分析了目前广泛流行的MVC设计模式在Web工程中应用的优点。

 

关键词:Web工程;软件工程;MVC模式;结构化方法;螺旋模型

 

Web Engineering Process And The Application of MVC Model

 

Abstract

In recent years, the development of Web-based application system has attracted much attention. Web application system has its own unique attributes and it is different from the traditional software system. Based on these attributes and characteristics, this paper discussed the application of structural analysis and design methods and spiral model in WebApp, then specific analysis the advantages of MVC model in WebApp.

 

Keywordsweb Engineeringsoftware EngineeringMVC modelstructured methods

spiral model

一、引言

随着InternetIntranetExtranet的快速增长,web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,以电子商务为典型代表的应用系统越来越普及。尤其在现代企业应用中,各种信息系统在原来的基础上,由基于CS方式向基于BS方式转换,逐渐过渡为基于WebMISERPEIP乃至CIM 的企业业务IT系统,从而使企业管理不再局限于企业内部,而是通过Internet扩展到遍布全球的客户、供应商、合作伙伴等各个环节[1]

澳大利亚的Yogesh DeshpandeSteve Hansen1998年就提出了Web工程的概念,他们认为Web工程是用系统的、严密的、可以测量的方法来开发、实施和维护基于Web的应用或基于Web的软件的工程应用[2]

然而传统软件工程方法和技术应用到基于Web的系统开发中,显得力不从心。目前,Web系统开发缺乏严格和系统的方法,很少有人注意开发方法、度量和评估技术、系统质量和项目管理。随着Web应用系统的规模和复杂程度的不断提高,使得基于Web的应用越来越显得以开发、管理和维护。一个Web项目的失败将可能导致很多问题。当这种情况发生时,人们对WebInternet的信心可能会无法挽救地动摇,从而引起Web危机[3]。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。因此软件开发人员迫切需要工程化的Web工程方法和新的对基于Web的系统和应用的开发、部署及评估的方法和工具。

二、Web工程的特征

基于Web的系统和应用(简称为WebApp)不同于其他的软件类别,它们具有自身独特的一些属性,因此基于WebApp的开发过程和方法也必将不同于传统软件工程的过程和方法。一个典型的WebApp应该具有以下属性[4]

l        网络集约性:一个典型的WebApp是网络集约的。它驻留于网络上,并且必须服务于变化多样的客户群落的需要。

l        内容驱动性:在多数情况下,一个WebApp的主要功能是使用超媒体来表示文本、图形、音频和视频内容给终端用户。

l        持续演化性:不同于传统的按一系列规划的时间间隔的发布进行演化的应用软件,Web应用持续地演化。对于某些WebApp而言,甚至是以小时为单位进行更新。

 

而基于WebApp的开发又应该具有以下特性[4]

l        即时性:基于Web的应用具有其他任何软件类型中都没有的即时性。一个完整的Web站点的应市时间可能是几天或几周。

l        安全性:由于WebApp是通过网络访问可达的,为了保护敏感的内容和提供安全的数据传输模式,在整个支持WebApp的基础设施和应用本身内部必须实现强的安全措施。

l        美学Web比通常意义上的软件开发使艺术和技术在更大范围内得到结合。美学可能和技术设计在同样的程度上决定应用的成功。

三、Web工程的实施方法

在了解了Web工程特有的属性和特征后,便需要一个能够满足这些的特征的工程化的Web工程方法和新的对基于Web的系统和应用的开发、部署及评估的方法和工具。

3.1 Web开发团队

开发大型的基于Web的系统需要有一个具有不同技能、知识和能力的人组成的团队,这些开发人员所具有的技能和知识层次结构可组成一个三维技能空间,这三维分别是管理、技术和人员交流[5]。管理技能包括调整、规划和把Web系统与已经存在的信息系统集成;技术技能包括计算、网络和Internet通讯;人员交流技能包括图形设计、布局、人员通讯、表达技能等。

根据实践,可以把参加开发Web项目的人员分为七类,分别是:Web决策人员、内容提供人员、Web开发人员、Web发布人员、Web支持人员、Web管理人员、最终用户。其结构如图3.1所示[2]

3.1  Web开发团队结构示意图[2]

这种分类是分等级的但又有重叠的地方。在每一个类别中根据技能或行为标准不同,又定义了不同的级别。一个人可以属于不止一个类别,起不同的作用。

3.2 Web开发过程

Web系统的即时性和持续演化性要求一个迭代的、增量的过程模型,以速射的序列生产WebApp发布。

3.2.1 使用结构化的分析和设计方法[6]

Web工程的实施不适合使用面向对象的软件开发方法进行系统分析和设计。因为一个Web应用系统的开发会遇到许多不可避免的不确定因素,这就很难从客户真实系统中导出对象体系。如果强行按照面向对象的方法对系统进行分析设计,势必要考虑更多内容,而与实际需求不一致时便会导致过度设计甚至重新设计[9],并且,一旦在实施中发现不合理设计,修正的代价就可能极大。同时,由于占有相当比重Web页面开发的Web应用包含大量基于文件的Web资源,缺乏抽象概念,缺乏继承和组装这样的重用机制,这使得面向对象的开发方法显得力不从心。

另一方面,Web应用强调结构清晰简洁、符合用户思维的功能导航,这与具有自顶向下、逐步求精分解方法的结构化分析设计思想相吻合。作为软件工程中技术最为成熟、应用最广且非常有效的一种软件开发方法,结构化方法的理论概念和实践方法已广为人知,并取得广泛的成功。因而使用结构化的方法分析和设计Web应用系统,可以更多地借鉴传统软件系统的成功开发经验,这更利于构成复杂的开发团队中成员之间的沟通,可以更方便地实现下文中将要提到的螺旋模型,从而成功实施Web工程。

结构化方法是将一个复杂的大型系统自顶向下地分解成一个个简单的系统,用系统工程的思想和工程化的模式对系统进行功能分解和结构设计,从内部功能上模拟客观世界。结构化方法包括结构化分析(SA)方法、结构化设计(SD)方法、结构化编程(SP)方法。根据分析方法的不同,又可分为面向数据流的和面向数据结构的两大类。本文所讨论的是开发步骤明确、适用范围更广的面向数据流的结构化软件开发方法。

面向数据流的结构化软件开发方法使用由简单易读的图形符号构成的数据流图表达,根据系统内部的数据传递和变换关系,自顶向下逐层分解,描绘出满足功能要求的系统逻辑模型。设计阶段依据模块独立性准则、软件结构准则(软件结构包括变换型和事务型两种典型类型),将数据流图转换为应用系统的体系结构,进而建立系统的物理模型,实现系统的概要设计[4]

当然,这里所强调的结构化方法是指使用结构化方法中的结构化分析和结构化设计,而在编码实现阶段,完全可以借助面向对象的可视化编程工具,根据实际需要准确地抽取底层级别的对象并设计基类,从而利用继承、重载等机制高质量地重用代码,简化结构,降低维护难度。这一点在应用螺旋模型的系统开发过程中,不断循环调整结构、优化代码以实现收敛逼近最优结果时显得尤为重要。

3.2.2 应用螺旋模型

随着大量传统软件系统的开发实践和经验积累,多种软件工程方法被总结出来,而且对它们进行了模型化,从而将相关方法从实践上升到理论。而基于Web的应用系统,同样作为一种软件系统,也可以借鉴应用这些模型,从中吸取有益的经验,以便更有效、更便捷地实施Web工程。螺旋模型正是这样一种同时适用于Web工程的软件开发模式[6]

由于Web系统的即时性和持续演化性,使得需要一个迭代的、增量的过程模型。因为Web系统作为一个开放的系统,其用户的形式具有多样性,需要迎合具有不同技术和能力的用户,复杂化人机接口,用户界面和信息提交。而且基于Web的系统将连续关注视觉和感觉,强调感官舒服,在多种程度上与多媒体结合。因此用户在开发早期很难清楚地提供系统的完整需求,开发人员也很难在系统开发的需求分析阶段完全正确地领会和定义用户所提出的各项需求。而只有当软件成品摆放在用户面前时,用户才能更加确认需求,进而激发新的需求甚至更改需求。这就很容易造成开发出Web系统需要付出高昂代价的后期需求变动,甚至导致项目失败。

应用螺旋模型[4]这一基于原型化开发的进化模型则可以很有效地解决这种问题。这种开发模型是自内向外以螺旋状的形式进化发展,每一个周期都要经过计划、分析、设计实现、用户反馈等环节,每一次循环的结果都生成一个增强的软件版本,如图3.2所示。

3.2  螺旋模型示意图[6]

由图中看出螺旋模型不是等一个开发阶段的工作完成以后才开始下一个阶段的工作,而是把传统的分阶段的软件开发方法融入到每一次螺旋循环当中,生成用于验证预定用户需求和可能的设计方案的中间系统原型,并通过用户对原型的意见反馈探索和揭示新的需求。一旦获得新的信息,就对原型进行调整,除了进一步求精外,还追加实现某些新的、已明确的用户需求,从而进入新一轮的螺旋循环,逐步逼近最优结果。需要注意的是,这种循环分析设计活动不仅针对整个应用系统的开发,而且可以同时在不同的模块开发中并行进行。

应用螺旋模型这种用户驱动的开发模式,满足了Web工程以用户为中心的开发要求,使用户最大程度地参与到软件的开发过程中并起主导作用,可以在中间系统原形的基础上进一步清楚的阐述自己的微观需求,这样也使开发者可以真正了解用户的需求,并能对用户的动态需求作出及时的有效的处理,使开发出来的系统更易于被用户接受,有利于缩短开发周期,降低开发风险。

四、MVC模式在Web开发过程中的应用

4.1 MVC设计模式简介

MVC模式就是一种目前广泛流行的设计模式.它是Xerox PARC20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式旧。MVCModel-View-Controller的简称。即模型-视图-控制器[8]MVC包括三类对象.模型Model是应用对象.视图View是它在屏幕上的表示,控制器Controller定义用户界面对用户输入的响应方式。如图4.1所示.

视图(View)代表用户交互界面,对于Web层来说,可以概括为HTML界面,也有可能为XHTMLXMLApplet。模型(Mode1)是业务流程,状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据.并返回最终的处理结果。业务模型的设计是MVC最主要的核心。业务模型还有一个很重要的模型就是数据模型。数据模型主要指实体对象的数据保存(持久化)。控制器(Controller)可以理解为从用户接收请求.将模型与视图匹配在一起。共同完成用户的请求。

4.1  MVC模式示意图

4.2 MVC设计模式在J2EE中的实现

为了更清楚地说明问题,下面介绍MVC设计模式在J2EE架构中的实现。尽管MVC设计模式很早就出现了,但在WebApp中引入MVC确实非常困难的。主要原因是在早期的Web应用的开发中,程序设计语言和HTML的分离一直难以实现,从而执行业务逻辑的程序代码和执行表示的程序代码混杂在一起,因而很难分离出单独的业务模型。

为了解决以上问题,Sun公司先后制定了两种规范,称为JSP Model1JSP Model2。虽然Model1在一定程度上实现了MVC,但是它的运用并不理想,直到基于J2EEJSP Model2出现才得以改观。JSP Model2技术用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能[8]

4.2  JSP Model2示意图

 

如图4.2所示,JSP Model2体系结构是一种联合使用JSPServlet来提供动态内容服务的方法。它吸取了JSPServlet两种技术各自的突出优点,用JSP生成表示层的内容,让Servlet来完成深层次的处理任务。它清晰地分离表达和内容,明确了角色定义以及开发者与网页设计者的分工。

 

4.1 MVC模式应用于Web工程过程中的优势

在详细的MVC设计模式后,可以看出MVC模式可以满足Web工程的网络集约性,内容驱动性和持续演化性的要求。首先,多个视图共享一个模型,从而使得同一个Web应用程序可以提供多种用户界面。例如用户希望既能通过浏览器来收发电子邮件,又能通过手机来访问电子邮箱,这就要求Web网站同时提供Internet界面和WAP界面[8]。在MVC设计模式中,模型返回用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,这样就能够满足Web工程的网络集约性要求,即同时服务于变化多样的客户群落。

其次,模型是自包含的,与控制器和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。如将数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需要改变模型即可,一旦正确的实现了模型,视图都会正确的显示它们。由于MVC的三个模块相互独立,所以能够构造良好的松耦合的构件。从而满足Web工程的内容驱动性要求,可以方便的对数据进行管理。

此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求去选择适当的模型进行处理,然后选择适当的视图将结果显示给用户。因而满足Web工程的持续演化性需求,当用户的需求发生改变时,只需要对其中的具体模型或视图进行修改即可,而整个系统的结构不需要变化。

五、总结

文章首先讨论了Web工程的各种属性以及开发Web工程的各种特性,然后讨论了运用结构化的分析和设计方法来开发Web工程,并将螺旋模型,这一迭代的、增量的过程模型应用到Web工程开发中,从而使得开发者可以真正了解用户的需求,并能对用户的动态需求做出及时的有效的处理,使开发出来的系统更易于被用户接受,有利于缩短开发周期,降低开发风险。最后讨论了目前广泛流行的MVC设计模式在Web工程中的应用,可以看出MVC模式的应用使得螺旋模型得到更好的实施,能够让软件在健壮性、代码重用和结构方面上一个新的台阶,大大提高软件开发的效率。

参考文献

[1] 张友生.  Web工程实践研究[J].  小型微型计算机系统,20047

[2] 张友生.  Web工程过程研究[J].  计算机工程与应用,20032

[3] Zelnick NNifty technology and nonconformanceThe Web in crisis[J] Computer1998(10)115119

[4] ()Roger S. Pressman 著,梅宏 译,软件工程--实践者的研究方法[M],北京:机械工业出版社·20029

[5] Hansen SDeshapande Y and M urugesan S A classification based on skill hierarch for Web information system players  [c]Proc ICSE Workshop on W eb Engineering1999

[6] 董寒松、李铮、尤枫、赵恒永.  基于结构化方法和螺旋模型实施Web工程的探究[J]. 微型机与应用,200511

[7] 张琼声、庞绪峰.  Web工程及其应用[J]. 油气田地面工程,200310

[8] 孙卫琴 著,精通Struts:基于MVCJava Web设计与开发[M],北京:电子工业出版社·20048

[9] Gamma E著,李英军,马晓星,蔡敏等译.设计模式:可复用面向对象软件的基础.北京:机械工业出版社,2000

 



Author: orangelizq
email: orangelizq@163.com

欢迎大家访问我的个人网站 萌萌的IT人
posted on 2007-09-30 10:23 桔子汁 阅读(1834) 评论(0)  编辑  收藏 所属分类: WebService 技术

只有注册用户登录后才能发表评论。


网站导航: