I’ve been asked recently why I talk about "tangles" rather than "cycles" in the context of cyclic dependencies. The reason is clear when you look at a graph that contains a "strongly connected component" (a tangle):

Tangle 

This graph contains a single tangle of 3 nodes, but many cycles. tiles – xmlDefinition – tiles is one cycle; tiles – definition – tiles is another; tiles – definition – xmlDefinition – tiles is yet another. The number of cycles in a tangle grows dramatically with the size of the tangle. It is not unusual to have hundreds of cycles in a single tangle.  Since the tangle is the basic problem, I use that term unless I want to discuss a specific cycle.

2 Comments

  1. Struts more twisted than Spring | Deconstructing Software

    […] achievement was to grow a sizable code-base while avoiding package-level tangles. Struts did not manage […]

  2. Software erosion in pictures – findbugs « sutts on software

    […] more and more packages are being pulled into the tangle such that it is hard or impossible to talk about these as meaningful entities in their own right. […]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.