Code Smells in Machine Learning Systems
  As Deep learning (DL) systems continuously evolve and grow, assuring their
quality becomes an important yet challenging task. Compared to non-DL systems,
DL systems have more complex team compositions and heavier data dependency.
These inherent characteristics would potentially cause DL systems to be more
vulnerable to bugs and, in the long run, to maintenance issues. Code smells are
empirically tested as efficient indicators of non-DL systems. Therefore, we
took a step forward into identifying code smells, and understanding their
impact on maintenance in this comprehensive study. This is the first study on
investigating code smells in the context of DL software systems, which helps
researchers and practitioners to get a first look at what kind of maintenance
modification made and what code smells developers have been dealing with. Our
paper has three major contributions. First, we comprehensively investigated the
maintenance modifications that have been made by DL developers via studying the
evolution of DL systems, and we identified nine frequently occurred
maintenance-related modification categories in DL systems. Second, we
summarized five code smells in DL systems. Third, we validated the prevalence,
and the impact of our newly identified code smells through a mixture of
qualitative and quantitative analysis. We found that our newly identified code
smells are prevalent and impactful on the maintenance of DL systems from the
developer's perspective.
