敏捷开发 水深无声 2022-04-10 07:19 392阅读 0赞 # **Web 敏捷开发** # VítorEstêvãoSilvaSouza,EspíritoSantoAv联邦大学计算机科学系。 Fernando Ferrari,S / N Goiabeiras - Vitória,ES +55(27)3335-2134 vitorsouza@gmail.com Ricardo de Almeida Falbo计算机科学系,EspíritoSantoAv。 Fernando Ferrari,S / N Goiabeiras - Vitória,ES +55(27)3335-2167 falbo@inf.ufes.br **摘要:**在过去几年中,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\]中提出。 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDI1MDcw_size_16_color_FFFFFF_t_70][] 图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 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NDI1MDcw_size_16_color_FFFFFF_t_70]: /images/20220402/a564c011bb4d4df29c52601dd3844066.png
相关 敏捷开发 为什么敏捷可以拥抱变化? ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNz 短命女/ 2022年12月11日 08:00/ 0 赞/ 26 阅读
相关 敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行 Bertha 。/ 2022年07月13日 03:41/ 0 赞/ 202 阅读
相关 敏捷开发 > [敏捷软件开发宣言][Link 1] ![这里写图片描述][SouthEast] -------------------- > 知乎问题[:敏捷开发需要写哪些文档?] ゝ一纸荒年。/ 2022年06月16日 11:06/ 0 赞/ 330 阅读
相关 敏捷开发 背景 > 过去我们用合同死死地固定住需求,然后乙方千方百计的只按照合同办事,没有发挥更大的创造力,而甲方在固定的成本面前,不想多花一分钱,却不停的要求新功能。那么甲乙双方 太过爱你忘了你带给我的痛/ 2022年05月30日 08:11/ 0 赞/ 332 阅读
相关 敏捷开发 以下文章转载自知乎,暗灭-京华九月秋近寒,浮沉半生影长单. ![1240][] [暗灭][Link 1] 京华九月秋近寒,浮沉半生影长单 366 人赞同了该回答 旧城等待,/ 2022年05月27日 04:24/ 0 赞/ 287 阅读
相关 敏捷开发 Agile Process (敏捷的开发流程) 是一种软件开发流程的泛称,几项共通的特性 : 客户与开发人员形成密切合作的团队,因为客户无法于初期定义完整的规格,而开发 电玩女神/ 2022年05月08日 01:22/ 0 赞/ 326 阅读
相关 敏捷开发 Web 敏捷开发 VítorEstêvãoSilvaSouza,EspíritoSantoAv联邦大学计算机科学系。 Fernando Ferrari,S / N Goi 水深无声/ 2022年04月10日 07:19/ 0 赞/ 393 阅读
相关 敏捷开发 在讲敏捷开发之前,我们先来看一下,开发模式都有哪些。开发模式包括:瀑布式开发(也叫线性开发模式)、快速原型开发、螺旋开发、迭代式开发(也叫迭代增量式开发)以及敏捷开发。那接下来 不念不忘少年蓝@/ 2022年01月08日 01:07/ 0 赞/ 371 阅读
相关 敏捷开发 下面放一些link吧,自己有见解的会写出来。 [https://blog.csdn.net/iteye\_2638/article/details/82213904][htt 快来打我*/ 2021年12月21日 04:45/ 0 赞/ 421 阅读
还没有评论,来说两句吧...