One of the factors that can make a program di cult to understand is that code responsible for accomplishing more than one purpose may be woven together in a single section. We call this interleaving, and it may arise either intentionally { for example, in optimizing a program, a programmer may use some intermediate result for several purposes { or unintentionally, due to patches, quick xes, or other hasty maintenance practices. To understand this phenomenon, we have looked at a variety of interleaving instances in actual programs and have distilled characteristic features. If the characterization proves to be robust then it will enable the design of tools for detection of interleavings and the extraction of the individual strands of computation.1
Spencer Rugaber, Kurt Stirewalt, Linda M. Wills