Browsing by Author "Bergel, Alexandre"
Now showing 1 - 8 of 8
Results Per Page
Sort Options
- ItemHow Do Developers Use the Java Stream API(2021) Nostas, Joshua; Sandoval Alcocer, Juan Pablo; Elias Costa, Diego; Bergel, AlexandreJava 8 marked a shift in the Java development landscape by introducing functional-like concepts in its stream library. Java developers can now rely on stream pipelines to simplify data processing, reduce verbosity, easily enable parallel processing and increase the expressiveness of their code. While streams have seemingly positive effects in Java development, little is known to what extent Java developers have incorporated streams into their programs and the degree of adoption by the Java community of individual stream's features. This paper presents a replication study on which we analyze the stream usage of 610 Java projects. Our findings show that the Java streams are used mostly by software libraries rather than regular applications. Developers rarely use parallel processing, and when they do so, they only superficially use parallelism features and most of the parallel streams are used on simple for Each operations. The most common used pipelines involve map, filter and collect operations. We carefully describe a number of stream idioms we identified, and detail how we addressed the challenges we faced to complete our study. Our findings will help developers at (i) making better decisions about which features to consider when improving the API and (ii) supporting stream-related IDEs features, such as refactoring.
- ItemIntroduction to Special Issue on Visualization Applied to Software Engineering(2023) Leger, Paul; Bergel, Alexandre; Sandoval Alcocer, Juan Pablo; Merino, LeonelSoftware visualization is a broad research area whose general goal is to enhance and promote the theory, realization, and evaluation of approaches to visually encode and analyze software systems, including software development practices, evolution, structure, and software runtime behavior. Software visualization is inherently interdisciplinary, drawing on theories and techniques from information visualization and computer graphics and applying these in the software engineering domain. This special issue on software visualization aims to bring together a community of researchers from software engineering, information visualization, computer graphics, human-computer interaction, and data science to discuss theoretical foundations, algorithms, techniques, tools, and applications related to software visualization. The special issue received 17 submissions of which 6 were accepted for publication (i.e., acceptance rate of 35.3%). Amongst the accepted papers, three correspond to extended versions of papers published in the IEEE Working Conference on Software Visualization (VISSOFT) 2021.
- ItemOn the use of statistical machine translation for suggesting variable names for decompiled code: The Pharo case(2024) Sandoval Alcocer, Juan Pablo; Camacho-Jaimes, Harold; Galindo-Gutierrez, Geraldine; Neyem, Hugo Andrés; Bergel, Alexandre; Ducassee, StéphaneAdequately selecting variable names is a difficult activity for practitioners. In 2018, Jaffe et al. proposed the use of statistical machine translation (SMT) to suggest descriptive variable names for decompiled code. A large corpus of decompiled C code was used to train the SMT model. Our paper presents the results of a partial replication of Jaffe’s experiment. We apply the same technique and methodology to a dataset made of code written in the Pharo programming language. We selected Pharo since its syntax is simple – it fits on half of a postcard – and because the optimizations performed by the compiler are limited to method scope. Our results indicate that SMT may recover between 8.9% and 69.88% of the variable names depending on the training set. Our replication concludes that: (i) the accuracy depends on the code similarity between the training and testing sets; (ii) the simplicity of the Pharo syntax and the satisfactory decompiled code alignment have a positive impact on predicting variable names; and (iii) a relatively small code corpus is sufficient to train the SMT model, which shows the applicability of the approach to less popular programming languages. Additionally, to assess SMT’s potential in improving original variable names, ten Pharo developers reviewed 400 SMT name suggestions, with four reviews per variable. Only 15 suggestions (3.75%) were unanimously viewed as improvements, while 45 (11.25%) were perceived as improvements by at least two reviewers, highlighting SMT’s limitations in providing suitable alternatives.
- ItemSoftware Visualizations to Analyze Memory Consumption: ALiterature Review(2022) Fernández, Blanco Alison; Bergel, Alexandre; Sandoval Alcocer, Juan PabloUnderstanding and optimizing memory usage of software applications is a difficult task, usually involving the analysis of large amounts of memory-related complex data. Over the years, numerous software visualizations have been proposed to help developers analyze the memory usage information of their programs. This article reports a systematic literature review of published works centered on software visualizations for analyzing the memory consumption of programs. We have systematically selected 46 articles and categorized them based on the tasks supported, data collected, visualization techniques, evaluations conducted, and prototype availability. As a result, we introduce a taxonomy based on these five dimensions to identify the main challenges of visualizing memory consumption and opportunities for improvement. Despite the effort to evaluate visualizations, we also find that most articles lack evidence regarding how these visualizations perform in practice. We also highlight that few articles are available for developers willing to adopt a visualization for memory consumption analysis. Additionally, we describe a number of research areas that are worth exploring.
- ItemSpike – A code editor plugin highlighting fine-grained changes(2022) Escobar, Ronald; Sandoval Alcocer, Juan Pablo; Tarner, Hagen; Beck, Fabián; Bergel, AlexandreInformation about source code changes is important for many software development activities. As such, modern IDEs, including, IntelliJ IDEA and Visual Studio Code, show visual clues within the code editor that highlight lines that have been changed since the last synchronization with the code repository. However, the granularity of the change information is limited to a line level, showing mainly a small colored icon on the left side of the lines that have been added, deleted, or modified. This paper introduces Spike, a source code highlighting plugin that uses the font color to visually encode fine-grained version difference information within the code editor. In contrast to previously mentioned tools, Spike can highlight insertions, deletions, updates, and refactorings all in a same line. Our plugin also enriches the source code with small icons that allow retrieving detailed information about a given code change. We perform an exploratory user study with five professional software engineers. Our results show that our approach is able to assist practitioners with complex comprehension tasks about software history within the code editor.
- ItemTestEvoViz: visualizing genetically-based test coverage evolution(2022) Cota Vidaurre, Andreina; Cusi Lopez, Evelyn; Sandoval Alcocer, Juan Pablo; Bergel, AlexandreGenetic algorithms are commonly employed to generate unit tests. Automatically generated unit tests are known to be an important asset to identify software defects and define oracles. However, configuring the test generation is a tedious activity for a practitioner due to the inherent difficulty to adequately tuning the generation process. Furthermore, evolution processes are most of the time compared solely using the final results, while discarding all the details of the iterations that are themselves important for an adequate tuning. This paper presents TestEvoViz, a visual technique to introspect genetic algorithm-based test generation processes. TestEvoViz offers the practitioners a visual support to expose the process and decisions made by the generation algorithm. We first present a number of case studies to illustrate the expressiveness of TestEvoViz. We then conducted a user study involving 22 participants including researchers, students and professional software engineers. Participants use our visual approach to analyze, compare and tune test generation algorithm executions. All participants were able to complete the tasks. Our findings show that participants focus more on the visual components that depict information about the test similarity, individuals coverage increments, and the final generation code coverage.
- ItemVisualizing Memory Consumption with Vismep(2022) Fernández, Blanco Alison; Bergel, Alexandre; Sandoval Alcocer, Juan Pablo; Queirolo Córdova, AraceliDetecting and repairing memory issues is still a challenging task. One reason is that understanding a program's memory usage involves a diverse and related set of dynamic and static aspects. Over the years, multiple tools have been proposed to assist practitioners in these activities. However, detailed information about how a tool helps users when analyzing memory usage is missing. This article introduces Vismep, an interactive visualization prototype to help programmers analyze Python applications' memory usage, and presents an exploratory study to understand the behavior and perception of users when using Vismep. As a result, we reported five information needs when participants analyze memory consumption and how they use Vismep to satisfy these needs. Besides, participants positively perceived Vismep due to their valuable views and high overall usability.
- ItemVR-Based User Interactions to Exploit Infinite Space in Programming Activities(IEEE Computer Society, 2021) Segura Castillo, Víctor Stefano; Merino Del Campo, Leonel Alejandro; Hecht, Geoffrey; Bergel, Alexandre© 2021 IEEE.Virtual reality (VR) devices have now become a commodity, and as such, VR is percolating the traditional working environment of software programmers. Current approaches to use VR as the medium to immerse software programmers essentially project classical IDE windows in the virtual environment: the very same VSCode or IntelliJ window is seen through the VR device. As a consequence, the same constraints imposed by a physical screen are found in the VR environment, thus representing a missed opportunity. VRIDE is a new VR-based environment for object-oriented programming to let software developers carry out their activities in a full VR-based immersed environment. VRIDE innovates by offering interactions based on Code Cubes that are designed to exploit the infinite space in the VR environment. Through code cube interactions our approach disrupts the traditional mapping of windows from desktop to VR by supporting dedicated actions for navigation, inspection, and space management. Our prototype illustrates the feasibility of having a full-immersive virtual environment for software programmers.