Ricardo Terra
Universidade Federal de Lavras
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Ricardo Terra.
conference on software maintenance and reengineering | 2012
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
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
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
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
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
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
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
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
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
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.