  The phenomenon of architecture erosion can negatively impact the maintenance
and evolution of software systems, and manifest in a variety of symptoms during
software development. While erosion is often considered rather late, its
symptoms can act as early warnings to software developers, if detected in time.
In addition to static source code analysis, code reviews can be a source of
detecting erosion symptoms and subsequently taking action. In this study, we
investigate the erosion symptoms discussed in code reviews, as well as their
trends, and the actions taken by developers. Specifically, we conducted an
empirical study with the two most active Open Source Software (OSS) projects in
the OpenStack community (i.e., Nova and Neutron). We manually checked 21,274
code review comments retrieved by keyword search and random selection, and
identified 502 code review comments (from 472 discussion threads) that discuss
erosion. Our findings show that (1) the proportion of erosion symptoms is
rather low, yet notable in code reviews and the most frequently identified
erosion symptoms are architectural violation, duplicate functionality, and
cyclic dependency; (2) the declining trend of the identified erosion symptoms
in the two OSS projects indicates that the architecture tends to stabilize over
time; and (3) most code reviews that identify erosion symptoms have a positive
impact on removing erosion symptoms, but a few symptoms still remain and are
ignored by developers. The results suggest that (1) code review provides a
practical way to reduce erosion symptoms; and (2) analyzing the trend of
erosion symptoms can help get an insight about the erosion status of software
systems, and subsequently avoid the potential risk of architecture erosion.
