Article ID: | iaor20097395 |
Country: | United Kingdom |
Volume: | 2 |
Issue: | 1 |
Start Page Number: | 3 |
End Page Number: | 17 |
Publication Date: | Mar 2008 |
Journal: | Journal of Simulation |
Authors: | Henriksen J O |
The goal of this paper is to present ways in which we can deal with complexity. I believe that the explosive growth of complexity is the computing industry's number one problem. It is the root cause of many other problems, such as computer security. Paradoxically, organizations that are in the best positions to deal with complexity are the ones that are, in fact, creating and expanding complexity. In the first section of this paper, I discuss the pervasive presence of complexity in our society in general, and in the simulation community in particular. Complexity is of particular importance to the simulation community, because reducing complexity is our primary activity. We analyse complex systems, build models of them, run the models, and draw inferences that yield more easily understood characterizations of system behaviour. Reduction of complexity lies at the very core of discrete–event simulation. In the second section, I develop a framework of software traits, of which complexity is the most important. I use the framework in succeeding sections to discuss the traits and to illuminate relationships among them. Following my discussion of the framework, I present four interesting examples of the kinds of complexity I’ve had to face as a software developer. Next, having discussed the evils of complexity, I present a sequence of 12 techniques for reducing, or at least coping with, complexity. Since model development is a form of software development, we all develop software in one way or another. Some of the techniques are most applicable to software development, while others are more general. Finally, I present my conclusions.