63、顺序 Erlang 中的系统依赖图技术解析

顺序 Erlang 中的系统依赖图技术解析

1. 相关工作概述

程序切片传统上与命令式范式相关联,大多数基于切片的技术都是在命令式程序的背景下定义的,适用于函数式语言的工作较少。不过,系统依赖图(SDG)已被应用到面向对象和面向方面等其他范式中。

此前有尝试为函数式语言定义类似程序依赖图(PDG)的数据结构:
- 功能依赖图(FDG) :首次尝试将 PDG 应用于函数式范式,但它仅适用于高级抽象层面,无法对表达式进行切片,不适用于 Erlang。
- 项依赖图(TDG) :仅考虑带有函数调用和数据构造函数的项重写系统,不考虑复杂结构,也无法处理高阶程序。
- Haskell 程序切片 :使用 Haskell 的抽象语法树并添加数据依赖注释,但未定义新的数据结构。

还有针对 Erlang 程序的相关图结构:
- 顺序组件流图 :用于测试,能确定测试用例应覆盖的不同流路径,但不基于 SDG,缺乏精确程序切片所需信息,如摘要边,且无法分解表达式。
- 行为依赖图(BDG) :能处理模式匹配、复合表达式和 Erlang 中的所有构造,但同样缺乏 SDG 中的摘要边,导致精度损失。

这些工作主要用于过程内切片,在过程间切片时精度会降低,而 SDG 可解决此问题,这也是首次将 SDG 应用于函数式语言。

2. 预备知识

为便于理解,我们考虑 Erlang 语言的以下子集:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值