领域特定语言(DSL)开发中的可变性挑战与支持现状
1. 可变性挑战
在DSL开发过程中,存在着诸多可变性挑战,这些挑战影响着DSL的实现、组合以及整体质量。
1.1 特征实现挑战
特征实现面临着特征映射、维护定义与特征之间的跟踪链接以及管理不同类型定义工件之间的依赖关系等挑战。当DSL开发面向不同的DSL风格(如内部、外部和混合风格)时,无论采用何种风格,都必须很好地支持不同的组合类型。每种组合类型都会影响不同种类的DSL定义工件,如语法定义、内置语法处理器或解析器组合器,这进一步增加了多方面DSL定义带来的复杂性。
1.2 组合下的抽象不匹配
抽象不匹配指的是DSL开发者在表达应用领域中的关注点时,被迫选择一种与抽象概念或关系不完全匹配的建模或编程抽象。在实现可变DSL时,主要关注点是特征和配置,而用于表示它们的可用抽象由不同的实现技术(如对象、类)提供。建立和维护它们之间的对应关系被称为特征映射。
抽象不匹配的程度或严重性通常不能直接判断,而且这种不匹配往往不会立即显现出来。随着时间的推移,它会对生成的DSL和基于DSL的工具的某些质量属性产生负面影响,包括降低灵活性、降低领域专家的使用质量、降低可维护性或增加架构和实现的复杂性。在这种情况下,抽象不匹配会导致技术债务。
其中,分解不匹配是一种特别相关的抽象不匹配,它源于在软件系统(如使用DSL开发系统的DSL)的设计和实现中分离和组合关注点。在面向对象编程中,常见的不匹配是将领域中的单个概念实体分解为多个实现实体。对于可变DSL,不匹配可能源于多次分离和组合关注点。
例如,考虑一个小型算术表达式领域的问题域模型LEA
超级会员免费看
订阅专栏 解锁全文
29

被折叠的 条评论
为什么被折叠?



