We studied archives from three open source systems of varying size to explore how developers interact with the modules expressed in these systems. Several patterns emerge from this analysis that transcend the size of the project, the problem domain, and the programming language used. First, as desired, we observed that most changes are isolated to a single module. However, we also saw that a large number of changes still require the modification of code in several different modules, causing developers to consult larger portions of the system and to spend more time making the changes. Second, looking at a system through the eyes of the developers making changes by mining data about which classes or files often change or are consulted together reveals that the modules designed into a system are not necessarily the same as those with which a developer works.
These results show that while current modularization techniques seem to be supporting developers in their work, there is room for improvement. Tools that help guide developers to look at modules that their colleagues have previously consulted to complete similar changes might help reduce the time needed to make a change. Analysis of developer work patterns with modules may help suggest remodularizations of the system or help suggest additional language features to better enable developers to express multiple perspectives of modularization for a single system.