Abstract
In technical design of software systems as conventionally practiced, call
graphs often contain cycles. We show that cyclic call graphs are highly
problematic for a number of reasons, the most important being that they
require careful handling on a case-by-case basis by custom-written
code, thus preventing the standardization, and therefore the automation, of
system assembly. We discuss refactoring strategies for systematically
eliminating call cycles, including a universally applicable technique for
trivially eliminating a certain common type of call cycle. We conclude that
since call cycles can be avoided or eliminated, they can be comprehensively
disallowed, thus paving the way for the standardization and automation of
system assembly.