Refactoring and Active Object Languages
Peer reviewed, Journal article
MetadataShow full item record
Original versionStolz, V., Pun, V. K. I., & Gheyi, R. (2020). Refactoring and active object languages. In T. Margaria & B. Steffen (Ed.), Leveraging applications of formal methods, verification and validation: Engineering principles (pp. 138–158). Springer International Publishing. 10.1007/978-3-030-61470-6_9
Refactorings are important for object-oriented (OO) programs. Actor- and active object programs place an emphasis on concurrency. In this article, we show how well-known OO refactorings such as Hide Delegate, Move Method, and Extract Class interact with a concurrency model that distinguishes between local and remote objects. Refactorings that are straightforward in Java suddenly force the developers to reflect on the underlying assumptions of their actor system. We show that this reflection is primarily necessary for refactorings that add or remove method calls, as well as constructor invocations. We present a general notion of correctness of refactorings in a concurrent setting, and indicate which refactorings are correct under this notion. Finally, we discuss how development tools can assist the developer with refactorings in languages with rich semantics.
This is a post-peer-review, pre-copyedit version of an article published in Lecture Notes in Computer Science. The final authenticated version is available online at: https://doi.org/10.1007/978-3-030-61470-6_9