Papers by Lucian Gonçales

Proceedings of the XIV Brazilian Symposium on Information Systems - SBSI'18
This study presents Doric, a software architecture for data-intensive real-time applications. Dim... more This study presents Doric, a software architecture for data-intensive real-time applications. Dimensions of data-intensive real-time applications are introduced, as well as technologies that enable the implementation of such dimensions. A case study involving a portable electroencephalogram (EEG) enabled data collection based on realistic scenarios found in data-intensive real-time applications. The Doric architecture was implemented using recent technologies (e.g., Apache Kafka) for building real-time data pipelines and streaming applications. This prototype was evaluated in five scenarios containing different volumes of data. The obtained results were encouraging and show the potential for applying Doric as a structure to foster the development of modern information systems in organizations and to support serve as a guideline for new corporate architectures.

Proceedings of the XV Brazilian Symposium on Information Systems, 2019
The integration of feature models plays a key role in many software engineering tasks, e.g., addi... more The integration of feature models plays a key role in many software engineering tasks, e.g., adding new features to software product lines (SPL) of information systems. Previous empirical studies have revealed that integrating design models is still considered a time-consuming and error-prone task. Unfortunately, integration approaches with tool support are still severely lacking. Even worse, little is known about the effort invested by developers to integrate models manually, and how correct the integrated models are. This paper proposes FMIT, which is a semiautomatic tool to support the integration of feature models. It comes up with a strategy-based approach to reduce the effort that developers invest to combine feature models and increase the amount of correctly integrated models. A controlled experiment was run with 10 volunteers through six realistic integration scenarios. Our results, supported by statistical tests, show that our semiautomatic approach not only reduced the integration effort by 73.01%, but also increased the number of correctly integrated feature models by 43.01%, compared with the manual approach. Our main contributions are a semiautomatic, strategy-based approach with tool support, and empirical evidence on its benefits. Our encouraging results open the way for the development of new heuristics and tools to support developers during the evolution of feature models. CCS CONCEPTS • Software and its engineering → Model-driven software engineering; • Integration → Empirical studies.

International Conferences on Software Engineering and Knowledge Engineering, 2018
Even though existing heuristics and specification-based techniques support composing design model... more Even though existing heuristics and specification-based techniques support composing design models, it is still considered a time-consuming and highly intensive task. In addition, there is a lack of studies exploring the effects of composition techniques on software developers' affective state and development effort. This study reports a pilot study to investigate these effects while developers apply composition techniques to detect and resolve inconsistencies in output-composed models. In this sense, a widely known wearable EEG headset, namely Emotiv EPOC, with 14 channels was used, while developers made use of heuristic-based and specification-based composition techniques to evolve design models. Our results suggest that using heuristic-based techniques produced a higher effect on the developers' affectivity, compared to specification-based techniques. Moreover, the higher the effects on the developers' affectivity, the higher the odds to invest less effort and produce correctly composed design models.

International Conferences on Software Engineering and Knowledge Engineering, 2018
The integration of feature models plays a key role in many tasks in software development, such as... more The integration of feature models plays a key role in many tasks in software development, such as evolving Software Product Lines (SPL) to add new features. However, based on our experience in previous empirical studies, one of the main shortcomings to the widespread adoption of integration techniques is the lack of empirical knowledge about its effects on the effort of analysts and developers. This problem applies to integration techniques involving a set of operations (union and intersection) as well as the relationships between features and their elements. This article, therefore, reports on a controlled experiment that investigated the effort of (1) applying the integration techniques of feature models by professionals and students, and (2) detecting and resolving inconsistencies in the output-integrated models. The integration effort was evaluated through 10 evolution scenarios. The main results suggest that there is no significant difference regarding (1) the integration effort invested by professionals and students to produce a desired integrated model, and (2) the correctness rate of the integrations performed by professionals and students.

Journal of Applied Research and Technology, 2021
EEG signals are a relevant indicator for measuring aspects related to human factors in Software E... more EEG signals are a relevant indicator for measuring aspects related to human factors in Software Engineering. EEG is used in software engineering to train machine learning techniques for a wide range of applications, including classifying task difficulty, and developers’ level of experience. The EEG signal contains noise such as abnormal readings, electrical interference, and eye movements, which are usually not of interest to the analysis, and therefore contribute to the lack of precision of the machine learning techniques. However, research in software engineering has not evidenced the effectiveness when applying these filters on EEG signals. The objective of this work is to analyze the effectiveness of filters on EEG signals in the software engineering context. As literature did not focus on the classification of developers’ code comprehension, this study focuses on the analysis of the effectiveness of applying EEG filters for training a machine learning technique to classify deve...

Proceedings of the XIV Brazilian Symposium on Information Systems - SBSI'18, 2018
Applications 1 may contain vulnerabilities for a variety of reasons, one of which is the use of v... more Applications 1 may contain vulnerabilities for a variety of reasons, one of which is the use of vulnerable components. One of the solutions adopted to eliminate the vulnerabilities inserted by such components is to update the component to a more recent version that corrects the vulnerability. However, updating a component may require code refactoring, updating other components and inserting new vulnerabilities in the application. There are several tools that perform the analysis and management of dependencies of the projects, but few tools present information about vulnerabilities of the new versions, incompatibilities and updates of the dependencies of the components. This article, therefore, presents dep|ct (depict), a tool that aims to identify the known vulnerable components used by the applications and help in the decision on the updating of such components, in order to mitigate the vulnerabilities added to the projects through the vulnerable dependencies. Results of the empirical evaluation carried out on two projects show that the tool can be used to assist in deciding on the update of known vulnerable components.

Evaluation of machine learning techniques to classify code comprehension based on developers' EEG data
Proceedings of the 19th Brazilian Symposium on Human Factors in Computing Systems, 2020
Psychophysiological data such as brain waves have been used with machine learning techniques to c... more Psychophysiological data such as brain waves have been used with machine learning techniques to classify the level of expertise and difficulty of software developers. However, little is known about the effectiveness of machine learning techniques (MLT) for classifying developers' code comprehension based on their brainwave data. This study evaluates the effectiveness of MLT's trained with EEG data to classify developers' code comprehension. Brainwave data collected from an EEG device while developers performed source code comprehension tasks was used to train the Neural Network, Support Vector Machine, Naïve Bayes and Random Forrest classifiers. The effectiveness of these techniques was analyzed using accuracy, precision and recall. The Neural Network classifier, trained with EEG data and Principal Component Analysis, obtained 84% accuracy to classify code comprehension. Thus, the application of MLT to classify developers' code comprehension based on EEG data is poss...
SIMCOP: a framework for similarity analysis of context histories
International Journal of Business Information Systems, 2020

Aplicativos 1 podem conter vulnerabilidades por varios motivos, um dos quais e o uso de component... more Aplicativos 1 podem conter vulnerabilidades por varios motivos, um dos quais e o uso de componentes vulneraveis. Uma das solucoes adotadas para eliminar as vulnerabilidades inseridas por esses componentes e atualizar o componente para uma versao mais recente que corrija a vulnerabilidade. No entanto, a atualizacao de um componente pode exigir a refatoracao de codigo, atualizar outros componentes e inserir novas vulnerabilidades no aplicativo. Existem varias ferramentas que realizam a analise e gerenciamento de dependencias dos projetos, mas poucas ferramentas apresentam informacoes sobre vulnerabilidades das novas versoes, incompatibilidades e atualizacoes das dependencias dos componentes. Este artigo, portanto, apresenta dep | ct (retratar), uma ferramenta que visa identificar os componentes vulneraveis conhecidos utilizados pelas aplicacoes e auxiliar na decisao sobre a atualizacao de tais componentes, a fim de mitigar as vulnerabilidades adicionadas aos projetos atraves de as d...

Proceedings of the XV Brazilian Symposium on Information Systems, 2019
Software maintenance is a costly task and error-prone for both software developers and users as w... more Software maintenance is a costly task and error-prone for both software developers and users as well. By knowing how and what software requirements need to be changed, end users could perform maintenance assisted by tools. However, current literature lacks for tools that support automated maintenance in real-world scenarios and allow users interaction via natural language. Even worse, the current tools are unable to understand the semantic of requests, as well as perform the necessary transformations in the maintenance software. This paper, therefore, proposes Hermes, a natural language interface model for software transformation. It combines computational linguistics techniques and logic programming to perform automated maintenance requests in software. Hermes interacts with end user through state of the art language parsers and domain ontologies by interpreting the semantics of changes requests to build a typed graph that change the software. Hermes was evaluated through an empiri...

Proceedings of the XV Brazilian Symposium on Information Systems, 2019
Software design models play a key role in many activities of information systems engineering, suc... more Software design models play a key role in many activities of information systems engineering, such as documenting software artefacts, communicating project decisions, and code generation. In this scenario, the techniques for comparison of software design models are used for several purposes, such as, for detecting clones, and model evolution. In the last decades, academia proposed different techniques for comparing software models. Even using these different techniques for model comparison, this process is still an activity of a subjective nature, because during this process, different developers can interpret the similarity differently. Thus, the problem is that it is still unknown if developers has the same intuition in order to resolve comparison of software design models. For this, the main objective of this work is to explore the effects of their experience level, i.e., experienced and inexperienced developers, relative to their effort and correctness for resolving activities o...

IEEE Latin America Transactions, 2018
The measure of distance between UML diagrams is a crucial step to support the integration of UML ... more The measure of distance between UML diagrams is a crucial step to support the integration of UML sequence diagrams. This distance is used for measuring the difference between two sequences messages exchanged by objects. Even though UML sequence diagram is widely used, nothing has been done to support to find matches for short sequence of messages in many longer interactions between objects. Unfortunately, calculating this distance is still a great challenge for developers given the problem at hand as semantic information is typically not included in any formal way in the models. Therefore, this work focuses on proposing an algorithm for calculating distance between sequence diagrams to enable an identification of similarity between models. For this, the proposed algorithm was implemented and incorporated into a model composition tools, namely MoCoTo. Our preliminary evaluation indicated that algorithm was able to measure the distance between two UML sequence diagrams properly.

Suportando a composição de diagramas de componentes UML
Ambientes de negocios que mudam rapidamente tornaram-se sistemas de informacoes corporativas mais... more Ambientes de negocios que mudam rapidamente tornaram-se sistemas de informacoes corporativas mais heterogeneos e complexos. Esta extrema incerteza leva ao desenvolvimento continuo e a integracao de componentes arquiteturalmente relevantes desenvolvidos em paralelo. Nesse contexto, a composicao adequada de tais componentes e fundamental para reduzir o esforco de desenvolvimento. No entanto, as ferramentas atuais de composicao ainda sao consideradas imprecisas e inflexiveis para esse fim. Este artigo, portanto, propoe o MoCoTo, uma ferramenta de composicao de modelos para suportar a integracao de diagramas de componentes UML. Ele explora os relacionamentos de equivalencia entre os elementos do componente UML para melhorar a precisao e a precisao da integracao. Desenvolvedores e analistas de sistemas podem se beneficiar do uso do MoCoTo ao desenvolver ou manter modelos de arquitetura de sistemas de informacoes corporativas. O MoCoTo foi implementado como um plug-in da plataforma Eclips...

Fast-changing business environments have become enterprise information systems more heterogeneous... more Fast-changing business environments have become enterprise information systems more heterogeneous and complex. This extreme uncertainty leads to continuous development and integration of architecturally relevant components developed in parallel. In this context, the proper composition of such components is critical to reduce the development effort. However, the current composition tools are still considered imprecise and inflexible for this purpose. This article, therefore, proposes MoCoTo, a model composition tool to support the integration of UML component diagrams. It exploits equivalence relationships between the UML component elements to improve integration precision and accuracy. Developers and system analysts can benefit from using MoCoTo when evolving or maintaining architectural models of enterprise information systems. MoCoTo was implemented as an Eclipse platform plug-in. The tool was used to support the composition of architectural components in three realistic evolution...

Proceedings of the XV Brazilian Symposium on Information Systems, 2019
In collaborative software modeling the two main types of collaboration still present problems, su... more In collaborative software modeling the two main types of collaboration still present problems, such as the constant interruptions that hinder the cognitive process in synchronous collaboration, and the complicated and costly stages of conflict resolution in asynchronous collaboration. For this, this paper proposes a technique called "UMLCollab". This technique combines aspects from synchronous and asynchronous collaboration. Through experiments, developers applied the proposed solution and they achieved to an intermediate productivity in relation to traditional collaboration methods. The results showed that the "UMLCollab" improved the correctness of the changed models, the notion of developer regarding to the resolution of conflicts, and enabled the parallel changes occurring while other collaborators are working on without degrade the software diagrams being modelled locally. CCS CONCEPTS • Information systems → Synchronous editors; Asynchronous editors; • Software and its engineering → Software design engineering; Programming teams.

Proceedings of the XV Brazilian Symposium on Information Systems, 2019
Several approaches to measure similarity between UML models have been proposed in recent years. H... more Several approaches to measure similarity between UML models have been proposed in recent years. However, they usually fall short of what was expected in terms of precision and sensitivity. Consequently, software developers end up using imprecise, similarity-measuring approaches to figure out how similar design models of fast-changing information systems are. This article proposes UMLSim, which is a hybrid approach to measure similarity between UML models. It brings an innovative approach by using multiple criteria to quantify how UML models are similar, including semantic, syntactic, structural, and design criteria. A case study was conducted to compare the UMLSim with five state-of-the-art approaches through six evaluation scenarios, in which the similarity between realistic UML models was computed. Our results, supported by empirical evidence, show that, on average, the UML-Sim presented high values for precision (0.93), recall (0.63) and f-measure (0.67) metrics, excelling the state-of-the-art approaches. The empirical knowledge and insights that are produced may serve as a starting point for future works. The results are encouraging and show the potential for using UMLSim in real-world settings. CCS CONCEPTS • Software and its engineering → Design languages; Software configuration management and version control systems;

Measuring the cognitive load of software developers: An extended Systematic Mapping Study
Information and Software Technology, 2021
Abstract Context: Cognitive load in software engineering refers to the mental effort users spend ... more Abstract Context: Cognitive load in software engineering refers to the mental effort users spend while reading software artifacts. The cognitive load can vary according to tasks and across developers. Researchers have measured developers’ cognitive load for different purposes, such as understanding its impact on productivity and software quality. Thus, researchers and practitioners can use cognitive load measures for solving many aspects of software engineering problems. Problem: However, a lack of a classification of dimensions about cognitive load measures in software engineering turns difficult for researchers and practitioners to obtain research trends to advance in scientific knowledge or to apply it in software projects. Objective: This article aims to provide a classification of different aspects of cognitive load measures in software engineering and identify challenges for further research from classified works. Method: We conducted a Systematic Mapping Study (SMS), which started with 4,175 articles gathered from 11 search engines and then narrowed down to 63 primary studies. Results: Our main findings are: Our main findings are: (1) 62% (39/63) focused on applying a combination of sensors; (2) 81% (51/63) of the selected works were validation studies; (3) 83% (52/63) analyzed the cognitive load while developers performed programming tasks. Moreover, the research questions’ answers formed a classification scheme. Conclusion: Finally, despite the production of a significant amount of studies on cognitive load in software engineering by academia, there are still many challenges to be solved by the academia and practitioners for effectively measuring the cognitive load in software engineering. For this, this study provided directions for future studies about cognitive load in the field of software engineering for academia and practitioners.

International Conferences on Software Engineering and Knowledge Engineering, 2018
The Unified Modeling Language (UML) has become the standard for modeling software. Several survey... more The Unified Modeling Language (UML) has become the standard for modeling software. Several surveys on the UML usage have been proposed in recent years. However, none of them explores the UML use in specific regional scope, and thus little is known about the practices and perceptions of UML use from the perspective of practitioners in the Brazilian industry. Objective: This paper reports on a survey focused on identifying the state-of-the-practice of the Brazilian industry for what concerns the UML usage in real-world settings. Method: In total, 222 practitioners from 140 different Information Technology companies have answered an on-line (or printed) questionnaire concerning their UML use experiences, the difficulty in adopting UML and what should be done to increase the UML adoption in practice. Result: The results show that: (1) 60 participants (28.2%) have used UML in their daily work, while 73.2% have not; (2) 55.41% of the surveyed participants did not disagree with the statement that UML is the "lingua franca" in software modeling; (3) 61.26% reported to find that the automatic creation of UML diagrams to represent a big picture of the system under development would be useful to boost UML use. Conclusion: The UML is not often used in the work life of participants. In addition, no relationship was identified between the use of UML and the participant company being a software factory.

International Journal of Computer Applications, 2020
Cognitive load refers to the mental effort applied to perform cognitive processes. In software en... more Cognitive load refers to the mental effort applied to perform cognitive processes. In software engineering, developers are involved in cognitive processes such as program comprehension and change tasks. Measuring cognitive load would be a human-centered solution, instead of using measurements based on artifacts which have been shown to have no correlation with developers' perception. Therefore, evaluate the cognitive load of the developer has potential to leverage the identification of source code issues and also improve the developers experience with their work environment. To determine a potential searcher to identify and organize this article a research agenda in relation to the measure of cognitive load of developers. This article also discusses the implications of using the cognitive load as a multipurpose indicator in software engineering. Finally, this article provides for practitioners and researchers a way to advance in the research about developers' cognitive load in software engineering in realistic scenarios.
2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC), 2019
Uploads
Papers by Lucian Gonçales