Nowadays, the adoption of software systems worldwide is there for all. Daily, end-users use software systems to perform a number of operations ranging from simple operations e. g., setting up a timer, to complex op- erations e. g., monitoring an environment using complex artificial intelli- gence (AI) systems. Despite the plethora of software systems worldwide, one of the key points that unite them is that they need to evolve to avoid premature obsolescence. However, frequent change requests during main- tenance and evolution activities can compromise software quality due to sub-optimal design decisions or the pressure to meet tight deadlines, often leading to design erosion. As a result, much of the existing literature on code quality in software systems focuses primarily on aspects such as defect proneness, code smells, and maintenance effort. Nevertheless, key questions about how code quality evolves over time and the impact of software engineering practices—such as the adoption of reusability mechanisms or the utilization of built-in features of programming lan- guages—during software maintenance and evolution remain unaddressed. This thesis aims to bridge this gap by investigating how code quality evolves over time and examining the influence of software engineering practices on maintenance and evolutionary activities. The ultimate goal of this thesis is to provide a step forward on the so- called Evolutionary Code Quality i. e., the quality attributes that developers need to monitor during software maintenance and evolution. To address our objective, we performed mining software repository (MSR) studies on software systems, taking into account two aspects: I) the temporal variation of code quality and II) the relationship between reusability mechanisms and built-in features and code quality. Our findings revealed that: I) reusability mechanisms exhibit temporal variability without following a discernible pattern; II) these mechanisms can often mitigate code quality concerns, particularly for code smells; III) the peculiarity of built-in functions in software systems can stimulate the proliferation of specific code smells. In addition, as the last part of this dissertation, we provide two fur- ther studies related to code quality by considering systems developed using emerging technologies (i. e., IoT systems and mobile apps) to give an overview of the main aspects that these systems need to consider related to code quality i. e., security and privacy aspects.
Giammaria Giordano
Ph.D Candidate
University of Salerno (Italy)
University of Salerno
Fisciano
Italy, 84084
Giammaria Giordano