Context: Code smells are associated to poor design and programming style, which often degrades code quality and hampers code comprehensibility and maintainability. Goal: identify published studies that provide evidence of the influence of code smells on the occurrence of software bugs. Method: We conducted a Systematic Literature Review (SLR) to reach the stated goal. Results: The SLR selected studies from July 2007 to September 2017, which analyzed the source code of open source software projects and several code smells. Based on evidence of 16 studies covered in this SLR, we conclude that 24 code smells are more influential in the occurrence of bugs relative to the remaining smells analyzed. In contrast, three studies reported that at least 6 code smells are less influential in such occurrences. Evidence from the selected studies also point out tools, techniques, and procedures that should be applied to analyze the influence of the smells. Conclusions: To the best of our knowledge, this is the first SLR to target this goal. This study provides an up-to-date and structured understanding of the influence of code smells on the occurrence of software bugs based on findings systematically collected from a list of relevant references in the latest decade.
Code smells are anomalies often caused by the way concerns are realized in the source code. Their identification might depend on properties governing the structure of individual concerns and their inter-dependencies in the system implementation. Although code visualization tools are increasingly applied to support anomaly detection, they are mostly limited to represent modular structures, such as methods, classes and packages. This paper presents a multiple views approach that enriches four categories of code views with concern properties, namely: (i) concern's package-class method structure, (ii) concern's inheritance-wise structure, (iii)concern dependency, and (iv) concern dependency weight. An exploratory study was conducted to assess the extent to which visual views support code smell detection. Developers identified a set of well-known code smells on five versions of an open source system. Two important results came out of this study. First, the concern-driven views provided useful support to identify God Class and Divergent Change smells. Second, strategies for smell detection supported by the multiple concern views were uncovered.
Social aspects of software practitioners strongly influence software engineering outcomes. For instance, software companies seek to measure how factors like work engagement and job satisfaction impact employee productivity and software quality. Work engagement represents a positive, fulfilling, work-related mental state, while job satisfaction reflects how content professionals are with their roles. Our study aims to highlight the social aspects of software practitioners considering a large organization. We investigate the work engagement and job satisfaction of software practitioners working remotely at a large software organization in the public sector. We surveyed 891 software practitioners and analyzed their responses qualitatively and quantitatively. The survey participants indicated strong work engagement. They perceived their teams as effective, but there is room for improving social aspects, such as communication within the teams, promoting discussions about career development, and consistent feedback. Most professionals are satisfied with their teams, though a small minority expressed concerns that may influence their willingness to recommend their teams. Our findings provide relevant information about the engagement and satisfaction of employees within this particular type of organization and expand the knowledge base on the subject, supporting new research efforts in the area.
Software evolution is one of the most important topics in modern software engineering research. It deals with complex information and large amounts of data. Software visualization can be helpful in this scenario, helping to summarize, analyze and understand software evolution data. This paper presents SourceMiner Evolution (SME), a software tool that uses an interactive differential and temporal approach to visualize software evolution. The tool is implemented as an Eclipse plug-in and has four views that are assembled directly from the IDE AST. The views portray the software from different perspectives. One view shows how metrics of a chosen software entity evolves over time. The other three views show differential comparisons of any two versions of a system structure, dependency and inheritance properties.