Refactorings of Design Defects Using Relational Concept Analysis

  • Naouel Moha
  • Amine Mohamed Rouane Hacene
  • Petko Valtchev
  • Yann-Gaël Guéhéneuc
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4933)


Software engineers often need to identify and correct design defects, i.e., recurring design problems that hinder development and maintenance by making programs harder to comprehend and/or evolve. While detection of design defects is an actively researched area, their correction — mainly a manual and time-consuming activity — is yet to be extensively investigated for automation. In this paper, we propose an automated approach for suggesting defect-correcting refactorings using relational concept analysis (rca). The added value of rca consists in exploiting the links between formal objects which abound in a software re-engineering context. We validated our approach on instances of the Blob design defect taken from four different open-source programs.


Design Defects Refactoring Relational Concept Analysis 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Arévalo, G.: High Level Views in Object Oriented Systems using Formal Concept Analysis. PhD thesis, University of Berne (January 2005)Google Scholar
  2. 2.
    Du Bois, J.V.B., Demeyer, S.: Refactoring - improving coupling and cohesion of existing code. In: Proceedings of WCRE, pp. 144–151 (2004)Google Scholar
  3. 3.
    Chidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Transactions on Software Engineering 20(6), 476–493 (1994)CrossRefGoogle Scholar
  4. 4.
    Fenton, N., Pfleeger, S.L.: Software metrics: a rigorous and practical approach, 2nd edn. PWS Publishing Co. (1997)Google Scholar
  5. 5.
    Fowler, M.: Refactoring – Improving the Design of Existing Code, 1st edn. Addison-Wesley, Reading (1999)Google Scholar
  6. 6.
    Godin, R., Valtchev, P.: Formal concept analysis-based normal forms for class hierarchy design in oo software development. In: Formal Concept Analysis: Foundations and Applications, ch. 16, pp. 304–323. Springer, Heidelberg (2005)Google Scholar
  7. 7.
    Godin, R., Mili, H.: Building and maintaining analysis-level class hierarchies using galois lattices. In: Proceedings of OOPSLA, pp. 394–410 (1993)Google Scholar
  8. 8.
    Guéhéneuc, Y.-G.: A reverse engineering tool for precise class diagrams. In: Proceedings of CASCON, pp. 28–41 (2004)Google Scholar
  9. 9.
    Guéhéneuc, Y.-G., Albin-Amiot, H.: Using design patterns and constraints to automate the detection and correction of inter-class design defects. In: Proceedings of TOOLS, pp. 296–305 (2001)Google Scholar
  10. 10.
    Guéhéneuc, Y.-G., Albin-Amiot, H.: Recovering binary class relationships: Putting icing on the UML cake. In: Proceedings of OOPSLA, pp. 301–314 (2004)Google Scholar
  11. 11.
    Huchard, M., Leblanc, H.: Computing interfaces in java. In: Proceedings of ASE, pp. 317–320 (2000)Google Scholar
  12. 12.
    Kirk, D., Roper, M., Walkinshaw, N.: Using attribute slicing to refactor large classes. In: Seminar Proceedings of Beyond Program Slicing, vol. 05451 (2006)Google Scholar
  13. 13.
    Lanza, M.: CodeCrawler—Lessons learned in building a software visualization tool. In: Proceedings of CSMR, pp. 409–418 (2003)Google Scholar
  14. 14.
    Lanza, M.: Object-Oriented Reverse Engineering – Coarse-grained, Fine-grained, and Evolutionary Software Visualization. PhD thesis, Institute of Computer Science and Applied Mathematics (May 2003)Google Scholar
  15. 15.
    Marinescu, R.: Measurement and Quality in Object-Oriented Design. PhD thesis, Politehnica University of Timisoara (October 2002)Google Scholar
  16. 16.
    Marinescu, R.: Detection strategies: Metrics-based rules for detecting design flaws. In: Proceedings of ICSM, pp. 350–359 (2004)Google Scholar
  17. 17.
    Moha, N., Guéhéneuc, Y.-G., Leduc, P.: Automatic generation of detection algorithms for design defects. In: Proceedings of ASE (2006)Google Scholar
  18. 18.
    Moha, N., et al.: Using FCA to suggest refactorings to correct design defects. In: Proceedings of CLA (2006)Google Scholar
  19. 19.
    Object Technology International / IBM. Eclipse platform – A universal tool platform (2001)Google Scholar
  20. 20.
    Galicia (September 2005),
  21. 21.
    Raţiu, D., et al.: Using history information to improve design flaws detection. In: Proceedings of CSMR, pp. 223–232 (2004)Google Scholar
  22. 22.
    Riel, A.J.: Object-Oriented Design Heuristics. Addison-Wesley, Reading (1996)Google Scholar
  23. 23.
    Sahraoui, H.A., et al.: A concept formation based approach to object identification in procedural code. Automated Software Eng. 6(4), 387–410 (1999)CrossRefGoogle Scholar
  24. 24.
    Snelting, G., Tip, F.: Understanding class hierarchies using concept analysis. ACM TOPLAS 22(3), 540–582 (2000)CrossRefGoogle Scholar
  25. 25.
    Azureus (June 2003),
  26. 26.
    Tonella, P., Antoniol, G.: Object oriented design pattern inference. In: Proceedings of ICSM, pp. 230–240 (1999)Google Scholar
  27. 27.
    Trifu, A., Dragos, I.: Strategy-based elimination of design flaws in object-oriented systems. In: Proceedings of WOOR (2003)Google Scholar
  28. 28.
    Brown, W., et al.: AntiPatterns Refactoring Software, Architectures, and Projects in Crisis. Robert Ipsen (1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Naouel Moha
    • 1
  • Amine Mohamed Rouane Hacene
    • 2
  • Petko Valtchev
    • 3
  • Yann-Gaël Guéhéneuc
    • 1
  1. 1.DIRO, University of Montréal, CP 6128, Montréal, H3C 3J7Canada
  2. 2.LORIA, BP 239 - 54506 Vandoeuvre-lès-Nancy, CedexFrance
  3. 3.LATECE, Université du Québec à Montréal, CP 8888, Montréal, H3C 3P8Canada

Personalised recommendations