Skip to Main Content
As software systems become larger and more complex, in order to understand, manage and evolve these systems, we need better ways of characterizing and controlling their macroscopic properties. We suggest complex network theory may be useful for these purposes. In recent years, researchers have shown that many complex systems from different disciplines can be investigated as complex networks and most of them comply with a scale-free network model. We explore the view that a software system can be studied as a network with a number of components (classes) connected by dependency (integration) relationships; we call this network the component dependency network (CDN). The CDNs of several Java libraries and applications have been examined and all of them exhibit some scale-free characteristics. This result has some practical value including that it allows us to identify important components (classes) and thereby assists software maintenance and reengineering. We have built a tool to study software systems as complex networks. In the paper we also suggest ways of controlling and changing how systems evolve in order to improve their understandability and maintainability.