本文是由两部分组成的系列文章的第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”还涉及项目间的同步,这是一个每两天(或每周)一次的会议,来自每个团队的代表参加这个会议,以便在团队之间同步。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
Gottfried Luef是IBM的一名IT架构师兼顾问,目前在奥地利维也纳工作,为政府领域的各种项目提供Web服务、SOA和J2EE体系结构方面的经验支持。他参与了奥地利政府Web服务标准的制定。Gottfried获得了奥地利维也纳大学(University of Vienna)信息管理博士学位。您可以通过gottfried_luef@at.ibm.com与他联系。
Christoph Steindl是一名高级IT架构师和IBM的Method Exponent。他从2000年开始就职于IBM,参与了多个软件开发和系统集成项目。他擅长的领域包括应用程序开发、软件工程和方法学。他非常了解各种敏捷开发方法,并且经常就LSD、使用Scrum管理敏捷开发项目、使用Scrum支持XP、分布式敏捷开发、测试驱动的开发、实用的用例模型和敏捷开发项目评估发表演讲。他被Johnannes Kepler University(位于奥地利林茨)和University of Applied Sciences(位于奥地利哈根堡)聘为讲师,并且是认证ScrumMaster。他获得了Johnannes Kepler University(位于奥地利林茨)的计算机科学和机械电子学学位以及电子科学博士学位。您可以通过christoph_steindl@at.ibm.com与他联系。
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
DevOps和敏捷相结合 改进软件质量
DevOps实际上是打破了开发人员和运维人员之间的壁垒。在运维团队,你所考虑的方面可能与开发团队不同。但如果我们能更加了解相互的工作,将会更为深入得理解所需的工具和设备。