Web 敏捷开发

摘要:在过去几年中,Web应用程序已经从静态超文本文档演变为复杂的信息系统。这种演变导致需要专门为开发基于Web的系统而设计的方法,重点关注过程中的敏捷性。本文介绍了一种敏捷的Web应用程序开发方法,该方法应用了敏捷建模的概念,采用标准的软件体系结构,并且基于框架,加快了系统分析,设计和实现。

关键词Web工程,敏捷开发,Web应用程序,框架,快速开发,Java。

1.引言 在万维网的初期,其背后的软件基础设施仅支持静态网页,在由Web服务器处理的请求传送给浏览器客户端的文件中组织的纯超文本。从1993年开始,随着CGI(通用网关接口)和Web编程语言(如PHP(94),ASP(95)和Java Servlets(96)/ JSP(99))的出现,这些Web服务器变得更加强大,允许程序员开发软件来运行它们。很快,企业系统,如在线商店(B2C - 企业对消费者),或供应链管理(B2B - 企业对企业),正在为网络开发,利用其远程性质和易用性部署。安装了浏览器的任何连接到Internet的计算机都可以使用基于Web的系统,通常不需要在客户端安装软件。

第一代Web应用程序(WebApps)通常以临时方式开发,不关心软件工程原理。但是,如今要开发越来越复杂的WebApp,采用工程方式势在必行。 Web Engineering(WebE)借用了许多传统的软件工程的基本概念和原理。此外,它还结合了专门的流程模型,适应这种应用特征的软件工程方法,以及一套支持技术[1]。

WebE相对较新,因此是一个广泛而富饶的研究领域。例如,编写WebApps的技术正在迅速发展。有几个框架正在变得可用,特别是如果我们考虑流行的技术,如Java,.NET和PHP。一旦学会了,这些框架可以使开发更快,更高效。这使得它们非常具有吸引力,特别是因为敏捷性对于WebApps的开发非常重要[1]。

在此背景下,EspíritoSanto联邦大学(UFES)的软件工程实验室(LabES)正致力于基于敏捷建模[2]以及许多免费和开源Java框架的存在,快速开发Java WebApps的方法。本文介绍了提出的方法(第2节)以及我们计划未来的工作(第3节)。

2.使用JAVA和框架快速开发WEBAPPS

与传统的软件工程一样,WebE流程从识别业务需求开始,然后是项目规划。接下来,考虑到分析和设计的角度,详细和建模需求。然后使用专门用于Web的工具和方法构建应用程序。最后,系统经过测试并交付给最终用户[1]。在本文提出的方法的背景下,这个通用流程框架的四项活动值得更多关注:
•需求规范:编写定义项目范围并提供用例图及其描述的文档,记录所有系统功能;
•分析:为了更好地理解和描述业务领域,根据需求构建结构和行为模型;
•设计:选择实施平台后,必须定义系统架构。在此处介绍的方法中,给出了标准体系结构。对于该体系结构的每个包,都应该开发一个类图。此外,还应执行用户界面设计活动,考虑特定于Web的方面,例如HTML页面和将当前系统与所使用的框架集成的类;
•实现:使用框架将设计模型转换为源代码,以减少编码工作量。这四个活动构成了一个核心流程框架,应该以迭代的方式应用,允许用户反馈和要求以及系统演变。需求规范和分析不考虑实现平台,因此与传统软件工程中的相应活动非常相似。但是,由于需要灵活性,因此应遵循敏捷建模的原则,其中包括:
•有目的的模型:在创建模型之前,开发人员必须牢记特定的目标;
•使用多个模型:每个模型应该呈现系统的不同方面,并且只应构建为其受众提供价值的模型;
•轻量运行:随着工作的进行,只保留那些能提供长期价值的模型;
•内容比表示更重要:建模应该向目标受众传递信息。
•了解用于创建模型和工具的模型。

另一方面,设计严重依赖于实现平台。在设计期间,必须定义系统架构。这里提出的方法捍卫了WebApps标准软件架构的使用,如图1所示。此外,为了开发详细设计这些软件包所需的模型,我们提倡使用WAE,一种UML的Web应用程序扩展,在[3]中提出。

图1. WebApps的建议标准体系结构。

