技术开发 频道

Visual Studio Team System建模策略

  我们将以这些方式定义的建模语言称为 Domain Specific Languages 或 DSL。可以将 DSL 想象为一种用来解决一些清晰确认问题的小规模、高集中化的语言。这里所说的问题是分析师、架构师、开发人员、测试人员或系统管理员必须要处理的问题。开发人员已经熟知的 DSL 示例是:用于数据操作的 SQL 和用于 XML 文档结构定义的 XSD,等等。另一个来自 Visual Studio Team Edition for Software Architects 的示例是,用于对数据中心硬件和宿主软件配置的逻辑结构进行建模的 DSL。该 DSL 及其相关的图形设计器可以用于设计时(配置应用程序以与其部署目标相匹配)的验证,在问题可以更容易地解决时向开发人员发出警告。

  找到备选 DSL 的好办法是明确开发人员使用的模式,然后将其封装到建模语言中,或将软件框架中的概念作为建模语言中的抽象表层化,然后能够生成可扩展整个框架的少量代码。这些技术允许我们控制生成代码的数量和复杂度,从而为开发人员提供真正意义的价值,而无需争论对 CASE 产品的刻画。

  最近,Microsoft 发布了 DSL 工具 - 使客户和合作伙伴能够通过 Visual Studio 中的相同的技术构建 DSL,这些技术用于构建与 Visual Studio Team Edition for Software Architects 一起发行的建模工具。可以将该技术认为是“构建工具的工具”,简化了定义 DSL 的任务,并降低了为工具构建图形化编辑器和编译器的代价和技能。

  UML如何?

  多数理解我们就模型驱动开发这一观点的人员,把我们假想为将重点放在 DSL 上,这一假设将我们置于一个与 UML 对立的位置。我们希望对这一不正确的想法予以澄清。在 UML 之前,各种各样的建模方法缺乏生产效益,这些方法最终形成 UML 1.0,这是在软件开发中使用模型方面向前迈进的重要一步。

  但是不管是出于什么原因,UML 和基于 UML 工具的存在没有显著改变开发人员构建应用程序的方式。或者说,没有为开发人员生产效率提供明显的帮助。自从 Microsoft 提供了一个最可用的 UML 工具(基于 Visio 的工具)- 最先与 Visual Studio Enterprise Architect 一起提供,我们对该工具的使用进行了开发人员的(不仅限于我们的客户)匿名调查。我们发现,只有很少数人声明其任务支持 UML 工具,大部分使用者仅使用类图表。当我们训练这部分声明使用类图表的人员时,实际使用它们生成代码的数量很少。

  除了在 Visual Studio Team Edition for Software Architects 中的模型驱动的开发工具之外,这是驱动因素之一。我们真正想要进行的是开发人员和架构师很难发现的任务,并找出建模工具可能为其增值并提供帮助的办法。我们强烈支持 UML 符号和图表。在 Microsoft 中任意的开发人员办公地点走走,就会发现白板上密布着 UML 类图表以及序列图表。我们不仅在规范文档中、在很多其他为演示准备的图表中使用 UML 符号,甚至还会将 UML 符号记录在自助餐厅的餐巾纸上。要支持客户的这些需要以生成文档和概念化草图,我们将继续在 Visual Studio 中提供 UML 工具集。事实上,通常在 Microsoft 内,我们使用 UML 的目的很多(例如用于文档或概念共享),但几乎从未 有任何一个是出于以下目的,这些文档是软件开发的实际产物。

  办公室和走廊里相同的白板也布满了随意写下的代码。但在这里再次声明这都是草稿。这些代码很少能正确指示程序源代码编译。这对开发人员而言是重大的区别。任意一种有助于实际软件开发的产品必须能够进行数字化操作。源代码有定义完善的语法,易于理解的语义(通常由编译器的转换以较低级的代码或中间语言定义),并且能够由编译器、调试器和重构程序进行一致性操作。要有益于开发人员,模型必须 有与源代码相同的状态。模型还必须有精确的语法、易于理解的语义,以及定义完善的到源代码或其他定义完善模型的映射。它必须不仅 限于文档。

  例如,采用 Visual Studio Team Edition for Software Architects' Application Designer。它不仅仅是文档,虽然它以该目的进行使用。它更希望使开发人员(或架构师)能够将注意力集中于系统的某一部分;而不是面向服务的体系结构中服务间的连接。她可以在构建项目、WSDL 文件、代码和架构之前设计系统的该部分,或要求工具文档化服务间的连接(如果这些产品已经存在)。由于连接信息分散于众多开发产品之中,因此整体视图(如图表)提供了基本的使用,尽管所有传递的信息可能因对实施产品的仔细检查而减少。应用程序设计器有定义完善的语法(它的 DSL 元模型)和可预知的、始终同步的到各种实施产品的映射。基础设计器框架承担应用程序设计器图表编译器的作用,非常类似于与源代码文件相关的传统编译器的作用。

0
相关文章