BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

文章:SOA和敏捷:是朋友?还是敌人?

| 作者 Amr Elssamadisy 关注 0 他的粉丝 ,译者 乔梁 关注 7 他的粉丝 发布于 2007年4月22日. 估计阅读时间: 3 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

SOA的目标是以服务作为构建企业应用的“积木块”,使整个企业敏捷起来,而敏捷软件开发则是通过引入一些最佳实践来增加沟通与反馈,以达到同样的目的。InfoQ贴出这篇文章的目的是归纳在这一主题上的观点,以便社区进一步交流与沟通,即SOA和敏捷:是朋友?还是敌人?

这篇文章给出了对上述两种技术正、反两方面的观点,读者们已经开始讨论,并表述各自的观点。

该文建议说,尽管SOA是一种架构,而敏捷是一种开发方法论,但它们并非是完全正交的。

一方面,敏捷方法(例如XP)直接关注设计,不是特别同意预先做大量设计(BDUF)的观点。另一方面,大多数SOA团队主要是围绕构建一系列服务而组成的功能性团队。SOA本质上鼓励有特性的团队结构和团队间的沟通方式,而这两点又都属于方法论的范畴。

根据这种评判原则,该文提出了它们的主要重合点——即二者都关注“使业务敏捷起来”,随后深入讨论并提出了这两种实现方法的三个主要交叉点:

  • SOA鼓励架构设计在前,而敏捷对这种称为“BDUF”的方法持相反观点。
  • SOA鼓励按功能线索来划分团队,而敏捷倾向于以交叉功能式组建团队。
  • SOA中,服务一旦建立起来,SOA就不再对服务的变化做出相关的反馈,而敏捷则强调及时反馈,无论是技术层面,还是人的层面。
  • 关于这个主题已经引起了广泛的讨论。主要的讨论思路已经在这个贴子中提及。所以接下来的引证直接来源于这一主线。至今,大多评论者都未发现SOA和敏捷之间的交叉,当然,有一部分人同时支持这两种方法。

    Frank Grossman认为,在企业中,根据SOA的本性,很多的敏捷实践(如代码共享)可能被改变:

    代码共享制也上升了一个层面。在项目层面的敏捷实践中,整体团队拥有所有的代码。而SOA层面的敏捷实践中,设计规约的交叉功能团队拥有XML软件层所有权。事实上,可以认为它是SOA所有者(就像是Scrum中的产品所有者),代表整个企业的目标。这个SOA所有者负责维护SOA列表,并通过XML软件层的一系列的迭代,来指导一个或多个“XML开发团队”。这个SOA列表包括已划分了优先级且能满足市场要求的业务需求。

    而Howard Deiner 认为,不应该草率地分解SOA:

    根据我的经验,一次就正确地分解一个SOA是非常困难的。在一个商业性企业中,存在很多不确定因素。在那样的环境下,大多数情况是在最终把业务流程实现成一组服务之后,却发现这些服务并不是我们真正想要的基本业务组件。所以,如果我们希望SOA一开始就成功,就必须理解并承认使用敏捷技术的重要性,敏捷技术使我们可以设计、构建、测试并验证每个SOA组件的可用性。当然,这也需要一点BDUF,但边界可能要宽松一些,以便在后续的迭代中做架构刺探(architectural spike)时,各组件边界间的空隙足以将代码形成解决方案。

    这是一个目前关于软件开发社区中两大阵营交锋的有趣话题。

    阅读全文并参与评论:SOA and Agile: 是朋友?还是敌人?

    评价本文

    专业度
    风格

    您好,朋友!

    您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

    获得来自InfoQ的更多体验。

    告诉我们您的想法

    允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

    当有人回复此评论时请E-mail通知我
    社区评论

    允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

    当有人回复此评论时请E-mail通知我

    允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

    当有人回复此评论时请E-mail通知我

    讨论

    登陆InfoQ,与你最关心的话题互动。


    找回密码....

    Follow

    关注你最喜爱的话题和作者

    快速浏览网站内你所感兴趣话题的精选内容。

    Like

    内容自由定制

    选择想要阅读的主题和喜爱的作者定制自己的新闻源。

    Notifications

    获取更新

    设置通知机制以获取内容更新对您而言是否重要

    BT