程立谈架构、敏捷和SOA实践
支付宝首席架构师程立在本文分享了支付宝技术架构的发展,对架构的认识,成功架构的特点,如何避免架构设计的失败,以及在敏捷和SOA方面的实践等。
作者 Amr Elssamadisy译者 郑柯 发布于 2008年5月13日 下午12时55分
在Yahoo!的extremeprogramming讨论组中,Kim Grasman提出了一个简单却引人深思的问题:
大家好,在过去的几周里,似乎增量式设计已经成为论坛中讨论的热门话题了——对此,大家谁能给出一些好的阅读参考资源么?
这是个好问题。已经有了一些不错的推荐了,比如:
接下来,该问题演变为关于采纳增量式设计的讨论:
我只是在理论上想过这个问题,还没有遇到实际中的困难;但我觉得让一个团队开始采取增量式设计是很困难的事情。我也跟一些人讨论过,他们所做的尝试也没取得多少成功。所以我想应该先更好地理解这个实践,以避免被误导而走错路。
要回答“如何有效地实施增量式设计”,“怎么样才算好的设计”这个老问题就不能回避,这就引发了很多五花八门的建议。Ron Jeffries提出了一个有趣的观点:
我相信在大多数人看来,一个“好的设计”是会自动慢慢浮现、完成演化的。换句话说,面对一个被认为是良好的、但是无法演化的设计,我们可以很快提出一个设计,它在本质上与前者类似,但是“更好”而且可以演化。让它“更好”的过程,也从侧面使其更易于演化,而不必直接去解决演化问题。
但是,在讨论中有一个值得注意的问题:没有针对“如何实施增量式设计?”的直接回答;即使是以其为主题的大部分讨论也都采取了回避态度。参与讨论的人们从各种不同角度探讨这个问题,但是绝不直接触及。是不是涉及到实施层面就真的很难?还是说结论太明显了,我们没有必要直接讨论?
查看英文原文:Adopting Simple Design
支付宝首席架构师程立在本文分享了支付宝技术架构的发展,对架构的认识,成功架构的特点,如何避免架构设计的失败,以及在敏捷和SOA方面的实践等。
作为一个有别于Java、Ruby等语言的一个特性,C#可以用索引器(Indexer)将类型本身以对象数组的形式供外部使用。同时,把索引器和LINQ结合使用倒是一个非常不错的组合,索引器做接口、LINQ完成内部检索逻辑,客户程序在无需记住具体方法名称的前提下,按照键值检索即可,索引器内部则依托LINQ to系列的基础,提供对各种异构数据源的访问。
Scrum中,产品负责人这个角色具有很大的影响力,能够带来很高的价值。但要想运用得当,可没那么轻而易举。如果做得好,就可以在客户和开发者之间建立更为融洽的关系,并能够增加组织的竞争优势。
在本书中,作者Henrik Kniberg讲述了他在一年的时间里,带领40人的团队实施Scrum的过程。他们试过了多种团队尺寸(3~12人)、sprint长度(2~6星期),定义“完成”的不同方式,不同的backlog格式,各种测试策略,在多个Scrum团队之间进行同步的多种方式。他们还尝试过XP实践——持续集成、结对编程、测试驱动开发等等,还试过了把XP跟Scrum组合。
准时化生产(Just In Time)是精益生产(Lean Production)和丰田生产系统(Toyota Production System)中的概念,敏捷开发与准时化生产中的很多观点和实践是一致的,精益思想作为精益生产背后的指导思想也正在积极地影响着软件开发领域,向其中不断注入创新与活力。
I. Drobiazko和R. Zubairov合作撰写了一篇文章,详细介绍Apache Tapestry 版本5——一个面向组件web框架。文章向读者展示了创建组件方法,并谈到了Tapestry中的IoC以及Ajax的相关特性。
没有回复
回复