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.

[1]  Jean-Marc Jézéquel,et al.  Efficient object-oriented integration and regression testing , 2000, IEEE Trans. Reliab..

[2]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .

[3]  Lionel C. Briand,et al.  Revisiting strategies for ordering class integration testing in the presence of dependency cycles , 2001, Proceedings 12th International Symposium on Software Reliability Engineering.

[4]  Stéphane Ducasse,et al.  Distribution Map , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[5]  Robert E. Tarjan,et al.  Depth-First Search and Linear Graph Algorithms , 1972, SIAM J. Comput..

[6]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[7]  Pierre Poulin,et al.  Visualization-based analysis of quality for large-scale software systems , 2005, ASE.

[8]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[9]  Jean-Marc Jézéquel,et al.  Selecting an Efficient OO Integration Testing Strategy: An Experimental Comparison of Actual Strategies , 2001, ECOOP.

[10]  Kuo-Chung Tai,et al.  Test order for inter-class integration testing of object-oriented software , 1997, Proceedings Twenty-First Annual International Computer Software and Applications Conference (COMPSAC'97).

[11]  Michael W. Godfrey,et al.  System-level Usage Dependency Analysis of Object-Oriented Systems , 2007, 2007 IEEE International Conference on Software Maintenance.

[12]  Alexandre Bergel,et al.  Identifying Cycle Causes with Enriched Dependency Structural Matrix , 2009, 2009 16th Working Conference on Reverse Engineering.

[13]  Nicolas Anquetil,et al.  OZONE: Package Layered Structure Identification in presence of Cycles , 2010 .

[14]  Michael Balzer,et al.  Voronoi treemaps for the visualization of software metrics , 2005, SoftVis '05.

[15]  Ewan D. Tempero,et al.  Jooj: Real-Time Support For Avoiding Cyclic Dependencies , 2007, ACSC.

[16]  Edwin Hautus,et al.  IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS , 2002 .

[17]  David Chenho Kung,et al.  Or Regression Testing of Object-Oriented Programs , 1996, J. Syst. Softw..

[18]  Ewan D. Tempero,et al.  An empirical study of cycles among classes in Java , 2007, Empirical Software Engineering.

[19]  Stéphane Ducasse,et al.  Package Surface Blueprints: Visually Supporting the Understanding of Package Relationships , 2007, 2007 IEEE International Conference on Software Maintenance.

[20]  Michele Lanza,et al.  Package patterns for visual architecture recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[21]  Ian H. Witten,et al.  Can We Avoid High Coupling? , 2011, ECOOP.

[22]  JaatunMartin Gilje,et al.  Agile Software Development , 2002, Comput. Sci. Educ..

[23]  Robert E. Tarjan,et al.  Enumeration of the Elementary Circuits of a Directed Graph , 1972, SIAM J. Comput..

[24]  Alistair Cockburn,et al.  Agile Software Development , 2001 .

[25]  Per Capita,et al.  About the authors , 1995, Machine Vision and Applications.

[26]  Daniel Vainsencher,et al.  MudPie: layers in the ball of mud , 2004, Comput. Lang. Syst. Struct..

[27]  Steven D. Eppinger,et al.  Methods for Analyzing Design Procedures , 2011 .

[28]  Stéphane Ducasse,et al.  Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems , 2012, J. Object Technol..

[29]  Vineet Sinha,et al.  Using dependency models to manage complex software architecture , 2005, OOPSLA '05.

[30]  Stéphane Ducasse,et al.  The class blueprint: visually supporting the understanding of glasses , 2005, IEEE Transactions on Software Engineering.