让敏捷方法和企业架构和谐共舞

2007 年 9 月 06 日

一份来自 Cutter Consortium 的报告向我们提出了这样一个问题:“敏捷方法和企业架构兼容吗?”并且也给出了这样一个答案:“是的,但需要付出努力”。该报告的作者推荐运用特殊技巧以允许敏捷方法和企业架构互相受益。此外,他们的观察结果、分析和建议也直接是适用于敏捷方法和“面向服务的架构 SOA”之间的结合。

企业架构 (EA) 和敏捷方法 (AM) 拥有共同的目标——交付能够跟业务需要对齐的软件,并响应对这些业务需要无可避免的变更。然而,EA 和 AM 在达成这个目标时却采用了截然不同的方式。在报告中,对 EA 和 AM 定义如下:

EA 处理如下的企业级问题: - 通过提供一个整体的业务过程蓝图将业务策略连接到 IT 系统,蓝图可以映射到架构模式、核心服务和应用兼容性等方面。

  • 通过维护一个当前的数据模式 (schemas)、过程流和服务定义等内容的详细目录来改进贯穿于整个企业的一致性
  • 通过减少系统间的冗余以及标识可以统一的组件和系统来改进操作效率
  • 确保灵活的 IT 能力,能够响应技术厂商以及新的或者增强性的业务流程自动化的变化
  • 通过维护 IT 组合(portfolio)、当前和目标架构以及迁移路线图来支持项目成本化和优先级划分
  • 为正在进行中的操作和系统开发提供一个稳定的、可信赖的基础设施平台和公用服务

敏捷方法关注于以下观念:

  • 改进效率:关注于近期的问题,仅开发能够满足当前需要的的部分,允许以后形成设计
  • 改进项目可见的可管理性:关注于允许任务的完成能被有效评估的短期的、迭代的开发周期
  • 通过提供一个完整的过程,关注于广泛的自动化测试、尽可能早并且经常解决集成问题、允许多个(缺少丰富经验的)开发人员在共同的代码上开展工作以及从最终用户处得到持续反馈等方式来改进质量。
  • 通过建立在持续重构过程上的集成来改进(内部质量的)可维护性
  • 改进处理变更的能力:它是一个需求变更、一个澄清、一个新的需要优先处理的特性?通过综合客户反馈计划迭代内容。
  • 通过隐式知识的使用、共享的团队空间以及关注问题的小的组成部分来改进交流效果。

我们会先从 EA 的视角来检验 AM 然后反过来检验以分析 EA 和 AM 之间的鸿沟。从 EA 的视角来看:

  • 敏捷迭代提出的使用一到六个周的时间盒来构建一个可运行的部分系统的要求,很少得到采纳。当在一个迭代发生时尝试 EA 时,常常会割裂时间盒——在这个周期结束时并没有得到可工作的软件。
  • 在一个典型的敏捷项目中,当系统的设计激增时,采用演进的设计、有机的增量的方式风险很大,可能会导致冗余和不同应用间的不兼容性。EA 组希望引领设计和推荐的公用基础设施组件、数据库模式定义等……
  • 敏捷非常依赖于可执行的的工件,例如:编写好的测试(不管是单元测试还是系统测试)。EA 的工件不是可以测试的。它们限制了项目的影响范围,因为他们没有反馈环——当没有遵照设计时,不会给出警告。
  • 敏捷提倡的客户作为团队成员是不能被承认的。EA 组中不会存在任何一个客户,但是它有一个从 IT 到运营到开发团队到最终用户的间接的大型的广泛客户群。

