UML软件工程组织

Web工程过程研究
张友生(转载自计算机工程与应用)
1 引言

  近年来,随着Internet和Intranet/Extranet的快速增长,基于Web的应用系统的开发方法备受关注,这些关注主要体现在Web应用系统的开发和传统软件开发的显著区别.传统软件工程方法和技术应用到基于Web的系统开发中,显得力不从心.目前,在大多数情况下,开发基于Web的系统具有随意性,缺乏系统的方法、质量控制和保证过程.因此,对基于Web的系统的开发方式和质量保证的研究是十分必要的,也是十分紧迫的.

  Yogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念.Web工程作为一门新兴的学科,提倡使用一个过程和系统的方法来开发高质量的基于Web的系统.它使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发布和维护基于Web的系统.目前,对于web工程的研究主要是在国外开展的,国内还刚刚起步.

  在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大.而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题.当这种情况发生时,我们对Web和Internet的信心可能会无法挽救地动摇,从而引起Web危机[1].并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛[2].

  因此,在开发和应用复杂的基于Web的系统中,为了避免Web危机的发生,达到更大的成功,我们迫切需要一个严格的步骤和新方法、新工具来开发、发布和评估基于Web的系统.

  本文的第2节阐述Web工程与传统软件工程的区别,第3节分析基于Web的应用系统开发的人员组织和Web工程过程,第4节给出本文的结论.

2 Web工程与传统软件工程的区别

  Yogesh Deshpande和Steve Hansen等人认为信息产业界应该把Web工程看作是一门崭新的学科,而不是把它看作软件工程的一个分支.基于Web的应用系统中所出现的新事物不能由计算机科学,软件工程或信息系统所包含.

  计算机科学关注硬件和系统软件,以获得优化和可靠的性能.软件工程关注大规模、基于团队的项目,信息系统来自数据处理,关注企业级的信息.根据Yogesh Deshpande和Steve Hansen的定义,Web工程是一门关于建立科学的、工程的、管理的原则,采用系统的、严密的方法来开发、实施和维护基于Web的应用系统的学科 [3].

  Web工程是一个快速增长的领域,需要使用更加前沿的方法,而不是仅仅应用以前存在的方法和被证明了的开发实践.Web工程不但来自计算机科学,软件工程和信息系统,而且来自其他学科,它代表了信息技术进化的方向.

  虽然Web工程包含了程序设计和软件开发,且采用了一些软件工程的原理,但是,基于Web的系统的开发与软件开发是不同的,同样,Web工程也不同于软件工程.Web工程与传统的软件工程的主要区别体现在以下几点:

(1)大部分基于Web的系统(至少目前是这样)强调的是信息的含量,是面向文档的,包含静态或动态网页.传统软件工程强调的是系统功能的完善,除了系统帮助是一些文档以外,其他的几乎就是一些数据交互功能,是面向功能的.

(2)基于Web的系统关注视觉和感觉,强调感官舒服.虽然软件界面设计也逐渐纳入了软件工程的研究领域,但与基于Web的应用系统相比,传统的软件界面是以"简单为美"的原则,而基于Web的应用系统则在多种程度上与多媒体结合,强调颜色搭配、动画飞扬.

(3)大多数基于Web的系统是内容驱动的,通常,基于Web的系统开发还包括内容提交的开发.而传统的软件开发是功能驱动的或过程驱动的.

(4)用户形式的多样性.大多数基于Web的系统必须迎合具有不同技术和能力的用户,复杂化人机接口、用户界面和信息递交.而传统的软件系统的用户群体是可以圈定在某个范围之内的,可以根据这个群体定制用户界面和人机接口.

(5)大多数基于Web的系统必须在短期内开发完成.所以,Web工程很难应用传统软件工程中使用的形式化方法和测试技术.

(6)Web比通常意义上的软件开发使艺术、技术和科学在更大范围内结合.开发基于Web的系统的人员在技能、知识方面比传统的软件开发所需要的更加广泛,人员类型更多.

3 基于Web应用的开发

  在这一节里,我们将从两个方面来阐述基于Web应用的开发特点.3.1节描述人员的类型和开发团队的结构,3.2节重点描述Web工程过程的特点.

3.1 Web开发团队

  开发大型基于Web的系统需要有一个具有不同技能、知识和能力的人组成的团队.我们可以把参加开发Web应用系统的人员分为七类,分别是Web决策人员、内容提供人员、Web开发人员、Web发布人员、Web支持人员、Web管理人员、最终用户.其结构如图3.1所示.


    图3.1 Web开发团队结构示意图

  这种分类有重叠和交叉的地方,在每一个类别中,根据具体技能或从事工种不同,又可定义不同的子类别(例如:Web开发人员又可以分为系统分析员、程序设计员、美工人员等).一个人可以属于不止一个类别,起不同的作用(例如:最终用户也可以是内容提供人员和Web发布人员).

(1)Web决策人员

  Web决策人员一般是指开发组织的领导层人物,能够对是否开发Web应用系统起决策作用.

