计算脆弱性评估

带概念的C++通用库

来自Haskell的高级域描述

特定于域的库

用于计算脆弱性评估

Daniel Lincke,Patrik Jansson,Marcin Zalewski和Cezar Ionescu

(会议文件接受用于IFIP领域特定语言工作会议2009. )

2010/2011:我们继续致力于一个关于Haskell和C中的一元动力系统++.

摘要

一类密切相关的问题,一个问题域,通常可以用一种特定于领域的语言来描述,这种语言由解决这类问题的算法和组合器组成。这种语言可以有两种:它可以形成一种新的语言,也可以作为一种子语言嵌入现有的语言中。我们以扩展通用语言的库的形式描述嵌入式DSL。我们的领域是气候变化背景下的脆弱性评估,波茨坦气候影响研究所对此进行了正式描述。使用Haskell描述域,生成Haskell的特定于域的子语言,可用于实现的原型化。

本文基于Haskell的形式化描述,提出了一个通用的C++库,它实现了一种针对领域的漏洞评估语言。该图书馆仅依靠并实现了一些概念,最重要的是,一元体系的概念,这是脆弱性评估正式化的关键部分。我们描述了一元系统的Haskell描述,并展示了描述到通用C++组件的映射。我们的库严重依赖于概念,这是一个支持泛型编程的C++特性:概念框架形成了我们库的特定于领域的类型系统,参数化类型和函数由概念框架中的概念“类型化”,代表了领域的组合器和算法。此外,我们还讨论了是什么使我们的库成为一种特定于领域的语言,以及我们的领域特定的库方案如何可以用于其他领域(涉及语言设计、软件设计和实现技术)。