skip to main content
10.1145/2591062.2591182acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Improving software through automatic untangling of cyclic dependencies

Published: 31 May 2014 Publication History

Abstract

Cyclic dependencies among software components are considered an architectural problem that increases the development time and prevents proper reuse. One cause for the existence of such dependencies is the improper organization of elements into components.
Optimal reorganization of the components that resolves the cyclic dependencies in large and complex software systems is extremely difficult to perform manually and is not computationally feasible to perform automatically.
We present an approach for automatic untangling of cyclic dependencies among components for cycles of any size, having direct or transitive dependencies on one another. Our approach aims at minimizing the modifications to the original structure of the system, while taking into account various architectural properties.
We evaluate our solution on twelve open source and three industrial applications. We demonstrate its applicability and value through architectural metrics and feedback from system architects.

References

[1]
A. Abadi, R. Ettinger, and Y. A. Feldman. Fine slicing - theory and applications for computation extraction. In Fundamental Approaches to Software Engineering - 15th International Conference, FASE 2012, pages 471–485, 2012.
[2]
H. Abdeen, S. Ducasse, H. Sahraoui, and I. Alloui. Automatic package coupling and cycle minimization. In Proceedings of the 2009 16th Working Conference on Reverse Engineering, WCRE ’09, pages 103–112. IEEE Computer Society, 2009.
[3]
F. Deissenboeck, L. Heinemann, B. Hummel, and E. Juergens. Flexible architecture conformance assessment with conqat. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2, ICSE ’10, pages 247–250. ACM, 2010.
[4]
S. Ducasse, D. Pollet, M. Suen, H. Abdeen, and I. Alloui. Package surface blueprints: Visually supporting the understanding of package relationships. In 23rd IEEE International Conference on Software Maintenance (ICSM 2007), pages 94–103, 2007.
[5]
EMF. Eclipse modeling framework. http://www.eclipse.org/modeling/emf, 2012.
[6]
J.-R. Falleri, S. Denier, J. Laval, P. Vismara, and S. Ducasse. Efficient retrieval and ranking of undesired package cycles in large software systems. In Proceedings of the 49th international conference on Objects, models, components, patterns, TOOLS’11, pages 260–275. Springer-Verlag, 2011.
[7]
M. R. Garey and D. S. Johnson. Computers and Intractability; A Guide to the Theory of NP-Completeness. W. H. Freeman and Co., 1990.
[8]
M. Goldstein and D. Moshkovich. System grokking: a novel approach for software understanding, validation, and evolution. In Proceedings of the 7th international conference on Next Generation Information Technologies and Systems, NGITS’09, pages 38–49. Springer-Verlag, 2009.
[9]
M. Harman, R. M. Hierons, and M. Proctor. A new representation and crossover operator for search-based optimization of software modularization. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO ’02, pages 1351–1358. Morgan Kaufmann Publishers Inc., 2002.
[10]
N. Harrison. Using .net reflector to manage complex software dependencies. http://stan4j.com/papers/stan-whitepaper.pdf, 2000.
[11]
J. Laval, S. Denier, S. Ducasse, and A. Bergel. Identifying cycle causes with enriched dependency structural matrix. In Proceedings of the 2009 16th Working Conference on Reverse Engineering, WCRE ’09, pages 113–122. IEEE Computer Society, 2009.
[12]
R. C. Martin. Agile Software Development: Principles, Patterns, and Practices. Prentice Hall PTR, Upper Saddle River, NJ, USA, 2003.
[13]
H. Melton and E. Tempero. An empirical study of cycles among classes in java. Empirical Software Engineering, 12(4):389–415, August 2007.
[14]
H. Melton and E. Tempero. Jooj: real-time support for avoiding cyclic dependencies. In Proceedings of the thirtieth Australasian conference on Computer science - Volume 62, ACSC ’07, pages 87–95. Australian Computer Society, Inc., 2007.
[15]
T. Mens, G. Taentzer, and O. Runge. Analysing refactoring dependencies using graph transformation. volume 6, pages 269–285, 2007.
[16]
B. S. Mitchell and S. Mancoridis. On the evaluation of the bunch search-based software modularization algorithm. Soft Computing - A Fusion of Foundations, Methodologies and Applications, 12:77–93, August 2007.
[17]
D. L. Parnas. On the criteria to be used in decomposing systems into modules. volume 15, pages 1053–1058. ACM, December 1972.
[18]
D. L. Parnas. Designing software for ease of extension and contraction. In Proceedings of the 3rd international conference on Software engineering, ICSE ’78, pages 264–277, Piscataway, NJ, USA, 1978. IEEE Press.
[19]
N. Sangal, E. Jordan, V. Sinha, and D. Jackson. Using dependency models to manage complex software architecture. In OOPLSA, pages 167–176. ACM Press, 2005.
[20]
R. W. Schwanke. An intelligent tool for re-engineering software modularity. In Proceedings of the 13th international conference on Software engineering, ICSE ’91, pages 83–92. IEEE Computer Society Press, 1991.
[21]
O. Seng, M. Bauer, M. Biehl, and G. Pache. Search-based improvement of subsystem decompositions. In Proceedings of the 2005 conference on Genetic and evolutionary computation, GECCO ’05, pages 1045–1051. ACM, 2005.
[22]
K. J. Sullivan, W. Griswold, Y. Cai, and B. Hallen. The structure and value of modularity in software design. In Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering, ESEC/FSE-9, pages 99–108. ACM, 2001.
[23]
R. E. Tarjan. Depth-first search and linear graph algorithms. SIAM J. Comput., 1(2):146–160, 1972.
[24]
E. Tempero, C. Anslow, J. Dietrich, T. Han, J. Li, M. Lumpe, H. Melton, and J. Noble. Qualitas corpus: A curated collection of java code for empirical studies. In 2010 Asia Pacific Software Engineering Conference (APSEC2010), pages 336–345, December 2010.
[25]
A. Trifu and U. Reupke. Towards automated restructuring of object oriented systems. In Software Maintenance and Reengineering, 2007. CSMR ’07. 11th European Conference on, pages 39–48, 2007.
[26]
D. Vainsencher. Mudpie: layers in the ball of mud. In Computer Languages, Systems and Structures, pages 200–3, 2004.
[27]
T. Vassilios and R. C. Holt. The orphan adoption problem in architecture maintenance. In Proc. Working Conf. on Reverse Engineering, pages 76–82. IEEE, IEEE Comp. Soc. Press, 1997.
[28]
S. Wong, Y. Cai, M. Kim, and M. Dalton. Detecting software modularity violations. In Proceedings of the 33rd International Conference on Software Engineering, ICSE ’11, pages 411–420. ACM, 2011.

