A language-independent parallel refactoring framework

Recent trends towards increasingly parallel computers mean that there needs to be a seismic shift in programming practice. The time is rapidly approaching when most programming will be for parallel systems. However, most programming techniques in use today are geared towards sequential, or occasionally small-scale parallel, programming. While refactoring has so far mainly been applied to sequential programs, it is our contention that refactoring can play a key role in significantly improving the programmability of parallel systems, by allowing the programmer to apply a set of well-defined transformations in order to parallelise their programs. In this paper, we describe a new language-independent refactoring approach that helps introduce and tune parallelism through high-level design patterns targeting a set of well-specified parallel skeletons. We believe this new refactoring process is the key to allowing programmers to truly start thinking in parallel.

[1]  John Hughes,et al.  Testing Erlang data types with quviq quickcheck , 2008, ERLANG '08.

[2]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[3]  Richard C. Waters,et al.  Readings in artificial intelligence and software engineering , 1986 .

[4]  Peter Kilpatrick,et al.  The ParaPhrase Project: Parallel Patterns for Adaptive Heterogeneous Multicore Systems , 2011, FMCO.

[5]  Gudula Rünger,et al.  A Methodology for Deriving Parallel Programs with a Family of Parallel Abstract Machines , 1997, Euro-Par.

[6]  Huiqing Li,et al.  Comparative Study of Refactoring Haskell and Erlang Programs , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[7]  Hans-Wolfgang Loidl,et al.  ParaForming: Forming Parallel Haskell Programs Using Novel Refactoring Techniques , 2011, Trends in Functional Programming.

[8]  Marc Snir,et al.  Transformation for class immutability , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[9]  Frank Tip,et al.  Refactoring Java programs for flexible locking , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[10]  Douglas R. Smith Applications of a Strategy for Designing Divide-and-Conquer Algorithms , 1987, Sci. Comput. Program..

[11]  Frank Tip,et al.  Refactoring for reentrancy , 2009, ESEC/FSE '09.

[12]  Ralph E. Johnson,et al.  Relooper: refactoring for loop parallelism in Java , 2009, OOPSLA Companion.

[13]  Michael D. Ernst,et al.  Refactoring sequential Java code for concurrency via concurrent libraries , 2009, 2009 IEEE 31st International Conference on Software Engineering.