TechTarget中国网站推荐

SOA和敏捷方法基础(一)

2008-10-6  选择字号:  | |
打印本文章
正在加载数据...

  本文是由两部分组成的系列文章的第1部分,阐述了普遍接受的方法学(例如Scrum、极限编程(Extreme Programming,XP)、Crystal、动态系统开发方法(Dynamic Systems Development Method,DSDM)和主要研究精益软件开发(Lean Software Development,LSD)的其他方法学)内包含的敏捷开发的基本原则。当今,必须提高业务的灵活性和速度,以应对不断变化的客户需求、市场机会和外部竞争对手的威胁。为使这些业务得以成功,可以采用面向服务的体系结构(SOA)的开发方法来设计以适应性(对变化和需求做出响应的能力)为目标的IT系统。本系列的第2部分详细描述了它们用于开发SOA的适应性。

  引言

  面向服务的体系结构(SOA)由Mark Colan等受人尊敬的思想领袖定义和阐述(请参阅“Service-Oriented Architecture expands the vision of Web services, Part 1”),作为普遍接受的用于设计可适应的、企业级IT系统的新兴风格,它已经得到了很大的发展。虽然目标十分明确,但实现目标的方法却并非如此,因为还没有受到广泛接受的SOA方法学。不过,在这方面还是进行了一些研究(请参见SOA的方法学)的。

  负责设计SOA的每个人都会面对两个主要挑战:1)如何设计一个系统来很好地适应业务流程、业务目标和IT体系结构,2)如何构建一个能对将来的变化做出响应的体系结构?第二个挑战与敏捷性相关,通常在敏捷软件开发方法的背景下进行讨论。在本文中,我们将介绍如何将此方法的思想扩展到SOA的设计。我们先回顾一些最常见的敏捷开发方法,然后再研究“精益软件开发”(LSD)的原则。最后,我们讨论在构建SOA的过程中对LSD的初步分析。

  SOA入门

  什么是SOA?

  在构建IT体系结构(特别是企业级体系结构)时,我们的目标始终是:支持业务流程并对业务变化做出响应。在最近几年中,出现了一些构建系统体系结构的新方法,这些方法主要围绕功能单元(称为服务)来构建复杂的系统。

  最新的理解是,服务包含4个主要方面:

  ·提供
  ·使用
  ·说明
  ·中介

  Web服务也对以上这几个方面提供基于系统和标准的支持。因此,Web服务具有无与伦比的敏捷性这一优点。例如,使用Web服务基础设施可以在运行时更改服务提供者,而不影响使用者。

  某个系统本身要被称为基于SOA的系统,应具备以下特性:

  ·业务流程映射到软件服务;因此,业务可通过软件进行跟踪。
  ·存在一种基础结构,支持上述服务的4个不同方面。这样服务级别就具有高度的敏捷性。
  ·服务是监视和管理单元。因此,一个人可以跟踪业务流程的操作属性和问题。

  SOA应用程序

  图1从应用程序角度展示了企业级SOA所包含的元素。业务流程 由用户界面应用程序 和服务应用程序 进行部分和完全支持。业务流程中的一个步骤或者通过人工执行,或者得到用户界面应用程序的支持。用户界面应用程序实现了许多宏工作流,而且它们还使用实现业务功能的服务。

  在服务编排层,组合服务是通过编排语言(例如业务流程执行语言(Business Process Execution Language,BPEL))定义的。组合服务的编排通过基本服务 定义其流程和组成。编排层应由支持图形规范的编排工具提供支持,例如IBM WebSphere? Business Integration Modeler和IBM Rational? Application Developer。

  基本服务(由服务编排层使用,也由用户界面应用程序使用)通过服务应用程序实现。而服务实现又可以调用其他服务,这些服务通常来自另外的服务应用程序。

  图1。 SOA的元素
 
  SOA的方法学

  构建一个合理的SOA应采用何种开发方法?从前面的部分可以看出,有业务流程、应用程序和服务。显然,对服务建模是此类方法必须支持的主要任务。另一个重要的方面是确保业务流程和服务之间的链接。

  文章“Elements of Service-Oriented Analysis and Design”说明了现有的模型(例如面向对象的分析和设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构框架和业务流程建模技术)对SOA设计的作用。本文还指出,您需要将其他方法元素用于SOA,例如用于服务标识和聚合的方法和技术、业务跟踪能力、现有资产的集成和重用。

  在另一篇IBM developerWorks文章“Service-oriented modeling and architecture”中描述了一种方法,回答了上述许多问题。本文主要介绍服务的建模,它是在域分解、现有系统分析和目标服务建模之类的技术支持下实现的。

  引用的这两篇文章提出了许多问题,我们仍需要回答这些问题——例如,SOA控制问题。我们要提出的另一个问题是:在SOA开发中应采用哪些规则和实践来确保服务模型能对将来的变化做出响应?在这里,我们可以求助于各种敏捷软件开发方法。

  敏捷软件开发

  敏捷软件开发是自上世纪90年代Kent Beck提出极限编程(XP)时开始兴起的,这种编程方法用一组价值标准、原则和实践来规划、编码、设计和测试软件。(有关对XP的介绍,请参见Extreme Programming: A gentle introduction。)

  所有敏捷软件开发方法都具有以下几个共同价值标准,例如

  ·频繁检查和改写
  ·频繁交付
  ·协作和密切沟通
  ·深思熟虑的改进
  ·突出需求(递增)、技术和团队能力
  ·授权和自我组织
  ·基于事实而非假象进行处理
  ·勇气和尊重

  从这些价值标准可以看出,现在使用的各种敏捷方法都注重不同的实践。

  2001年2月定义了Agile Manifesto,它在流程和工具的基础上评价个体和交互操作,在综合性文档的基础上使用软件,在合共协商的基础上进行客户合作,并在遵循计划的基础上对变更做出响应。它是现今使用的所有敏捷方法的基础。

  为了使本文的阐述更加清楚,我们简要介绍了最常用的敏捷方法,因为在开发SOA时它们中的许多都是非常有用的。我们知道,SOA不仅与软件开发有关,而且还与业务和IT体系结构有关。因此,如果我们了解软件开发实践,则我们必须始终评估它们是否适合SOA。在本系列文章的第2部分中完成此评估。

  Scrum

  Scrum似乎是很简单的,但仍有一些实践会对工作体验产生深远的影响,并获得重要的适应性和敏捷性。在这些方法中,Scrum与众不同的特点是对自我指导团队、每日团队评估和避免说明性流程进行了极大的提升。Scrum的一些关键实践包括:

  ·自我指导和自我组织团队
  ·每日就特殊问题(您做了什么、您将做什么和您遇到哪些问题)开站立会议
  ·通常采用30天的日历循环
  ·在每个循环的开始,制订客户驱动的适应计划
  ·向参与者演示功能(在每个循环结束时)

  对于企业级活动,了解和管理项目间的依赖项非常重要。在Scrum中使用“Global Backlog”就可以很好地做到这一点,Global Backlog是对用户有价值的功能和非功能需求的企业视图。Global Backlog在全局区分优先级。每个项目从Global Backlog获得项目范围内的最重要的部分。“Scrum of Scrums”还涉及项目间的同步,这是一个每两天(或每周)一次的会议,来自每个团队的代表参加这个会议,以便在团队之间同步。

