Software Systems as Complex Networks
MetadataShow full item record
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.
Proceedings fo the Sixth IEEE International Conference on Cognitive Informatics, ICCI 2007
Copyright 2007 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE.