Abstract
As software evolves, so does the interaction between its components. But how can we check if components are updated consistently? By abstracting object usage into temporal properties, we can learn evolution patterns that express how object usage evolves over time. Software can then be checked against these patterns, revealing code that is in need of update: “Your check for isValidWidget() is now superseded by checkWidget().” In an evaluation of seven different versions of three open source projects, our LAMARCK tool was able to detect existing code issues with a precision of 33%–64% and to prevent such issues with a precision of 90%–100%.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Dagenais, B., Robillard, M.P.: Recommending adaptive changes for framework evolution. In: ICSE 2008: Proceedings of the 30th International Conference on Software Engineering, pp. 481–490. ACM, New York (2008)
Dig, D., Comertoglu, C., Marinov, D., Johnson, R.: Automated detection of refactorings in evolving components. In: Hu, Q. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 404–428. Springer, Heidelberg (2006)
Dig, D., Johnson, R.: The role of refactorings in API evolution. In: Proceedings of the 21st IEEE International Conference on Software Maintenance, pp. 389–398. IEEE Computer Society, Washington, DC, USA (2005)
Fluri, B., Zuberbühler, J., Gall, H.C.: Recommending method invocation context changes. In: RSSE 2008: Proceedings of the 2008 International Workshop on Recommendation Systems for Software Engineering, pp. 1–5. ACM, New York (2008)
Ganter, B., Wille, R.: Formal concept analysis: Mathematical foundations. Springer, Heidelberg (1999)
Götzmann, D. N.: Formale Begriffsanalyse in Java: Entwurf und Implementierung effizienter Algorithmen. Bachelor thesis, Saarland University, Publication and software available from (2007), http://code.google.com/p/colibri-java/ (accessed April 6, 2010)
Kim, M., Notkin, D.: Discovering and representing systematic code changes. In: ICSE 2009: Proceedings of the 31st International Conference on Software Engineering, pp. 309–319. IEEE Computer Society, Washington, DC, USA (2009)
Kim, S., Pan, K., James Whitehead, J.E.E.: Memories of bug fixes. In: SIGSOFT 2006/FSE-14: Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 35–45. ACM, New York (2006)
Kim, S., Pan, K., Whitehead Jr., E.J.: When functions change their names: Automatic detection of origin relationships. In: Proceedings of the 12th Working Conference on Reverse Engineering, pp. 143–152. IEEE Computer Society, Washington, DC, USA (2005)
Li, Z., Zhou, Y.: PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code. In: ESEC/FSE-13: Proceedings of the 10th European Software Engineering Conference held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 306–315. ACM, New York (2005)
Lindig, C.: Mining patterns and violations using concept analysis. Technical report, Saarland University, Saarbrücken, Germany (June 2007)
Livshits, V.B., Zimmermann, T.: Dynamine: Finding common error patterns by mining software revision histories. In: Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 296–305. ACM, New York (2005)
McKean, E. (ed.): The New Oxford American Dictionary, 2nd edn. Oxford University Press, Oxford (2005)
Nguyen, H.A., Nguyen, T.T., Wilson Jr., G., Nguyen, A.T., Kim, M., Nguyen, T.N.: A graph-based approach to API usage adaptation. In: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA 2010, pp. 302–321. ACM, New York (2010)
Nguyen, T.T., Nguyen, H.A., Pham, N.H., Al-Kofahi, J., Nguyen, T.N.: Recurring bug fixes in object-oriented programs. In: ICSE 2010: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, pp. 315–324. ACM, New York (2010)
Nguyen, T.T., Nguyen, H.A., Pham, N.H., Al-Kofahi, J.M., Nguyen, T.N.: Graph-based mining of multiple object usage patterns. In: ESEC/FSE 2009: Proceedings of the the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 383–392. ACM, New York (2009)
Wasylkowski, A., Zeller, A., Lindig, C.: Detecting object usage anomalies. In: Proceedings of the 11th European Software Engineering Conference held jointly with 15th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 35–44 (September 2007)
Weissgerber, P., Diehl, S.: Identifying refactorings from source-code changes. In: Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering, pp. 231–240. IEEE Computer Society, Washington, DC, USA (2006)
Williams, C.C., Hollingsworth, J.K.: Automatic mining of source code repositories to improve bug finding techniques. IEEE Trans. Softw. Eng. 31(6), 466–480 (2005)
Xing, Z., Stroulia, E.: Refactoring detection based on umldiff change-facts queries. In: Proceedings of the 13th Working Conference on Reverse Engineering, pp. 263–274. IEEE Computer Society, Washington, DC, USA (2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Mileva, Y.M., Wasylkowski, A., Zeller, A. (2011). Mining Evolution of Object Usage. In: Mezini, M. (eds) ECOOP 2011 – Object-Oriented Programming. ECOOP 2011. Lecture Notes in Computer Science, vol 6813. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-22655-7_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-22655-7_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-22654-0
Online ISBN: 978-3-642-22655-7
eBook Packages: Computer ScienceComputer Science (R0)