原文出处:http://www.ibm.com/developerworks/cn/webservices/ws-agile1/
来源:IBM    作者:P?l Krogdahl,Gottfried Luef,Christoph Steindl    
多年来,企业信息化建设大都关注上层各类应用系统的建设、推广和应用,希望以此来提升和改进业务部门的工作状态,而系统底层的基础架构却常常被忽视……
前段时间,曾进行过一次关于描述需求的连续体的Rational管理内部讨论,涉及的范围包括从描述业务策略的需求到人员或计算机系统在执行任务时的操作……
SOA和Web服务安全威胁是企业IT管理人员最关心的,根据该公司公布的调查结果,这周在拉斯维加斯宣布了一项新的CA联邦管理和增强与CA安全管理的SOA……
信息系统综合集成的水平反映了一个企业、一个部门,乃至整个国家信息化建设的水平。面对复杂多变的网络世界,中间件已经成为信息系统综合集成的利器……
在调用JSP文件以后,JSP页面上选择的参数被传递给Caller组件的Java实现(请参见清单4)。该实现将根据参数发出特定的异步调用……
SOA能够优化业务需求与IT的一致性,能够将业务流程活动从服务实现中分离出来,还能够降低操作成本。只有在不固定供应商的情况下才能真正实现这些功能,此时面向SOA……
面向服务的架构(SOA)是一种基于可以重用的服务的,新的开发应用的架构体系. 近年来, 企业界对于SOA的需求越来越急切. 为了满足这样的需求, 一系列的SOA基础架构产品被推出. 主要的厂商如Oracle, BEA System, IBM都提供了SOA平台产品. 在一个包含各类应用的复杂的IT系统中, 要使用适配器并且在一个符合业务需求的流程中将各类应用串连在一起是一个非常困难的事情, 但是现在的SOA平台将困难转变成了容易。
Web 2.0是2003年之后互联网的热门概念之一,不过对什么是Web2.0并没有很严格的定义。一般来说Web 2.0是相对Web1.0的新的一类互联网应用的统称。
Ruby on Rails, 也称RoR或简称Rails, 是一个使用Ruby语言写的开源网络应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
最新更新
专家答疑
技巧
Jason Bloomberg
企业是否应该意识到,云计算有许多积极因素,是否也有负面影响呢?重要的是要记住,云计算仍然非常新,而且在许多方面比vaporware更现实……
Ron Schmelzer,Jason Bloomberg
我们正在进入多元化的银行和金融服务,我们处理客户关系管理CRM,BI,遗产系统,产品J2EE和.NET和其他异构平台。如果我们想要转移到一个共同的平台,为什么要选择SOA……
Ed Tittel
在您最近的博客中提到,在XML.com中有你喜欢的XML内容。关于XML的信息还可通过什么途径可以得到?请与我们分享更多的来源……