成功的面向服务架构SOA开发的方法(一)

 
   | |

导读:面向服务架构SOA和敏捷开发都旨在用于可适应的企业IT系统。在关于SOA开发和敏捷方法的主题的CBDI说明中提到,敏捷开发和SOA,如同油和水一样,不能溶合在一起。

关键词:面向服务架构 SOA 敏捷开发 IT系统 CBDI

 
正在加载数据...

  本文探讨了各种方法,例如Scrum、极限编程(Extreme Programming,XP)、Crystal、动态系统开发方法(Dynamic Systems Development Method,DSDM)等等,它们专注于精益软件开发(Lean Software Development,LSD)的概念。在这个由两部分组成的关于敏捷软件开发的系列中,作者详细地评估了它们对于开发面向服务的体系结构(Service-Oriented Architecture,SOA)的适宜性。

  引言

  正如我们在本系列的第1部分中所阐释的,面向服务的体系结构(SOA)和敏捷开发两个概念都旨在用于可适应的企业IT系统。然而,在关于SOA开发和敏捷方法的主题的CBDI说明中提到,敏捷开发和SOA,就如同油和水一样,不能溶合在一起。所以,如果头脑中已经有了这样的想法,您还真的可以像SOA那样来将敏捷开发原则扩展到多应用程序环境中吗?在本系列的这一部分中,我们提供了证据来证明答案是“肯定的”。

  SOA和精益软件开发:Fit-Gap分析

  通过依次介绍每个精益软件开发原则,我们研究如何使用它们来使SOA的开发从中受益。除此之外,我们还讨论了它们在使用敏捷方法的环境中的好处。下表给出了LSD原则与其在敏捷方法的环境中带给SOA开发和交付的基本好处之间的初始高级映射。

  表1. LSD与SOA原则的初始映射

  让我们进一步详细地讨论上面的表1中定义的映射:

  原则1:消除浪费

  宽度优先服务模型开发

  为了理解什么是重要的以及什么是多余的,使用宽度优先(breadth-first)取代深度优先(depth-first)是明智的,先取得总体认识,然后再深入细节。当开发企业级SOA时,您应该避免以遗漏关键部分为代价来预先构建系统无关紧要的部分的详细分析文档目录。当然,很难预知未来和灵活性的需求;因此,快速反馈是必要的。

  一些来自面向服务的建模和体系结构方法(Service-Oriented Modeling and Architecture Method,SOMA)的技术很好地支持“宽度优先”方法,即:自顶向下(top-down)域分解、自底向上(bottom-up)现有系统分析以及目标-服务建模(请参阅文章“Service-oriented modeling and architecture”)。在经过总体观察以后,决定在服务组合(Service Portfolio)中包含哪些服务。只有到这个时候,您才能详细地定义服务。

  值流映射

  映射值流是开始发现流程中的浪费的一种好方法。它把重点放在用户的产品及其价值上,而不是组织、资产、技术、流程和人员上。利用值流映射的结果,您可以将精力投入到给组织带来最多价值的流程和服务上。挑选最大的机会去增加流动和增值时间(value-added time)。您可以利用这项技术来分析业务流程(将由SOA支持)或者软件开发流程(用于开发SOA)。

  原则2:加强学习

  反馈

  服务的“用户”是应用程序。预先设计一个用于所有应用程序的最佳重用的服务接口是不可能的。实际上,您是从初始的接口和演示程序开始,然后部署服务,最后从使用的应用程序获得反馈。一个小先遣队开发了一个简单跨系统的试验应用程序:

  ·采用一个业务流程
  ·分析和设计它的服务
  ·原型化用户接口
  ·与后端集成
  ·跨整个流程

  如果可能,试验应用程序应该变成产品。当这种跨系统的应用程序在生产中得到证实时,您就知道了您有了可工作的应用程序。到了那时,多个小组就可以使用一样的方法并且每次进行多项工作。

  与采用瀑布方式开发整个SOA相比,依赖于快速交付和频繁反馈甚至更为重要,这是因为您不可能第一次就做出正确的设计。敏捷方法推动了快速反馈和热点(Hot Spot)的出现,这里需要灵活性。工程实践(例如测试优先开发和持续集成)减少了开发人员获得反馈的时间。增量功能的频繁交付支持来自客户或用户的直接反馈。

  同步

  敏捷方法至少使项目间的依赖关系可见,并且还有一些处理它们的工具(请参阅本系列第1部分中的Scrum部分)。项目间频繁同步的想法在服务的实现阶段特别有用,这里可能发生服务范围内的改变,因为正是在这一阶段详细地分析服务。

  原则3:尽可能晚地决定

  不确定服务接口的细节

  在像SOA这样企业级的约定中,似乎最好是在非常详细的层次上设计服务接口,让不同的项目来实现它们。这种方法的优点好像是服务应用程序可以独自工作,而不需要长期地与其他项目同步。遗憾的是,这并不能正常工作,因为您无法预先确定所有的细节。面对不确定性,这样做的结果就是导致浪费(以错误的细节的方式)。长期进行来实现错误细节的项目将难以使它们的代码解构变得简单。这会产生一个未达到最佳状态、却又固定的服务模型。

  尽可能晚地决定意味着,在有证据可以清楚地判断服务应该是什么样子之前,不确定服务接口的细节,而不是假装无所不知。这就促使开发小组与公司的其他部门经常性地保持步调一致,而且它还产生更好的服务模型。


面向服务的敏捷性
 成功的面向服务架构SOA开发的方法(二)
 成功的面向服务架构SOA开发的方法(一)
 敏捷式软件的特征
 敏捷SOA成功秘诀之IT运营和监测
 名师讲堂之Kent Beck——响应式设计,现接受报名
 敏捷开发的关键问题
 距离敏捷中国大会2009还有两周,报名从速!
 另一种层面的敏捷开发
 如何解决敏捷开发中的用人不当问题
 忘记成熟度模型 敏捷模型到来(一)
 忘记成熟度模型 敏捷模型到来(二)
 忘记成熟度模型 敏捷模型到来(三)
 敏捷中国大会2009顺利闭幕 大师云集精彩纷呈
 敏捷开发中的架构设计初探
 企业架构成熟度模型:四大阶段不能跨越
 如何处理敏捷开发中的迭代问题(上)
 如何处理敏捷开发中的迭代问题(下)

原文出处:http://www.ibm.com/developerworks/cn/webservices/ws-agile2.html
 
来源:IBM    作者:Gottfried Luef,Christoph Steindl    
 
 
 
 
 

SOA开发

 
随着许多备受瞩目的分布式系统继续扩大,管理者必须确保开发人员重新思考设计应用程序的方法。这并不容易。这不像程序员在学校所学的。
 
SpringSource CTO Adrian Coyler最近向Eclipse.org提交一份申请,将dm Server开发转向Eclipse,今后称为Virgo项目。
 
我们进一步看一下一些敏捷建模演化的启示,简单地追溯一下数据一致性编程、数据建模和UML的历史……
 
在软件开发中,敏捷建模方法防止了目标的偏离并且使实践者思路清晰,随时准备好进入到下一步工作步骤。在日常工作中引进敏捷建模的精益方法……
 
这是典型的性能/压力测试在架构上期望业务映射样子和模拟负载的演练。在模拟期间,性能/压力测试团队……

热门技术手册排行

 

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

 

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

 

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

 

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

 

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

 

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

查看更多
 
 

登录TechTarget中国

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