Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Davide Fucci is active.

Publication


Featured researches published by Davide Fucci.


IEEE Transactions on Software Engineering | 2017

A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?

Davide Fucci; Hakan Erdogmus; Burak Turhan; Markku Oivo; Natalia Juristo

Background: Test-driven development (TDD) is a technique that repeats short coding cycles interleaved with testing. The developer first writes a unit test for the desired functionality, followed by the necessary production code, and refactors the code. Many empirical studies neglect unique process characteristics related to TDD iterative nature. Aim: We formulate four process characteristic: sequencing, granularity, uniformity, and refactoring effort. We investigate how these characteristics impact quality and productivity in TDD and related variations. Method: We analyzed 82 data points collected from 39 professionals, each capturing the process used while performing a specific development task. We built regression models to assess the impact of process characteristics on quality and productivity. Quality was measured by functional correctness. Result: Quality and productivity improvements were primarily positively associated with the granularity and uniformity. Sequencing, the order in which test and production code are written, had no important influence. Refactoring effort was negatively associated with both outcomes. We explain the unexpected negative correlation with quality by possible prevalence of mixed refactoring. Conclusion: The claimed benefits of TDD may not be due to its distinctive test-first dynamic, but rather due to the fact that TDD-like processes encourage fine-grained, steady steps that improve focus and flow.


Empirical Software Engineering | 2017

Empirical evaluation of the effects of experience on code quality and programmer productivity: an exploratory study

Oscar Dieste; Alejandrina M. Aranda; Fernando Uyaguari Uyaguari; Burak Turhan; Ayse Tosun; Davide Fucci; Markku Oivo; Natalia Juristo

ContextThere is a widespread belief in both SE and other branches of science that experience helps professionals to improve their performance. However, cases have been reported where experience not only does not have a positive influence but sometimes even degrades the performance of professionals.AimDetermine whether years of experience influence programmer performance.MethodWe have analysed 10 quasi-experiments executed both in academia with graduate and postgraduate students and in industry with professionals. The experimental task was to apply ITLD on two experimental problems and then measure external code quality and programmer productivity.ResultsProgramming experience gained in industry does not appear to have any effect whatsoever on quality and productivity. Overall programming experience gained in academia does tend to have a positive influence on programmer performance. These two findings may be related to the fact that, as opposed to deliberate practice, routine practice does not appear to lead to improved performance. Experience in the use of productivity tools, such as testing frameworks and IDE also has positive effects.ConclusionYears of experience are a poor predictor of programmer performance. Academic background and specialized knowledge of task-related aspects appear to be rather good predictors.


evaluation and assessment in software engineering | 2016

Results from an Ethnographically-informed Study in the Context of Test Driven Development

Simone Romano; Davide Fucci; Giuseppe Scanniello; Burak Turhan; Natalia Juristo

Background: Test-driven development (TDD) is an iterative software development technique where unit tests are defined before production code. Previous studies fail to analyze the values, beliefs, and assumptions that inform and shape TDD. Aim: We designed and conducted a qualitative study to understand the values, beliefs, and assumptions of TDD. In particular, we sought to understand how novice and professional software developers, arranged in pairs (a driver and a pointer), perceive and apply TDD. Method: 14 novice software developers, i.e., graduate students in Computer Science at the University of Basilicata, and six professional software developers (with one to 10 years work experience) participated in our ethnographically informed study. We asked the participants to implement a new feature for an existing software written in Java. We immersed ourselves in the context of the study, and collected data by means of contemporaneous field notes, audio recordings, and other artifacts. Results: A number of insights emerge from our analysis of the collected data, the main ones being: (i) refactoring (one of the phases of TDD) is not performed as often as the process requires and it is considered less important than other phases, (ii) the most important phase is implementation, (iii) unit tests are almost never up-to-date, (iv) participants first build a sort of mental model of the source code to be implemented and only then write test cases on the basis of this model; and (v) apart from minor differences, professional developers and students applied TDD in a similar fashion. Conclusions: Developers write quick-and-dirty production code to pass the tests and ignore refactoring.


