Chaos in Models, Life Cycles, and Strategies


I use chaos as a metaphor in two ways: to see the structure of a piece of code (the Chaos model) and to see the sequence of events within a process (the Chaos life cycle). I use these metaphors to show why the middle levels of the project are important (the Complexity Gap) and to discuss the need for a systematic strategy (the Chaos strategy).

Chaos Model

The Chaos Model defines a chaotic structure within software processes. We identify many levels of problem solving in a project.

Adjacent levels affect each other strongly. For example, the meaning of a function depends very much on the meaning and position of each line of code. Distant levels affect each other only loosely. The meaning of a component depends very little on the meaning or position of any one line of code. If developers had used different data structures or a different program organization, completely different lines of code would have been written.

Chaos Life Cycle

The Chaos Life Cycle defines the sequence of events within a process.

Complexity Gap

The Complexity Gap extends the ideas from the Chaos model and describes the important middle levels of a project.

The lowest levels of a project are well understood. Any programmer worth his or her salt can write a few lines of code, almost without thinking, but writing anything larger becomes very difficult.

The highest levels of the project are also well understood. The highest level is the whole program. Stepwise refinement works well at the top levels to break the whole program into large components, but below that, it degenerates into a morass of arbitrary decisions.

The trick is to understand the middle levels of the project, where the high-level goals transmute into low-level solutions. We call this gap between the highest and lowest levels the "complexity gap."

Chaos Strategy

The Chaos Strategy helps to answer the question, "what line of code should I write next?" It is a "middle-out" strategy that presumes that the process has a chaotic complxity.


The following site discusses chaos in software engineering and related ideas.

Following sites discuss chaos in general terms.


Go to L. B. S. Raccoon's home page.

© Copyright 1996 by L. B. S. Raccoon. All Rights Reserved.