从 AM 的视角看,EA 也不是非常有意义的:

  • EA 关注于对齐 IT 系统和业务策略。一个映射了从现在到将来系统的计划被开发出来,然后落到一个独立的项目中。使用了 AM 的团队可能会使用此类文档中的信息,但当这些文档到达团队时它们已经失去了上下文环境,会变得难以理解。而且,文档是可测试的。不能接触现实状况,这也是 EA 团队被视作“象牙塔”架构的一个主要原因。
  • 为了减少冗余并增进一致性,EA 组会针对如何构建应用而产出参考架构、推荐框架、发布指南。AM 团队将这些决定看做是单个项目的领域,不会由未在”前线“上的人来口述。
  • EA 也关注于企业内不同应用的集成。同样,EA 组推荐使用参考架构和框架的特定方案。许多的 AM 团队任务这些决定的是不成熟的甚至是毫无根据的。
  • 最后,EA 方法通过考虑了将来的设计(例如建立抽象来轻松应变)的方式来应对变更。AM 团队将此方式视为是不成熟的,认为是典型的庞大的预先设计( BDUF )。实践 AM 的团队宁愿迟些使用抽象,通过重构并依赖于自动化测试来允许变更。

报告的标题确实说:“是的,但需要付出努力”,所以仍然还有希望。但需要 EA 组和 AM 项目认识到对方有价值的贡献,并在他们的工作中做出适应性调整。EA 组和 AM 团队可以相互得到以下收益:

  • 一个 AM 团队应该认识到虽然参考架构和框架可能是一个项目级别的 BDUF,但在企业中需要重复做,而且耗费好多。如果已经建立好了就没有理由再发明轮子了。

  • EA 团队应该保证信息在正确的范围内以正确的方式可提供。例如,创建的工件应该努力与每个项目创建的工件相关。

  • EA 组应该考虑将客户和他们的指南视为是一类需求。

  • 每个 AM 项目的架构应该与架构组进行联络

  • 努力将 AM 项目范围内的重构变成是企业级的。

  • 应该建立可测试的 EA 工具

    • 标准的基础设施和平台配置
    • 数据模式
    • 服务
    • 参考架构
    • 业务流程模型
  • EA 应该确保企业级的“上下文”应该是随时间流逝而分段的,以解决 AM 团队关于 BDUF 的质疑。

  • EA 应该与项目的生命周期有关。

  • 信息流应该是双向通道,当 AM 团队在参考架构或者框架的瑕疵或者不足时,他们需要一种执行变更的方式,这个变更也应该有方式返回到 EA 组。例如,EA 的过程应该支持企业服务的增强。

  • AM 团队可以尽可能去影响企业架构

  • 企业内的测试环境应该增进一致性、重用并启用集成。AM 团队是编写测试的专家,他们应该进行均衡。EA 工件应该尽可能变得可执行。

InfoQ 同报告的两位作者(Michael Rosen 和 Jim Watson)就该专题的内容以及导致他们给出的推荐方案的客户经验等方面进行了交谈。Jim Watson 描述了最场景的场景:

一个曾经使用过其中一种但因为缺乏对另一个的使用而失败了的项目会最大程度拥有使用两者的经验。例如,一个重要的文档处理系统可以使用最好的 AM 实践开发出来,但不能协调好系统的 EA 需要如跨越需求、接口、和操作性问题等。作为选择,一个采用瀑布方式的项目会准备妥当它的所有的企业架构,但是却不能向及早的向客户展现它的价值,或者不能够通过有意义的迭代来解决风险问题。所以,这些 paper 都是来自于经验的,例如:项目是如何因为忽略了其他可行的规程才陷入这种境地的,有效的处理方式是什么等。 一个意义更加深远的案例可能是在项目启动时均衡 EA 和 AM。 然而,这其实非常难,很少发生,主要是因为组织性问题,以及谁在过程的哪个部分被涉及的角度。你会看到很多的失败,例如架构师跟客户(更惨的是在根本没有客户)但没有开发团队参与的情况下整理需求,然后开发团队脱离开架构师进行接管。

Jim Watson 和 Michael Rosen 告诉我们,关于这个专题的范围,SOA 可以被看作是 EA 的一个实例。因此这里所有相关的问题和解决方案适用于采用了 SOA 并存在 AM 团队的组织 (无需惊讶,这与 InfoQ 上的文章 SOA 和敏捷:是朋友?还是敌人?相吻合)