acm symposium on applied computing | 2016

Students' and professionals' perceptions of test-driven development: a focus group study

Giuseppe Scanniello; Simone Romano; Davide Fucci; Burak Turhan; Natalia Juristo

We have conducted a qualitative investigation on test-driven development (TDD) with focus groups to develop insights on the opinions of developers using TDD regarding the unintuitive process involved, its claimed effects, as well as the context factors that can facilitate (or hinder) its application. In particular, we conducted two focus group sessions: one with professionals and another with Master students in Computer Science. We used thematic analysis template (TAT) method for identifying patterns, themes, and interpretations in gathered data. We obtained a number of results that can be summarized as follows: (i) applying TDD without knowing advanced unit testing techniques can be difficult; (ii) refactoring (one of the phases of TDD) is not done as often as the process requires; (iii) there is a need for live feedback to let developers understand if TDD is being applied correctly; and (iv) the usefulness of TDD hinges on task and domain to which it is applied to.


Empirical Software Engineering | 2017

An industry experiment on the effects of test-driven development on external quality and productivity

Ayse Tosun; Oscar Dieste; Davide Fucci; Sira Vegas; Burak Turhan; Hakan Erdogmus; Adrian Santos; Markku Oivo; Kimmo Toro; Janne Järvinen; Natalia Juristo

Existing empirical studies on test-driven development (TDD) report different conclusions about its effects on quality and productivity. Very few of those studies are experiments conducted with software professionals in industry. We aim to analyse the effects of TDD on the external quality of the work done and the productivity of developers in an industrial setting. We conducted an experiment with 24 professionals from three different sites of a software organization. We chose a repeated-measures design, and asked subjects to implement TDD and incremental test last development (ITLD) in two simple tasks and a realistic application close to real-life complexity. To analyse our findings, we applied a repeated-measures general linear model procedure and a linear mixed effects procedure. We did not observe a statistical difference between the quality of the work done by subjects in both treatments. We observed that the subjects are more productive when they implement TDD on a simple task compared to ITLD, but the productivity drops significantly when applying TDD to a complex brownfield task. So, the task complexity significantly obscured the effect of TDD. Further evidence is necessary to conclude whether TDD is better or worse than ITLD in terms of external quality and productivity in an industrial setting. We found that experimental factors such as selection of tasks could dominate the findings in TDD studies.


arXiv: Software Engineering | 2017

On the presence of green and sustainable software engineering in higher education curricula

Damiano Torre; Giuseppe Procaccianti; Davide Fucci; Sonja Lutovac; Giuseppe Scanniello

Nowadays, software is pervasive in our everyday lives. Its sustainability and environmental impact have become major factors to be considered in the development of software systems. Millennials–the newer generation of university students–are particularly keen to learn about and contribute to a more sustainable and green society. The need for training on green and sustainable topics in software engineering has been reflected in a number of recent studies. The goal of this paper is to get a first understanding of what is the current state of teaching sustainability in the software engineering community, what are the motivations behind the current state of teaching, and what can be done to improve it. To this end, we report the findings from a targeted survey of 33 academics on the presence of green and sustainable software engineering in higher education. The major findings from the collected data suggest that sustainability is under-represented in the curricula, while the current focus of teaching is on energy efficiency delivered through a fact-based approach. The reasons vary from lack of awareness, teaching material and suitable technologies, to the high effort required to teach sustainability. Finally, we provide recommendations for educators willing to teach sustainability in software engineering that can help to suit millennial students needs.


Proceedings of the 3rd ACM SIGSOFT International Workshop on Software Analytics | 2017

Find, understand, and extend development screencasts on YouTube

Mathias Ellmann; Alexander Oeser; Davide Fucci; Walid Maalej