Cited By

View all
  • (2024)An empirical study of untangling patterns of two-class dependency cyclesEmpirical Software Engineering10.1007/s10664-023-10438-029:2Online publication date: 12-Mar-2024
  • (2022)An Automated Graph Construction Approach from Relational Databases to Neo4j2022 IEEE 22nd International Symposium on Computational Intelligence and Informatics and 8th IEEE International Conference on Recent Achievements in Mechatronics, Automation, Computer Science and Robotics (CINTI-MACRo)10.1109/CINTI-MACRo57952.2022.10029438(000131-000136)Online publication date: 21-Nov-2022
  • (2022)Fine‐grained analysis of dependency cycles among classesJournal of Software: Evolution and Process10.1002/smr.249635:1Online publication date: Aug-2022
  • Show More Cited By

Index Terms

  1. Improving software through automatic untangling of cyclic dependencies

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICSE Companion 2014: Companion Proceedings of the 36th International Conference on Software Engineering
    May 2014
    741 pages
    ISBN:9781450327688
    DOI:10.1145/2591062
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    In-Cooperation

    • TCSE: IEEE Computer Society's Tech. Council on Software Engin.

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 31 May 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Cyclic dependencies
    2. architectural complexity

    Qualifiers

    • Article

    Conference

    ICSE '14
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 276 of 1,856 submissions, 15%

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)12
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 20 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)An empirical study of untangling patterns of two-class dependency cyclesEmpirical Software Engineering10.1007/s10664-023-10438-029:2Online publication date: 12-Mar-2024
    • (2022)An Automated Graph Construction Approach from Relational Databases to Neo4j2022 IEEE 22nd International Symposium on Computational Intelligence and Informatics and 8th IEEE International Conference on Recent Achievements in Mechatronics, Automation, Computer Science and Robotics (CINTI-MACRo)10.1109/CINTI-MACRo57952.2022.10029438(000131-000136)Online publication date: 21-Nov-2022
    • (2022)Fine‐grained analysis of dependency cycles among classesJournal of Software: Evolution and Process10.1002/smr.249635:1Online publication date: Aug-2022
    • (2021)Semi-automatic Feedback for Improving Architecture Conformance to Microservice Patterns and Practices2021 IEEE 18th International Conference on Software Architecture (ICSA)10.1109/ICSA51549.2021.00012(36-46)Online publication date: Mar-2021
    • (2020)Assessing Architecture Conformance to Coupling-Related Patterns and Practices in MicroservicesSoftware Architecture10.1007/978-3-030-58923-3_1(3-20)Online publication date: 8-Sep-2020
    • (2015)Automatic and continuous software architecture validationProceedings of the 37th International Conference on Software Engineering - Volume 210.5555/2819009.2819021(59-68)Online publication date: 16-May-2015
    • (2015)Automatic and Continuous Software Architecture Validation2015 IEEE/ACM 37th IEEE International Conference on Software Engineering10.1109/ICSE.2015.135(59-68)Online publication date: May-2015

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media