SOA和敏捷方法基础(一)

 
   | |

导读:阐述了普遍接受的方法学、Crystal、动态系统开发方法和主要研究精益软件开发的内包含的敏捷开发的基本原则。

关键词:SOA 敏捷方法 灵活性 面向服务体系结构

 
正在加载数据...

  本文是由两部分组成的系列文章的第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    
 
 
 
 
 

SOA开发

 
准备开始SOA是一种挑战。我们咨询了著名的Rolta SOA中心,它是跨国咨询公司Rolta和SOA实施支持厂商的一个软件部门。他们给出了在SOA上取得成功的几条技巧……
 
不论你是测试人员、开发人员还是普通人员,可能都熟悉预定航班和航空旅行的麻烦之处。软件测试和开发人员经常成为类似调度和迭代问题的牺牲品……
 
当运行高流量网站的应用程序时,需要按照规模进行时刻通知,开源应用服务器有时可能会比它们的商业同行更好地满足企业的需求。
 
在过去数年的架构模式中,我一直专注于与客户合作,与以网格相结合为基础,更传统的面向服务架构方法来构建应用技术。
 
David Chappell是Oracle副总兼首席SOA技术专家,他集中研究利用SOA环境中的网格的架构模式。他是《企业服务总线》的作者,在软件行业有超过20年……

热门技术手册排行

 

随着开源技术越来越成熟,一个稍有开发经验的人通过学习就可以用开源的产品和技术构建一套可用的系统。对于从事软件开发的人员,尤其是对Java或动态语言相关领域的人来说,“开源”也许是他们最喜爱的单词。但是,很多时候我们需要的不仅仅是一个可用的系统,而是希望这个系统开发更简易、性能更高和扩展性更好等。这确实是一个令人头痛的问题。本指南很多地方都是点到为止,要深入了解相关信息的读者请借助参考资料、网站等自行挖掘。

 

本专题分六部分探讨SOA设计模式,当初设计面向服务架构的一大初衷就是降低服务间耦合度,由此提高服务的灵活性和自由度。

 

业务流程管理(business process management,bpm)不是一个新概念,甚至不是一个新名词。它是从相关的业务流程变革领域,如业务流程改进(bpi)、业务流程重组(bpr)、业务流程革新中发展起来的。流程管理技术也是从早期的工作流管理、eai、流程自动化、流程集成、流程建模、流程优化等技术中发展起来的。

 

TOAGF是一个架构框架,简而言之,TOGAF是一种协助发展,验收,运行,使用,和维护架构的工具。它是基于一个迭代(Iterative)的过程模型,支持最佳实践和一套可重用的现有架构资产。

 

云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。

 

Mashup是一个非常cool的新的应用程序种类。如果你想真正的了解它们,我们需要回过头来看看你现在的计算机,其实它就是一个非常好的帮助你理解mashup的模型。现在开源的操作系统无疑是非常好的apis的集合或应用程序编程接口,帮助开发者去构建其应用程序。计算机本身也是一个很好的为用户提供接口的例子,键盘和鼠标可以被理解为你通过计算机的接口而使用的不同的应用程序。本技术手册为读者提供了一些相关信息,如果需要深入了解mashup,读者可以借助其他参考资源。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录