Bad Smells are code and design anomalies that have a negative effect on the comprehensibility and changeability of software and thus hinder its evolution. These bad programming and design practices may at some point lead to a state of the software where it is no longer economical to make a change and thus shorten the life time of software. If systems are to be long living, Bad Smells must be detected, traced, and handled - in other words, actively managed. A lot of research on software quality is devoted to Bad Smells. There are even software quality certifications such as the Software Quality Index or Trusted Product Maintainability offered by the German TÜVit that are based on occurrences of Bad Smells. These range from duplicated code, high coupling, low cohesion to excessive size and many other code aspects. Nevertheless, the true impact of Bad Smells is not yet sufficiently investigated nor is it empirically proven. Consequently, it is not fully clear, whether, how, and what kind of Bad Smells impact maintenance negatively. In addition to that, little is known how Bad Smells evolve. Most studies typically look only at a single snapshot of the software system under study and ignore evolutionary data.Our proposed project aims at comprehensively capturing Bad Smells in software, with a strong focus on their evolution. We search for re-ocurring patterns and relations in the collected data on Bad Smells. We investigate whether evolutionary data help to better define, detect, understand, and assess Bad Smells and evaluate whether and how they are suitable to assess the internal software quality. We disseminate our data among the research community as a basis for further complementary and comparative studies. Our long-term research aims at empirically-founded maintainability models to support the evolution of long-living systems.
Funding Body: DFG