
Paulo Roberto Miranda MeirellesUniversity of São Paulo | USP · Institute of Mathematics and Statistics (IME) (São Paulo)
Paulo Roberto Miranda Meirelles
PhD
About
80
Publications
28,341
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,001
Citations
Introduction
Research Interests: Software Engineering, Static source code analysis, Free Software, Agile methods, DevOps, and Mining software repositories.
Publications
Publications (80)
Software development has evolved over decades, transitioning from traditional models such as the waterfall approach and the unified process to more flexible methodologies like agile methods and collaborative development strategies of Free/Libre/Open Source Software (FLOSS) projects. Alongside this trend, the global distribution of software developm...
A central challenge for ensuring the success of software projects is to assure the convergence of developers’ and users’ views. While the availability of large amounts of user data from social media, app store reviews, and support channels bears many benefits, it still remains unclear how software development teams can effectively use this data. We...
Code smells are inadequate code structures that can harm quality and maintainability. To remove these deficient structures, developers use refactoring techniques. Refactoring helps code be easier to understand and modify by eliminating potential problems and improving internal quality attributes. Most refactoring activities are usually performed ma...
A central challenge for ensuring the success of software projects is to assure the convergence of developers' and users' views. While the availability of large amounts of user data from social media, app store reviews, and support channels bears many benefits, it still remains unclear how software development teams can effectively use this data. We...
Context
Code annotations have gained widespread popularity in programming languages, offering developers the ability to attach metadata to code elements to define custom behaviors. Many modern frameworks and APIs use annotations to keep integration less verbose and located nearer to the corresponding code element. Despite these advantages, practiti...
https://www.casadocodigo.com.br/products/livro-como-se-faz-devops
Vimos o DevOps surgir como um movimento para melhorar a vida dos profissionais da indústria de software, promovendo a colaboração entre pessoas de desenvolvimento e de infraestrutura. Mas, afinal, do ponto de vista da organização dos profissionais, existe uma receita para se fazer D...
Machine learning (ML) has grown in popularity in the software industry due to its ability to solve complex problems. Developing ML systems involves more uncertainty and risk because it requires identifying a business opportunity and managing source code, data, and trained models. Our research aims to identify the existing practices used in the indu...
Neste estudo, realizou-se a comparação entre as heurísticas de usabilidade de Nielsen e de Mapas Interativos na Web, por meio da avaliação de uma plataforma de visualização de dados geográficos. O objetivo era analisar o desempenho de cada conjunto de heurísticas. A avaliação heurística foi aplicada na plataforma CulturaEduca, resultando em 21 prob...
DevOps and continuous delivery have significantly impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research revealed the different options adopted by the software industry to organize such groups, unveiling why different organizations adopt distinct structures and how organizat...
p>Machine Learning (ML) has grown in popularity in the software industry due to its ability to solve complex problems. Developing ML Systems involves more uncertainty and risk because it requires identifying a business opportunity and managing the source code, data, and trained model. Our research aims to identify the existing practices used in the...
p>DevOps and continuous delivery have impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering...
Frameworks are essential for software development, providing code design and reuse for its users. Well-known Java frameworks and APIs such as Spring, JUnit, and JPA rely on metadata usage, commonly defined by code annotations. Those frameworks use the Java Reflection API for consuming and processing these annotations. Code elements usually have som...
DevOps and continuous delivery have impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering h...
The Annotation Visualizer (AVisualizer) is a software visualization tool for displaying code annotations distribution in a given target Java-based software system. Implemented as a web application, it can extract annotations usage from the target source code and display it using a hierarchical circle packing approach. Using a dedicated suite of sof...
p>Machine Learning (ML) has grown in popularity in the software industry due to its ability to solve complex problems. Developing ML Systems involves more uncertainty and risk because it requires identifying a business opportunity and managing the source code, data, and trained model. Our research aims to identify the existing practices used in the...
p>Machine Learning (ML) has grown in popularity in the software industry due to its ability to solve complex problems. Developing ML Systems involves more uncertainty and risk because it requires identifying a business opportunity and managing the source code, data, and trained model. Our research aims to identify the existing practices used in the...
p>Machine Learning (ML) has grown in popularity in the software industry due to its ability to solve complex problems. Developing ML Systems involves more uncertainty and risk because it requires identifying a business opportunity and managing the source code, data, and trained model. Our research aims to identify the existing practices used in the...
Code annotations are used mainly in modern Java software, and their primary purpose is to configure metadata into programmable elements such as methods and classes. The Annotation Sniffer is a stable tool that analyses Java source code and generates a JSON report with code annotations metrics values. In other words, it measures metadata configurati...
Context: Code annotation is a feature to define custom metadata about programming elements. Many modern frameworks and APIs use annotations to keep integration less verbose and closer to the corresponding code element. However, contrary to the initial intent, practitioners often complain about the negative impacts of annotations on code readability...
Context:
Code annotations is a widely used feature in Java systems to configure custom metadata on programming elements. Their increasing presence creates the need for approaches to assess and comprehend their usage and distribution. In this context, software visualization has been studied and researched to improve program comprehension in differen...
p>DevOps and continuous delivery have impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering...
Context: DevOps responds to the growing need of companies to streamline the software development process and, thus, have experienced a widespread adoption in the past few years. However, successful adoption of DevOps requires companies to address important cultural and organizational changes. Understanding the organizational structure and character...
DevOps and continuous delivery have impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering h...
p>DevOps and continuous delivery have impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering...
DevOps and continuous delivery have impacted the organizational structures of development and infrastructure groups in software-producing organizations. Our research aims at revealing the different options adopted by the software industry to organize such groups, understanding why different organizations adopt distinct structures, and discovering h...
Code annotations is a widely used feature in Java systems to configure custom metadata on programming elements. Their increasing presence creates the need for approaches to assess and comprehend their usage and distribution. In this context, software visualization has been studied and researched to improve program comprehension in different aspects...
With the evolution of technology, maps have changed how they are produced and consumed. In the 1990s, along with the internet uprise, printed and digital maps began to be shared and viewed on the web, which provided more significant user interaction with the map and geographic data. However, the ease of creating interactive maps using computational...
Digital games are also a software product. However, games have a fun requirement and tightly coupled UI, which makes them hard to test. Nevertheless, they are made of code and might also benefit from the advantages that automated tests bring to enterprise software systems. In this paper, we discuss two categories of automated tests for games, focus...
Context: To accelerate time-to-market and improve customer satisfaction, software-producing organizations have adopted continuous delivery practices, impacting the relations between development and infrastructure professionals. Yet, no substantial literature has substantially tackled how the software industry structures the organization of developm...
Although Open Source Software (OSS) maintainers devote a significant proportion of their work to coding tasks, great maintainers must excel in many other activities beyond coding. Maintainers should care about fostering a community, helping new members to find their place, while also saying “no” to patches that although are well-coded and well-test...
In this research, we aim to understand the organizational structures adopted by software-producing organizations for managing IT technical teams in a continuous delivery context. Following Grounded Theory guidelines, we interviewed 46 IT professionals to investigate how organizations pursuing continuous delivery organize their development and opera...
Java developers make extensive use of code annotations since their introduction in version 5 of the language. They are inserted directly on the source code for custom metadata configuration , similar to C# attributes. The software engineering community has few works investigating their usage and impact on source code. Being able to visualize charac...
Manufacturers are creating powerful CPUs by exponentially increasing the number of cores over time, as producing faster sequential chips has become more expensive. Developers must now employ parallel strategies and design parallel algorithms if they want to use every resource available in the machine. Still, many successful open-source projects are...
Context: Continuous delivery practices accelerate time to market and improve customer satisfaction. Although recent related work suggests that organizations employing continuous delivery should promote a collaborative culture among different IT teams, there is no substantial literature tackling how organizations should organize their teams to excel...
Over the last decades, the Free/Libre/Open Source Software (FLOSS) phenomenon has been a topic of study and a source of real-life artifacts for software engineering research. A FLOSS project usually has a community around its project, organically producing informative resources to describe how, when, and why a particular change occurred in the sour...
Based on Grounded Theory guidelines, we interviewed 27 IT professionals to investigate how organizations pursuing continuous delivery should organize their development and operations teams. In this paper, we present the discovered organizational structures: (1) siloed departments, (2) classical DevOps, (3) cross-functional teams, and (4) platform t...
Since the introduction of code annotations in the Java language,this feature has been widely adopted by software developers across the globe. Main enterprise frameworks make extensive use of code annotations as a replacement for XML based solutions. Code annotations are inserted directlyon code elements, providing a simple way to introduce custom m...
In this work, we employed Grounded Theory to investigate
how organizations pursuing continuous delivery should organize
their development and operations teams. We collected data from 27
IT professionals. After a careful analysis, we started the elaboration
of a taxonomy with four patterns of organizational structures: (1)
siloed departments, (2) cl...
BACKGROUND
Health Informatics Systems (HIS) draw more attention as their benefits are further explored and becoming more evident. The improvement of patient care and the quality of health services are examples of such advantages. Nevertheless, proprietary systems are not always viable due to their high costs.
OBJECTIVE
We investigated the benefits...
Government and academia share concerns for efficiently and effectively servicing societal demands, which includes the development of e-government software. Government-academia partnerships can be a valuable approach for improving productivity in achieving these goals. However, governmental and academic institutions tend to have very different agend...
DevOpsis a collaborative and multidisciplinary organizational effort to automate continuous delivery of new software updates while guaranteeing their correctness and reliability. The present survey investigates and discusses DevOps challenges from the perspective of engineers, managers, and researchers. We review the literature and develop a DevOps...
The C# attributes have been available since the release of this language as a means to configure custom metadata on code elements. Being very similar to Java annotations, they are both introduced directly in the source code. Several C# frameworks such as NUnit, Unity Game Engine, and JSON.net use attributes to allow applications to configure custom...
DevOps is a collaborative and multidisciplinary organizational effort to automate continuous delivery of new software updates while guaranteeing their correctness and reliability. The present survey investigates and discusses DevOps challenges from the perspective of engineers, managers, and researchers. We review the literature and develop a DevOp...
While there is a wide variety of both open source and proprietary source code static analyzers available in the market, each of them usually performs better in a small set of problems, making it hard to choose one single tool to rely on when examining a program looking for bugs in the source code. Combining the analysis of different tools may reduc...
One of the software industries with the most significant growth nowadays is the mobile application industry. In this paper, we study the differences between two mobile development approaches: (i) native (the development that’s specific for each platform) and (ii) cross-platform (when a standard code is shared among different platforms). Inexperienc...
The Open Source Software (OSS) ecosystem and community has evolved enormously from the first edition of the OSS conference that took place in Genoa (Italy) in 2005. Such evolution happened in every aspect of OSS including research, technology, and business pushing its adoption to an unpredictable scale. Nowadays, it is almost impossible for people...
Software Engineering courses often emphasize teaching methodologies and concepts in small and controlled environments over teaching, say, maintenance aspects of full-fledged real software systems. This decision is partly justified due to the difficulty of bringing to the context of a classroom a real software project. The widespread presence of ope...
This book constitutes revised selected papers from the 10th Brazilian Workshop on Agile Methods, WBMA 2019, held in Belo Horizonte, Brazil, in September 2019. The 6 full and 4 short papers presented in this volume were carefully reviewed and selected from 21 submissions.
Accepted papers focus on agile methods; experimental studies with agile; softw...
Code annotations are extensively used by Java developers, especially in enterprise frameworks and APIs such as Spring and Java EE. Different code elements that frequently share some similarities, sometimes, repeat the annotations. The goal of this paper is to evaluate whether a real-world system could use code conventions as a means to avoid replic...
From 1991 to 2015, 60 papers published in the ASE and SCAM conferences introduced static analysis prototypes or tools as academic software developed to support research. In this study, we characterize such academic software concerning sustainability. We performed an exploratory study regarding publicization (whether the software is available from a...
Traditional Software Engineering courses commonly prioritize the teaching of methodologies and concepts in small and controlled environments. This decision is partly justified by the difficulty of bringing real software projects to the classroom. The ubiquity of Open Source Software (OSS) projects contributes to mitigating this problem. Several ins...
Since the introduction of code annotations in the Java language, this feature has been widely adopted by software developers across the globe. Main enterprise frameworks make extensive use of code annotations as a replacement for XML based solutions. Code annotations are inserted directly on code elements, providing a simple way to introduce custom...
Government and academia can collaborate on bringing innovation and filling design-reality gaps in e-government projects. However, differences in project management methods employed by the organizations is often a challenge for collaborative works. Bearing that in mind, we investigated a 30-month government-academia partnership to find appropriate w...
Performing source code static analysis during the software development cycle is a difficult task. There are different static analyzers available, and each of them usually works better in a small subset of problems, making it hard to choose a single tool. Combining the analysis of different tools solves this problem, but brings about other problems,...
Software release planning is crucial to software projects that adopt incremental development. Open source projects depend on their globally distributed maintainers’ communities who share project information, usually described in the software project repository as issues, to plan the contents and timing of the next releases. This paper introduces an...
Due to the constant evolution of technology, each day brings new programming languages, development paradigms, and ways of evaluating processes. This is no different with source code metrics, where there is always new metric classes. To use a software metric to support decisions, it is necessary to understand how to perform the metric collection, c...
For many software development teams, the first aspects that come to mind regarding Continuous Delivery (CD) are the operational challenges and the competitive benefits. In our experience, CD was much more: it was a survival technique. This article presents how and why we applied CD in a large governmental project for the development of a Collaborat...
Code annotation is a language feature that enables the introduction of custom metadata on programming elements. In Java, this feature was introduced on version 5, and today it is widely used by main enterprise application frameworks and APIs. Although this language feature potentially simplifies metadata configuration, its abuse and misuse can redu...
Code annotation allows the introduction of custom metadata on programming elements directly on the source code. In Java, it is used extensively by enterprise applications and frameworks. Although it has become popular, there are few studies dedicated to the analysis and assessment of its usage. For instance, it is unknown the impact that annotation...
The Brazilian Public Software (SPB) is a program promoted by the Brazilian Federal Government to foster sharing and collaboration on Free/Libre/Open Source Software (FLOSS) solutions for the public administration. In this context, a public software is considered a public good and the Federal Government assumes some responsibilities related to its u...
The federation of social networks aims at integrating users by means of a decentralized structure, enabling the interoperability among multiple social networks in a transparent way. Despite a few isolated initiatives in federating open social networks, there is no adoption of any standard, which hinders the emergence of new, effective federated sys...
Free/Libre/Open Source Software (FLOSS) communities have produced a large amount of valuable software that is directly or indirectly used daily by any person with access to a computer. The field of Software Engineering studies processes, mechanisms, tools, and frameworks for the development of software artifacts. Historically, however, most of Soft...