Leonardo Sousa

ORCID: 0000-0003-0397-8277
Publications
Citations
Views
---
Saved
---
About
Contact & Profiles
Research Areas
  • Software Engineering Research
  • Software Reliability and Analysis Research
  • Software Engineering Techniques and Practices
  • Software System Performance and Reliability
  • Advanced Software Engineering Methodologies
  • Complex Network Analysis Techniques
  • Open Source Software Innovations
  • Data-Driven Disease Surveillance
  • Misinformation and Its Impacts
  • Product Development and Customization
  • Human Mobility and Location-Based Analysis
  • Business and Management Studies
  • Geochemistry and Geologic Mapping
  • Educational Games and Gamification
  • ICT in Developing Communities
  • Digital Marketing and Social Media
  • Mosquito-borne diseases and control
  • Soil Geostatistics and Mapping
  • Information Science and Libraries
  • Species Distribution and Climate Change
  • Software Testing and Debugging Techniques

Carnegie Mellon University
2020-2023

Pontifical Catholic University of Rio de Janeiro
2016-2019

Universidade Federal de Goiás
2013-2018

Design problems affect every software system. Diverse systems have been discontinued or reengineered due to design problems. As documentation is often informal nonexistent, need be located in the source code. The main difficulty identify a problem implementation stems from fact that such scattered through several program elements. Previous work assumed code anomalies -- popularly known as smells may provide sufficient hints about location of problem. However, each anomaly alone represent...

10.1145/2884781.2884868 article EN Proceedings of the 44th International Conference on Software Engineering 2016-05-13

Code smells in a program represent indications of structural quality problems, which can be addressed by software refactoring. However, refactoring intends to achieve different goals practice, and its application may not reduce smelly structures. Developers neglect or end up creating new code through Unfortunately, little has been reported about the beneficial harmful effects on smells. This paper reports longitudinal study intended address this gap. We analyze how often commonly-used types...

10.1145/3106237.3106259 article EN 2017-08-02

The prevalence of design problems may cause re-engineering or even discontinuation the system. Due to missing, informal outdated documentation, developers often have rely on source code identify problems. Therefore, analyze different symptoms that manifest in several elements, which quickly turn into a complex task. Although researchers been investigating techniques help identifying problems, there is little knowledge how actually proceed In order tackle this problem, we conducted...

10.1145/3180155.3180239 article EN Proceedings of the 44th International Conference on Software Engineering 2018-05-27

Code smells in a program represent indications of structural quality problems, which can be addressed by software refactoring. Refactoring is widely practiced developers, and considerable development effort has been invested refactoring tooling support. There an explicit assumption that improves the reducing its density code smells. However, little reported about whether to what extent developers successfully remove through This paper reports first longitudinal study intended address this...

10.1145/2973839.2973848 article EN 2016-08-31

Developers often have to locate design problems in the source code. Several types of may manifest as code smells program. A smell is a structure that reveal partial hint about manifestation problem. Recent studies suggest developers should ignore occurring isolation program location. Instead, they focus on analyzing stinkier code, i.e., locations—e.g., class or hierarchy—affected by multiple smells. There evidence location is, more likely it contains However, there no empirical whether can...

10.1186/s13173-018-0078-y article EN cc-by-nc Journal of the Brazilian Computer Society 2018-10-22

Root canal refactoring is a software development activity that intended to improve dependability-related attributes such as modifiability and reusability. Despite being an contributes these attributes, deciding when applying root far from trivial. In fact, finding which elements should be refactored not cut-and-dried task. One of the main reasons lack consensus on characteristics indicate presence structural degradation. Thus, we evaluated whether density diversity multiple automatically...

10.1109/issre.2019.00042 article EN 2019-10-01

Refactoring consists of a transformation applied to improve the program internal structure, for instance, by contributing remove code smells. Developers often apply multiple interrelated refactorings called composite refactoring. Even though refactoring is common practice, an investigation from different points view on how manifests in practice missing. Previous empirical studies also neglect kinds affect removal, prevalence or introduction To address these matters, we provide conceptual...

10.1145/3379597.3387477 article EN 2020-06-29

A design problem is the result of decisions that negatively impact quality attributes. For example, a stakeholder introduces when he decides to addresses multiple unrelated responsibilities in single class, impacting modifiability and reusability system. Given their negative consequences, problems should be identified refactored. The literature still lacks evidence on which symptoms' characteristics can used as strong indicators problems. it unknown if density diversity certain symptoms...

