Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems

  • Jean-Rémy Falleri
  • Simon Denier
  • Jannik Laval
  • Philippe Vismara
  • Stéphane Ducasse
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6705)


Many design guidelines state that a software system architecture should avoid cycles between its packages. Yet such cycles appear again and again in many programs. We believe that the existing approaches for cycle detection are too coarse to assist the developers to remove cycles from their programs. In this paper, we describe an efficient algorithm that performs a fine-grained analysis of the cycles among the packages of an application. In addition, we define a metric to rank cycles by their level of undesirability, prioritizing the cycles that seems the more undesired by the developers. Our approach is validated on two large and mature software systems in Java and Smalltalk.


Dependency Graph Short Cycle Pirical Software Strongly Connect Component Elementary Cycle 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Hautus, E.: Improving java software through package structure analysis. In: IASTED International Conference Software Engineering and Applications (2002)Google Scholar
  2. 2.
    Laval, J., Denier, S., Ducasse, S., Bergel, A.: Identifying cycle causes with enriched dependency structural matrix. In: WCRE 2009: Proceedings of the 2009 16th Working Conference on Reverse Engineering. Lille, France (2009)Google Scholar
  3. 3.
    Martin, R.C.: Agile Software Development. Principles, Patterns, and Practices. Prentice-Hall, Englewood Cliffs (2002)Google Scholar
  4. 4.
    Melton, H., Tempero, E.: An empirical study of cycles among classes in java. Empirical Software Engineering 12(4), 389–415 (2007)CrossRefGoogle Scholar
  5. 5.
    Melton, H., Tempero, E.D.: Jooj: Real-time support for avoiding cyclic dependencies. In: 14th Asia-Pacific Software Engineering Conference, pp. 87–95. IEEE Computer Society Press, Los Alamitos (2007)Google Scholar
  6. 6.
    Parnas, D.L.: Designing software for ease of extension and contraction. In: International Conference on Software Engineering (ICSE 1978), pp. 264–277 (1978)Google Scholar
  7. 7.
    Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using dependency models to manage complex software architecture. In: Proceedings of OOPSLA 2005. pp. 167–176 (2005)Google Scholar
  8. 8.
    Steven, D., Eppinger, D.A.G.: Methods for analyzing design procedures. In: ASME Conference on Design Theory and Methodology. pp. 227–233, miami (1991)Google Scholar
  9. 9.
    Tarjan, R.E.: Depth-first search and linear graph algorithms. SIAM J. Comput. 1(2), 146–160 (1972)MathSciNetCrossRefzbMATHGoogle Scholar
  10. 10.
    Tarjan, R.E.: Enumeration of the elementary circuits of a directed graph. SIAM J. Comput. 2(3), 211–216 (1973)MathSciNetCrossRefzbMATHGoogle Scholar
  11. 11.
    Vainsencher, D.: Mudpie: layers in the ball of mud. Computer Languages, Systems & Structures 30(1-2), 5–19 (2004)CrossRefzbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Jean-Rémy Falleri
    • 1
  • Simon Denier
    • 2
  • Jannik Laval
    • 2
  • Philippe Vismara
    • 3
  • Stéphane Ducasse
    • 2
  1. 1.Université de BordeauxFrance
  2. 2.Rmod - USTL - INRIA Lille Nord EuropeFrance
  3. 3.LIRMM, UMR5506 CNRS - Université Montpellier 2 MISTEA, UMR729 Montpellier SupAgro - INRAFrance

Personalised recommendations