A software development screencast is a video that captures the screen of a developer working on a particular task and explaining implementation details. Due to the increased popularity of development screencasts e.g., on YouTube, we study how and to what extent they can be used as additional source of knowledge to answer developers’ questions, for example about the use of a specific API. We first study the difference between development screencasts and other types of screencasts using video frame analysis. When comparing frames with the Cosine algorithm, developers can expect ten development screencasts in the top 20 out of 100 different YouTube videos. We then extracted popular development topics. These were: database operations, system set-up, plug-in development, game development, and testing. We also identified six recurring tasks performed in development screencasts, such as object usage and UI operations. Finally, we conducted a similarity analysis of the screencast transcripts and the Javadoc of the corresponding screencasts.


requirements engineering: foundation for software quality | 2018

Personal Recommendations in Requirements Engineering: The OpenReq Approach

Cristina Palomares; Xavier Franch; Davide Fucci

[Context & motivation] Requirements Engineering (RE) is considered as one of the most critical phases in software development but still many challenges remain open. [Problem] Recommender systems have been applied to solve open RE challenges like requirements and stakeholder discovery; however, the existent proposals focus on specific RE tasks and do not give a general coverage for the RE process. [Principal ideas/results] In this research preview, we present the OpenReq approach to the development of intelligent recommendation and decision technologies that support different phases of RE in software projects. For doing so, the OpenReq approach will be formed by different parts that will be integrated in a process. Specifically, we present in this paper the OpenReq part for personal recommendations for stakeholders, which takes place during requirements elicitation, specification and analysis stages. [Contribution] OpenReq aims to improve and speed up RE processes, especially in large and distributed systems, by incorporating intelligent recommendation and decision technologies.


ISAmI | 2010

A Framework to Enable Two-Layer Inference for Ambient Intelligence

Xiang Su; Davide Fucci; Jukka Riekki

In this paper, we present a two-layer inference framework to enable Semantic Web technology-based intelligent functionalities in ambient environments.The basic idea is that the low level inference is performed on themobile devices capable of utilizing ontology, and only the high level inference is performed at the server side. This paper presents the design of this framework and illustrates its usability by a use case. The framework fully utilizes the computing capabilities of devices in the system and this way minimizes the communication among devices.


the practice of enterprise modeling | 2018

Reconciling Practice and Rigour in Ontology-Based Heterogeneous Information Systems Construction

Carme Quer; Xavier Franch; Cristina Palomares; Andreas A. Falkner; Alexander Felfernig; Davide Fucci; Walid Maalej; Jennifer Nerlich; Mikko Raatikainen; Gottfried Schenner; Martin Stettinger; Juha Tiihonen

Ontology integration addresses the problem of reconciling into one single semantic framework different knowledge chunks defined according to its own ontology. This field has been subject of analysis and many consolidated theoretical results are available. Still, in practice, ontology integration is difficult in heterogeneous information systems (HIS) that need to integrate assets already built and running which cannot be changed. Furthermore, in practice, the composed assets are usually not really defined according to an ontology but to a data model which is less rigorous but fit for the purpose of defining a data schema. In this paper, we propose a method for integrating assets participating in a HIS using a domain ontology, aimed at finding an optimal balance between semantic rigour and feasibility in terms of adoption in a real-world setting. The method proposes the use of data models describing the semantics of existing assets; their analysis in order to find commonalities and misalignments; the definition of the domain ontology, considering also other sources as standards, to express the main concepts in the HIS domain; the connection of the local models with this domain ontology; and its abstraction into a metamodel to facilitate further extensions. The method is an outcome of a collaborative software development project, OpenReq, aimed at delivering an ontology for requirements engineering (RE) designed to serve as baseline for the data model of an open platform offering methods and techniques to the RE community. The construction process of this ontology will be used to illustrate the method.

Collaboration


Dive into the Davide Fucci's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Natalia Juristo

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Simone Romano

University of Basilicata

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Cristina Palomares

Polytechnic University of Catalonia

View shared research outputs
Top Co-Authors

Avatar

Xavier Franch

Polytechnic University of Catalonia

View shared research outputs
Top Co-Authors

Avatar

Alexander Felfernig

Graz University of Technology

View shared research outputs
Top Co-Authors

Avatar

Martin Stettinger

Graz University of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge