Debugging is an inevitable activity in most software projects, often difficult and more time-consuming than expected, giving it the nickname the "dirty little secret of computer science." ...Surprisingly, we have little knowledge on how software engineers debug software problems in the real world, whether they use dedicated debugging tools, and how knowledgeable they are about debugging. This study aims to shed light on these aspects by following a mixed-methods research approach. We conduct an online survey capturing how 176 developers reflect on debugging. We augment this subjective survey data with objective observations on how 458 developers use the debugger included in their integrated development environments (IDEs) by instrumenting the popular Eclipse and IntelliJ IDEs with the purpose-built plugin WatchDog 2.0. To clarify the insights and discrepancies observed in the previous steps, we followed up by conducting interviews with debugging experts and regular debugging users. Our results indicate that IDE-provided debuggers are not used as often as expected, as "printf debugging" remains a feasible choice for many programmers. Furthermore, both knowledge and use of advanced debugging features are low. These results call to strengthen hands-on debugging experience in computer science curricula and have already refined the implementation of modern IDE debuggers.
Testing is an important aspect of software development, but unfortunately, it is often neglected. While test quality analyses such as code coverage or mutation analysis inform developers about the ...quality of their tests, such reports are viewed only sporadically during continuous integration or code review, if they are considered at all, and their impact on the developers' testing behavior therefore tends to be negligible. To actually influence developer behavior, it may rather be necessary to motivate developers directly within their programming environment, while they are coding. We introduce IntelliGame, a gamified plugin for the popular IntelliJ Java Integrated Development Environment, which rewards developers for positive testing behavior using a multi-level achievement system: A total of 27 different achievements, each with incremental levels, provide affirming feedback when developers exhibit commendable testing behavior, and provide an incentive to further continue and improve this behavior. A controlled experiment with 49 participants given a Java programming task reveals substantial differences in the testing behavior triggered by IntelliGame: Incentivized developers write more tests, achieve higher coverage and mutation scores, run their tests more often, and achieve functionality earlier.
La Universidad Central del Ecuador, diariamente genera datos universitarios (estudiantes, docentes y de investigación) que son valiosos para la toma de decisiones y para mejorar la calidad de ...servicios, sin embargo estos datos no son publicados para que sean utilizados por la comunidad universitaria. Con este propósito el presente documento describe el proceso de desarrollo e implementación del Portal de Datos Abiertos de la Universidad Central del Ecuador (UCE), para fortalecer los procesos de transparencia, participación y colaboración de la comunidad universitaria. El Portal de Datos Abiertos consta de 5 secciones: Inicio, Datos, Aplicaciones, Indicadores y Estadísticas; que se desarrolló de acuerdo a la Metodología Unificada Ágil (AUP), con la finalidad de permitir la sencilla interacción del portal con el usuario. Para ello, se codificó toda su funcionalidad en Liferay e IntelliJ IDEA. Luego se realizó una conexión a la base de datos de la Universidad con Power BI Desktop, a fin de realizar el proceso de análisis de datos académicos de los estudiantes y docentes para la publicación en el Portal y finalmente la difusión de un conjunto de datos académicos. Con la implementación del Portal se aportó al desarrollo de la transparencia con la publicación en formatos abiertos de los datos generados por la UCE. Estos datos son actualizados y publicados en formatos libres para que el público pueda reutilizar.
TestSpark: IntelliJ IDEA's Ultimate Test Generation Companion Sapozhnikov, Arkadii; Olsthoorn, Mitchell; Panichella, Annibale ...
2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion),
04/2024
Conference Proceeding
Odprti dostop
Writing software tests is laborious and time-consuming. To address this, prior studies introduced various automated test-generation techniques. A well-explored research direction in this field is ...unit test generation, wherein artificial intelligence (AI) techniques create tests for a method/class under test. While many of these techniques have primarily found applications in a research context, existing tools (e.g., EvoSuite, Randoop, and AthenaTest) are not user-friendly and are tailored to a single technique. This paper introduces Test-Spark, a plugin for IntelliJ IDEA that enables users to generate unit tests with only a few clicks directly within their Integrated Development Environment (IDE). Furthermore, TestSpark also allows users to easily modify and run each generated test and integrate them into the project workflow. TestSpark leverages the advances of search-based test generation tools, and it introduces a technique to generate unit tests using Large Language Models (LLMs) by creating a feedback cycle between the IDE and the LLM. Since TestSpark is an open-source (https://github.com/JetBrains-Research/TestSpark), extendable, and well-documented tool, it is possible to add new test generation methods into the plugin with the minimum effort. This paper also explains our future studies related to TestSpark and our preliminary results. Demo video: https://youtu.be/0F4PrxWfiXo
The Visual Debugger Tool Krauter, Tim; Konig, Harald; Rutle, Adrian ...
2022 IEEE International Conference on Software Maintenance and Evolution (ICSME),
2022-Oct.
Conference Proceeding
Debugging is an essential part of software maintenance and evolution since it allows software developers to analyze program execution step by step. Understanding a program is required to fix ...potential flaws, alleviate bottlenecks, and implement new desired features. Thus, software developers spend a large percentage of their time validating and debugging software, resulting in high software maintenance and evolution cost. We aim to reduce this cost by providing a novel visual debugging tool to software developers to foster program comprehension during debugging. Our debugging tool visualizes program execution information graphically as an object diagram and is fully integrated into the popular Java development environment IntelliJ IDEA. Moreover, the object diagram allows interactions to explore program execution information in more detail. A demonstration of our tool is available at https://www.youtube.com/watch?v=lU_OgotweRk.
LibComp: an IntelliJ plugin for comparing Java libraries El-Hajj, Rehab; Nadi, Sarah
Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering,
11/2020
Conference Proceeding
Software developers heavily rely on third-party libraries to accomplish their programming tasks. Since many libraries offer similar functionality, it can be difficult and tedious for developers ...differentiate similar libraries in order to select the most suitable one. In our previous work, we proposed the idea of metric-based library comparisons that allow developers to compare various aspects of libraries within the same domain, empowering them with information to aid with their decision. In this paper we present an IntelliJ plugin, LibComp, that provides this library metric-based comparison technique right within the developer’s IDE. As soon as a developer adds a library dependency that LibComp has information about, LibComp will highlight this dependency to let the developer know that there are alternatives available. Once the user triggers the comparison for that library, they can view various metrics about the library and its alternatives and decide if they want to use one of the alternatives. In the process, LibComp also records the number of times the developer invokes the tool and any completed replacements. Such feedback, if optionally sent to us by the developer, provides us valuable insights into developers’replacement decisions as well as information on how we can improve the tool. A video demonstrating the usage of LibComp can be found at https://youtu.be/YtEEdJan77A
Smart Refrigerator based on 'Internet of Things' Gupta, Shreya; Giri, Shivanshu; Srivastava, Tushar ...
2021 International Conference on Advance Computing and Innovative Technologies in Engineering (ICACITE),
2021-March-4
Conference Proceeding
Nowadays technology is improving rapidly which tends us to use smart devices in our day-to-day life and one such device is 'refrigerator'. Refrigerators play a key role in modular kitchens as well as ...in restaurants for preserving food items. It is necessary to avail the quantity required for the forth coming days and also monitor the amount of food items that is left in the refrigerator. The proposed model detects the quantity of food items left in the refrigerator and also the temperature of the refrigerator to the users using a mobile application. It tells the user about the shortage of the food and also the temperature of the refrigerator. By which the wastage of energy also can be saved due to automatic control.
IntelliJML: a JML plugin for IntelliJ IDEA Monteiro, Steven; Sokolovas, Erikas; Wittingen, Ellen ...
Proceedings of the 23rd ACM International Workshop on Formal Techniques for Java-like Programs,
07/2021
Conference Proceeding
Odprti dostop
Java code can be annotated with formal specifications using the Java Modelling Language (JML). Previous work has provided IDE plugins intended to help write JML, but mostly for the Eclipse IDE. We ...introduce IntelliJML, a JML plugin for IntelliJ IDEA, with a focus on ease of use and maintainability. Features such as syntax, semantic, and type checking, as well as syntax highlighting and code completion are integrated into the plugin. The plugin can also be extended in the future to add more features. The source code for the plugin can be found at https://gitlab.utwente.nl/fmt/intellijml.
Source Code Analysis for Secure Programming Practices Yang, Jeong; Barrientes, Christian; Sanchez, Joshua ...
2018 International Conference on Computational Science and Computational Intelligence (CSCI)
Conference Proceeding
As the security landscape evolves and InfoSec professionals work to keep apace, modern day instructors face the issue of adequately equipping a new generation for this dynamic landscape. Cyber ...security, as a discipline, is currently going through an unprecedented growth, bringing attention to issues that are growing in importance. Using static analysis tools such as FindBugs, and an add-on of this tool, Find Security Bugs, this project thoroughly analyzed Java source code in the textbooks used at a collegiate level. The analysis consisted of testing significant code snippets in the books with respect to Java Development Kit (JDK) 9/10. Through this static security-oriented analysis of programming examples exercised at the collegiate level, we determine whether currently taught fundamental programming practices are keeping pace with the dynamic landscape, and it will also guide the instructors to better shape teaching programming from a security perspective as cyber security affects every software component in any computing system.
As software engineering researchers, we are also zealous tool smiths. Building a research prototype is often a daunting task, let alone building an industry-grade family of tools supporting multiple ...platforms to ensure the generalizability of results. In this paper, we give advice to academic and industrial tool smiths on how to design and build an easy-to-maintain architecture capable of supporting multiple integrated development environments (IDEs). Our experiences stem from WatchDog, a multi-IDE infrastructure that assesses developer testing activities in vivo and that over 2,000 registered developers use. To these software engineering practitioners, WatchDog provides real-time and aggregated feedback in the form of individual testing reports.Project Website: http://www.testroots.org Demonstration Video: https://youtu.be/zXIihnmx3UE.