EA 和 AM 的交互并不依赖于 SOA,但值得注意的是 SOA 提供了相互的兴趣和问题以允许进程一起使用 EA 和 AM。例如,想在一个 SOA 主导的项目定义真正有用的业务级别的服务可能具有难度,一个缺乏 AM 开发实践的由 EA 主导的 SOA 会产生许多的 SOA shelfware,因为它很难实现或者仅仅定义出不是真正需要的接口。

一个推荐的方案是, 对一个 AM 团队而言它被当作架构的一个包含部分,作为每个团队的成员与 EA 组进行联络。当被要求阐明推荐 Architect Reloadus 或是 Architect Oryzus(其定义见 Martin Fowler 的 Who Needs an Architect? )中的哪种架构类型时,Michael Rosen 建议哪种也不采用。在大的组织中会拥有重要的 EA 组,一个典型的 IT 组可能拥有 2000 个员工,500 个架构性的重大项目,在 EA 组中只有 70 个架构师。没有足够的架构时可供应因此 Architect Oryzus 很难应用。Architect Reloadus 同样不能得到应用,因为它们没有可实施的环境。有效的架构师的使用方式是作为一个单独的 AM 团队的咨询顾问,这样,一个来自 EA 组的架构师就可以发挥效用而不是嵌入到团队中。

所以,拥有 EA 组和 AM 团队的组织不必要互相容忍,虽然他们拥有共同的目标,他们的缺省操作模式是不与其它成对的并且(成对使用通常会)产生问题。因此这些实践等对达成企业的战略目标和交付战术性的软件项目非常有用。

最后,完整的报告可以从 http://www.cutter.com/events/multimedia/agilemethods.html 处下载,在页面的底部还包括推广报告所用的代码。

查看英文原文: Making Agile Methods and Enterprise Architecture Play Nice - - - - - -

译者简介:孙向晖,儿子小名“豆豆”,常被人称为“豆豆他爹”。1998 年开始步入 IT 行业,现任浪潮软件质保中心副主任。专注于研究和实践 MDA/UP/UML/SCM 等相关技术在团队中的大规模应用,对产品化的软件项目管理、需求管理和配置管理略有心得。他的博客为 http://blog.csdn.net/xiaosun/ 。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007 年 9 月 06 日 00:48425

评论

