Gustavo Santos
Universidade Federal de Minas Gerais
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Gustavo Santos.
conference on software maintenance and reengineering | 2014
Gustavo Santos; Marco Tulio Valente; Nicolas Anquetil
In this paper, we report an experience on using and adapting Semantic Clustering to evaluate software remodularizations. Semantic Clustering is an approach that relies on information retrieval and clustering techniques to extract sets of similar classes in a system, according to their vocabularies. We adapted Semantic Clustering to support remodularization analysis. We evaluate our adaptation using six real-world remodularizations of four software systems. We report that Semantic Clustering and conceptual metrics can be used to express and explain the intention of the architects when performing common modularization operators, such as module decomposition.
source code analysis and manipulation | 2015
Gustavo Santos; Anne Etien; Nicolas Anquetil; Stéphane Ducasse; Marco Tulio Valente
During its lifetime, a software system is under continuous maintenance to remain useful. Maintenance can be achieved in activities such as adding new features, fixing bugs, improving the systems structure, or adapting to new APIs. In such cases, developers sometimes perform sequences of code changes in a systematic way. These sequences consist of small code changes (e.g., create a class, then extract a method to this class), which are applied to groups of related code entities (e.g., some of the methods of a class). This paper presents the design and proof-of-concept implementation of a tool called MacroRecorder. This tool records a sequence of code changes, then it allows the developer to generalize this sequence in order to apply it in other code locations. In this paper, we discuss MACRORECORDERs approach that is independent of both development and transformation tools. The evaluation is based on previous work on repetitive code changes related to rearchitecting. MacroRecorder was able to replay 92% of the examples, which consisted in up to seven code entities modified up to 66 times. The generation of a customizable, large-scale transformation operator has the potential to efficiently assist code maintenance.
international conference on software maintenance | 2015
Gustavo Santos; Nicolas Anquetil; Anne Etien; Stéphane Ducasse; Marco Tulio Valente
During its lifetime, a software system might undergo a major transformation effort in its structure, for example to migrate to a new architecture or bring some drastic improvements to the system. Particularly in this context, we found evidences that some sequences of code changes are made in a systematic way. These sequences are composed of small code transformations (e.g., create a class, move a method) which are repeatedly applied to groups of related entities (e.g., a class and some of its methods). A typical example consists in the systematic introduction of a Factory design pattern on the classes of a package. We define these sequences as transformation patterns. In this paper, we identify examples of transformation patterns in real world software systems and study their properties: (i) they are specific to a system; (ii) they were applied manually; (iii) they were not always applied to all the software entities which could have been transformed; (iv) they were sometimes complex; and (v) they were not always applied in one shot but over several releases. These results suggest that transformation patterns could benefit from automated support in their application. From this study, we propose as future work to develop a macro recorder, a tool with which a developer records a sequence of code transformations and then automatically applies them in other parts of the system as a customizable, large-scale transformation operator.
Proceedings of the 11th edition of the International Workshop on Smalltalk Technologies | 2016
Markiyan Rizun Lviv; Stéphane Ducasse; Gustavo Santos; Camille Teruel
Pattern matching is a common mechanism to provide analysis and transformation of data structures. Such an approach basically checks whether the containing elements of a data structure are constituents of a pattern, described by the developer. This paper is a step towards having seamless object-oriented pattern matching, which would be applicable to any object in Pharo. We present a pattern matching library, called Phorms, which enables users to compose patterns using the syntax of the Pharo programming language. In this library, patterns are objects and therefore can be inspected and debugged using existing Pharo tools. Our solution is extensible unlike The Rewrite Engine -- Pharos current pattern matching facilities. Moreover, by treating patterns as first class objects, our library provides more flexibility in the pattern matching process.
JAMA Neurology | 2014
Thiago Cardoso Vale; Gustavo Santos; Saulo Fernandes Saturnino; Adao Soares Antunes Neto; Frederico Figueiredo Amâncio; Marluce Aparecida Assunção Oliveira; Breno Franco Silveira Fernandes; Rodrigo Santiago Gomez; Marcus V. Andrade; Antônio Lúcio Teixeira
A50-year-oldpreviouslyhealthywomanpresentedwitha4-day history of low back pain, nausea, vomiting, diarrhea, jaundice, and fever.Shedevelopedhypoxemic respiratory insufficiencyandachest radiographshoweddiffusealveolarand interstitial infiltrates.Shewas promptly intubatedandbecamehemodynamicallyunstableanddevelopeddialytic-renal insufficiency.At this time, laboratoryworkup revealed a hemoglobin level of 6.1 mg/dL (to convert to grams per liter, multiply by 10), leukocyte count of 0.2603/μL (to convert to ×109/L,multiplyby0.001),C-reactiveprotein level of 59 000mg/L (toconvert tonanomolesper liter,multiplyby9.524),platelet count of 28×103/μL (to convert to×109/L,multiply by 1), serumurea level of 80mg/dL (to convert to millimoles per liter, multiply by 0.357), serumcreatinine level of 2.24mg/dL (to convert tomicromolesper liter,multiplyby88.4), serumpotassiumlevelof0.72mEq/L (toconvert to millimoles per liter, multiply by 1), and abnormal coagulation profile (international normalized ratio of 1.8; D-dimer level of 125 200 mg/mL [to convert to nanomoles per liter, multiply by 5.476).Apresumptivediagnosis of hemolytic-uremic syndrome led to a day of plasmapheresis, but then no schizocytes were found in the peripheral blood and results of the Coombs testwere negative. Empirical antibiotic andantiviral treatmentwere startedwith ceftriaxonesodium,clarithromycin,andoseltamivirphosphate.Herblood and urine culture findings were negative. After 4 days of intensive care unit treatment, the patient progressively recovered and became hemodynamically stable. She no longer needed daily hemodialysis and she was being ventilated in spontaneous mode without sedativedrugs.However, noawakeningoccurred.Neurological examination revealed a comatose patient with decorticated posturing after noxious stimuli, with normal brainstem functions and pupillary responses, without focal signs. Cranial computed tomographyshowed widespread cortical and deep brain hemorrhages (Figure, A and B). Brain magnetic resonance imaging and
evaluation and usability of programming languages and tools | 2016
Miguel Ramos; Marco Tulio Valente; Ricardo Terra; Gustavo Santos
To implement modern web applications, a new family of JavaScript frameworks has emerged, using the MVC pattern. Among these frameworks, the most popular one is ANGULARJS, which is supported by Google. In spite of its popularity, there is not a clear knowledge on how ANGULARJS design and features affect the development experience of Web applications. Therefore, this paper reports the results of a survey about ANGULARJS, including answers from 460 developers. Our contributions include the identification of the most appreciated features of ANGULARJS (e.g., custom interface components, dependency injection, and two-way data binding) and the most problematic aspects of the framework (e.g., performance and implementation of directives).
Clinical Lymphoma, Myeloma & Leukemia | 2017
Glaciano Ribeiro; Gustavo Santos; Warlenn Silva; Gabriel R. Diniz; Fabiana Piassi; Sergio Araujo
Arquivos Brasileiros de Cirurgia Digestiva Express | 2017
Caroline Nascimento; Cassio Coelho; Carolina Vissoci; Sergio Araujo; Stenio Carvalho; Gustavo Santos
Arquivos Brasileiros de Cirurgia Digestiva Express | 2017
Carolina Vissoci; Cassio Coelho; Gustavo Santos; Andre Carvalho
II Congresso de Inovação e Metodologias de Ensino | 2016
Jeander Silva; Gustavo Santos; Maria José Flores