世界顶尖运动队教练的成功秘诀
本文列出了来自于顶级教练Marc Lammers的9条原则,他是在打造世界最佳曲棍球队的过程中发现这些原则的,文章把这些原则映射到了软件开发实践之中。
作者 Amr Elssamadisy译者 孙向晖 发布于 2007年9月6日 上午12时48分
一份来自Cutter Consortium的报告向我们提出了这样一个问题:“敏捷方法和企业架构兼容吗?”并且也给出了这样一个答案:“是的,但需要付出努力”。该报告的作者推荐运用特殊技巧以允许敏捷方法和企业架构互相受益。此外,他们的观察结果、分析和建议也直接是适用于敏捷方法和“面向服务的架构SOA”之间的结合。
企业架构(EA)和敏捷方法(AM)拥有共同的目标——交付能够跟业务需要对齐的软件,并响应对这些业务需要无可避免的变更。然而,EA和AM在达成这个目标时却采用了截然不同的方式。在报告中,对EA和AM定义如下:
EA处理如下的企业级问题:
- 通过提供一个整体的业务过程蓝图将业务策略连接到IT系统,蓝图可以映射到架构模式、核心服务和应用兼容性等方面。
- 通过维护一个当前的数据模式(schemas)、过程流和服务定义等内容的详细目录来改进贯穿于整个企业的一致性
- 通过减少系统间的冗余以及标识可以统一的组件和系统来改进操作效率
- 确保灵活的IT能力,能够响应技术厂商以及新的或者增强性的业务流程自动化的变化
- 通过维护IT 组合(portfolio)、当前和目标架构以及迁移路线图来支持项目成本化和优先级划分
- 为正在进行中的操作和系统开发提供一个稳定的、可信赖的基础设施平台和公用服务
敏捷方法关注于以下观念:
- 改进效率:关注于近期的问题,仅开发能够满足当前需要的的部分,允许以后形成设计
- 改进项目可见的可管理性:关注于允许任务的完成能被有效评估的短期的、迭代的开发周期
- 通过提供一个完整的过程,关注于广泛的自动化测试、尽可能早并且经常解决集成问题、允许多个(缺少丰富经验的)开发人员在共同的代码上开展工作以及从最终用户处得到持续反馈等方式来改进质量。
- 通过建立在持续重构过程上的集成来改进(内部质量的)可维护性
- 改进处理变更的能力:它是一个需求变更、一个澄清、一个新的需要优先处理的特性?通过综合客户反馈计划迭代内容。
- 通过隐式知识的使用、共享的团队空间以及关注问题的小的组成部分来改进交流效果。
我们会先从EA的视角来检验AM然后反过来检验以分析EA和AM之间的鸿沟。从EA的视角来看:
从AM的视角看,EA也不是非常有意义的:
报告的标题确实说:“是的,但需要付出努力”,所以仍然还有希望。但需要EA组和AM项目认识到对方有价值的贡献,并在他们的工作中做出适应性调整。EA组和AM团队可以相互得到以下收益:
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本文由Per Jacobsson所作,目标读者为有意了解Lisp的Java开发人员。文章探讨了当前可以运行于JVM上的不同Lisp方言,以明快简洁的方式介绍了Lisp程序设计工作机理和其独特之处,并在最后演示了Lisp代码同Java系统的整合过程。
本文以一个实际应用的例子为引子,探讨Ruby/Rails在非传统web系统中应用,以及研究如何定制以Rails为基础的领域特定的MVC框架。
本视频对云计算进行了简要的介绍,主要包括了五部分内容:首先带大家认识“云”,然后对计算机的发展过程进行了阐述,接着介绍了业界现状和企业级/世界级计算的新布局,最后对云计算做了一下展望。
在这篇文章中,Bryon Jacob和Chris Berry介绍了AtomServer,一个基于Apache Abdera的完整Atom存储实现。在去年,作者一直致力于为其雇主——Homeaway——实现一个Atom存储,现在已开源了其Atom存储框架:AtomServer。
开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。
没有回复
回复