发布
暂无评论
  • 用架构管理敏捷

    在管理中,在与敏捷思想一起使用时,架构如何才能发挥关键作用呢?在阿姆斯特丹敏捷管理大会上,Jan van Santbrink就此问题作了演讲。InfoQ采访了Jan,内容涉及为什么敏捷和架构需要协同、架构如何为敏捷决策提供支持以及做架构对开发的好处。

  • SOA= 集成?

    SOA的存在已经有些年头了,但就“SOA到底是什么”这个问题而言,在SOA从业者中依旧未形成一个统一意见。最近在Gartner AADI峰会上由Yefim Natis发表的演讲引发了一场关于SOA/集成之间关系/区别的无尽争论。

  • 77 | 软件工程篇:回顾与总结

    我们首先需要尊重团队协同的科学,在尊重的基础上去探索新的更高效的协同方法论。

    2020 年 1 月 28 日

  • 你在 SOA 实现中应用筒仓分析了吗?

    Jeff Schneider提供了一组关于筒仓的实际问题,它们能帮助你使用“筒仓分析(Silo Analysis)”来指导治理行为。他和另外几个人提供了一些专用技巧,以避免创建筒仓服务——一种常见的SOA反模式。

  • 桌面开发篇:回顾与总结

    学业务架构最好的方式是“做中学”。做是最重要的,然后要有做后的反思,去思考并完善自己的理论体系。

    2019 年 8 月 16 日

  • ITIL 和 SOA 能否互补?

    尽管具有相似的方法和目的,但是ITIL和SOA在现代IT组织内部仍是风马牛不相及。这是由运营与开发组织之间的裂痕导致的么?这种裂痕可以被修复么?两者能相互辅助以取得持续改进的愿景么?

  • 观点:在业务与 IT 对齐过程中,实现向新范型的转换

    Fred Cummins,EDS公司的资深研究员,给出了关于SOA如何改变业务与IT对齐的愿景。他驳斥了那些在业务相关领域中推荐融合和扩散信息技术的建议,并解释了服务边界是如何提供一种自然的边界来促进业务与IT的协作的。

  • 将敏捷应用于商业智能领域

    大型的中央BI系统常常达不到最终用户的期望。本文作者Scott Ambler 在Cutter IT Journal杂志上发表文章,告诉我们如何使用敏捷方法满足用户期望,并快速交付业务价值。

  • 敏捷企业中的架构师生态系统

    很多企业架构师仍然在偷偷编写自己的“解决方案架构定义手册”,甚至想办法掩藏自己的真实意图。但现在,我们发现了一种新的趋势,越来越多的商业与企业架构团队开始携手合作,并共同参与到组织的业务优先级战略规划、项目组合管理、路线图优化、产品管理、以客户为中心型计划、敏捷项目调节以及制定面向业务的新型现代KPI等工作当中。

  • DevOps、SRE 的共性:应用全栈思路打通开发和运维

    我讲述了DevOps和SRE的目标、原则和具体实践,并结合实战给出了通过“人、流程、工具”的步骤落地DevOps的方案。

    2019 年 9 月 9 日

  • 持续交付到底有什么价值?

    持续交付的价值不仅仅局限于简单地提高产品交付的效率,它还通过统一标准、规范流程、工具化、自动化等等方式,影响着整个研发生命周期。

    2018 年 7 月 5 日

  • 企业中的敏捷扩展实践

    正在采用敏捷组织范围的企业有时候必须扩展自己的敏捷实践。Frank Langeveld在金融行业和复杂环境中的敏捷方法大会上促成了半个小时的会议,以便于参会人员之间能够互相分享企业中的敏捷扩展经历。

  • 实践微服务六年,我获得了这些心得体会

    使用微服务架构将导致基础架构的需求、成本和复杂性激增,但会提高企业服务的连续性和弹性,进而影响企业整体运行文化。在采用微服务之前,企业需要花费时间和精力去了解微服务架构,以及架构与企业自身的相关性。作为一名软件工程师,本文作者给出了对采用微服务架构的切身体会。

  • 结束语 | 所谓高手,就是跨过坑和大海!

    专栏虽已完结,但更新优化不止,你有什么建议或意见想和我说说吗?

    2019 年 12 月 2 日

  • 创建面向服务企业(SOE)的模型驱动方法

    业务与IT看齐是一种主流的企业架构方法,现在,在IT作为核心业务实体的企业中,越来越多人将其视为不必要的管理消耗。Anirban Ray提出一种模型驱动方法,以其创建面向服务的企业(Service-Oriented Enterprise,SOE),其核心假设是:IT是业务的一部分,帮助企业提供以业务为核心的服务。

  • DevOps 组织中应用架构师的新定位与实践

    DevOps组织的成功,很大程度上来自于聚焦培养强有力的DevOps团队。

  • 专家视角看 IT 与架构

    软件产业目前的状态很混乱,开发成本越来越高,质量却越来越差。IT领域的新技术、过程以及方法论所给出的承诺与具体实现还有相当大的差距。Bruce Laidlaw和Michael Poulin都是具有超过30年的IT行业经验的专家,他们对IT在过去和现在的情况做了对比,然后对于IT需要在哪些方面做出提高给出了深刻的见解。

  • “一问一答”第 1 期 | 30 个软件开发常见问题解决策略

    软件开发中的很多问题,都是可以通过软件工程的知识来解决的。

    2019 年 3 月 16 日

  • IT 架构设计框架:ADMIT

    ADMIT详细表述了任何 IT架构工作中都应考虑的决策点。虽然ADMIT格式与其他企业架构框架类似,但ADMIT更关注影响最终结果的特性和驱动力,这使得它可以与其他形式化的企业架构设计和评价方法学结合使用。

  • ScrumMaster 项目面谈诀窍

    ScrumMaster或者迭代经理在敏捷团队里面是一个关键角色,而且,对于ScrumMaster,选择与哪个组织合作或者与哪个团队共事是非常重要的——在考虑是否接受一个新项目时,很重要的是创造一个取得成功的环境。本文提供了一些面谈时的建议,可供ScrumMaster考虑是否接受项目或团队时参考。

