0

关于模型驱动的软件开发。据我所知,静态语义是否定义了格式良好的模型的标准。

但是我想不出任何真实的例子。那么有哪些真实世界的例子可以帮助我更好地理解它呢?

4

1 回答 1

0

静态语义确实可以被视为“模型良好的标准”。这些标准是什么完全取决于它所描述的(建模)语言。

静态语义与类型检查密切相关。使用“静态语义”一词,我们通常指的是使程序/模型格式良好的标准的正式描述,而类型检查是这种描述的可执行实现,可用于验证实际模型。

举个例子,想象一种具有句法结构的语言Expr.Plus = Expr "+" Expr。验证格式良好的可能规则(非正式编写)可能是:

如果 (e1与 type 合式Num()) 和 (e2与 type 合式Num()),则Plus(e1, e2)与 type 合式Num()

这种规则的一个更复杂的例子是:如果 (c与 type 合式Bool()) 和 (e1与 type 合式T(其中 T 是类型变量,而不是具体类型)) 和 (e2与 type 合式T) , 然后If(c, e1, e2)用 type 正确输入T

要更好地介绍这种语义写作风格(包括正式的符号),请参见例如这些幻灯片(尤其是从 35 开始)

但是,静态语义比仅检查加法表达式要广泛得多。想象一种建模语言,用于对建筑物的供暖装置进行建模。其语义中的规则可以指定仅当所有阀端都连接时模型是格式良好的(因此不可能出现泄漏)。

此外,静态语义与语法的不同之处在于它通常包括非本地/上下文敏感的约束/检查(例如名称解析)。

最后,静态语义与动态语义的不同之处在于后者描述了如何从(格式良好的)模型计算值

于 2020-09-14T15:13:18.587 回答