Skip to main content

Mining Evolution of Object Usage

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 6813))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Google Scholar 

  2. 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)

    Chapter  Google Scholar 

  3. 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)

    Chapter  Google Scholar 

  4. 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)

    Chapter  Google Scholar 

  5. Ganter, B., Wille, R.: Formal concept analysis: Mathematical foundations. Springer, Heidelberg (1999)

    Book  MATH  Google Scholar 

  6. 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)

  7. 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)

    Chapter  Google Scholar 

  8. 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)

    Chapter  Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Chapter  Google Scholar 

  11. Lindig, C.: Mining patterns and violations using concept analysis. Technical report, Saarland University, Saarbrücken, Germany (June 2007)

    Google Scholar 

  12. 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)

    Google Scholar 

  13. McKean, E. (ed.): The New Oxford American Dictionary, 2nd edn. Oxford University Press, Oxford (2005)

    Google Scholar 

  14. 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)

    Google Scholar 

  15. 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)

    Chapter  Google Scholar 

  16. 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)

    Google Scholar 

  17. 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)

    Google Scholar 

  18. 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)

    Chapter  Google Scholar 

  19. 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)

    Article  Google Scholar 

  20. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics