TY - GEN
T1 - Experience report
T2 - 26th IEEE International Symposium on Software Reliability Engineering, ISSRE 2015
AU - Oliva, Gustavo Ansaldi
AU - Gerosa, Marco Aurélio
N1 - Publisher Copyright:
© 2015 IEEE.
PY - 2016/1/13
Y1 - 2016/1/13
N2 - Real world object-oriented systems are composed of hundreds or even thousands of classes that are structurally interconnected in many different ways. In this highly complex scenario, it is unclear how changes propagate. Given the high maintenance cost brought by change propagation, these questions become particularly relevant in practice. In this paper, we set out to investigate the influence of structural dependencies on change propagation. We historically analyzed thousands of code snapshots coming from 4 open-source Java projects of different sizes and domains. Our results indicated that, in general, it is more likely that two artifacts will not co-change just because one depends on the other. However, the rate with which an artifact co-changes with another is higher when the former structurally depends on the latter. This rate becomes higher if we track down dependencies to the low-level entities that are changed in commits. This implies, for instance, that developers should be aware of dependencies on methods that are added or changed, as these dependencies tend to propagate changes more often. Finally, we also found several cases where software changes could not be justified using structural dependencies, meaning that co-changes might be induced by other subtler kinds of relationships.
AB - Real world object-oriented systems are composed of hundreds or even thousands of classes that are structurally interconnected in many different ways. In this highly complex scenario, it is unclear how changes propagate. Given the high maintenance cost brought by change propagation, these questions become particularly relevant in practice. In this paper, we set out to investigate the influence of structural dependencies on change propagation. We historically analyzed thousands of code snapshots coming from 4 open-source Java projects of different sizes and domains. Our results indicated that, in general, it is more likely that two artifacts will not co-change just because one depends on the other. However, the rate with which an artifact co-changes with another is higher when the former structurally depends on the latter. This rate becomes higher if we track down dependencies to the low-level entities that are changed in commits. This implies, for instance, that developers should be aware of dependencies on methods that are added or changed, as these dependencies tend to propagate changes more often. Finally, we also found several cases where software changes could not be justified using structural dependencies, meaning that co-changes might be induced by other subtler kinds of relationships.
KW - change propagation
KW - dependency analysis
KW - mining software repositories
KW - software analysis
KW - software maintenance
KW - structural dependencies
UR - http://www.scopus.com/inward/record.url?scp=84964906792&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84964906792&partnerID=8YFLogxK
U2 - 10.1109/ISSRE.2015.7381818
DO - 10.1109/ISSRE.2015.7381818
M3 - Conference contribution
AN - SCOPUS:84964906792
T3 - 2015 IEEE 26th International Symposium on Software Reliability Engineering, ISSRE 2015
SP - 250
EP - 260
BT - 2015 IEEE 26th International Symposium on Software Reliability Engineering, ISSRE 2015
PB - Institute of Electrical and Electronics Engineers Inc.
Y2 - 2 November 2015 through 5 November 2015
ER -