- 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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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,...
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...
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...
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....
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...
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...