Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Ricardo Terra is active.

Publication


Featured researches published by Ricardo Terra.


conference on software maintenance and reengineering | 2012

Recommending Refactorings to Reverse Software Architecture Erosion

Ricardo Terra; Marco Tulio Valente; Krzysztof Czarnecki; Roberto da Silva Bigonha

Architectural erosion is a recurrent problem faced by software architects. Despite this fact, the process is usually tackled in ad hoc way, without adequate tool support at the architecture level. To address this issue, we describe the preliminary design of a recommendation system whose main purpose is to provide refactoring guidelines for developers and maintainers during the task of reversing an architectural erosion process. The paper formally describes first recommendations proposed in our current research and results of their application in a web-based application.


working conference on reverse engineering | 2013

Recommending Move Method refactorings using dependency sets

Vitor Sales; Ricardo Terra; Luis Fernando Miranda; Marco Tulio Valente

Methods implemented in incorrect classes are common bad smells in object-oriented systems, especially in the case of systems maintained and evolved for years. To tackle this design flaw, we propose a novel approach that recommends Move Method refactorings based on the set of static dependencies established by a method. More specifically, our approach compares the similarity of the dependencies established by a source method with the dependencies established by the methods in possible target classes. We evaluated our approach using systems from a compiled version of the Qualitas Corpus. We report that our approach provides an average precision of 60.63% and an average recall of 81.07%. Such results are, respectively, 129% and 49% better than the results achieved by JDeodorant, a well-known move method recommendation system.


international conference on program comprehension | 2014

Recommending automated extract method refactorings

Danilo Silva; Ricardo Terra; Marco Tulio Valente

Extract Method is a key refactoring for improving program comprehension. However, recent empirical research shows that refactoring tools designed to automate Extract Methods are often underused. To tackle this issue, we propose a novel approach to identify and rank Extract Method refactoring opportunities that are directly automated by IDE-based refactoring tools. Our approach aims to recommend new methods that hide structural dependencies that are rarely used by the remaining statements in the original method. We conducted an exploratory study to experiment and define the best strategies to compute the dependencies and the similarity measures used by the proposed approach. We also evaluated our approach in a sample of 81 extract method opportunities generated for JUnit and JHotDraw, achieving a precision of 48% (JUnit) and 38% (JHotDraw).


ACM Sigsoft Software Engineering Notes | 2013

Qualitas.class corpus: a compiled version of the qualitas corpus

Ricardo Terra; Luis Fernando Miranda; Marco Tulio Valente; Roberto da Silva Bigonha

This paper documents a compiled version of the Qualitas Corpus named Qualitas.class Corpus. We provide compiled Java projects for the 111 systems included in the corpus. We also gathered a large amount of metrics data (such as measurements from complexity, coupling, and CK metrics) about the systems. By making Qualitas.class Corpus public, our goal is to assist researchers by removing the compilation effort when conducting empirical studies.


Software - Practice and Experience | 2015

A recommendation system for repairing violations detected by static architecture conformance checking

Ricardo Terra; Marco Tulio Valente; Krzysztof Czarnecki; Roberto da Silva Bigonha

This paper describes a recommendation system that provides refactoring guidelines for maintainers when tackling architectural erosion. The paper formalizes 32 refactoring recommendations to repair violations raised by static architecture conformance checking approaches; it describes a tool—called ArchFix—that triggers the proposed recommendations; and it evaluates the application of this tool in two industrial‐strength systems. For the first system—a 21 KLOC open‐source strategic management system—our approach has indicated correct refactoring recommendations for 31 out of 41 violations detected as the result of an architecture conformance process. For the second system—a 728 KLOC customer care system used by a major telecommunication company—our approach has triggered correct recommendations for 624 out of 787 violations, as asserted by the systems architect. Moreover, the architects have scored 82% of these recommendations as having moderate or major complexity. Copyright


Empirical Software Engineering | 2016

Mining architectural violations from version history

Cristiano Amaral Maffort; Marco Tulio Valente; Ricardo Terra; Mariza Andrade da Silva Bigonha; Nicolas Anquetil; André C. Hora

Software architecture conformance is a key software quality control activity that aims to reveal the progressive gap normally observed between concrete and planned software architectures. However, formally specifying an architecture can be difficult, as it must be done by an expert of the system having a high level understanding of it. In this paper, we present a lightweighted approach for architecture conformance based on a combination of static and historical source code analysis. The proposed approach relies on four heuristics for detecting absences (something expected was not found) and divergences (something prohibited was found) in source code based architectures. We also present an architecture conformance process based on the proposed approach. We followed this process to evaluate the architecture of two industrial-strength information systems, achieving an overall precision of 62.7 % and 53.8 %. We also evaluated our approach in an open-source information retrieval library, achieving an overall precision of 59.2 %. We envision that an heuristic-based approach for architecture conformance can be used to rapidly raise architectural warnings, without deeply involving experts in the process.


european conference on software architecture | 2008

Towards a Dependency Constraint Language to Manage Software Architectures

Ricardo Terra; Marco Tulio Valente

This paper presents a dependency constraint language that allows software architects to restrict the spectrum of dependencies that can be presented in a given software system. The ultimate goal is to provide designers with means to define acceptable and unacceptable dependencies according to the planned system architecture. Once defined, such restrictions will be automatically enforced by a tool, thus avoiding silent erosions in the architecture. The paper also presents first results of applying the language in a Web-based system.


The Journal of Object Technology | 2016

Architecture Conformance Checking in Dynamically Typed Languages.

Sergio Miranda; Elder Rodrigues; Marco Tulio Valente; Ricardo Terra

Architectural erosion is a recurrent problem faced by software architects, which might be even more severe in systems implemented in dynamically typed languages. The reasons are twofold: (i) some features provided by such languages make developers more propitious to break the planned architecture (e.g., dynamic invocations and buildings), and (ii) the developers’ community lacks tool support for monitoring the implemented architecture. To address these shortcomings, this paper presents an architectural conformance and visualization approach based on static code analysis techniques and on a lightweight type propagation heuristic. The central idea is to provide the developers’ community with means to control the architectural erosion process by reporting architectural violations and visualizing them in high-level architectural models, such as reflexion models and DSMs. This paper also describes a tool—called ArchRuby—that implements our approach. We evaluate our solution in three real-world systems identifying 48 architectural violations of which the developers had no prior knowledge. We also measure the effectiveness of our type propagation heuristic reporting that (i) the number of analyzed types raises 5% on the average and (ii) certain violations are only detected due to our heuristic.


Journal of the Brazilian Computer Society | 2013

On-the-fly extraction of hierarchical object graphs

Hugo de Brito; Humberto Torres Marques-Neto; Ricardo Terra; Henrique Rocha; Marco Tulio Valente

Reverse engineering techniques are usually applied to extract concrete architecture models. However, these techniques usually extract models that just reveal static architectures, such as class diagrams. On the other hand, the extraction of dynamic architecture models is particularly useful for an initial understanding on how a system works or to evaluate the impact of possible maintenance tasks. This paper describes an approach to extract hierarchical object graphs (OGs) from running systems. The proposed graphs have the following distinguishing features: (a) they support the summarization of objects in domains, (b) they support the complete spectrum of relations and entities that are common in object-oriented systems, (c) they support multithreading systems, and (d) they include a language to alert about expected (or unexpected) relations between the extracted objects. We also describe the design and implementation of a tool for visualizing the proposed OGs. Finally, we provide two case studies. The first study shows how our approach can contribute to understand the running architecture of two systems (myAppointments and JHotDraw). The second study illustrates how OGs can help to locate defective software components in the JHotDraw system.


Journal of Systems and Software | 2018

JMove: A novel heuristic and tool to detect move method refactoring opportunities

Ricardo Terra; Marco Tulio Valente; Sergio Miranda; Vitor Sales

Abstract This paper presents a recommendation approach that suggests Move Method refactorings using the static dependencies established by methods. This approach, implemented in a publicly available tool called JMove, compares the similarity of the dependencies established by a method with the dependencies established by the methods in possible target classes. We first evaluate JMove using 195 Move Method refactoring opportunities, synthesized in 10 open-source systems. In this evaluation, JMove precision ranges from 21% (small methods) to 32% (large methods) and its median recall ranges from 21% (small methods) to 60% (large methods). In the same scenario, JDeodorant, which is a state-of-the-art Move Method recommender, has a maximal precision of 15% (large methods) and a maximal median recall of 40% (small methods). Therefore, we claim that JMove is specially useful to provide recommendations for large methods. We reinforce this claim by means of two other studies. First, by investigating the overlapping of the recommendations provided by JMove and three other recommenders (JDeodorant, inCode, and Methodbook). Second, by validating JMove and JDeodorant recommendations with experts in two industrial-strength systems.

Collaboration


Dive into the Ricardo Terra's collaboration.

Top Co-Authors

Avatar

Marco Tulio Valente

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar

Henrique Rocha

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Roberto da Silva Bigonha

Federal University of Campina Grande

View shared research outputs
Top Co-Authors

Avatar

Danilo Silva

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar

Elder Rodrigues

State University of Campinas

View shared research outputs
Top Co-Authors

Avatar

Luis Fernando Miranda

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar

Sergio Miranda

Universidade Federal de Minas Gerais

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Arthur F. Pinto

Universidade Federal de Lavras

View shared research outputs
Researchain Logo
Decentralizing Knowledge