Uirá Kulesza

dblp:78/6010 · DBLP profile ↗
← Back
71ranked-venue papers
4as first author
11since 2021 · last 2025
0000-0002-5467-6458ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 69 · 4 first-author · 10 since 2021Artificial intelligence and machine learning · 11 · 1 first-authorDatabases, data management, data science and information retrieval · 6 · 2 since 2021Computer networks · 1 · 1 since 2021Human-computer interaction and ubiquitous computing · 1 · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2025 Monitoring Continuous Integration Practices in Industry: A Case Study
abstract
In this paper, we study the benefits and challenges of monitoring Continuous Integration (CI) practices in software development. Our aim is to evaluate the impact of monitoring seven CI practices in industry using three organizations in Brazil as case studies. We developed a tool for monitoring CI practices and conducted a multiple case study, applying a mixedmethods strategy. We combined surveys, interviews, log data, and repositories data from software projects and their CI services. We gauged the organization's interest in monitoring CI practices. The act of monitoring CI provided an overview of the organizational state of practice in terms of CI, motivated further improvement of CI practices, increased perceived quality of software, and improved project communication. We recommend that companies adopt the practice monitoring of CI practices and that CI services integrate monitoring functionalities into their dashboards.
Jadson Santos, Daniel Alencar da Costa, Uirá Kulesza
ICSME3
2025 On the need to monitor continuous integration practices
Jadson Santos, Daniel Alencar da Costa, Shane McIntosh, Uirá Kulesza
Empir. Softw. Eng.4
2024 How do Machine Learning Projects use Continuous Integration Practices? An Empirical Study on GitHub Actions
abstract
Continuous Integration (CI) is a well-established practice in traditional software development, but its nuances in the domain of Machine Learning (ML) projects remain relatively unexplored. Given the distinctive nature of ML development, understanding how CI practices are adopted in this context is crucial for tailoring effective approaches. In this study, we conduct a comprehensive analysis of 185 open-source projects on GitHub (93 ML and 92 non-ML projects). Our investigation comprises both quantitative and qualitative dimensions, aiming to uncover differences in CI adoption between ML and non-ML projects. Our findings indicate that ML projects often require longer build duration, and medium-sized ML projects exhibit lower test coverage compared to non-ML projects. Moreover, small and medium-sized ML projects show a higher prevalence of increasing build duration trends compared to their non-ML counterparts. Additionally, our qualitative analysis illuminates the discussions around CI in both ML and non-ML projects, encompassing themes like CI Build Execution and Status, CI Testing, and CI Infrastructure. These insights shed light on the unique challenges faced by ML projects in adopting CI practices effectively.
João Helis Bernardo, Daniel Alencar da Costa, Sérgio Medeiros 0001, Uirá Kulesza
MSR4
2024 ML-based inter-slice load balancing control for proactive offloading of virtual services
Felipe Sampaio Dantas da Silva, Sergio N. Silva, Lucileide M. D. Da Silva, Ayuri Bessa, Samuel Ferino, Pablo Paiva, Marcos Medeiros, Lucas Silva, Kevin B. Costa, Charles H. F. dos Santos, Eduardo Aranha, Allan de Medeiros Martins, Uirá Kulesza, Roger Immich, Augusto Neto 0001, Ramon dos Reis Fontes, Vicente Sousa 0001, Marcelo A. C. Fernandes
Comput. Networks14
2023 What's behind tight deadlines? Business causes of technical debt
abstract
What are the business causes behind tight deadlines? What drives the prioritization of features that pushes quality matters to the back burner? We conducted a survey with 71 experienced practitioners and did a thematic analysis of the openended answers to the question: "Could you give examples of how business may contribute to technical debt?" Business-related causes were organized into two categories: pure-business and business/IT gap, and they were related to ‘tight deadlines’ and ‘features over quality’, the most frequently cited management reasons for technical debt. We contribute a cause-effect model which relates the various business causes of tight deadlines and the behavior of prioritizing features over quality aspects.
Rodrigo Rebouças de Almeida, Christoph Treude, Uirá Kulesza
CHASE3
2023 Unveiling the Relationship Between Continuous Integration and Code Coverage
abstract
Continuous integration (CI) is a software engineering practice that advocates the frequent integration of software through an automated build process. Existing research has explored the benefits of CI, such as detecting errors earlier in the software life-cycle. Although CI heavily focuses on automated tests, it is still unclear whether CI is associated with better code coverage, which could be a major benefit of using CI. To investigate whether CI is associated with an improvement in code coverage, our work compares 30 projects that adopted CI (CI projects) and 30 projects that have never adopted CI (NOCI projects). In total, we studied 1,440 versions from different projects to analyze trends in code coverage related to CI. While evaluating trends of code coverage within CI and NOCI projects, we observe more projects with rising trends of code coverage in CI projects (50%) than NOCI projects (10%). Moreover, the maintaining trends are different, as CI projects tend to stabilize at a higher code coverage rate than NOCI projects. Investigating the CI projects alone, the statistical evidences indicate that the adoption of CI is associated with the increase in code coverage. The findings of this study, therefore, reveal a positive association between CI and a higher code coverage rate.
Diego Saraiva, Daniel Alencar da Costa, Uirá Kulesza, Gustavo Sizílio, José Gameleira Neto, Roberta Coelho, Meiyappan Nagappan
MSR3
2023 The impact of a continuous integration service on the delivery time of merged pull requests
João Helis Bernardo, Daniel Alencar da Costa, Uirá Kulesza, Christoph Treude
Empir. Softw. Eng.3
2022 Investigating the Impact of Continuous Integration Practices on the Productivity and Quality of Open-Source Projects
abstract
Background: Much research has been conducted to investigate the impact of Continuous Integration (CI) on the productivity and quality of open-source projects. Most of studies have analyzed the impact of adopting a CI server service (e.g, Travis-CI) but did not analyze CI sub-practices. Aims: We aim to evaluate the impact of five CI sub-practices with respect to the productivity and quality of GitHub open-source projects. Method: We collect CI sub-practices of 90 relevant open-source projects for a period of 2 years. We use regression models to analyze whether projects upholding the CI sub-practices are more productive and/or generate fewer bugs. We also perform a qualitative document analysis to understand whether CI best practices are related to a higher quality of projects. Results: Our findings reveal a correlation between the Build Activity and Commit Activity sub-practices and the number of merged pull requests. We also observe a correlation between the Build Activity, Build Health and Time to Fix Broken Builds sub-practices and number of bug-related issues. The qualitative analysis reveals that projects with the best values for CI sub-practices face fewer CI-related problems compared to projects that exhibit the worst values for CI sub-practices. Conclusions: We recommend that projects should strive to uphold the several CI sub-practices as they can impact in the productivity and quality of projects.
Jadson Santos, Daniel Alencar da Costa, Uirá Kulesza
ESEM3
2022 Emotional Dashboard: a Non-Intrusive Approach to Monitor Software Developers' Emotions and Personality Traits
abstract
Developers' emotions are crucial elements that influence the overall job satisfaction of software engineers, including motivation, productivity, and quality of the work, affecting the software development lifecycle. Existing approaches to assess and monitor developers' emotions, such as facial expressions, self-assessed surveys, and biometric sensors, imply considerable intrusiveness on developers' routines and tend to be used only during limited periods. This paper proposes a new non-intrusive and automatable tool (Emotional Dashboard) to assess, monitor, and visualize software developers' emotions during long periods, providing team leaders and project managers with an overview of teams' and software developers' emotional statuses. The idea is to use posts shared by developers on social media to assess their emotions' polarity and visualize the emotional situation on a dashboard, allowing the identification of potentially abnormal emotional periods that may affect the software development. A first evaluation of the tool’s accuracy, done by comparing the emotion polarity (negative, positive, or neutral) of posts done by our tool with the manual classification of a set of posts done by three psychologists, has shown an accuracy of 77%. The tool is available for analysis at this link: https://emotional-dashboard.herokuapp.com.
Leo Silva, Marília Gurgel Castro, Miriam Bernardino Silva, Milena Santos, Uirá Kulesza, Margarida Lima, Henrique Madeira
QRS5
2022 The effects of continuous integration on software development: a systematic literature review
Eliezio Soares, Gustavo Sizílio, Jadson Santos, Daniel Alencar da Costa, Uirá Kulesza
Empir. Softw. Eng.5
2021 Business-Driven Technical Debt Prioritization: An Industrial Case Study
abstract
Incorporating the business perspective into prioritizing technical debt is essential to contribute to decision making in industry. In this paper, we evolve and evaluate a business-driven approach for technical debt prioritization. The approach was evaluated during a five-months industrial case study with business and technical stakeholders' active participation. The results show that the approach contributed to aligning business criteria between the business and technical stakeholders. We also observed a downward trend in the amount of technical debt that affects high-value business assets. Moreover, we identified eight business factors that affect the decision making related to the prioritization of technical debt. The study results suggest that the proposed business-driven technical debt prioritization approach can help teams to focus their efforts on paying off the business' most relevant debt.
Rodrigo Rebouças de Almeida, Rafael Nascimento, Christoph Treude, Uirá Kulesza
TechDebt@ICSE4
2020 Improving Bug Localization by Mining Crash Reports: An Industrial Study
abstract
The information available in crash reports has been used to understand the root cause of bugs and improve the overall quality of systems. Nonetheless, crash reports often lead to a huge amount of information, being necessary to consolidate the crash report data into groups, according to a set of well-defined criteria. Recent research work have proposed different criteria and techniques to group crash report data, making more effective the process of finding the root causes of a bug and showing the performance of the approaches in the context of open source applications (such as IDEs and web browsers). In spite of that, it is still not clear how these approaches perform in other application domains, such as enterprise systems. In this paper, we present an industrial study in this field. We tailor existing approaches to find and group correlated crash reports, and identify buggy files in the domain of web-based systems. We then evaluate the performance of the resulting criteria and technique in industrial settings - identifying and ranking the classes that are more likely to contribute to a crash and thus might need a fix. We also check if the methods changed by the developers to fix a bug are present in the stack traces of the crash report groups used to identify the buggy classes. Our study provides new pieces of evidence of the potential use of crash report groups to indicate buggy classes and methods using stack traces information. For instance, we successfully identify buggy classes with recall varying from 61.4% to 77.3%, considering the top 1, top 3, top 5, and top 10 suspicious buggy files identified and ranked by our approach. We also found that 80% of changed methods from the closed bug fix issues appeared in related stack traces of the crash report groups. Finally, the approach also received positive response from the project leaders of the evaluated projects to help their bug resolution processes.
Marcos Medeiros, Uirá Kulesza, Rodrigo Bonifácio, Eiji Adachi Barbosa, Roberta Coelho
ICSME2
2019 Revisiting and Improving SZZ Implementations
abstract
Background: The SZZ algorithm was proposed to identify bug-introducing changes, i.e., changes that are likely to induce bugs. Previous studies improved its implementation and evaluated its results.Aims: To address existing limitations of SZZ to improve the maturity of the algorithm. We also aim to verify if the improvements that have been proposed to the SZZ algorithm also hold in different datasets.Method: We re-evaluate two recent SZZ implementations using an adaptation of the Defects4J dataset, which works as a preprocessed dataset that can be used by SZZ. Furthermore, we revisit the limitations of RA-SZZ (refactoring aware SZZ) to improve the precision and recall of the algorithm.Results: We observe that a median of 44% of the lines that are flagged by the improved SZZ are very likely to introduce a bug. We manually analyze the SZZ-generated data and observe that there exist refactoring operations (31.17%) and equivalent changes (13.64%) that are still misidentified by the improved SZZ.Conclusion: By preprocessing the dataset that is used as input by SZZ, the accuracy of SZZ may be considerably improved. For example, we observe that SZZ implementations are approximately 40% more accurate if only valid bug-fix lines are used as the input for SZZ.
Edmilson Campos Neto, Daniel Alencar da Costa, Uirá Kulesza
ESEM3
2019 Tracy: A Business-Driven Technical Debt Prioritization Framework
abstract
Technical debt is a pervasive problem in software development. Software development teams have to prioritize debt items and determine whether they should address debt or develop new features at any point in time. This paper presents "Tracy", a framework for the prioritization of technical debt using a business-driven approach built on top of business processes. The current stage of the proposed framework is at the beginning of the third phase of Design Science Research, which is usually divided into the phases of exploration, engineering, and evaluation. The exploration and engineering phases involved the participation of 49 professionals from 12 different groups of three companies. The initial evaluation shows that the presented framework is coherent in its structure and that its results contribute to business-driven decision making on technical debt prioritization.
Rodrigo Rebouças de Almeida, Christoph Treude, Uirá Kulesza
ICSME3
2019 An Empirical Study of the Relationship between Continuous Integration and Test Code Evolution
abstract
Continuous Integration (CI) is the practice of automating and improving the frequency of code integration. CI has been widely adopted by software development teams and has brought the attention of researchers to study its benefits. Existing research shows that CI can improve software quality by identifying the errors earlier in the software development life-cycle. One question that remains open, however, is whether CI increases the adoption of testing practices in software projects. The goal of our work is to investigate the evolution of software tests and its relationship with the adoption of Continuous Integration. We set out to compare 82 projects that adopted CI (CI projects) and 82 projects that have never adopted CI (NOCI projects). In total, we studied 3,936 versions of our studied projects to investigate trends on the test code ratio and coverage. We observe that 40.2% of the CI projects have a rising test-code ratio trend while only 17% of the NOCI projects have a rising trend. Additionally, we find evidences that CI projects have improved the overall test coverage while NOCI projects do not experience the same growth. Finally, we build a mixed-effects model to study software development factors than can possibly explain the test ratio. Our models reveal that test ratio is largely explained by the project inherent context rather than code or process factors. In overall, our work demonstrates that Continuous Integration can be empirically associated with a healthier test code evolution.
Gustavo Sizílio, Daniel Alencar da Costa, Uirá Kulesza
ICSME3
2019 Software process line as an approach to support software process reuse: A systematic literature review
Eldânae Nogueira Teixeira, Fellipe Araújo Aleixo, Francisco Dione de Sousa Amâncio, Edson OliveiraJr, Uirá Kulesza, Cláudia M. L. Werner
Inf. Softw. Technol.5
2018 Aligning Technical Debt Prioritization with Business Objectives: A Multiple-Case Study
abstract
Technical debt (TD) is a metaphor to describe the trade-off between short-term workarounds and long-term goals in software development. Despite being widely used to explain technical issues in business terms, industry and academia still lack a proper way to manage technical debt while explicitly considering business priorities. In this paper, we report on a multiple-case study of how two big software development companies handle technical debt items, and we show how taking the business perspective into account can improve the decision making for the prioritization of technical debt. We also propose a first step toward an approach that uses business process management (BPM) to manage technical debt. We interviewed a set of IT business stakeholders, and we collected and analyzed different sets of technical debt items, comparing how these items would be prioritized using a purely technical versus a business-oriented approach. We found that the use of business process management to support technical debt management makes the technical debt prioritization decision process more aligned with business expectations. We also found evidence that the business process management approach can help technical debt management achieve business objectives.
Rodrigo Rebouças de Almeida, Uirá Kulesza, Christoph Treude, D'angellys Cavalcanti Feitosa, Aliandro Higino Guedes Lima
ICSME2
2018 Studying the impact of adopting continuous integration on the delivery time of pull requests
abstract
Continuous Integration (CI) is a software development practice that leads developers to integrate their work more frequently. Software projects have broadly adopted CI to ship new releases more frequently and to improve code integration. The adoption of CI is motivated by the allure of delivering new functionalities more quickly. However, there is little empirical evidence to support such a claim. Through the analysis of 162,653 pull requests (PRs) of 87 GitHub projects that are implemented in 5 different programming languages, we empirically investigate the impact of adopting CI on the time to deliver merged PRs. Surprisingly, only 51.3% of the projects deliver merged PRs more quickly after adopting CI. We also observe that the large increase of PR submissions after CI is a key reason as to why projects deliver PRs more slowly after adopting CI. To investigate the factors that are related to the time-to-delivery of merged PRs, we train regression models that obtain sound median R-squares of 0.64-0.67. Finally, a deeper analysis of our models indicates that, before the adoption of CI, the integration-load of the development team, i.e., the number of submitted PRs competing for being merged, is the most impactful metric on the time to deliver merged PRs before CI. Our models also reveal that PRs that are merged more recently in a release cycle experience a slower delivery time.
João Helis Bernardo, Daniel Alencar da Costa, Uirá Kulesza
MSR3
2018 The impact of refactoring changes on the SZZ algorithm: An empirical study
abstract
SZZ is a widely used algorithm in the software engineering community to identify changes that are likely to introduce bugs (i.e., bug-introducing changes). Despite its wide adoption, SZZ still has room for improvements. For example, current SZZ implementations may still flag refactoring changes as bug-introducing. Refactorings should be disregarded as bug-introducing because they do not change the system behaviour. In this paper, we empirically investigate how refactorings impact both the input (bug-fix changes) and the output (bug-introducing changes) of the SZZ algorithm. We analyse 31,518 issues of ten Apache projects with 20,298 bug-introducing changes. We use an existing tool that automatically detects refactorings in code changes. We observe that 6.5% of lines that are flagged as bug-introducing changes by SZZ are in fact refactoring changes. Regarding bug-fix changes, we observe that 19.9% of lines that are removed during a fix are related to refactorings and, therefore, their respective inducing changes are false positives. We then incorporate the refactoring-detection tool in our Refactoring Aware SZZ Implementation (RA-SZZ). Our results reveal that RA-SZZ reduces 20.8% of the lines that are flagged as bug-introducing changes compared to the state-of-the-art SZZ implementations. Finally, we perform a manual analysis to identify change patterns that are not captured by the refactoring identification tool used in our study. Our results reveal that 47.95% of the analyzed bug-introducing changes contain additional change patterns that RA-SZZ should not flag as bug-introducing.
Edmilson Campos Neto, Daniel Alencar da Costa, Uirá Kulesza
SANER3
2018 An empirical study of the integration time of fixed issues
Daniel Alencar da Costa, Shane McIntosh, Uirá Kulesza, Ahmed E. Hassan, Surafel Lemma Abebe
Empir. Softw. Eng.3
2018 The impact of rapid release cycles on the integration delay of fixed issues
Daniel Alencar da Costa, Shane McIntosh, Christoph Treude, Uirá Kulesza, Ahmed E. Hassan
Empir. Softw. Eng.4
2017 Software product lines traceability: A systematic mapping study
Tassio Vale, Eduardo Santana de Almeida, Vander Alves, Uirá Kulesza, Nan Niu, Ricardo de Lima
Inf. Softw. Technol.4
2017 A Framework for Evaluating the Results of the SZZ Approach for Identifying Bug-Introducing Changes
abstract
The approach proposed by Silwerski, Zimmermann, and Zeller (SZZ) for identifying bug-introducing changes is at the foundation of several research areas within the software engineering discipline. Despite the foundational role of SZZ, little effort has been made to evaluate its results. Such an evaluation is a challenging task because the ground truth is not readily available. By acknowledging such challenges, we propose a framework to evaluate the results of alternative SZZ implementations. The framework evaluates the following criteria: (1) the earliest bug appearance, (2) the future impact of changes, and (3) the realism of bug introduction. We use the proposed framework to evaluate five SZZ implementations using data from ten open source projects. We find that previously proposed improvements to SZZ tend to inflate the number of incorrectly identified bug-introducing changes. We also find that a single bug-introducing change may be blamed for introducing hundreds of future bugs. Furthermore, we find that SZZ implementations report that at least 46 percent of the bugs are caused by bug-introducing changes that are years apart from one another. Such results suggest that current SZZ implementations still lack mechanisms to accurately identify bug-introducing changes. Our proposed framework provides a systematic mean for evaluating the data that is generated by a given SZZ implementation.
Daniel Alencar da Costa, Shane McIntosh, Weiyi Shang, Uirá Kulesza, Roberta Coelho, Ahmed E. Hassan
IEEE Trans. Software Eng.4
2016 The impact of switching to a rapid release cycle on the integration delay of addressed issues: an empirical study of the mozilla firefox project
abstract
The release frequency of software projects has increased in recent years. Adopters of so-called rapid release cycles claim that they can deliver addressed issues (i.e., bugs, enhancements, and new features) to users more quickly. However, there is little empirical evidence to support these claims. In fact, in our prior work, we found that code integration phases may introduce delays in rapidly releasing software --- 98% of addressed issues in the rapidly releasing Firefox project had their integration delayed by at least one release. To better understand the impact that rapid release cycles have on the integration delay of addressed issues, we perform a comparative study of traditional and rapid release cycles. Through an empirical study of 72,114 issue reports from the Firefox system, we observe that, surprisingly, addressed issues take a median of 50 days longer to be integrated in rapid Firefox releases than the traditional ones. To investigate the factors that are related to integration delay in traditional and rapid release cycles, we train regression models that explain if an addressed issue will have its integration delayed or not. Our explanatory models achieve good discrimination (ROC areas of 0.81-0.83) and calibration scores (Brier scores of 0.05-0.16). Deeper analysis of our explanatory models indicates that traditional releases prioritize the integration of backlog issues, while rapid releases prioritize issues that were addressed during the current release cycle. Our results suggest that rapid release cycles may not be a silver bullet for the rapid delivery of addressed issues to users.
Daniel Alencar da Costa, Shane McIntosh, Uirá Kulesza, Ahmed E. Hassan
MSR3
2016 Understanding the exception handling strategies of Java libraries: an empirical study
abstract
This paper presents an empirical study whose goal was to investigate the exception handling strategies adopted by Java libraries and their potential impact on the client applications. In this study, exception flow analysis was used in combination with manual inspections in order: (i) to characterize the exception handling strategies of existing Java libraries from the perspective of their users; and (ii) to identify exception handling anti-patterns. We extended an existing static analysis tool to reason about exception flows and handler actions of 656 Java libraries selected from 145 categories in the Maven Central Repository. The study findings suggest a current trend of a high number of undocumented API runtime exceptions (i.e., @throws in Javadoc) and Unintended Handler problem. Moreover, we could also identify a considerable number of occurrences of exception handling anti-patterns (e.g. Catch and Ignore). Finally, we have also analyzed 647 bug issues of the 7 most popular libraries and identified that 20.71% of the reports are defects related to the problems of the exception strategies and anti-patterns identified in our study. The results of this study point to the need of tools to better understand and document the exception handling behavior of libraries.
Demóstenes Sena, Roberta Coelho, Uirá Kulesza, Rodrigo Bonifácio
MSR3
2016 Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study
abstract
This paper presents an exploratory study that analyzes the complexity to integrate existing merge conflicts of a cloned large-scale web system.The study is supported by an existing tool that focuses on the identification of merge conflicts that can arise during the integration of cloned systems.The approach addresses the merge conflict analysis through the extraction and comparison of the issues and code history of cloned systems using mining software repository and static analysis techniques.The main aims of our study are: (i) to quantify the kind of conflicts defined by our approach that happen when evolving cloned systems; (ii) to evaluate if they are being correctly detected by our tool; and finally (iii) to analyze the difficult to integrate them from one cloned system to another.The study findings show: (i) a predominance of semantic conflicts between issues of source and target cloned systems; and (ii) the feasibility to use merge analysis approaches to integrate tasks from one clone to another.Clone-and-own approach, web-based information systems, software merge, code merge conflicts I.
Jadson Santos, Uirá Kulesza
SEKE2
2015 Assessing developer contribution with repository mining-based metrics
abstract
Productivity as a result of individual developers' contributions is an important aspect for software companies to maintain their competitiveness in the market. However, there is no consensus in the literature on how to measure productivity or developer contribution. While some repository mining-based metrics have been proposed, they lack validation in terms of their applicability and usefulness from the individuals who will use them to assess developer contribution: team and project leaders. In this paper, we propose the design of a suite of metrics for the assessment of developer contribution, based on empirical evidence obtained from project and team leaders. In a preliminary evaluation with four software development teams, we found that code contribution and code complexity metrics received the most positive feedback, while participants pointed out several threats of using bug-related metrics for contribution assessment. None of the metrics can be used in isolation, and project leaders and developers need to be aware of the benefits, limitations, and threats of each one. These findings present a first step towards the design of a larger suite of metrics as well as an investigation into the impact of using metrics to assess contribution.
Jalerson Lima, Christoph Treude, Fernando Marques Figueira Filho, Uirá Kulesza
ICSME4
2015 Evaluating Feature Change Impact on Multi-product Line Configurations Using Partial Information
Nicolas Dintzner, Uirá Kulesza, Arie van Deursen, Martin Pinzger 0001
ICSR2
2015 The use of C++ exception handling constructs: A comprehensive study
abstract
Exception handling (EH) is a well-known mechanism that aims at improving software reliability in a modular way - allowing a better separation between the code that deals with exceptional conditions and the code that deals with the normal control flow of a program. Although the exception handling mechanism was conceived almost 40 years ago, formulating a reasonable design of exception handling code is still considered a challenge, which might hinder its widespread use. This paper reports the results of an empirical study that use a mixed-method approach to investigate the adoption of the exception handing mechanism in C++. Firstly, we carried out a static analysis investigation to understand how developers employ the exception handling construct of C++, considering 65 open-source systems (which comprise 34 million lines of C++ code overall). Then, to better understand the findings from the static analysis phase, we conducted a survey involving 145 C++ developers who have contributed to the subject systems. Some of the findings consistently detected during this mixed-method study reveal that, for several projects, the use of exception handling constructs is scarce and developers favor the use of other strategies to deal with exceptional conditions. In addition, the survey respondents consider that incompatibility with existing C code and libraries, extra performance costs (in terms of response time and size of the compiled code), and lack of expertise to design an exception handling strategy are among the reasons for avoiding the use of exception handling constructs.
Rodrigo Bonifácio, Fausto Carvalho, Guilherme Novaes Ramos, Uirá Kulesza, Roberta Coelho
SCAM4
2015 Automating the performance deviation analysis for multiple system releases: An evolutionary study
abstract
This paper presents a scenario-based approach for the evaluation of the quality attribute of performance, measured in terms of execution time (response time). The approach is implemented by a framework that uses dynamic analysis and repository mining techniques to provide an automated way for revealing potential sources of performance degradation of scenarios between releases of a software system. The approach defines four phases: (i) preparation - choosing the scenarios and preparing the target releases; (ii) dynamic analysis - determining the performance of scenarios and methods by calculating their execution time; (iii) degradation analysis - processing and comparing the results of the dynamic analysis for different releases; and (iv) repository mining - identifying development issues and commits associated with performance deviation. The paper also describes an evolutionary study of applying the approach to multiple releases of the Netty, Wicket and Jetty frameworks. The study analyzed seven releases of each system and addressed a total of 57 scenarios. Overall, we have found 14 scenarios with significant performance deviation for Netty, 13 for Wicket, and 9 for Jetty, almost all of which could be attributed to a source code change. We also discuss feedback obtained from eight developers of Netty, Wicket and Jetty as result of a questionnaire.
Felipe Pinto, Uirá Kulesza, Christoph Treude
SCAM2
2015 NeoIDL: A Domain-Specific Language for Specifying REST Services
abstract
Service-oriented computing has emerged as an effective approach for integrating business (and systems) that might spread throughout different organizations.A service is a unit of logic modularization that hides implementation details using well-defined contracts.However, existing languages for contract specification in this domain present several limitations.For instance, both WSDL and Swagger use language-independent data formats (XML and JSON) that are not suitable for specifying contracts and often lead to heavyweight specifications.Interface description languages, such as CORBA IDL and Apache Thrift, solve this issue by providing specific languages for contract specifications.Nevertheless, these languages do not target to the REST architectural style and lack support for language extensibility.In this paper we present the design and implementation of NeoIDL, an extensible domain specific language and program generator for writing REST based contracts that are further translated into service's implementations.We also describe an evaluation that suggests the rapid return on investment with respect to the design and development of NeoIDL 1 .
Rodrigo Bonifácio, Thiago M. Castro, Ricardo Fernandes, Alisson Palmeira, Uirá Kulesza
SEKE5
2015 Summarizing and measuring development activity
abstract
Software developers pursue a wide range of activities as part of their work, and making sense of what they did in a given time frame is far from trivial as evidenced by the large number of awareness and coordination tools that have been developed in recent years. To inform tool design for making sense of the information available about a developer's activity, we conducted an empirical study with 156 GitHub users to investigate what information they would expect in a summary of development activity, how they would measure development activity, and what factors influence how such activity can be condensed into textual summaries or numbers. We found that unexpected events are as important as expected events in summaries of what a developer did, and that many developers do not believe in measuring development activity. Among the factors that influence summarization and measurement of development activity, we identified development experience and programming languages.
Christoph Treude, Fernando Marques Figueira Filho, Uirá Kulesza
ESEC/SIGSOFT FSE3
2015 NeoIDL: A Domain Specific Language for Specifying REST Contracts Detailed Design and Extended Evaluation
abstract
Service-oriented computing has emerged as an effective approach for integrating business (and systems) that might spread throughout different organizations. A service is a unit of logic modularization that hides implementation details using well-defined contracts. However, existing languages for contract specification in this domain present several limitations. For instance, both WSDL and Swagger use language-independent data formats (XML and JSON) that are not suitable for specifying contracts and often lead to heavyweight specifications. Interface description languages, such as CORBA IDL and Apache Thrift, solve this issue by providing specific languages for contract specifications. Nevertheless, these languages do not target to the REST architectural style and lack support for language extensibility. In this paper we present the design and implementation of NeoIDL, an extensible domain specific language and program generator for writing REST based contracts that are further translated into service’s implementations. In addition, we also present a systematic evaluation of our approach from different perspectives, which involved the implementation of different services using NeoIDL from the domain of Command & Control. In particular, we found initial evidences that shows that NeoIDL can contribute: (i) to bring return on investment with respect to the design and development of NeoIDL, after the implementation of 4 to 7 services; and (ii) to reduce significantly the number of lines of specification when compared to an existing service specification language such as Swagger.
Lucas Lima 0004, Rodrigo Bonifácio, Edna Dias Canedo, Thiago M. Castro, Ricardo Fernandes, Alisson Palmeira, Uirá Kulesza
Int. J. Softw. Eng. Knowl. Eng.7
2015 Safe evolution templates for software product lines
Laís Neves, Paulo Borba, Vander Alves, Lucinéia Turnes, Leopoldo Teixeira, Demóstenes Sena, Uirá Kulesza
J. Syst. Softw.7
2014 An Empirical Study of Delays in the Integration of Addressed Issues
abstract
Predicting the time required to address an issue (i.e., a feature, bug fix, or enhancement) has long been the goal of many software engineering researchers. However, after an issue has been addressed, it must be integrated into an official release to become visible to users. In theory, issues should be integrated into releases soon after they are addressed. Yet in practice, the integration of an addressed issue might be delayed. For instance, an addressed issue might be delayed in order to assess the impact that it may have on the system as a whole. While one can often speculate, it is not always clear why some addressed issues are integrated immediately, while others are delayed. In this paper, we empirically study the integration of 20,995 addressed issues from the Argo UML, Eclipse, and Fire fox projects. Our results indicate that: (i) despite being addressed well before the release date, the integration of 34% to 60% of addressed issues in systems with traditional release cycle, and 98% of addressed issues in systems with rapid release cycle were delayed by one or more releases, (ii) using information derived from the addressed issues, we are able to accurately predict the release in which an addressed issue will be integrated, achieving a Receiver Operator Curve (ROC) area of above 0.74, and (iii) the workload of integrators is the most influential factor in our integration delay models. Our results indicate that integration can introduce non-negligible delays that prevent addressed issues from being delivered to users. Thus, solely focusing on the time to address an issue is not enough to truly assess how long it takes for users to see that the issue has been addressed in the software system.
Daniel Alencar da Costa, Surafel Lemma Abebe, Shane McIntosh, Uirá Kulesza, Ahmed E. Hassan
ICSME4
2014 A Process-Oriented Environment for the Execution of Software Engineering Experiments
Marília Aranha Freire, Gustavo Sizílio, Edmilson Campos Neto, Uirá Kulesza, Eduardo Aranha
PROFES4
2014 A Generative Development Method with Multiple Domain-Specific Languages
Edmilson Campos Neto, Uirá Kulesza, Marília Aranha Freire, Eduardo Aranha
PROFES2
2014 An Empirical Study to Evaluate a Domain Specific Language for Formalizing Software Engineering Experiments
Marília Aranha Freire, Uirá Kulesza, Eduardo Aranha, Andreas Jedlitschka, Edmilson Campos Neto, Silvia Teresita Acuña, Marta Gómez
SEKE2
2014 Assessing and Evolving a Domain Specific Language for Formalizing Software Engineering Experiments: An Empirical Study
abstract
The research about the formalization and conduction of controlled experiments in software engineering has reported important insights and guidelines for their organization. However, the computational support to formalize and execute controlled experiments still requires deeper investigation. In this context, this paper presents an empirical study that evaluates a domain-specific language (DSL) proposed to formalize controlled experiments in software engineering. The language is part of a model-driven approach that allows the generation of executable workflows for the experiment participants, according to the statistical design of the experiment. Our study involves the modeling of 16 software engineering experiments to analyze the completeness and expressiveness of the investigated DSL when specifying different controlled experiments. The results highlight several limitations of the DSL that affect the formalization and execution of experiments. These outcomes were used to extend and improve the evaluated DSL. Finally, the improved version of the language was used to model the same experiments in order to illustrate the benefits of the proposed improvements.
Marília Aranha Freire, Uirá Kulesza, Eduardo Aranha, Gustavo Nery, Daniel Alencar da Costa, Andreas Jedlitschka, Edmilson Campos Neto, Silvia Teresita Acuña, Marta Gómez
Int. J. Softw. Eng. Knowl. Eng.2
2014 Evaluating scenario-based SPL requirements approaches: the case for modularity, stability and expressiveness
Mauricio Alférez, Rodrigo Bonifácio, Leopoldo Teixeira, Paola R. G. Accioly, Uirá Kulesza, Ana Moreira 0001, João Araújo 0001, Paulo Borba
Requir. Eng.5
2013 Configurable Software Product Lines - Supporting Heterogeneous Configuration Knowledge
Elder Cirilo, Uirá Kulesza, Alessandro F. Garcia 0001, Donald D. Cowan, Paulo S. C. Alencar, Carlos José Pereira de Lucena
ICSR2
2013 Composition of Domain Specific Modeling Languages - An Exploratory Study
Edmilson Campos Neto, Marília Aranha Freire, Uirá Kulesza, Adorilson Bezerra, Eduardo Aranha
MODELSWARD3
2013 Modeling Variabilities from Software Process Lines with Compositional and Annotative Techniques: A Quantitative Study
Fellipe Araújo Aleixo, Uirá Kulesza, Edson OliveiraJr
PROFES2
2013 A Model-Driven Approach to Specifying and Monitoring Controlled Experiments in Software Engineering
Marília Aranha Freire, Paola R. G. Accioly, Gustavo Sizílio, Edmilson Campos Neto, Uirá Kulesza, Eduardo Aranha, Paulo Borba
PROFES5
2013 SMartySPEM: A SPEM-Based Approach for Variability Management in Software Process Lines
Edson OliveiraJr, Maicon G. Pazin, Itana Maria de Souza Gimenes, Uirá Kulesza, Fellipe Araújo Aleixo
PROFES4
2013 Automated Support for Controlled Experiments in Software Engineering: A Systematic Review (S)
Marília Aranha Freire, Daniel Alencar da Costa, Edmilson Campos Neto, Tainá Medeiros, Uirá Kulesza, Eduardo Aranha, Sérgio Soares
SEKE5
2013 Quantifying the effects of Aspectual Decompositions on Design by Contract Modularization: a Maintenance Study
abstract
Although it is assumed that the implementation of design by contract is better modularized by means of aspect-oriented (AO) programming, there is no empirical evidence on the effectiveness of AO for modularizing non-trivial design by contract code in realistic development scenarios. This paper reports a quantitative and qualitative case study that evolves a real-life application to assess various facets of the adequacy of aspects for modularizing the design by contract concern. Our evaluation focused upon a number of system changes that are typically performed during software maintenance tasks. The study was driven by an analysis of fundamental modularity attributes, such as separation of concerns, coupling, conciseness, and change propagation. We have found that AO techniques improved separation of concerns and the design stability between the design by contract code and base application code throughout the development scenarios. However, contradicting the general intuition, the AO versions of the system did not present significant gains regarding four classical size metrics we employed.
Henrique Rebêlo, Ricardo Massa Ferreira Lima, Uirá Kulesza, Márcio Ribeiro 0001, Yuanfang Cai, Roberta Coelho, Cláudio Sant'Anna, Alexandre Mota 0001
Int. J. Softw. Eng. Knowl. Eng.3
2013 A reference architecture for organizing the internal structure of metadata-based frameworks
Eduardo Guerra 0001, Felipe Alves, Uirá Kulesza, Clovis Torres Fernandes
J. Syst. Softw.3
2013 The crosscutting impact of the AOSD Brazilian research community
Uirá Kulesza, Sérgio Soares, Christina von Flach G. Chavez, Fernando Castor Filho, Paulo Borba, Carlos José Pereira de Lucena, Paulo César Masiero, Cláudio Sant'Anna, Fabiano Cutigi Ferrari, Vander Alves, Roberta Coelho, Eduardo Figueiredo 0001, Paulo F. Pires, Flávia Coimbra Delicato, Eduardo Piveta, Carla T. L. L. Silva, Valter Vieira de Camargo, Rosana T. V. Braga, Julio César Sampaio do Prado Leite, Otávio Augusto Lazzarini Lemos, Nabor das Chagas Mendonça, Thaís Vasconcelos Batista, Rodrigo Bonifácio, Nélio Cacho, Lyrene Fernandes da Silva, Arndt von Staa, Fábio Fagundes Silveira, Marco Túlio Valente, Fernanda M. R. Alencar, Jaelson Brelaz de Castro, Ricardo Argenton Ramos, Rosângela A. D. Penteado, Cecília M. F. Rubira
J. Syst. Softw.1
2012 Software Process Monitoring Using Statistical Process Control Integrated in Workflow Systems
Marília Aranha Freire, Daniel Alencar da Costa, Eduardo Aranha, Uirá Kulesza
SEKE4
2012 Squid: an extensible infrastructure for analyzing software product line implementations
abstract
Software product line engineering is about producing a set of related products that share more commonalities than variabilities. This approach promotes benefits such as cost reduction, product quality, productivity and time to market, but it brings new challenges that must be considered during the evolution of the software product line. In this context, recent research has explored and proposed automated approaches based on code analysis and traceability techniques for change impact analysis. This paper presents Squid, an extensible infrastructure for analyzing software product line implementations. The approach uses information from variability modeling, variability mapping to code assets, and dependency relationships between code assets to perform analysis of SPL implementations. A Squid instantiation example is presented to illustrate the usage of the tool in practical scenarios.
Alexandre Vianna, Felipe Pinto, Demóstenes Sena, Uirá Kulesza, Roberta Coelho, Jadson Santos, Jalerson Lima, Gleydson Lima
SPLC (2)4
2012 Automating the product derivation process of multi-agent systems product lines
Elder Cirilo, Ingrid Nunes, Uirá Kulesza, Carlos José Pereira de Lucena
J. Syst. Softw.3
2011 Investigating the safe evolution of software product lines
abstract
The adoption of a product line strategy can bring significant productivity and time to market improvements. However, evolving a product line is risky because it might impact many products and their users. So when evolving a product line to introduce new features or to improve its design, it is important to make sure that the behavior of existing products is not affected. In fact, to preserve the behavior of existing products one usually has to analyze different artifacts, like feature models, configuration knowledge and the product line core assets. To better understand this process, in this paper we discover and analyze concrete product line evolution scenarios and, based on the results of this study, we describe a number of safe evolution templates that developers can use when working with product lines. For each template, we show examples of their use in existing product lines. We evaluate the templates by also analyzing the evolution history of two different product lines and demonstrating that they can express the corresponding modifications and then help to avoid the mistakes that we identified during our analysis.
Laís Neves, Leopoldo Teixeira, Demóstenes Sena, Vander Alves, Uirá Kulesza, Paulo Borba
GPCE5
2011 Automatic Deployment and Monitoring of Software Processes: A Model-Driven Approach
Marília Aranha Freire, Fellipe Araújo Aleixo, Uirá Kulesza, Eduardo Aranha, Roberta Coelho
SEKE3
2011 Assessing the Impact of Aspects on Design By Contract Effort: A Quantitative Study
Henrique Rebêlo, Ricardo Massa Ferreira Lima, Uirá Kulesza, Cláudio Sant'Anna, Roberta Coelho, Alexandre Mota 0001, Márcio Ribeiro 0001, César A. L. de Oliveira
SEKE3
2011 Unveiling and taming liabilities of aspects in the presence of exceptions: A static analysis based approach
Roberta Coelho, Arndt von Staa, Uirá Kulesza, Awais Rashid, Carlos José Pereira de Lucena
Inf. Sci.3
2010 Architecting a Model-Driven Aspect-Oriented Product Line for a Digital TV Middleware: A Refactoring Experience
Diego Saraiva, Lucas Pereira, Thaís Vasconcelos Batista, Flávia Coimbra Delicato, Paulo F. Pires, Uirá Kulesza, Rodrigo P. M. de Araújo, Tássia Freitas, Sindolfo Miranda Filho, Ana Liz S. Souto
ECSA6
2010 A model-driven traceability framework for software product lines
Nicolas Anquetil, Uirá Kulesza, Ralf Mitschke, Ana Moreira 0001, Jean-Claude Royer, Andreas Rummler, André Sousa
Softw. Syst. Model.2
2009 Multi-view Composition Language for Software Product Line Requirements
Mauricio Alférez, João Pedro Santos, Ana Moreira 0001, Alessandro F. Garcia 0001, Uirá Kulesza, João Araújo 0001, Vasco Amaral 0001
SLE5
2009 VML* - A Family of Languages for Variability Management in Software Product Lines
Steffen Zschaler, Pablo Sánchez 0002, João Pedro Santos, Mauricio Alférez, Awais Rashid, Lidia Fuentes, Ana Moreira 0001, João Araújo 0001, Uirá Kulesza
SLE9
2008 Assessing the Impact of Aspects on Exception Flows: An Exploratory Study
Roberta Coelho, Awais Rashid, Alessandro F. Garcia 0001, Fabiano Cutigi Ferrari, Nélio Cacho, Uirá Kulesza, Arndt von Staa, Carlos José Pereira de Lucena
ECOOP6
2008 Evolving software product lines with aspects: an empirical study on design stability
abstract
Software product lines (SPLs) enable modular, large-scale reuse through a software architecture addressing multiple core and varying features. To reap the benefits of SPLs, their designs need to be stable. Design stability encompasses the sustenance of the product line’s modularity properties in the presence of changes to both the core and varying features. It is usually assumed that aspect-oriented programming promotes better modularity and changeability of product lines. However, there is no empirical evidence on its efficacy to prolong design stability of product lines in realistic development scenarios. This paper reports a quantitative study that evolves two SPLs to assess various facets of design stability of aspect-oriented implementations. Our investigation focused upon a multi-perspective analysis of the evolving product lines in terms of modularity, change propagation, and feature interaction.
Eduardo Figueiredo 0001, Nélio Cacho, Cláudio Sant'Anna, Mario Monteiro, Uirá Kulesza, Alessandro F. Garcia 0001, Sérgio Soares, Fabiano Cutigi Ferrari, Safoora Shakil Khan, Fernando Castor Filho, Francisco Dantas
ICSE5
2008 Integrating Component and Product Lines Technologies
Elder Cirilo, Uirá Kulesza, Roberta Coelho, Carlos José Pereira de Lucena, Arndt von Staa
ICSR2
2008 A Model-driven Approach for Software Product Lines Requirements Engineering
Mauricio Alférez, Uirá Kulesza, André Sousa, João Pedro Santos, Ana Moreira 0001, João Araújo 0001, Vasco Amaral 0001
SEKE2
2008 Documenting and Modeling Multi-agent Systems Product Lines
Ingrid Nunes, Uirá Kulesza, Camila Nunes, Carlos José Pereira de Lucena
SEKE2
2007 On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study
Phil Greenwood, Thiago T. Bartolomei, Eduardo Figueiredo 0001, Marcos Dósea, Alessandro F. Garcia 0001, Nélio Cacho, Cláudio Sant'Anna, Sérgio Soares, Paulo Borba, Uirá Kulesza, Awais Rashid
ECOOP10
2007 JAT: A Test Automation Framework for Multi-Agent Systems
abstract
Automated tests have been widely used as a supporting mechanism during software development and maintenance activities. It improves the confidence on software releases as it seeks to uncover regression bugs, and serves as a live documentation which is very useful when evolving systems. Concerning multi agent systems (MASs), some characteristics such as agent autonomy and asynchronous message-based interaction bring a degree of non-determinism which presents new testing challenges. This paper proposes JAT, a framework for building and running MASs test scenarios, which relies on the use of aspect-oriented techniques to monitor the autonomous agents during tests and control the test input of asynchronous test cases. The tool has been developed on top of JADE, a widely used agent platform implemented in Java. We have used JAT on testing 3 different MASs. Our experience shows that JAT can be used to build test scenarios which can achieve high fault-detection effectiveness.
Roberta Coelho, Elder Cirilo, Uirá Kulesza, Arndt von Staa, Awais Rashid, Carlos José Pereira de Lucena
ICSM3
2006 Refactoring product lines
abstract
Adoption strategies for Software Product Lines (SPL) frequently involve bootstrapping existing products into a SPL and extending an existing SPL to encompass another product. One way to do that is to use program refactorings. However, the traditional notion of refactoring does not handle appropriately feature models (FM), nor transformations involving multiple instances of the same SPL. For instance, it is not desirable to apply a refactoring into a SPL and reduce its configurability. In this paper, we extend the traditional notion of refactoring to an SPL context. Besides refactoring programs, FMs must also be refactored. We present a set of sound refactorings for FMs. We evaluate this extended refactoring definition for SPL in a real case study in the mobile games domain.
Vander Alves, Rohit Gheyi, Tiago Massoni, Uirá Kulesza, Paulo Borba, Carlos José Pereira de Lucena
GPCE4
2006 Quantifying the Effects of Aspect-Oriented Programming: A Maintenance Study
abstract
One of the main promises of aspect-oriented programming (AOP) is to promote improved modularization of crosscutting concerns, thereby enhancing the software stability in the presence of changes. This paper presents a quantitative study that assesses the positive and negative effects of AOP on typical maintenance activities of a Web information system. The study consists of a systematic comparison between the object-oriented and the aspect-oriented versions of the same application in order to assess to what extent each solution provides maintainable software decompositions. Our analysis was driven by fundamental modularity attributes, such as coupling, cohesion, conciseness, and separation of concerns. We have found that the aspect-oriented design has exhibited superior stability and reusability through the changes, as it has resulted in fewer lines of code, improved separation of concerns, weaker coupling, and lower intra-component complexity
Uirá Kulesza, Cláudio Sant'Anna, Alessandro F. Garcia 0001, Roberta Coelho, Arndt von Staa, Carlos José Pereira de Lucena
ICSM1
2006 Improving Extensibility of Object-Oriented Frameworks with Aspect-Oriented Programming
Uirá Kulesza, Vander Alves, Alessandro F. Garcia 0001, Carlos José Pereira de Lucena, Paulo Borba
ICSR1
2006 Customizing Aspect-Oriented Variabilities using Generative Techniques
Uirá Kulesza, Carlos José Pereira de Lucena, Paulo S. C. Alencar, Alessandro F. Garcia 0001
SEKE1