As functionality is added to an aging piece of software its original design and structure will tend to erode. This can lead to high coupling, low cohesion and other undesirable effects associated with spaghetti architectures. The underlying forces which cause such degradation have been the subject of much research. However, progress in this field is slow as its complexity makes it difficult to isolate the causal flows leading to these effects. This is further complicated by the difficulty of generating enough empirical data, in sufficient quantity, and attributing such data to specific points in the causal chain. This paper describes a framework for simulating the structural evolution of software. A complete simulation model is built by incrementally adding modules to the framework, each of which contributes an individual evolutionary effect. These effects are then combined to form a multi-faceted simulation that evolves a fictitious code base in a manner approximating real-world behavior. We describe the underlying principles and structures of our framework from a theoretical and user perspective; a validation of a simple set of evolutionary parameters is then provided and three empirical software studies generated from Open-Source Software (OSS) are used to support claims and generated results. The research illustrates how simulation can be used to investigate a complex and an under-researched area of the development cycle. It also shows the value of incorporating certain human traits into a simulation -factors that, in realworld system development, can significantly influence evolutionary structures.