加载中...
SPARK 是 Ada 语言的一个形式化可验证子集,专为高可靠、高安全软件设计。它移除了难以推理的语言特性,并附加合约与断言机制,允许用工具在编译期严格证明程序无运行期错误,广泛应用于航空、航天与国防领域。

| 基础语言 | Ada |
| 主要用途 | 高可靠软件 |
| 核心技术 | 形式化验证 |
| 典型行业 | 航空、国防 |
| 维护方 | AdaCore 等 |
SPARK 是通用编程语言 Ada 的一个受限子集,配合专门的静态分析与形式化验证工具链,用于开发对安全性与可靠性要求极高的软件。它由英国的研究者与 AdaCore、Altran 等公司长期发展,名称源自其早期设计目标而非首字母缩写的固定含义。
普通程序设计中,许多缺陷要到运行时才暴露。SPARK 的理念是把验证前移到编译阶段:它剔除了指针别名、异常控制流等难以自动推理的特性,使程序的行为可被数学方法完整分析。开发者在代码中用形式化的合约(前置条件、后置条件、循环不变式)描述意图,工具则据此证明代码满足这些性质。
SPARK 被广泛用于安全攸关系统,例如空客飞机的机载软件、铁路信号控制、导弹与国防装备的嵌入式代码,以及部分密码学库。在这些领域,一个缺陷可能造成生命或重大财产损失,因此值得投入形式化验证的额外成本来换取近乎数学证明级别的可信度。
问:SPARK 与 Ada 是什么关系?答:SPARK 是 Ada 的严格子集,任何 SPARK 程序都是合法的 Ada 程序,但反之不然。它删掉了不利于自动证明的特性,并加上验证工具。
问:用 SPARK 就一定没有 bug 吗?答:它能证明不存在特定类别的运行期错误,并能验证代码符合所写的规格,但如果规格本身写错,程序仍可能不符合真实需求,因此规格的正确性依然依赖人。

| 基础语言 | Ada |
| 主要用途 | 高可靠软件 |
| 核心技术 | 形式化验证 |
| 典型行业 | 航空、国防 |
| 维护方 | AdaCore 等 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