Investigando o impacto das coocorrências de code smells nos atributos internos de qualidade - Martins, Júlio Serafim (2021)
Software quality is a critical and essential factor in different types of organizations. Thus, developers should be concerned about anomalies known as code smells. Code smells are structures that can harm code quality and maintainability. However, recent works in the literature have been studying and showing that taking into account only individual occurrences of smells may not be enough to assess the real impact that these anomalies can bring to systems. In this context, the co-occurrences of code smells arise, which are occurrences of more than one code smell in the same class or method. Co-occurrences of these anomalies can be better indicators of problems for software quality. Systematic reviews of the literature indicate that the area of co-occurrences of code smells deserves more attention and that more empirical studies are needed to assess the effects that these anomalies can have on internal quality attributes. A large part of the studies carried out in the area of code smells co-occurrences analyze the impact of these anomalies on maintainability, design problems and software architecture. Other important factors mentioned in the literature are that the works must carry out more studies of refactoring in industrial systems and that they must consider the perception of developers during this process. Thus, the objective of this work was to investigate the impact of code smells co-occurrences for the internal quality attributes, such as cohesion, coupling, complexity, inheritance and size, and also for the developers. Two studies were carried out on industrial projects. The main results and contributions of this work are: (i) the co-occurrences Feature Envy–God Class, Dispersed Coupling– God Class and God Class-Long Method are extremely detrimental to software quality and developers; (ii) the number of co-occurrences of code smells tends to increase during the development of the system; (iii) developers have more difficulty understanding code containing co-occurrences of smells; and, (iv) developers still have insecurities regarding the identification and refactoring of code smells and their co-occurrences. From the results of this work, it was possible to generate a practical catalog about the removal of the most harmful code smells co-occurrences for the internal quality attributes and also from the perspective of the developers.