The chaos model and the chaos cycle
Authors: Raccoon L. B. S. 
Published: July 2004

I believe that to truly understand software development, we must not only understand the flow of an entire project and how to write each line of code, we must also understand how one line of code relates to the whole project. It seems to me that we have studied each aspect of software development in isolation, not how all aspects fit together. The Waterfall model, defined by Royce, and the Spiral model, defined by Boehm, discuss management-level issues, such as phases and deadlines, rather than how to write one line of code or fix one bug. Programming methodologies show us how to solve technical problems, rather than how to solve users' problems or to meet deadlines. In this paper, I use the principles of chaos (or fractals) as a metaphor to bridge the gap in our understanding of the relationship between one line of code and the entire project.Throughout this paper, I describe software development from the developer's point of view. If we want to understand software development, we must describe what developers do. After all, developers do the work. We know that large programs consist of many lines of code and that large projects consist of the daily efforts made by individual developers. We know that the large scale and the small scale somehow relate to each other. Yet most models of software development seem to focus on one extreme or another, ignoring the role of developers.In the first section, I define the Chaos model which combines a simple, people-oriented, problem-solving loop with fractals to describe the structures within a project. I believe that software development is a human activity: people write the software, use the solutions, and experience the problems. I believe that creating software is very complex; we cannot simplify software development by imposing simple models on it. The Chaos model uses fractals to describe a cohesive structure which encompasses many of the issues actually encountered during software development. This structure helps to explain the influences within a project and the roles that developers play.In the second section, I interpret the Chaos model to reveal the meaning behind the structure. I show that users, developers, and technologies form a continuum throughout software development. They all interact in a complex dance. This interpretation improves our understanding of the contribution and limitations of users, developers, and technologies.In the third section, I define the Chaos life cycle to describe how a project evolves over time. Life cycles are essentially the top-level perspectives of software development. In light of the Chaos model, I define the phases of the life cycle in terms of fractals and show that all phases occur throughout the life cycle. These chaotic definitions suggest that I can interpret the complete life cycle in terms of each phase, and conversely, I can interpret each phase in terms of a complete life cycle. The phases of the life cycle show our perspectives on the state of a project, rather than what the state of a project really is. Thus, developers need many skills to be able to understand and respond to situations that arise throughout a software development project.