发现更多内容

扒开 SqlSession 的外衣

田维常

mybatis

一线大厂开源三份JDK+Spring+Mybatis源码笔记

Java架构追梦

Java spring 源码 jdk mybatis

字节二面跪拜“Redis源码”后,面试官直接推荐这份笔记!真是NB

比伯

Java 编程 架构 面试 程序人生

智能合约交易所系统开发

DV:19924636653

软件开发

重磅|中国PostgreSQL分会与腾讯云战略合作协议签订

PostgreSQLChina

数据库 postgresql 软件 开源社区

直播中不可缺少的一环-rtmp直播推流

anyRTC开发者

音视频 WebRTC CDN RTC RTMP

没能进入大数据领域

escray

面经 面试经历 101次面试

SGY奇点交易所系统源码开发

DV:19924636653

软件开发

九环智能合约开发

V19927655815

APP开发

高空立体云防控系统搭建,智能化平安小区建设方案

t13823115967

平安小区 智慧平安社区建设

智慧社区综合管理平台搭建,智慧平安城市建设

13530558032

为什么说rollup比webpack更适合打包库

fengxianqi

前端 Rollup webpack

如何通过 Serverless 轻松识别验证码?

Serverless Devs

人工智能 Serverless 云原生

云视频技术领军人赵加雨:如何提升在线教育课堂互动体验

拍乐云Pano

音视频 在线教育 RTC 互动课堂 白板

盘点 2020 | 10 天开发前台系统技术系列

老魚

CSS 前端 全栈 js 盘点2020

重点人员管控系统开发,情报研判系统开发

13530558032

人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot)

刘悦的技术博客

人工智能 tensorflow chatbot 聊天机器人 keras

从MongoID的生成讨论分布式唯一ID生成方案

行如风

雪花算法 分布式ID 全局唯一ID 流星算法

英特尔力邀150家产业大咖推动Evo严苛认证,打造PC界的奥斯卡

intel001

快速接入 | 从 0 到 1 构建语音聊天室

拍乐云Pano

音视频 RTC 实时语音 语音聊天室 语聊房

什么是浮点数?

Kaito

计算机基础 浮点数

从一个模糊词查询需求的处理方案讨论到一种极速匹配方案的实现

行如风

模糊匹配 双数组trie树 ahocorasick ac自动机 黑名单过滤

区块链溯源平台优势,区块链溯源系统解决方案

13530558032

限时!字节Java程序性能优化宝典开源,原来这才叫性能优化

996小迁

程序员 面试 性能优化 笔记

抢先体验全新升级版Eternal Wallet!

Geek_c610c0

数字货币 数字货币钱包开发

星域母子币系统软件开发|星域母子币APP开发

开發I852946OIIO

系统开发

移动生态盘点与HMS生态解析

华章IT

华为 Android Studio 移动开发 HMS

如何基于 SDK 快速开发一款IoT App 控制智能灯(iOS 版)

IoT云工坊

ios App 物联网 IoT sdk

周立齐出任电动车联合创始人:网红经济背后的病态消费心理

石头IT视角

智慧仓储管理系统,是否能解决购物狂欢节后新一轮爆仓危机?

一只数据鲸鱼

物联网 数据可视化 智慧物流 智慧仓储

应急指挥中心平台搭建,移动可视化指挥解决方案

t13823115967

可视化数据分析搭建 应急指挥

让敏捷方法和企业架构和谐共舞-InfoQ