NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2008-12-21
  • 本文字数:1426 字

    阅读完需:约 5 分钟

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

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

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

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

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

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

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

第一步:确认架构目标

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

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

第二步:关键场景

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

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

第三步:应用概览

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

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

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

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

第四步:关键热点

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

第五步:候选方案

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

查看英文原文 Practicing Agility in Application Architecture

2008-12-21 23:591088

评论

发布
暂无评论
发现更多内容

关于数码产品

ES_her0

28天写作 3月日更

设计模式【3.1】-- 浅谈代理模式之静态、动态、cglib代理

秦怀杂货店

动态代理 代理模式

第五六周心得

Trigger

极客时间 产品经理训练营

架构学习20210302日(001)

张小胖

小谈 Java 单元测试

xcbeyond

Java 单元测试 28天写作

产品经理训练营第四章作业(二)

新盛

To B产品经理需要哪些能力呢?

博文视点Broadview

极客时间购买课程的流程图

踏凌霄

产品文档总结

mas

产品经理训练营第四章作业(二)

猫。

抽奖助手--抽奖用例流程图

小蜜蜂

第五周

Jove

一文帮你搞懂 Android 文件描述符

vivo互联网技术

android 文件 文件系统

产品经理 - 第四章作业

Geek_971380

第5次作业

Geek_娴子

分享一个务实派CEO的理念和实践

boshi

经验分享 七日更 28天写作

抽奖助手小程序 发起抽奖流程图

Shine

产品

0 期产品训练营第五周作业 - 学情周报活动图

skylar

挑一个产品,想一个你想做的新功能,然后写个相对完整的文档

mas

翻译:《实用的Python编程》03_03_Error_checking

codists

Python

作业

云随心

产品训练营作业

3月份开始了

Nydia

Elasticsearch search scroll 游标查询

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

第5周作业

KYoKO

玩家永远是对的——认知失调

Justin

心理学 28天写作 游戏设计

在云中应用自动化的5种方法

浪潮云

云计算

滚动加载的网页只需点 10 下鼠标即可抓取,无编码学爬虫之四

梦想橡皮擦

Python 28天写作 3月日更

「产品经理训练营」作业 05

🌟

产品 产品经理 产品经理训练营 产品训练营 产品训练营作业

第五周作业

z

时间管理这件事儿「Day 11」

道伟

28天写作

算法刷题提醒——微信小程序 [持续优化ing]

小匚

深度思考 随笔杂谈 成长与思考

在应用程序架构中实践敏捷_方法论_Abel Avram_InfoQ精选文章