Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems
By: Jannik Laval, Jean-Rémy Falleri, Philippe Vismara, Stéphane Ducasse
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 developers to remove cycles from their programs. In this paper, we describe an efficient algorithm that performs a fine-grained analysis of cycles among application packages. In addition, we define multiple metrics to rank cycles by their level of undesirability, prioritizing cycles that are the more undesired by developers. We compare these multiple ranking metrics on four large and mature software systems in Java and Smalltalk.
Software architecture, software re-engineering, package cycle, package dependency
Jannik Laval, Jean-Rémy Falleri, Philippe Vismara, Stéphane Ducasse, “Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems”, Journal of Object Technology, Volume 11, no. 1 (April 2012), pp. 4:1-24, doi:10.5381/jot.2012.11.1.a4.