While some areas of software engineering knowledge present great advances with respect to the automation of processes, tools, and practices, areas such as software maintenance have scarcely been addressed by either industry or academia, thus delegating the solution of technical tasks or human capital to manual or semiautomatic forms. In this context, machine learning (ML) techniques play an important role when it comes to improving maintenance processes and automation practices that can accelerate delegated but highly critical stages when the software launches. The aim of this article is to gain a global understanding of the state of ML-based software maintenance by using the compilation, classification, and analysis of a set of studies related to the topic. The study was conducted by applying a systematic mapping study protocol, which was characterized by the use of a set of stages that strengthen its replicability. The review identified a total of 3776 research articles that were subjected to four filtering stages, ultimately selecting 81 articles that were analyzed thematically. The results reveal an abundance of proposals that use neural networks applied to preventive maintenance and case studies that incorporate ML in subjects of maintenance management and management of the people who carry out these tasks. In the same way, a significant number of studies lack the minimum characteristics of replicability.
Critical thinking consists in analysing and evaluating the coherence of reasoning. This ability is crucial when we talk about software quality (SQ). SQ is closely related with the engineer’s ability to judge and discriminate between solutions correctly, so students are required to analyse, evaluate and draw conclusions. Critical thinking, therefore, becomes a crucial part of the training of software engineers. The problem arises from the diversity of proposals and the lack of rigour in existing experiences, making it difficult to find specific recommendations, especially in online contexts. This article reports a systematic mapping study (SMS), the purpose of which was to detect, organise and characterise specific dimensions in online teaching-learning of critical thinking for software engineering. Based on the results of the SMS, we propose a preliminary framework for the evaluation of critical thinking in the training of software engineers in a context of online higher education. It is expected that this proposal will serve as a basis for instructors of the discipline when evaluating critical thinking in a context of online teaching.