一句话:提出 Sip4J,通过跨过程静态分析自动推断 Java 访问权限契约,识别可并发方法以并行化顺序程序。
访问权限契约可描述代码块之间的依赖关系,常被用于支持顺序程序的并发执行,但通常需要程序员手工编写,耗时费力且容易出错。为减少人工负担,Sip4J 对顺序 Java 源代码进行跨过程静态分析,自动提取程序中的隐式依赖,并依据 Design by Contract 原则自动生成访问权限契约;随后利用推断出的规约识别程序中的并发(不可变)方法。实验结果表明,Sip4J 能有效为顺序 Java 程序生成访问权限契约,有助于实现并行化。该工具已开源,并提供了演示视频。
This paper presents Sip4J, a fully automated, scalable and effective tool to automatically generate access permission contracts for a sequential Java program. The access permission contracts, which represent the dependency of code blocks, have been frequently used to enable concurrent execution of sequential programs. Those permission contracts, unfortunately, need to be manually created by programmers, which is known to be time-consuming, laborious and error-prone. To mitigate those manual efforts, Sip4J performs inter-procedural static analysis of Java source code to automatically extract the implicit dependencies in the program and subsequently leverages them to automatically generate access permission contracts, following the Design by Contract principle. The inferred specifications are then used to identify the concurrent (immutable) methods in the program. Experimental results further show that Sip4J is useful and effective towards generating access permission contracts for sequential Java programs. The implementation of Sip4J has been published as an open-sourced project at https://github.com/Sip4J/Sip4J and a demo video of Sip4J can be found at https://youtu.be/RjMTIxlhHTg.
DOI 原文 ·
@inproceedings{paperbot5281,
title = {Sip4J: Statically Inferring Access Permission Contracts for Parallelising Sequential Java Programs},
author = {Ayesha Sadiq and Li Li and Yuan-Fang Li and Ijaz Ahmed and Sea Ling},
booktitle = {ASE},
year = {2019},
doi = {10.1109/ase.2019.00111}
}