Skip to main content

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

  • Conference paper
Objects, Models, Components, Patterns (TOOLS 2011)

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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 

  4. Melton, H., Tempero, E.: An empirical study of cycles among classes in java. Empirical Software Engineering 12(4), 389–415 (2007)

    Article  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 

  9. Tarjan, R.E.: Depth-first search and linear graph algorithms. SIAM J. Comput. 1(2), 146–160 (1972)

    Article  MathSciNet  MATH  Google Scholar 

  10. Tarjan, R.E.: Enumeration of the elementary circuits of a directed graph. SIAM J. Comput. 2(3), 211–216 (1973)

    Article  MathSciNet  MATH  Google Scholar 

  11. Vainsencher, D.: Mudpie: layers in the ball of mud. Computer Languages, Systems & Structures 30(1-2), 5–19 (2004)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Falleri, JR., Denier, S., Laval, J., Vismara, P., Ducasse, S. (2011). Efficient Retrieval and Ranking of Undesired Package Cycles in Large Software Systems. In: Bishop, J., Vallecillo, A. (eds) Objects, Models, Components, Patterns. TOOLS 2011. Lecture Notes in Computer Science, vol 6705. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-21952-8_19

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-21952-8_19

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-21951-1

  • Online ISBN: 978-3-642-21952-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics