On this page you can find my current main research Interests and short descriptions of the main research projects in which I am currently involved.
Click on each of the Projects below to see its description.
Currently, digital technologies are used for several aspects of an individual's life, such as entertainment, work etc. Hence, the software industry grows every year with a constant increase in the number of products being developed. According to Sommerville, Software Engineering (SE) consists of the usage of scientific approaches to solve software problems. As a sub-area of SE, Software Maintenance refers to updating software after it has been deployed to its users. Among the maintenance tasks, one may mention bug fixing, source code improvement, technical debt management etc. As pointed out by Lehman, software needs to constantly change to remain useful. Thus, on average, more than half of a software project's resources are spent on maintenance. Considering the existing software industry, the massive amount of data and the complexity of modern software generates scenarios where practitioners have difficulties in performing efficient maintenance tasks. In parallel, recent advances in Artificial Intelligence (AI) have been gaining notoriety. Techniques such as natural language processing, data mining and optimization have been successfully applied to several scientific and engineering areas. Thus, this project aims at investigating and using AI techniques to assist practitioners in software maintenance tasks. Data mining will be used to analyze large amounts of maintenance data to identify recurrent patterns and find best practices. We plan to employ natural language processing to assist in tasks related to text writing and comprehension, such as technical debt management and code review, for instance. We will apply optimization algorithms to combinatorial maintenance tasks, such as code modularization and test case prioritization, for example. Hence, this project will expand the scientific knowledge in SE by investigating and proposing new approaches for the maintenance of software systems.
The State of Ceará is responsible for a significant portion of software development, accounting for about 20% of national production. Many of these software programs become legacy systems: they provide essential functionalities for organizations but use commonly outdated technologies. There is a great difficulty in maintaining or even modernizing these software programs, especially due to structural degradation that affects the code. However, several of these software programs are too important to be discarded. For organizations to remain competitive in national and international markets, it is crucial to modernize legacy software and use good software development practices. The inclusion of new disruptive technologies, such as microservices and Big Data, helps to: (i) avoid the discontinuation of essential legacy software, and (ii) offer various other opportunities for organizations. Additionally, the use of good development practices helps in the modernization of legacy software. To carry out such modernizations, one of the main practices used is the refactoring and review of software artifacts. Refactoring is the primary and most challenging practice, given that the level of degradation of legacy code requires complex restructurings. In this context, developers need to identify and review which software artifacts, e.g., source code, should undergo refactoring. Related studies indicate that the use of poor development practices can negatively influence the restructuring and reduction of the level of degradation of legacy code. Furthermore, software degradation with varying levels of development practice maturity is an inherent characteristic of national software production, including in the State of Ceará. Thus, the project aims to: (i) conduct studies with the legacy systems of the Ceará industry that are undergoing modernization; (ii) investigate software development practices that assist in the identification, application, and restructuring of legacy code; (iii) propose and develop a technique that aids in the process of modernizing and evolving legacy code; and (iv) evaluate the impact on software quality after the restructuring proposed by the technique.
AI-enabled systems are composed of one or more components that learn how to perform a task from a given dataset. Similar to other complex systems, AI-enabled systems are also affected by poor code structures (e.g., code smells). In particular, the code quality of AI-enabled systems has rarely been studied. Unfortunately, little is known about the perception of developers of AI-enabled systems regarding the code smells that affect their systems. Understanding developers' perceptions is important to direct research efforts that aim to support the needs and problems of developers of AI-enabled systems. Our goal is to obtain empirically driven actionable insights for researchers and tool builders about the level of knowledge regarding code smells, their perceived criticality, and the procedures used by developers to remove or minimize the effects of code smells in AI-enabled systems. We intend to conduct an exploratory survey with developers involved in the development of AI-enabled systems, including frameworks, systems, and machine learning libraries. We will also include developers who have used these frameworks to build their AI-enabled systems. The main limitations of this study relate to its exploratory nature; as such, no hypotheses about the outcomes are presented at this time. Additionally, the control of completeness and clarity in open-ended responses within a survey becomes a source of bias. Finally, the external validity will depend on how representative our sample of participants is.
This project aims to (i) perform studies concerning legacy systems of the industry in Rio de Janeiro, which are going through the modernization process; (ii) propose and develop a recommendation system to assist the refactoring process of legacy code; (iii) investigate optimization and recommendation techniques that allow the identification, application,and reintegration of refactoring in legacy code, (iv) evaluate the impact of software quality after the restructuring proposed by the recommender.
This project aims to: (i) provide a conceptual framework for sequential refactoring as well as related concepts; (ii) develop a theory that explains how developers perform sequential refactoring in practice; (iii) propose heuristics for automated identification of sequential refactoring existing in a program; (iv) assess the quality impact of sequential refactoring; (v) evaluate and classify sequential refactoring as positive or negative based on their impact on structural degradation symptoms and (vi) propose a recommendation system for sequential refactoring.
Brazilian population has not responded well to the prevention programs to combat arboviral diseases, such as Zika and Dengue. Concerns with such diseases has led an overwhelming number of people to increasingly share online strategic information, including the discovery of mosquito breeding sites in public locations. Term social sensors refers to the online population that is motivated to contribute relevant information on social media channels. Recent increasing use of smartphones triggered the growing use of social networks even in poorer communities. Strategic information in these locations are harder to gather for health agents. The health agencies in Northeast should explore the collective knowledge generated by people to improve prevention and combat actions. Although the Brazilian Health System requires that health agents report each Zika case, it takes several days to process and publish this information. The project will develop a platform for promoting virtual communities to prevent and combat Zika. Its core is the VazaZika application. VazaZika will use geolocation and gamification technologies for stimulating citizens to denounce and confirm Aedes breeding sites, and for updating users, in real time, about actions taken by health agents.
The CARECO project aimed to develop: (i) recommendation systems to support collaborative maintenance of software systems; (ii) methods that support the evaluation of the quality of use of recommendation systems; (iii) new collaboration mechanisms integrated with development environments; (iv) application of advanced artificial intelligence and database techniques to develop recommendation systems that support collaborative maintenance of software systems, and (v) design and evaluation of recommendation systems to support the teaching and learning software maintenance.
Dengue is an endemic problem in many areas where public health services assistance is inefficient, and sometimes it is not even there. The Brazilian public health system cannot meet the demands of these areas due to the scarcity of resources available and the number of risk areas that requires monitoring. To make the matters worse, it is very difficult to identify and control dengue outbreaks in their initial stages. Therefore, it needs to notify focus of dengue mosquito in order to make it easier preventing dengue epidemic and to take the best actions. To assist the surveillance and detection of dengue mosquito and outbreaks, we propose an integrated platform for population to act as an etymological surveillance agent. The goal is to collect and transmit geo-referenced data, providing information to assist in entomological surveillance of dengue. To accomplish the aforementioned goal, we will developer (i) mobile applications to collect data, (ii) a web portal for centralizing data and (iii) we will mining social media to extract data and to monitor dengue outbreaks. The computational solution aims at gathering information on the reporting of the mosquito that transmits dengue. Allowing us to organize it and to plot it on maps. The point is to make it available to the government and the population.
Keywords: Info Info Info Info