
Context: Team formation is critical in agile software development, directly affecting project effectiveness and performance. Ensuring teams possess the necessary capabilities is vital for success. However, the specific capabilities used in practice for team composition remain unclear. Aims: Our objective is to understand the evolution, relevance, and practical application of capabilities used in agile team formation and gain real-world insights. Method: We conducted a comparative analysis, contrasting the software engineers’ capabilities identified in a prior review with those used in agile team formation based on recent studies. To gain insights into real-world practices, we interviewed a key practitioner from a software organization through a semi-structured interview. Results: The study highlights the most impactful capabilities for agile team formation, providing valuable guidance for practitioners and researchers to enhance software engineering practices. Conclusions: This research advances the understanding of essential attributes for successful agile team formation and offers valuable implications on underlying aspects and challenges faced in the practical application of these capabilities.
This article presents an analysis of the Brazilian reality regarding software quality for Artificial Intelligence (AI). The study seeks to investigate the software quality assurance strategies adopted during the lifecycle of AI/ML components, covering the development, integration and maintenance phases. We conducted a survey with 40 participants, and the results indicate that the Brazilian industry faces several quality issues in the development of AI systems, including accuracy, performance, interpretability and scalability. In addition, challenges related to maintainability, documentation, reuse and code quality are identified.
Refactoring is the process of changing the internal structure of a software in order to improve its quality, without modifying its behavior. Recent studies have shown that the act of refactoring brings positive results for maintaining and understanding the code and the system as a whole. It turns out that, currently, this method is still little used, with expertise and intuition being the main factors that determine the need for software refactoring. Before starting the refactoring process, an analysis is essential to check whether refactoring is really necessary. Therefore, the present study analyzes artificial intelligence techniques, such as Deep Learning, to predict when software refactoring is essential. Deep Learning models like CNN, RNN, LSTM and DenseLayer were analyzed and compared using precision, recall and accuracy metrics. The results demonstrated that Machine Learning models performed better than Deep Learning algorithms using the same data set, however, the good performance of Deep Learning models stands out in scenarios where the data is very unbalanced.
In today’s fast-paced software industry, understanding and managing Technical Debt (TD) is crucial for software development. TD can compromise the long-term quality of software systems. The occurrence of TD is commonly reported and discussed by practitioners on Question and Answers (Q&A) platforms, such as Stack Overflow (SO). Data from Q&A platforms has been leveraged by the TD research community, most prominently regarding knowledge extraction. However, manual analyses of such data not only require considerable effort but also suffer from biases. Hence, this paper aims to propose an automated approach for identifying and classifying types of TD in SO discussions using machine learning (ML) and natural language processing. We divided our methodology into four main steps: i) data preprocessing, ii) application of natural language processing, iii) application of ML algorithms, and iv) computing the evaluation metrics for the proposed models. Our results indicate that ML algorithms have the potential to be successfully applied to automatically identify and classify TD types on SO discussions.We achieved a recall of 85% for test debt and a precision of 78% for design debt. Furthermore, the results of automated TD identification on SO benefit the software development community by enhancing solution quality, raising awareness of best practices, and facilitating collaboration among developers. This leads to more efficient development and the promotion of consistent standards. We make our entire dataset and pre-trained models available to encourage future research directions.
In the rapidly evolving landscape of software development, ensuring reliable and efficient software systems is essential. However, traditional software testing methods often struggle to achieve comprehensive test coverage and adaptability to changing software dynamics. To address these challenges, this paper proposes an innovative approach that integrates reinforcement learning techniques into software testing automation. Our goal is to enhance test generation and prioritization strategies, leading to improved fault detection, adaptability, and resource utilization. By developing an intelligent testing framework that learns from feedback received during the testing process, we optimize test coverage and fault detection using reinforcement learning. Initial experiments demonstrate the potential of our approach in improving software testing outcomes. The integration of reinforcement learning into software testing automation holds promise for advancing the field, enabling more reliable and adaptable software systems, and reducing development costs.