表示逻辑层包含负责用户界面的类,在本例中为Web页面(View包),以及控制交互的类(Controller包)。控制器类从视图接收用户输入,调用系统函数(应用程序包),并将控件返回到视图以显示结果。

重要的是要强调控制器和应用程序之间的依赖关系是单向的,保持业务逻辑层独立于表示层。使用<>原型标识的依赖关系表示包之间的松散耦合。例如,视图和控制器仅使用域对象(域包)来显示其数据或将它们作为参数传递。

业务逻辑层也由两个包组成:应用程序和域。域类表示在需求分析期间在类图中标识和建模的业务域概念,并在设计期间进行了细化。通常,这些类非常简单,大多数时候仅仅类似于数据结构(因此通常称为“哑对象”)。这些对象中缺少的“智能”设置为应用程序类,它们映射到需求规范阶段中定义为用例的代码。应用程序类通常实现一个或多个用例,其方法实现相应用例描述的各种事件流。通过这种方式,根据用例描述,应用程序类可以从持久性媒体创建,检索,更新和删除域对象。

最后,数据访问逻辑层负责在长期持续时间媒体(例如数据库)中存储持久对象。鉴于现在最常见的情况是使用关系数据库,我们提倡使用对象/关系(O / R)映射框架以及DAO(数据访问对象)设计模式[4]。许多现有的O / R框架不仅为开发人员配置的对象提供透明的持久性,而且还生成数据库模式,使我们无需为数据库逻辑和物理设计构建关系模型。
DAO模式添加了额外的抽象层,将数据访问逻辑层与持久性技术分离,允许开发人员在需要时更改为另一个O / R框架。 DAO类在设计阶段进行建模,只显示可以从数据库中检索对象的查询,因为所有DAO对象自然具有存储和删除对象的能力。

使用依赖注入[5]和面向切面编程(AOP)[6],仍然可以改善之前讨论的设计组件之间的交互。对于前者,对象之间的依赖关系在配置文件中声明,容器负责在需要时实例化对象并自动链接它们的依赖关系。后者允许我们将横切关注点分解为切面,这些切面是在一个地方编写的,而不是遍布源代码。对于这两个概念,都有可用于支持其采用的框架。

最后,关于实施阶段,WebApps开发有很多框架。它们允许开发人员专注于编写业务逻辑代码,而不是编写基础结构代码(有时称为“管道”代码)。在遵循提议的方法的案例研究中,我们正在开发一种现有的合作学习环境的“精简版”,称为AmCorA [7]。在此项目中,正在使用以下框架:
•对于Object / Relational映射框架,选择了Hibernate并与DAO类一起使用来持久化对象;
•控制器组件在WebWork的支持下实现,WebWork还提供其他功能,用于表单字段的验证,自动类型转换,国际化等;
•在视图组件中,选择FreeMarker从模板构建Web页面。使用它Web设计人员可以与程序员并行工作,每个程序员都专注于他们的专业知识;
•同样在视图组件中,使用用于装饰网页的框架SiteMesh,以便在所有页面中保持一致的布局;
•覆盖所有层,Spring 框架执行依赖注入以集成不同的包,并提供其他服务,例如使用AOP的自动事务管理;
•集成到Spring,框架Acegi Security为控制器和应用程序包的组件执行身份验证和授权服务。
上面的框架构成了框架的许多可能组合之一,因为对于每个角色,有多个框架可用。我们打算将建议的方法应用于框架的各种组合,以防止它变得过于适合这种框架。

3.结论和未来的工作

从使用所提出的方法进行的案例研究中,我们可以得出结论,使用框架为WebApps开发创建敏捷软件过程是有希望的。为这一研究领域的未来工作而制定的指令包括:
•开发许多Web应用程序以改进提议的方法;
•使用若干框架并评估其对拟议方法的影响,在某些方面对其进行概括或为具体框架提出具体建议;
•特别是,我们计划在新版本中研究和评估Java EE平台(JSF和EJB)的Java标准,这些标准将很快正式发布并且已经可用于测试。

本文为翻译,原文:

作者:Vítor Estêvão Silva Souza. Ricardo de Almeida Falbo

国籍:巴西

出处: An Agile Approach for Web Systems Engineering

  https://dl.acm.org/citation.cfm?id=1114237

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值