10.1109/icpc.2019.00032 article EN 2019-05-01

Code smells are anomalous program structures that may indicate software maintainability problems. God Classes and Feature Envies examples of code frequently become the target refactoring. However, smell identification might be harder than expected due to subjectivity involved in recognition apparently simple structure each smell. Moreover, require knowledge multiple elements, which better understood by different developers. Thus, use collaboration among developers have potential improve...

10.1109/icse-seip.2017.7 article EN 2017-05-01

The pull-based development model is widely used in source-code environments like GitHub. In this model, developers actively communicate and share their knowledge or opinions through the exchange of comments. Their goal to improve change under development, including its positive impact on design structure. context, two central social aspects may contribute combating adversely amplifying decay. First, decay be avoided, reduced accelerated depending whether communication dynamics among - who...

10.1145/3422392.3422443 article EN 2020-10-21

Refactoring is a widely adopted practice for improving code comprehension and removing severe structural problems in project. When refactorings affect the system architecture, they are called architectural refactorings. Unfortunately, developers usually do not know when how should apply to remove problems. Nevertheless, might be more susceptible applying refactoring if rely on smells -- two concepts that deal with through their routine programming activities. To investigate can serve as...

10.1145/3387904.3389276 article EN 2020-07-13

When a software design decision has negative impact on one or more quality attributes, we call it problem. For example, the Fat Interface problem indicates that an interface exposes non-cohesive services Thus, clients and implementations of this may have to handle with they are not interested. A such as hampers extensibility maintainability system. As illustrated by single often affects several elements in program. Despite its harmfulness, is difficult identify It even challenging problems...

10.1145/3131151.3131168 article EN 2017-09-18

Code smells are symptoms of poor design and implementation choices. Several techniques for the automated detection code have been proposed, but their effectiveness is limited due to inherent subjectivity task. Accepting false warnings generated by a tool may lead unnecessary maintenance effort. Moreover, bypassing undetected contribute software degradation. Thus, developers need perform subsequent manual identification confirm occurrences as well address both missing warnings. However,...

10.1109/chase.2017.11 article EN 2017-05-01

Developers often have to locate design problems in the source code. Several types of problem may manifest as code smells program. A smell is a structure that reveal partial hint about manifestation problem. Recent studies suggest developers should ignore occurring isolation program location. Instead, they focus on analyzing stinkier code, i.e. locations - e.g., class or hierarchy affected by multiple smells. The location is, more likely it contains However, there limited understanding if can...

10.1145/3132498.3132514 article EN 2017-09-08

Structural degradation is the process in which quality attributes of a system are negatively impacted. When due attention not paid to structural degradation, source code may also become difficult change. Code smells recurring structures that represent degradation. Hence, there many catalogs and techniques for supporting removal through refactoring recommendations, usually consist single refactorings such as Move Method or an Extract Method. However, often enough completely removing certain...

10.1145/3422392.3422423 article EN 2020-10-21

Design problems are structures that indicate violations of key design principles or rules. The main difficulty to identify them in the source code is due fact they scattered through several elements. Thus, smells - microstructures program have been used reveal surface indications a problem. However, individually, each smell represents only partial embodiment Since problem elements, we investigating strategy select group likely help developers find problems. We call agglomeration this smells....

10.1145/2889160.2889273 article EN 2016-05-14

Software systems are likely to face what is called design problems. Given the typical lack of documentation, developers have rely on implementation-level symptoms, so-called code smells, identify and remove A smell a microstructure in program that can indicate presence problem. Large programs hundreds or thousands elements (e.g., classes) which significant proportion may be affected by smells. Consequently, due time constraints large number elements, prioritize designrelevant i.e., locate...

10.1145/3357141.3357142 article EN 2019-09-12

Modern programming languages, such as Java, use exception-handling mechanisms to guarantee the robustness of software systems. Although important, quality exception code is usually poor and neglected by developers. Indiscriminate changes (e.g., addition empty catch blocks) can indicate design decisions that negatively impact internal As it known in literature, multiple occurrences structures, namely smells, are strong indicators problems. Still, existing studies focus mainly on correlation...

10.1109/msr59073.2023.00064 article EN 2023-05-01
Coming Soon ...