Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems
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.
KeywordsDependency Graph Short Cycle Pirical Software Strongly Connect Component Elementary Cycle
Unable to display preview. Download preview PDF.
- 1.Hautus, E.: Improving java software through package structure analysis. In: IASTED International Conference Software Engineering and Applications (2002)Google Scholar
- 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.Martin, R.C.: Agile Software Development. Principles, Patterns, and Practices. Prentice-Hall, Englewood Cliffs (2002)Google Scholar
- 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.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.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.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