BT

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

在应用程序架构中实践敏捷

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 霍泰稳 关注 1 他的粉丝 发布于 2008年12月23日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

微软最近在“模式及实践”分类下发布了一篇文档,名为“如何用敏捷架构进行设计”,为如何使用敏捷方式进行架构提供了详细的指导。

文档推荐用以下列举的条目做为输入,开始设计之路:

  • 用例和使用场景
  • 功能需求
  • 非功能需求(质量相关话题,如性能、安全性、可靠性)
  • 技术需求
  • 目标部署环境
  • 限制

设计应该产生这些输出产物:

  • 架构特征明显的用例
  • 架构热点
  • 候选架构
  • 架构刺探

该文档通过明确建议不要一步完成架构设计,而要采取五步法实现的方式引入敏捷:

  • 第一步:确认架构目标。清晰的目标可以帮助你致力于自己的架构,还能帮助你致力于解决设计中合适的问题。好的目标帮助你决定什么时候完工,以及什么时候需要开始下一个新的阶段;
  • 第二步:关键场景。使用关键场景让设计只关注最经常发生的事情,以及在候选架构准备好时对它们进行评估;
  • 第三步:应用概览。理解你的应用类型、部署架构、架构类型以及技术等,以将设计和应用要服务的真实世界密切联系起来;
  • 第四步:关键热点。根据质量特征和架构框架确认关键热点。在设计应用时,总有一些地方是经常犯错的。
  • 第五步:候选方案。创建一个候选架构或者“架构刺探(Architectural Spike”,然后用关键场景、热点和部署限制等对它进行评估。
archsteps

第一步:确认架构目标

根据微软模式与实践部门首席程序经理J.D. Meier所说,这一步的目的是评估“在接下来的几步上要花费多少时间、精力以及全部努力等”。第一步的结果应该是:

  • 构建原型
  • 确定关键技术风险
  • 测试潜在路径
  • 共享模型和约定

第二步:关键场景

根据J.D. Meier的说法,可基于下面这些用例的要素,确定什么是最好的场景:

  1. 对于所部署应用的成功和接受度来说,它们是重要的;
  2. 用例中充分体现了设计,可资用于评估架构。

第三步:应用概览

要将真实世界的细节和具体事物引入到设计中,应用概览是必不可少的,我们可以通过以下几步来创建它:

  • 决定应用类型:首先,要决定你要构建的应用是什么类型。是移动应用,富客户端,富互联网应用,服务,Web应用还是其他组合等?
  • 理解部署约束:下面,要理解你的目标部署环境,然后决定它会对你的架构产生什么影响。
  • 确定重要的架构类型:决定在你的设计中要使用哪种架构类型。你会构建一个面向服务的架构,C/S,分层的,消息总线还是其他组合等?
  • 决定相关的技术:最后,根据你的应用类型和其他约束来确定相关技术选型,并决定在架构中你要利用哪个技术。

对于以上提到的所有步骤,文档都提供了建议,下面提供了一个在多个架构类型中做选型的例子:

  • C/S:对系统进行隔离,这样客户端可以从服务器发出请求;
  • 基于组件:将应用设计分解成可复用且接口定义良好的组件;
  • 分层:将系统以分层的形式隔离成功能类似的集合;
  • 消息总线:定义能被所有连接系统使用的已知格式,从而使得它们不需要了解真实接收端之间的区别;
  • 面向对象:一种基于将任务分成可复用对象的编程类型,这些对象包含数据以及和对象相关的动作;
  • 面向服务(SOA):一种使用契约和消息以服务的形式暴露和消费功能的应用。

第四步:关键热点

在这一步,我们应该“确定应用架构中的热点,来理解那些经常犯错的地方。关键热点则可以通过质量特征和横切关注点来组织起来。”文档中提到的众多热点包括:可用性、交互性、可维护性、可靠性、安全等。

第五步:候选方案

确定好关键热点后,架构的初步草案就已经形成了。然后,要回到第二步来评估候选架构,然后根据第三、第四、第五步产生一个新的候选。这个过程迭代重复,通过每个迭代对自己进行优化。

查看英文原文Practicing Agility in Application Architecture

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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