Hybrid DOM-Sensitive Change Impact Analysis for JavaScript

Authors Saba Alimadadi, Ali Mesbah, Karthik Pattabiraman



PDF
Thumbnail PDF

File

LIPIcs.ECOOP.2015.321.pdf
  • Filesize: 0.98 MB
  • 25 pages

Document Identifiers

Author Details

Saba Alimadadi
Ali Mesbah
Karthik Pattabiraman

Cite AsGet BibTex

Saba Alimadadi, Ali Mesbah, and Karthik Pattabiraman. Hybrid DOM-Sensitive Change Impact Analysis for JavaScript. In 29th European Conference on Object-Oriented Programming (ECOOP 2015). Leibniz International Proceedings in Informatics (LIPIcs), Volume 37, pp. 321-345, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2015)
https://doi.org/10.4230/LIPIcs.ECOOP.2015.321

Abstract

JavaScript has grown to be among the most popular programming languages. However, performing change impact analysis on JavaScript applications is challenging due to features such as the seamless interplay with the DOM, event-driven and dynamic function calls, and asynchronous client/server communication. We first perform an empirical study of change propagation, the results of which show that the DOM-related and dynamic features of JavaScript need to be taken into consideration in the analysis since they affect change impact propagation. We propose a DOM-sensitive hybrid change impact analysis technique for Javascript through a combination of static and dynamic analysis. The proposed approach incorporates a novel ranking algorithm for indicating the importance of each entity in the impact set. Our approach is implemented in a tool called Tochal. The results of our evaluation reveal that Tochal provides a more complete analysis compared to static or dynamic methods. Moreover, through an industrial controlled experiment, we find that Tochal helps developers by improving their task completion duration by 78% and accuracy by 223%.
Keywords
  • Change impact analysis
  • JavaScript
  • hybrid analysis

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Saba Alimadadi, Sheldon Sequeira, Ali Mesbah, and Karthik Pattabiraman. Understanding JavaScript event-based interactions. In Proceedings of the International Conference on Software Engineering (ICSE), pages 367-377. ACM, 2014. Google Scholar
  2. Taweesup Apiwattanapong, Alessandro Orso, and Mary Jean Harrold. Efficient and precise dynamic impact analysis using execute-after sequences. In Proceedings of the International Conference on Software Engineering (ICSE), pages 432-441. ACM, 2005. Google Scholar
  3. Robert S. Arnold. Software Change Impact Analysis. IEEE Computer Society, 1996. Google Scholar
  4. Shawn A. Bohner and Robert S. Arnold. Software Change Impact Analysis. IEEE Computer Society Press, Los Alamitos, CA, USA, 1996. Google Scholar
  5. Ben Breech, Mike Tegtmeyer, and Lori Pollock. Integrating influence mechanisms into impact analysis for increased precision. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM), pages 55-65. IEEE, 2006. Google Scholar
  6. Bogdan Dit, Michael Wagner, Shasha Wen, Weilin Wang, Mario Linares-Vásquez, Denys Poshyvanyk, and Huzefa Kagdi. Impactminer: A tool for change impact analysis. In Companion Proceedings of the International Conference on Software Engineering (ICSE), pages 540-543. ACM, 2014. Google Scholar
  7. Document Object Model (DOM). URL: http://www.w3.org/DOM/.
  8. Asger Feldthaus, Max Schäfer, Manu Sridharan, Julian Dolby, and Frank Tip. Efficient construction of approximate call graphs for JavaScript IDE services. In Proceedings of International Conference on Software Engineering (ICSE), pages 752-761. IEEE, 2013. Google Scholar
  9. M. Gethers, B. Dit, H. Kagdi, and D. Poshyvanyk. Integrated impact analysis for managing software changes. In Proceedings of the International Conference on Software Engineering (ICSE), pages 430-440. ACM, 2012. Google Scholar
  10. Google. DevTools: The Chrome Developer Tools. https://developer.chrome.com/devtools. Google Scholar
  11. Lile Hattori, Dalton Guerrero, Jorge Figueiredo, Joao Brunet, and Jemerson Damásio. On the precision and accuracy of impact analysis techniques. In Proceedings of the International Conference on Computer and Information Science, pages 513-518, 2008. Google Scholar
  12. Simon Holm Jensen, Magnus Madsen, and Anders Møller. Modeling the HTML DOM and browser API in static analysis of JavaScript web applications. In Proceedings of the Symposium on Foundations of Software Engineering (ESEC/FSE), pages 59-69. ACM, 2011. Google Scholar
  13. Meir M Lehman. Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, 68(9):1060-1076, 1980. Google Scholar
  14. Benjamin Livshits, Manu Sridharan, Yannis Smaragdakis, Ondřej Lhoták, J. Nelson Amaral, Bor-Yuh Evan Chang, Samuel Z. Guyer, Uday P. Khedker, Anders Møller, and Dimitrios Vardoulakis. In defense of soundiness: A manifesto. Communications of the ACM, 58(2):44-46, 2015. Google Scholar
  15. Magnus Madsen, Benjamin Livshits, and Michael Fanning. Practical static analysis of JavaScript applications in the presence of frameworks and libraries. In Proceedings of the Symposium on the Foundations of Software Engineering (ESEC/FSE), pages 499-509. ACM, 2013. Google Scholar
  16. Mutation summary. URL: https://code.google.com/p/mutation-summary/.
  17. Maksym Petrenko and Václav Rajlich. Variable granularity for improving precision of impact analysis. In Proceedings of the International Conference on Program Comprehension (ICPC), pages 10-19. IEEE, 2009. Google Scholar
  18. Phormer PHP photo gallery. URL: http://p.horm.org/er/.
  19. Murali Krishna Ramanathan, Ananth Grama, and Suresh Jagannathan. Sieve: A tool for automatically detecting variations across program versions. In Proceedings of the International Conference on Automated Software Engineering (ASE), pages 241-252. IEEE, 2006. Google Scholar
  20. Xiaoxia Ren, Fenil Shah, Frank Tip, Barbara G. Ryder, and Ophelia Chesley. Chianti: a tool for change impact analysis of Java programs. In Proceedings of the ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 432-448. ACM, 2004. Google Scholar
  21. Gregor Richards, Sylvain Lebresne, Brian Burg, and Jan Vitek. An analysis of the dynamic behavior of JavaScript programs. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI), pages 1-12. ACM, 2010. Google Scholar
  22. Manu Sridharan, Julian Dolby, Satish Chandra, Max Schäfer, and Frank Tip. Correlation tracking for points-to analysis of JavaScript. In Proceedings of European Conference on Object-Oriented Programming (ECOOP), pages 435-458. Springer, 2012. Google Scholar
  23. T. J. Watson Libraries for Analysis. WALA. http://wala.sourceforge.net/. Google Scholar
  24. Tochal. URL: https://github.com/saltlab/tochal.
  25. W3C. Document Object Model (DOM) level 2 events specification. http://www.w3.org/TR/DOM-Level-2-Events/, 13 November 2000. Google Scholar
  26. Shiyi Wei and Barbara G. Ryder. Practical blended taint analysis for JavaScript. In Proceedings of the International Symposium on Software Testing and Analysis (ISSTA), pages 336-346. ACM, 2013. Google Scholar
  27. Shiyi Wei and Barbara G Ryder. State-sensitive points-to analysis for the dynamic behavior of JavaScript objects. In Proceedings of European Conference on Object-Oriented Programming (ECOOP), pages 1-26. Springer, 2014. Google Scholar
  28. Claes Wohlin, Per Runeson, Martin Höst, Magnus C. Ohlsson, Bjöorn Regnell, and Anders Wesslén. Experimentation in software engineering: an introduction. Kluwer, 2000. Google Scholar
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail