Design considerations

Couldn't there be an option showing all cyclic dependencies?

The idea is that architecture is not arrived at by "reacting to symptoms" (e.g. to cycles), but on the contrary by "acting," i.e., by wanting that certain dependencies may occur, whereas others do not occur. Thus, the goal is not that a tool emits warnings, but that an architect prescribes allowed dependency patterns. These might also include cycles at certain or even many places. The object-relational mapping mentioned above, for example, had—intentionally—almost no restrictions on class dependencies, but very restrictive rules for method dependencies.

Couldn't the dependency rule language allow for "except rules," e.g., "All sub-namespaces of A except A.B may use C"?

  • First, dependency rules should not be too complex to understand. After all, they capture the essence of the (static) structure of a software.
  • Second, if dependency rules need exceptions, it makes more sense to change the architecture than to describe a complicated architecture.
  • Third, regular expressions cannot easily express "but not containing that string." More or less expensively implementing such a feature in light of the previous items did not seem useful.

Last edited Jun 21, 2010 at 7:18 PM by thoemmi, version 1


No comments yet.