Refactoring is about changing the design of existing code without changing its behaviour, but with the aim of making code easier to understand, modify, or reuse. Taking Haskell an...
Many articles and tools have been proposed over the years for mining design patterns from source code. These tools differ in several aspects, thus their fair comparison is hard. B...
Call graphs are widely used to represent calling relationships among methods. However, there is not much interest in calling relationships among library methods in many software e...
Programmers often want to transform the source or binary representations of their programs (e.g., to optimize, add dynamic safety checks, or add profile gathering code). Unfortun...
Traditional program slicing requires two parameters: a program location and a variable, or perhaps a set of variables, of interest. Stop-list slicing adds a third parameter to the...
Transformations of numerical source code may require the augmentation of the original variables with new data to represent additional data the transformed program operates on. Aut...
Metamorphic malware — including certain viruses and worms — rewrite their code during propagation. This paper presents a method for normalizing multiple variants of metamorphi...
Andrew Walenstein, Rachit Mathur, Mohamed R. Chouc...
An approach for factoring source-code differences is presented. A single large difference between two versions of a program is decomposed into factors (i.e., smaller changes). The...
Michael L. Collard, Huzefa H. Kagdi, Jonathan I. M...