Observations on the Assured Evolution of Concurrent Java Programs

Document Type


Publication Date



Evolving and refactoring concurrent Java software can be error-prone, resulting in race conditions and other concurrency difficulties. We suggest that there are two principal causes: concurrency design intent is often not explicit in code and, additionally, consistency of intent and code cannot easily be established through either testing or inspection. We explore several aspects of this issue in this paper. First, we describe a tool-assisted approach to modeling and assurance for concurrent programs. Second, we give an account of recent case study experience on larger-scale production Java systems. Third, we suggest an approach to scalable co-evolution of code and models that is designed to support working programmers without special training or incentives. Fourth, we propose some concurrency-related refactorings that, with suitable analysis and tool support, can potentially offer assurances of soundness. Abstract © Elsevier


The "Link to Full Text" button on this page loads the open access article version of record, hosted at Elsevier. The publisher retains permissions to re-use and distribute this article.



Source Publication

Science of Computer Programming