遵循软件产品线方法专注于领域特定语言 (DSL) 开发是否有意义?
有谁知道同时创建和维护几种相关领域特定语言的任何其他方法?请注意,要支持自定义语言,需要支持多种工具,从解析器、编译器、解释器到当前最先进的 IDE 等。
遵循软件产品线方法专注于领域特定语言 (DSL) 开发是否有意义?
有谁知道同时创建和维护几种相关领域特定语言的任何其他方法?请注意,要支持自定义语言,需要支持多种工具,从解析器、编译器、解释器到当前最先进的 IDE 等。
我们的DMS软件再造工具包正是这个想法。DMS 提供通用解析、树构建、分析(名称解析、控制流分析、数据流分析、调用图和指向分析、自定义分析器、任意转换)。它有多种遗留语言前端,以及一些现成的 DSL(例如,HTML、XML、时序逻辑方程、工业控制器语言……),但对定义其他 DSL 有很好的支持。
我们使用 DMS 既可以构建自定义分析器和转换工具,也可以作为产品线生成器。例如,我们为各种语言提供测试覆盖率、分析器、智能差异器和克隆检测……因为 DMS 使这成为可能。是的,这降低了我们的开发和维护成本,因为这些工具类型中的每一个都直接使用 DMS 作为基础。从根本上说,它允许语言解析器、分析器和转换器不仅跨特定语言,而且跨这些语言的方言甚至不同语言的摊销。
我认为遵循软件产品线方法关注 DSL 是有意义的。如果你正确定义了 DSL,它本质上将定义一个框架,用于在域中创建应用程序以及它们在其中执行的操作环境。我所说的操作环境是指操作系统、硬件和数据库,以及执行这些操作的代码。实现 DSL 的语义或运行时环境。框架和操作环境将是跨产品线重用的工件。您可能必须创建一个包含多个 DSL 的运行时环境的操作环境,以支持多个产品线。