Fine-grained Patches for Java Software Upgrades
This addresses the issue of disproportionately large patches in Java software upgrades, which is incremental as it builds on existing AST and differencing techniques.
The paper tackles the problem of generating large patches for Java software upgrades by introducing a novel methodology that uses abstract-syntax tree (AST) representations to derive fine-grained patches, resulting in significantly smaller patch sizes compared to binary differencing tools.
We present a novel methodology for deriving fine-grained patches of Java software. We consider an abstract-syntax tree (AST) representation of Java classes compiled to the Java Virtual Machine (JVM) format, and a difference analysis over the AST representation to derive patches. The AST representation defines an appropriate abstraction level for analyzing differences, yielding compact patches that correlate modularly to actual source code changes. The approach contrasts to other common, coarse-grained approaches, like plain binary differences, which may easily lead to disproportionately large patches. We present the main traits of the methodology, a prototype tool called aspa that implements it, and a case-study analysis on the use of aspa to derive patches for the Java 2 SE API. The case-study results illustrate that aspa patches have a significantly smaller size than patches derived by binary differencing tools.