skip to main content
10.1145/1294948.1294970acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

Using concept analysis to detect co-change patterns

Published:03 September 2007Publication History

ABSTRACT

Software systems need to change over time to cope with new requirements, and due to design decisions, the changes happen to crosscut the system's structure. Understanding how changes appear in the system can reveal hidden dependencies between different entities of the system. We propose the usage of concept analysis to identify groups of entities that change in the same way and in the same time. We apply our approach at different levels of abstraction (i.e., method, class, package) and we detect fine grained changes (i.e., statements were added in a class, but no method was added there). Concept analysis is a technique that identifies entities that have the same properties, but it requires manual inspection due to the large number of candidates it detects. We propose a heuristic that dramatically eliminate the false positives. We apply our approach on two case studies and we show how we can identify hidden dependencies and detect bad smells.

References

  1. S. Bouktif, Y.-G. Gueheneuc, and G. Antoniol. Extracting change-patterns from cvs repositories. In Proceedings of the 13th Working Conference on Reverse Engineering (WCRE 2006), pages 221--230, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Breu and T. Zimmermann. Mining aspects from version history. In Proceedings of the 21st IEEE International Conference on Automated Software Engineering (ASE'06), pages 221--230, Washington, DC, USA, 2006. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. O. Ciupke. Automatic detection of design problems in object-oriented reengineering. In Proceedings of TOOLS 30 (USA), pages 18--32, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. J. Davey and E. Burd. Clustering and concept analysis for software evolution. In Proceedings of the 4th international Workshop on Principles of Software Evolution (IWPSE 2001), pages 146--149, Vienna, Austria, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts. Refactoring: Improving the Design of Existing Code. Addison Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. H. Gall, K. Hajek, and M. Jazayeri. Detection of logical coupling based on product release history. In Proceedings International Conference on Software Maintenance (ICSM '98), pages 190--198, Los Alamitos CA, 1998. IEEE Computer Society Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. H. Gall, M. Jazayeri, and J. Krajewski. CVS release history data for detecting logical couplings. In International Workshop on Principles of Software Evolution (IWPSE 2003), pages 13--23, Los Alamitos CA, 2003. IEEE Computer Society Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. Ganter and R. Wille. Formal Concept Analysis: Mathematical Foundations. Springer Verlag, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. T. Gîrba. Modeling History to Understand Software Evolution. PhD thesis, University of Berne, Berne, Nov. 2005.Google ScholarGoogle Scholar
  10. T. Gîrba and S. Ducasse. Modeling history to analyze software evolution. Journal of Software Maintenance: Research and Practice (JSME), 18:207--236, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. Hassan and R. Holt. Predicting change propagation in software systems. In Proceedings 20th IEEE International Conference on Software Maintenance (ICSM'04), pages 284--293, Los Alamitos CA, Sept. 2004. IEEE Computer Society Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. J. Itkonen, M. Hillebrand, and V. Lappalainen. Application of relation analysis to a small Java software. In Proceedings of the Conference on Software Maintenance and Reengineering (CSMR 2004), pages 233--239, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Lanza and S. Ducasse. Understanding software evolution using a combination of software visualization and software metrics. In Proceedings of Langages et Modèles à Objets (LMO'02), pages 135--149, Paris, 2002. Lavoisier.Google ScholarGoogle ScholarCross RefCross Ref
  14. M. Lehman and L. Belady. Program Evolution: Processes of Software Change. London Academic Press, London, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. R. Marinescu. Measurement and Quality in Object-Oriented Design. PhD thesis, Department of Computer Science, Politehnica University of Timişoara, 2002.Google ScholarGoogle Scholar
  16. T. McCabe. A measure of complexity. IEEE Transactions on Software Engineering, 2(4):308--320, Dec. 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. O. Nierstrasz, S. Ducasse, and T. Gîrba. The story of Moose: an agile reengineering environment. In Proceedings of the European Software Engineering Conference (ESEC/FSE 2005), pages 1--10, New York NY, 2005. ACM Press. Invited paper. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. S. Shirabad, T. C. Lethbridge, and S. Matwin. Mining the maintenance history of a legacy software system. In International Conference on Software Maintenance (ICSM 2003), pages 95--104, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Tom Tourwé and T. Mens. Identifying refactoring opportunities using logic meta programming. In Proc. 7th European Conf. Software Maintenance and Re-engineering (CSMR 2003), pages 91--100. IEEE Computer Society Press, Mar. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. E. van Emden and L. Moonen. Java quality assurance by detecting code smells. In Proc. 9th Working Conf. Reverse Engineering, pages 97--107. IEEE Computer Society Press, Oct. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. In 26th International Conference on Software Engineering (ICSE 2004), pages 563--572, Los Alamitos CA, 2004. IEEE Computer Society Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 31(6):429--445, June 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Conferences
    IWPSE '07: Ninth international workshop on Principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting
    September 2007
    122 pages
    ISBN:9781595937223
    DOI:10.1145/1294948

    Copyright © 2007 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 3 September 2007

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • Article

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader