我眼中的Visual Studio 2010架构工具2010-12-24 infoq 张逸影响架构质量的是构建体系架构的思想、原则、实践与架构师的经验,绝不 是工具。即使是最优秀的架构工具,也不可能像倚天宝剑一般——倚天一出,谁 与争锋 ——似乎谁握住了这把利刃,就能够成为武林盟主。架构工具可以改善 架构师的工作,却不能替换架构的过程。软件过程中,最重要的依旧是人。我在尝鲜Visual Studio 2010架构工具[i]时,偶然看到一篇文章,用夸张的 语言吹捧VS 2010架构工具,认为它是架构师最怕程序员知道的新工具。这让我 有感而发,我想起数十年前甚嚣尘上的一个理论,那就是CASE工具在未来可以取 代编码工作的论断。随着DSL的逐渐流行,这个论断似乎有了能够实现的希望。 我们已经看到了很多优秀的代码生成工具,通过建模,可以花很少的时间完成编 码实现。然而,现实是CASE工具至今仍然无法完全取代编码工作;而若要完全取 代架构与设计的工作,则近乎不可能,因为工具不可能取代人类的思想与经验。 我们可以不断地丰富最佳实践,在知识库中总结出架构的模式,利用工具来展现 这些规律与原则[ii]。这意味着我们可以从变化中寻找到不变,利用共性分析提 高复用的可能(包括架构的复用),但变化始终存在,针对的问题域会因项目而 异,即使是抽象,它也不可能无所不包,代表一切具体的实现。理想架构工具的特点“工欲善其事,必先利其器”。诚然,工具对我们的帮助不可低估,否则, 就是拒绝革新的保守思想;然而,盲目夸大工具的效力,忽视人的作用,带来的 负面影响并不亚于故步自封对前进过程的阻挠。用正确的态度对待工具,工具才 能为我所用,这是我一贯坚持的态度。敏捷宣言认为:个体与交付重于过程和工 具。客户满意才是硬道理,架构与设计所使用的工具,与客户满意度没有任何关 系。所以,我们评价工具,是要看它能否提高我们的工作效率,改善我们的工作 质量。那么,VS 2010架构工具能够做到这一点吗?我们需要先思考一下,作为架构师,最希望看到的架构工具是什么?我认为 ,理想的工具应该具备如下特点:易用性:可以非常容易和快速地构建与设计模型;可验证性:构建的模型是可以验证的;标准化:利于设计人员和开发人员的沟通;工程化:支持正向工程与逆向工程;可文档化:能够较好的支持文档化;可度量性:有助于对架构模型进行分析与度量;模板化:支持通用的架构标准与原则,便于快速生成模型;方法学支持:支持通用的软件方法学(尤其是架构方法学);可集成性:能够结合在软件开发生命周期过程中。VS 2010的易用性首先来看易用性。构建软件系统的架构,一部分工作是与图形在作战。无论 是物理架构还是逻辑架构,用图形表达整个系统错综复杂的关系,最为直观。我 希望在绘制与架构相关的模型图时,并不会因为绘图的不便对我的设计思路产生 影响与阻挠,不会因为工具的无法表达或难以表达而影响我的工作质量,更不会 因为构建出来的架构模型图被设计人员与开发人员所误解。这意味着模型图的绘 制要尽可能简单与快捷,图形的表达能力尽可能丰富,同时还要符合通用的标准 ,不会因为一套全新的标记而产生沟通上的分歧。以对UML的支持为例,我们在 构建架构的过程中,常用的UML模型涉及到包图、组件图、部署图、活动图以及 用例图。 VS 2010克服了之前版本对UML支持不够的弱点,充实了UML建模的能力 ,提供了包括组件图、类图、活动图、时序图、用例图五种UML模型。例如,我 们可以绘制如下的组件图:

图1:组件图示例