Eduardo Guerra

Eduardo Guerra
Free University of Bozen-Bolzano | Unibolzano · Faculty of Computer Science

PhD

About

109
Publications
18,336
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
345
Citations
Citations since 2017
62 Research Items
242 Citations
20172018201920202021202220230204060
20172018201920202021202220230204060
20172018201920202021202220230204060
20172018201920202021202220230204060
Additional affiliations
January 2008 - February 2013
Instituto Tecnologico de Aeronautica
Position
  • Professor

Publications

Publications (109)
Article
Full-text available
Code annotations are used mainly in modern Java software, and their primary purpose is to configure metadata into programmable elements such as methods and classes. The Annotation Sniffer is a stable tool that analyses Java source code and generates a JSON report with code annotations metrics values. In other words, it measures metadata configurati...
Preprint
Full-text available
Context: Code annotation is a feature to define custom metadata about programming elements. Many modern frameworks and APIs use annotations to keep integration less verbose and closer to the corresponding code element. However, contrary to the initial intent, practitioners often complain about the negative impacts of annotations on code readability...
Article
Full-text available
Context: Code annotations is a widely used feature in Java systems to configure custom metadata on programming elements. Their increasing presence creates the need for approaches to assess and comprehend their usage and distribution. In this context, software visualization has been studied and researched to improve program comprehension in differen...
Article
Full-text available
Context Software startups work under uncertain market conditions, constant time pressures, and extremely limited resources. Startup practitioners commonly adopt agile practices and lean development to build and release software quickly. Within this context, User eXperience (UX) work is critical for generating user value and creating a competitive a...
Chapter
Clean Architecture (CA) aims to address the need for more loosely coupled components and better cohesion. CA focuses on preparing software engineers to write more stable, durable, and flexible applications capable of distinguishing between details (e.g., what framework it uses) and the business logic requirements. A literature review shows that con...
Article
Context: Software startups develop innovative, software-intensive products. Given the uncertainty associated with such an innovative context, experimentation, an approach based on validating assumptions about the software product through data obtained from diverse techniques, like A/B tests or interviews, is valuable for these companies. Relying on...
Preprint
Full-text available
[Context] The COVID-19 pandemic has had a disruptive impact on how people work and collaborate across all global economic sectors, including the software business. While remote working is not new for software engineers, forced Work-from-home situations to come with both constraints, limitations, and opportunities for individuals, software teams and...
Preprint
Full-text available
The promise of increased agility, autonomy, scalability, and reusability has made the microservices architecture a \textit{de facto} standard for the development of large-scale and cloud-native commercial applications. Software patterns are an important design tool, and often they are selected and combined with the goal of obtaining a set of desire...
Preprint
Full-text available
Software analytics is a data-driven approach to decision making, which allows software practitioners to leverage valuable insights from data about software to achieve higher development process productivity and improve different aspects of software quality. In previous work, a set of patterns for adopting a lean software analytics process was ident...
Preprint
Full-text available
Code annotations is a widely used feature in Java systems to configure custom metadata on programming elements. Their increasing presence creates the need for approaches to assess and comprehend their usage and distribution. In this context, software visualization has been studied and researched to improve program comprehension in different aspects...
Conference Paper
Full-text available
Digital games are also a software product. However, games have a fun requirement and tightly coupled UI, which makes them hard to test. Nevertheless, they are made of code and might also benefit from the advantages that automated tests bring to enterprise software systems. In this paper, we discuss two categories of automated tests for games, focus...
Chapter
One of the main objectives of Empirical Software Engineering is the improvement of methods, techniques, and tools for Software Engineering (SE) through the conduction and execution of experiments. Although research in empirical software engineering is well established in the literature, it is possible to verify that there are few supporting environ...
Article
Context : The study of cognitive aspects around software activities can provide valuable insights to improve software engineering practices. Objective: This paper presents an approach based on distributed cognition and sequential analysis to explore cognitive activities in the software development context by analyzing the interactions between softw...
Preprint
Full-text available
[Context] Software startups are engines of innovation and economy, yet building software startups is challenging and subject to a high failure rate. They need to act and respond fast in highly uncertain business environments. To do so, they need to identify crucial and actionable information that supports them in making correct decisions and reduce...
Chapter
Full-text available
Software start-ups develop innovative software products working with disruptive technologies in time pressure and market-driven environment. Recently, User eXperience (UX) has become a hot topic that interests software teams of start-ups. However, software and UX professionals have struggled to match UX practices into the development activities, pa...
Article
Full-text available
The Adaptive Object Model (AOM) is an architectural style in which domain entity types are represented as instances that can be changed at runtime. It can be used to achieve higher flexibility in domain classes. Due to AOM entities having a distinct structure, they are not compatible with most popular frameworks, especially those that use reflectio...
Preprint
Full-text available
Context: Software startups develop innovative, software-intensive products. Given the uncertainty associated with such an innovative context, experimentation is a valuable approach for these companies, especially in the early stages of the development, when implementing unnecessary features represents a higher risk for companies' survival. Neverthe...
Conference Paper
Test Driven Development (TDD) is an iterative software development technique in which unit tests are defined before production code, while Test-Last Development (TLD) is a more traditional development technique in which unit tests are written after the features are implemented. There have been a number of empirical studies investigating the effects...
Article
Context The higher availability of software usage data and the influence of the Lean Startup led to the rise of experimentation in software engineering, a new approach for development based on experiments to understand the user needs. In the models proposed to guide this approach, the first step is generally to identify, prioritize, and specify the...
Conference Paper
Construir uma boa arquitetura é fundamental para obter sucesso no processo de desenvolvimento de software . Porém, essa não é uma atividade trivial, pois envolve uma série de decisões de domínio do negócio, técnicas e de estrutura. Assim, com a finalidade de apoiar a construção de uma arquitetura mais adequada a um determinado contexto, constanteme...
Conference Paper
Software Ecosystem (SECO) is a consolidated research area in software engineering, emerging as a paradigm for understanding dynamics and relationships among software systems that collaborate with each other to achieve their goals. Understanding the ecosystem and how its elements interact is essential for software evolution, especially for those tha...
Conference Paper
Full-text available
Several companies whose businesses are not centered on technology might fail to innovate and get advantages over their competitors. For them, meaningful innovations are not necessarily related to the usage of new technologies but the optimization of some business process. In the literature, experimentation is described as an essential aspect of the...
Conference Paper
Full-text available
Java developers make extensive use of code annotations since their introduction in version 5 of the language. They are inserted directly on the source code for custom metadata configuration , similar to C# attributes. The software engineering community has few works investigating their usage and impact on source code. Being able to visualize charac...
Article
Manufacturers are creating powerful CPUs by exponentially increasing the number of cores over time, as producing faster sequential chips has become more expensive. Developers must now employ parallel strategies and design parallel algorithms if they want to use every resource available in the machine. Still, many successful open-source projects are...
Conference Paper
In safety-critical systems keeping complete trace of requirements and detailed testing is an extremely relevant part of software development life cycle. Safety standards like ISO 26262, DO178C and many others prescribe that critical requirements must be completely traceable. These standards also demand detailed and regression testing of system. Her...
Article
Full-text available
Since the introduction of code annotations in the Java language,this feature has been widely adopted by software developers across the globe. Main enterprise frameworks make extensive use of code annotations as a replacement for XML based solutions. Code annotations are inserted directlyon code elements, providing a simple way to introduce custom m...
Chapter
Test-Driven Development (TDD) is an iterative software development technique in which unit tests are defined before production code, while Test-Last Development (TLD) is a more traditional development technique in which unit tests are written after the features are implemented. There have been a number of empirical studies investigating the effects...
Conference Paper
Full-text available
Environmental issues have become the subject of strong discussions nowadays and games have become great allies in the teaching and awareness of environmental problems, especially when applied in children's education. This paper presents a 2D serious game for the PC platform to raise awareness about the environment, focusing on water pollution. Play...
Chapter
Startup education presence in Computer Science and Software Engineering curriculum has risen in the recent years. Currently, most reported courses focus on teaching innovation and business techniques and try to emulate real-world projects to convey the content. They have not focused on team composition which is a critical element for the success of...
Conference Paper
Nowadays, web services became one of the main alternatives for communication between software systems and even inside the components of the same application. In some domains, the change of requirements happens frequently, demanding flexibility from the architecture of the applications, and consequently also in the web services that they provide. In...
Conference Paper
Full-text available
The C# attributes have been available since the release of this language as a means to configure custom metadata on code elements. Being very similar to Java annotations, they are both introduced directly in the source code. Several C# frameworks such as NUnit, Unity Game Engine, and JSON.net use attributes to allow applications to configure custom...
Conference Paper
Full-text available
Aplicações que usam gamificação desbloqueiam novas funcionalidades conforme o usuário obtém conquistas ou atinge certa pontuação. Porém, fazer o controle do acesso integrado a estes conceitos se torna uma atividade complexa, e sua implementação tende a acontecer isoladamente nos métodos das classes de negócio, aumentando o acoplamento entre as regr...
Chapter
As the software evolves, new codes are written, and many other codes are refactored. Refactoring also involves the test code, to ensure that it continues performed, and adequately verifying the behavior of the software. This work proposes the creation of an extensible architecture named EARTC to perform refactoring safely in test code. The coding o...
Article
Full-text available
TDD is a technique traditionally applied in applications with deterministic algorithms, in which the input and the expected result are known. However, the application of TDD with randomized algorithms have been a challenge, especially when the execution demands several random choices. The goal of this paper is to present an approach to allow the us...
Conference Paper
Full-text available
The demand for software application development has grown exponentially in recent years and will certainly continue growing as new programming techniques and patterns are adopted. The development of applications that better adjust to the real needs of the customers is a challenge. Understanding the behavior of users to improve certain points of the...
Conference Paper
Code annotations are extensively used by Java developers, especially in enterprise frameworks and APIs such as Spring and Java EE. Different code elements that frequently share some similarities, sometimes, repeat the annotations. The goal of this paper is to evaluate whether a real-world system could use code conventions as a means to avoid replic...
Conference Paper
Full-text available
Since the introduction of code annotations in the Java language, this feature has been widely adopted by software developers across the globe. Main enterprise frameworks make extensive use of code annotations as a replacement for XML based solutions. Code annotations are inserted directly on code elements, providing a simple way to introduce custom...
Chapter
Full-text available
Adaptive Object Model (AOM) is an architectural pattern with the aim of increasing flexibility regarding domain classes. The domain entity types are represented in AOM as instances that can be changed at runtime. Because entities have a distinct structure, they are not compatible with the majority of the existing frameworks, especially the ones tha...
Chapter
In this paper we present a case study of the use of SCRUM in an applied research scenario, consisting of the detection and identification of human faces in a large database of photos. The study shows how the adoption of agile methods was important to deal with uncertainty and unstable requirements, allowing adaptable development with opportunity to...
Conference Paper
Full-text available
Create a robust software with long live, cheap to maintain is related to the quality of software product. This paper is a review of the literature looking for strengths and weaknesses of two popular practices for increasing the quality of the software development: Pair Programming and Mob Programming.
Chapter
Full-text available
Test-Driven Development (TDD) is one of the most popular agile practices among software developers. To investigate the software developers’ initial perceptions when applying TDD, we have performed an exploratory study. This study was carried out with participants who had about ten years of professional experience (on average), the majority of whom...
Article
Full-text available
Code annotation is a language feature that enables the introduction of custom metadata on programming elements. In Java, this feature was introduced on version 5, and today it is widely used by main enterprise application frameworks and APIs. Although this language feature potentially simplifies metadata configuration, its abuse and misuse can redu...
Conference Paper
Code annotations are the core of the main APIs and frameworks for enterprise development, and are widely used on several applications. However, despite these APIs and frameworks made advanced uses of annotations, the language API for annotation reading is far from their needs. In particular, annotation reading is still a relatively complex task, th...
Conference Paper
Full-text available
Code annotation allows the introduction of custom metadata on programming elements directly on the source code. In Java, it is used extensively by enterprise applications and frameworks. Although it has become popular, there are few studies dedicated to the analysis and assessment of its usage. For instance, it is unknown the impact that annotation...
Conference Paper
Full-text available
This paper proposes the implementation of Esfinge Gamification framework to modularize the gamification concerns within an application. We carried out a qualitative study to develop a prototype for a classification system of transient luminous events in order to evaluate the proposed approach with regards to the identification of the dependencies t...
Conference Paper
Software usability has become a key factor for the success or failure of web-based systems. However, traditional evaluation methods – user tests and field observations – are expensive and time consuming when applied to a large number of users. In order to deal with these inherent difficulties and costs and to propose a new method to automatically c...
Conference Paper
O conhecimento se consolida como um ativo na economia intangível, sendo sua gestão fundamental as organizações modernas. No entanto, a operacionalização da Gestão do Conhecimento (GC) é uma atividade complexa, pois deve considerar o tratamento da relação entre diversos aspectos, inclusive relacionados a tecnologia. Neste contexto, sistemas de infor...
Conference Paper
Full-text available
TDD is a technique traditionally applied in applications with deterministic algorithms, when you have a known input and an expected result. Therefore, the challenge is to implement this technique in applications with non-deterministic algorithms, specifically when several random choices need to be made during its execution. The purpose of this pape...
Chapter
Test-driven development (TDD) is a technique for developing and designing software where tests are created before production code in short cycles. There is some discussion in the software engineering community on whether TDD can really be used to achieve software quality. Some experiments were conducted in the last years comparing development by us...
Conference Paper
During a software system life cycle, project modifications occur for different reasons. Regarding web services, communication contracts modifications are equally common, which induces the need for adaptation in every system node. To help reduce the contracts changing impact over software source code, it is necessary to understand how these contract...
Conference Paper
The use of metadata in software development, specially by code annotations, has emerged to complement some limitations of object-oriented programming. A recent study revealed that a lack of validation on the configured metadata can lead to bugs hard to identify and correct. There are approaches to optimize metadata configuration that add the annota...
Article
Full-text available
p>Authorization in its most basic form can be reduced to a simple question: “May a subject X access an object Y?” The attempt to implement an adequate response to this authorization question has produced many access control models and mechanisms. The development of the authorization mechanisms usually employs frameworks, which usually implements on...
Article
This paper describes an exploratory study for the evaluation of the performance quality attribute for releases of the same system. The main aim is to reveal performance degradations of architectural scenarios and their possible causes. Three software systems from different domains are used in our study, including a large-scale web system (SIGAA), a...
Article
This paper presents a metadata-based framework for software architecture evaluation of quality attributes. It implements a scenario-based approach that uses dynamic analysis and code repository mining to provide an automated way to reveal degradations of scenarios on releases of web-based systems. The evaluation process has three phases: (i) dynami...
Conference Paper
Traditional methods of scenario-based software architecture evaluation rely on manual review and advanced skills from architects and developers. They are used when the system architecture has been specified, but before its implementation has begun. When the system implementation evolves, code analysis can enable the automation of this process and t...
Conference Paper
Flexibility requirements can appear in the middle of a software development, perceived by several client requests to change the application. A flexible domain model, usually implemented with using the adaptive object model (AOM) architectural style, required custom-made components to handle the current implementation of the domain entities. The pro...
Conference Paper
Recent research studies report evidence that many systems’ requirements are not fully understood, being difficult to elicit and produce accurate conceptual models more efficiently. We have been investigating how creative models and model-driven development can contribute to overcome this difficulty. Creative models such as mind maps offer effective...
Conference Paper
Aplicações científicas na área de Clima Espacial precisam agregar dados capturados por instrumentos distribuídos geograficamente para produzir mapas, índices e alertas de eventos do sol. Nesse contexto, existe uma dificuldade em trazer e integrar esses dados para a execução de análises e a disponibilização de resultados em um intervalo de tempo que...
Article
Usually we read about agile development practices that seem like no more than hand waving. If that's how you feel, you'll enjoy traveling this detailed design journey and seeing up close how test-driven development (TDD) and refactoring are done in an agile environment. This article is especially insightful because of the collaborative shepherding...
Article
An Adaptive Object Model (AOM) is a common architectural style for systems in which classes, attributes, relationships and behaviors of applications are represented as metadata consumed at runtime. This allows them to be very flexible and changeable at runtime, enabling their modification by end users without source code modification. Nevertheless,...
Conference Paper
Full-text available
Traditional scenario-based architectural analysis methods rely on manual review-based evaluation that requires advanced skills from architects and developers. They are usually applied when the architecture is under development, but before its implementation has begun. The system implementation is one additional and fundamental element that should b...
Conference Paper
Frameworks aims to provide a reusable functionality and structure to be used in distinct applications. Aspect-oriented frameworks address crosscutting concerns and provide ways to attach itself in the application in a transparent way. However, using aspects the variations in the behavior can only be customized by aspect inheritance, which can incre...
Article
During early stages of computer software development, depending on the methodology employed, developers usually create the application's initial skeleton based on previously gathered requirements and on generated diagrams. When counting purely on what is provided by languages such as Java, developers tend to come up only with synchronous method cal...
Conference Paper
The usage of metadata-based frameworks is becoming popular for some kinds of software, such as web and enterprise applications. They use domain-specific metadata, usually defined as annotations or in XML documents, to adapt its behavior to each application class. Despite of their increasingly usage, there are not a study that evaluated the conseque...
Conference Paper
Source code duplication is the origin of several problems in a software development project. Even been aware of this situation, application developers tend to ignore them, once it takes a lot of time and effort for duplicated pieces of code to be found and eliminated. To address this issue, the present work presents a new model for source code gene...