@inproceedings{45a1902f5f6746c6a27583189e180a2b,
title = "On the Relationship between Code Verifiability and Understandability",
abstract = "Proponents of software verification have argued that simpler code is easier to verify: that is, that verification tools issue fewer false positives and require less human intervention when analyzing simpler code. We empirically validate this assumption by comparing the number of warnings produced by four state-of-the-art verification tools on 211 snippets of Java code with 20 metrics of code comprehensibility from human subjects in six prior studies. Our experiments, based on a statistical (meta-)analysis, show that, in aggregate, there is a small correlation (r = 0.23) between understandability and verifiability. The results support the claim that easy-to-verify code is often easier to understand than code that requires more effort to verify. Our work has implications for the users and designers of verification tools and for future attempts to automatically measure code comprehensibility: verification tools may have ancillary benefits to understandability, and measuring understandability may require reasoning about semantic, not just syntactic, code properties.",
keywords = "Verification, code comprehension, meta-analysis, static analysis",
author = "Kobi Feldman and Martin Kellogg and Oscar Chaparro",
note = "Publisher Copyright: {\textcopyright} 2023 ACM.; 31st ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2023 ; Conference date: 03-12-2023 Through 09-12-2023",
year = "2023",
month = nov,
day = "30",
doi = "10.1145/3611643.3616242",
language = "English (US)",
series = "ESEC/FSE 2023 - Proceedings of the 31st ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering",
publisher = "Association for Computing Machinery, Inc",
pages = "211--223",
editor = "Satish Chandra and Kelly Blincoe and Paolo Tonella",
booktitle = "ESEC/FSE 2023 - Proceedings of the 31st ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering",
}