(2)内容提供人员

  Web内容提供人员可以是开发组织内部人员,也可以是外部人员或最终用户.例如在合同型的Web应用系统的开发中,最终用户就是典型的内容提供人员.在通常的网站系统中,内容提供人员还可以是网站维护和支持人员、普通的网站浏览人员和稿件作者.

(3)Web开发人员

  Web开发人员包括系统设计人员、程序设计人员、界面设计人员、测试人员等专业技术人员.除最简单的站点外,这类人员要有相当大范围的技能,他们必须熟悉浏览器/服务器(B/S)的关系,用户需求,组织需求和软硬件资源的规格等.

(4)Web发布人员

  Web发布人员的职责是传输内容到一个Web站点上.一个Web发布者需要在数据库交互、HTML操作、B/S功能性、服务器端的应用、CGI及多媒体应用方面有特殊技能.

(5)Web支持人员

  经过适当培训后的Web支持人员能从事一些技术支持工作,其作用包括更新、维护Web应用系统.Web支持人员也需要一些站点发布的技能、数据库操作知识和存取数据的方法.为了保证质量,控制站点超量操作, Web支持人员还需要作Web访问统计.当然,Web支持人员也可以与Web开发人员和管理人员一起完成这个任务.

(6)Web管理员

  Web管理员的作用是进行Web网络管理,涉及Web软硬件操作的技术技能、网络和通讯技能.技术方面包括记录文件版本、数据库操作、安全和存取权限、通过CGI程序或类似的扩展程序进行服务端操作.另外,Web管理员还需要具有与Web性能有关的知识.通常,这个职位称为"站长".

(7)最终用户

  最终用户是Web应用系统的客户,他们使用带有浏览软件的计算机(终端),代表Web应用系统的入门级参与者.虽然处于基本层次的最终用户只需要会操作带有软件的PC机,但还有高级的操作需要导航技能,使用复杂的搜索引擎(Searching Engine)的技能,传送文件的技能等.

3.2 Web工程过程

  Web工程过程活动贯穿Web生命周期,从应用概念的生成到开发、发布、不断的精化和升级系统.为了降低开发基于Web的应用系统的复杂性,我们需要一个描述开发基于Web的应用系统阶段的过程模型.一个过程模型应该帮助开发人员注意基于Web系统的复杂性,降低开发风险,处理变更的可能性,快速发布Web.当项目进行时,能为管理提供反馈.而且,基于Web的开发过程必须是可监督和跟踪的.为此,我们提出了一个Web工程过程模型,其结构如图3.2所示.



图3.2 Web工程过程模型图

(1)Web分析

  基于Web的应用系统的需求分析是很重要的活动,需要一个系统而严密的方法. 根据Web特性和Web应用的特定需求,需要采用更为开放、灵活的需求分析方法.与传统软件过程的分析不同,Web分析阶段不但要分析Web系统本身的功能和性能,还要对可能的用户群体进行分析和调查.

(2)Web设计

  Web设计不但包括功能设计和性能设计,还要包括页面风格设计,包括页面的主色调、页面框架结构、文字颜色搭配、动画和图片的放置等.

有效的Web站点设计需要注意可用性,要把基于Web的系统设计成易于导航,吸引人和有用.现在,比较流行的Web设计方法是以用户为中心的设计[4].

(3) Web开发

  Web开发过程包括后台数据库程序的开发、页面程序的编写和所有网页的制作.在设计阶段决定的Web框架基础上,进行具体的页面设计和制作.把内容提供人员的内容连接到具体的页面.

  一个Web工程过程必须包含多种类型的开发人员,要保证这些人员都能很好地理解自己在项目开发中的作用和职责,当有重叠发生时,应该要从整个项目角度找出解决方法.

(4) Web测试

  在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作.基于Web的应用系统的测试与传统的软件测试不同,不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器的显示是否合适.重要的是,还要从最终用户的角度进行安全性和可用性测试.因此,我们必须为测试和评估复杂的基于Web的系统,研究新的方法和技术.

(5)Web发布

  Web发布阶段主要是把开发完成,经过初步测试的Web应用系统传送到Web站点上,供用户浏览和使用.

(6) Web更新、支持和管理

  与传统的软件系统不一样,Web系统是需要经常更新的.这种更新包括细微的变化到大规模的变化,可以是页面内容的刷新、也可以是整个页面结构框架的更新(例如:整个主页结构的变化、增加或变更一个栏目).正是因为这种改变是经常存在的,所以大型Web应用系统的管理是一项艰巨的任务.对每一种变化,无论大小,都需要以一种合理的,有控制的方式进行处理.我们可把经实践证明了的软件配置管理(SCM)的概念、原理和方法用到Web管理中.

4 结论

  本文在我们多个基于Web的系统开发实践基础上,阐述了Web工程与传统软件工程的区别,分析了基于Web的应用开发的人员组织,提出了一个Web工程过程模型.

  Web工程是一门十分年轻的学科,刚刚引起专家、学者和开发人员的注意,需要进化和成熟,以有效地处理由基于Web系统的开发所提出的新挑战.我们必须研究和评估现有方法和经验,寻找新的方法和技术,开发和管理大规模的基于Web的应用系统.


来源:中国系统分析员

 

版权所有:UML软件工程组织