200 likes | 213 Views
Provide adaptive change recommendations for client programs affected by framework evolution using SemDiff recommendation system. Evaluate Eclipse JDT's framework evolution with RefactoringCrawler. Achieve 89% relevant recommendations success. Automate adaptive changes efficiently.
E N D
Recommending Adaptive Changes for Framework Evolution Presenter: Ying Zhang
Problem Definition • Provide a tool that can provide adaptations to client programs which are affected by the non-trivial evolution of framework.
Approach: SemDiff A recommendation system suggests adaptations to client programs
Confidence Metric n1 n1, n2 m1 n2 caller1, caller2 m2, m3
Deprecated method Recommended replacement
Change Chains • A method is replaced several times • Some methods removed the call VS All method removed the call • Discard the recommendation in a change chain • reapply the call difference analysis described above to find a more relevant recommendation
Caller stability • Both caller and requested method are replaced • Find a replacement for the deleted caller • Recommend the methods that are called by the caller replacement minus the methods that were previously called by the deleted caller.
Evaluation • Eclipse Java Development Tool (JDT) platform • org.eclipse.jdt.coreand org.eclipse.jdt.uiplug-ins from version 3.1 to 3.3 • SemDiff to analyze the source history of the Eclipse framework • RefactoringCrawler detects refactorings as baseline
Result • The execution of the repository analysis framework took 16 hours on a Pentium D 3.2 Ghz with 2 Gb of RAM and running Ubuntu Server 7.04. • each request took 1 second to complete. Running the three analysis with RefactoringCrawler took 13 hours.
Result • Relevant recommendations • SemDiff found relevant recommendations for 89% of the problematic calls in the client programs • Confidence Value • SemDiff produced an average of 7.1 recommendations per request • confidence value was necessary to discriminate relevant replacements from false positives • Non-trivial changes • RefactoringCrawler found 319 refactorings between JDT releases 3.1 and 3.3, only one related to errors within study scope. SemDiff works in the face of non-trivial changes
Related Works • K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In Proc. of the Int’l Conference on Software Maintenance, pages 359–369, 1996. • J. Henkel and A. Diwan. Catchup!: capturing and replaying refactorings to support API evolution. In Proc. of the 27th international conference on Software engineering, pages 274–283, 2005. • D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In Proc. of the European Conference on Object-Oriented Programming, pages 404–428, 2006. • M. W. Godfrey and L. Zou. Using origin analysis to detect merging and splitting of source code entities. IEEE Transactions on Software Engineering, 31(2):166–181, 2005.
Conclusion • SemDiff automatically recommends adaptive changes in the face of non-trivial framework evolution • SemDiff is able to track a framework’s evolution and infer non-trivial changes • An historical study of the Eclipse JDT framework and three of its client programs showed the effectiveness for their system