技术开发 频道

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

【IT168 技术文章】

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

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

    用例和使用场景

    功能需求

    非功能需求(质量相关话题,如性能、安全性、可靠性)

    技术需求

    目标部署环境

    限制

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

    架构特征明显的用例

    架构热点

    候选架构

    架构刺探

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

    第一步:确认架构目标。清晰的目标可以帮助你致力于自己的架构,还能帮助你致力于解决设计中合适的问题。好的目标帮助你决定什么时候完工,以及什么时候需要开始下一个新的阶段;

    第二步:关键场景。使用关键场景让设计只关注最经常发生的事情,以及在候选架构准备好时对它们进行评估;

    第三步:应用概览。理解你的应用类型、部署架构、架构类型以及技术等,以将设计和应用要服务的真实世界密切联系起来;

    第四步:关键热点。根据质量特征和架构框架确认关键热点。在设计应用时,总有一些地方是经常犯错的。

    第五步:候选方案。创建一个候选架构或者“架构刺探(Architectural Spike”,然后用关键场景、热点和部署限制等对它进行评估。 


    第一步:确认架构目标

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

    构建原型

    确定关键技术风险

    测试潜在路径

    共享模型和约定

    第二步:关键场景

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

    对于所部署应用的成功和接受度来说,它们是重要的;

    用例中充分体现了设计,可资用于评估架构。

    第三步:应用概览

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

    决定应用类型:首先,要决定你要构建的应用是什么类型。是移动应用,富客户端,富互联网应用,服务,Web应用还是其他组合等?

    理解部署约束:下面,要理解你的目标部署环境,然后决定它会对你的架构产生什么影响。

    确定重要的架构类型:决定在你的设计中要使用哪种架构类型。你会构建一个面向服务的架构,C/S,分层的,消息总线还是其他组合等?

    决定相关的技术:最后,根据你的应用类型和其他约束来确定相关技术选型,并决定在架构中你要利用哪个技术。

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

    C/S:对系统进行隔离,这样客户端可以从服务器发出请求;

    基于组件:将应用设计分解成可复用且接口定义良好的组件;

    分层:将系统以分层的形式隔离成功能类似的集合;

    消息总线:定义能被所有连接系统使用的已知格式,从而使得它们不需要了解真实接收端之间的区别;

    面向对象:一种基于将任务分成可复用对象的编程类型,这些对象包含数据以及和对象相关的动作;

    面向服务(SOA):一种使用契约和消息以服务的形式暴露和消费功能的应用。

    第四步:关键热点

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

    第五步:候选方案

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

0
相关文章