使用KeY正式验证OpenJDK部分API经验报告

CoRR Pub Date : 2018-11-27 DOI:10.4204/EPTCS.284.5
Alexander Knüppel, Thomas Thüm, C. Pardylla, Ina Schaefer
{"title":"使用KeY正式验证OpenJDK部分API经验报告","authors":"Alexander Knüppel, Thomas Thüm, C. Pardylla, Ina Schaefer","doi":"10.4204/EPTCS.284.5","DOIUrl":null,"url":null,"abstract":"Deductive verification of software has not yet found its way into industry, as complexity and scalability issues require highly specialized experts. The long-term perspective is, however, to develop verification tools aiding industrial software developers to find bugs or bottlenecks in software systems faster and more easily. The KeY project constitutes a framework for specifying and verifying software systems, aiming at making formal verification tools applicable for mainstream software development. To help the developers of KeY, its users, and the deductive verification community, we summarize our experiences with KeY 2.6.1 in specifying and verifying real-world Java code from a users perspective. To this end, we concentrate on parts of the Collections-API of OpenJDK 6, where an informal specification exists. While we describe how we bridged informal and formal specification, we also exhibit accompanied challenges that we encountered. Our experiences are that (a) in principle, deductive verification for API-like code bases is feasible, but requires high expertise, (b) developing formal specifications for existing code bases is still notoriously hard, and (c) the under-specification of certain language constructs in Java is challenging for tool builders. Our initial effort in specifying parts of OpenJDK 6 constitutes a stepping stone towards a case study for future research.","PeriodicalId":10720,"journal":{"name":"CoRR","volume":"2 1","pages":"53-70"},"PeriodicalIF":0.0000,"publicationDate":"2018-11-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"8","resultStr":"{\"title\":\"Experience Report on Formally Verifying Parts of OpenJDK's API with KeY\",\"authors\":\"Alexander Knüppel, Thomas Thüm, C. Pardylla, Ina Schaefer\",\"doi\":\"10.4204/EPTCS.284.5\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Deductive verification of software has not yet found its way into industry, as complexity and scalability issues require highly specialized experts. The long-term perspective is, however, to develop verification tools aiding industrial software developers to find bugs or bottlenecks in software systems faster and more easily. The KeY project constitutes a framework for specifying and verifying software systems, aiming at making formal verification tools applicable for mainstream software development. To help the developers of KeY, its users, and the deductive verification community, we summarize our experiences with KeY 2.6.1 in specifying and verifying real-world Java code from a users perspective. To this end, we concentrate on parts of the Collections-API of OpenJDK 6, where an informal specification exists. While we describe how we bridged informal and formal specification, we also exhibit accompanied challenges that we encountered. Our experiences are that (a) in principle, deductive verification for API-like code bases is feasible, but requires high expertise, (b) developing formal specifications for existing code bases is still notoriously hard, and (c) the under-specification of certain language constructs in Java is challenging for tool builders. Our initial effort in specifying parts of OpenJDK 6 constitutes a stepping stone towards a case study for future research.\",\"PeriodicalId\":10720,\"journal\":{\"name\":\"CoRR\",\"volume\":\"2 1\",\"pages\":\"53-70\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2018-11-27\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"8\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"CoRR\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.4204/EPTCS.284.5\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"CoRR","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.4204/EPTCS.284.5","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 8

摘要

软件的演绎验证尚未进入工业领域,因为复杂性和可伸缩性问题需要高度专业化的专家。然而,长期的观点是开发验证工具,帮助工业软件开发人员更快、更容易地发现软件系统中的错误或瓶颈。KeY项目构成了一个用于指定和验证软件系统的框架,旨在使正式的验证工具适用于主流软件开发。为了帮助KeY的开发人员、用户和演绎验证社区,我们从用户的角度总结了KeY 2.6.1在指定和验证实际Java代码方面的经验。为此,我们将重点放在OpenJDK 6的Collections-API部分,其中存在非正式规范。当我们描述我们如何将非正式规范和正式规范连接起来时,我们也展示了我们所遇到的挑战。我们的经验是:(a)原则上,对类似api的代码库进行演绎验证是可行的,但需要很高的专业知识;(b)为现有的代码库开发正式的规范仍然是出了名的困难;(c) Java中某些语言结构的不规范对工具构建者来说是一个挑战。我们最初在指定OpenJDK 6的部分方面所做的努力为未来的研究提供了一个案例研究的垫脚石。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Experience Report on Formally Verifying Parts of OpenJDK's API with KeY
Deductive verification of software has not yet found its way into industry, as complexity and scalability issues require highly specialized experts. The long-term perspective is, however, to develop verification tools aiding industrial software developers to find bugs or bottlenecks in software systems faster and more easily. The KeY project constitutes a framework for specifying and verifying software systems, aiming at making formal verification tools applicable for mainstream software development. To help the developers of KeY, its users, and the deductive verification community, we summarize our experiences with KeY 2.6.1 in specifying and verifying real-world Java code from a users perspective. To this end, we concentrate on parts of the Collections-API of OpenJDK 6, where an informal specification exists. While we describe how we bridged informal and formal specification, we also exhibit accompanied challenges that we encountered. Our experiences are that (a) in principle, deductive verification for API-like code bases is feasible, but requires high expertise, (b) developing formal specifications for existing code bases is still notoriously hard, and (c) the under-specification of certain language constructs in Java is challenging for tool builders. Our initial effort in specifying parts of OpenJDK 6 constitutes a stepping stone towards a case study for future research.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信