敏捷架构思考-出家如初,成佛有余

敏捷架构思考

产品 admin 296浏览 4评论

1、敏捷软件开发不需要架构设计?

    相对于传统瀑布式开发过程及RUP这样的重量级开发过程而言,敏捷软件“重视与客户的沟通;小步快跑,尽早交付;迭代式开发,拥抱变化”等实践正好符合互联网要求快速迭代、坚持以用户为中心的设计(UCD)等特征相吻合,因此敏捷软甲开发过程成为了互联网软件开发的标准模式。

    一直以来都觉得敏捷软件是“轻架构设计”的,不管是XP、Scrum、FDD、Getting Real等敏捷软件开发过程对待设计(Design)的理念都遵循了演进式设计 (evolutionary design) 而非计划性的设计(Planned Design)。

    而且由于类似于Ruby on Rails、SSH(Struts+Spring+Hibernate)、Django、CakePHP这样快速开发架构的出现,技术架构已经成为流行的术语,一个刚毕业的小孩也能够大谈架构设计、设计模式、架构模式,传统的架构设计似乎已经没有太多的必要。

    但在实践过程中,会发现轻架构设计的一堆严重后果,诸如:陷入了"code and fix" 的恶梦;系统越来越复杂和混乱,架构完全失控;

    再读Martin Fowler的《Is Design Dead?》,才发现自己对于敏捷软件的理解是如此的教条:

  Continuous integration、testing 和 refactoring 这些有效的实作方法让 evolutionary design 看似很有道理。但是我们尚未找出其间的平衡点。我相信,不论外界对 XP 存有什么印象,XP 不仅仅是 testing、coding 和 refactoring。在 coding 之前还有 design 的必要。部份的 design 在 coding 之前准备,大部份的 design 则发生在实作每一项详列的功能之前。总之,在 up-front design 和 refactoring 之间可以找到新的平衡。

   大师不愧为大师,能够准确把握住事物的本质,能够把握住过犹不及的度。其实任何方法论都有其应用的边界,方法论没有问题,错误的根源在于使用方法论的人的教条主义。

2、形形色色的架构

敏捷软件,敏捷架构,agile architecture,agile modeling,软件架构,Agile Enterprise Architecture

    “架构”这词成为了一个技术领域时尚的话题,每一个人都在谈论架构,似乎不谈架构就没有技术品位,于是乎出现了一堆与架构有关的术语,包括:软件架构(Software Architecture)、系统架构(System Architecture)、企业架构(Enterprise Architecture )、信息架构(Information Architecture )、应用架构(Application Architecture )、IT架构(IT Architecture)、产品架构(Product Architecture)、业务架构(Business Architecture)、技术架构(Technology Architecture)、解决方案架构(Solution Architecture)、基础架构(Infrastructure Architecture)、领域架构(Domain Architecture)

3、敏捷架构

    敏捷模型驱动开发(Agile Model Driven Development)中对于Agile Architecture Modeling有比较清晰的描述,也回答了为何在敏捷软件开发过程中需要进行架构设计的原因:

    1)、Improved productivity. You can think through some of the critical technical issues facing your project and potentially avoid going down fruitless technical paths.

    2)、Reduced technical risk. Your team gains the advantage of having a guiding vision without the disadvantage of having to overbuild your system – just because you’ve modeled it doesn’t mean you have to build it.   

    3)、Reduced development time.  Initial agile architecture modeling enables you to make better cost and time estimates for your project, two pieces of information which management will want.  

    4)、Improved communication.  Having a high-level architecture model helps you to communicate what you think you’re going to build and how you think that you’ll build it, two more critical pieces of information desired by management.

    5)、Scaling agile software development.  Your initial architecture model will be a key work product in any "agile at scale" efforts because it provides the technical direction required by sub-teams to define and guide their efforts within the overall project.

    6)、Improved team organization. Effective teams are organized around the architecture or line of business, not around job function.  As you scale to larger and/or distributed teams the sub-teams should each be responsible for one or more sub-systems — you don’t want to organize your sub-teams around job function (e.g. an architecture team, a development team, a testing team, …) because that requires you to increase the documentation and bureaucracy overhead which in turn increases risk, cost, and time to value.

   相对于其他的敏捷软件开发过程,在Agile Model Driven Development(AMDD)中明确包括了初始需求分析与架构建模,这个过程发生在敏捷项目开发的第0次迭代中。所谓第0次迭代,就相当于项目的热身活动,是项目得以启动的基础。

敏捷软件,敏捷架构,agile architecture,agile modeling,软件架构,Agile Enterprise Architecture 

    Agile Enterprise Architecture 中谈到了敏捷软件架构的一些指导思想:

    1)、Focus on people, not technology or techniques

    2)、Keep it simple

    3)、Work iteratively and incrementally

    4)、Roll up your sleeves

    5)、Look at the whole picture

    6)、Make enterprise architecture attractive to your customers

4、关于架构的一些思考

4.1、架构!=技术架构

    敏捷架

转载请注明:出家如初,成佛有余 » 敏捷架构思考

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. 博主写的文章很不错 我会随时关注阅读的
    博百优10年前 (2010-06-06)回复
  2. 牛逼
    skin7910年前 (2010-06-08)回复
  3. 呵呵,强悍。。
    无聊10年前 (2010-06-08)回复
  4. 博主很用心 支持一个
    Armani Jeans10年前 (2010-06-10)回复