321 research outputs found
Classification, Challenges, and Automated Approaches to Handle Non-Functional Requirements in ML-Enabled Systems: A Systematic Literature Review
Context: Machine learning (ML) is nowadays so pervasive and diffused that
virtually no application can avoid its use. Nonetheless, its enormous potential
is often tempered by the need to manage non-functional requirements and
navigate pressing, contrasting trade-offs. Objective: In this respect, we
notice the lack of a comprehensive synthesis of the non-functional requirements
affecting ML-enabled systems, other than the major challenges faced to deal
with them. Such a synthesis may not only provide a comprehensive summary of the
state of the art, but also drive further research on the analysis, management,
and optimization of non-functional requirements of ML-intensive systems.
Method: In this paper, we propose a systematic literature review targeting two
key aspects such as (1) the classification of the non-functional requirements
investigated so far, and (2) the challenges to be faced when developing models
in ML-enabled systems. Through the combination of well-established guidelines
for conducting systematic literature reviews and additional search criteria, we
survey a total amount of 69 research articles. Results: Our findings report
that current research identified 30 different non-functional requirements,
which can be grouped into six main classes. We also compiled a catalog of more
than 23 software engineering challenges, based on which further research should
consider the nonfunctional requirements of machine learning-enabled systems.
Conclusion: We conclude our work by distilling implications and a future
outlook on the topic
The impact of attractiveness on job opportunities in Italy: a gender field experiment
none3This paper assesses the impact of being attractive and not being native on the gender gap in the opportunity of obtaining a job in Italy. To do so, we propose a field experiment that consists in sending 9680 fictitious curricula vitae to real firms looking for employees. We estimate an Heckit model in order to consider different response from firms and then to calculate the probability to receive a callback. We show that gender gap in opportunity of receiving a callback is a very important issue and this gap is affected by interaction with both attractiveness and not being italian natives, especially for the most qualified jobs.Pubblicazione online open access agosto 2020.
Pubblicazione cartacea 2021openBusetta, Giovanni; Fiorillo, Fabio; Palomba, GiulioBusetta, Giovanni; Fiorillo, Fabio; Palomba, Giuli
Code smells: relevance of the problem and novel detection techniques
2015 - 2016Software systems are becoming the core of the business of several industrial companies
and, for this reason, they are getting bigger and more complex. Furthermore,
they are subject of frantic modifications every day with regard to the implementation
of new features or for bug fixing activities. In this context, often developers
have not the possibility to design and implement ideal solutions, leading to
the introduction of technical debt, i.e., ânot quite right code which we postpone
making it rightâ.
One noticeable symptom of technical debt is represented by the bad code smells,
which were defined by Fowler to indicate sub-optimal design choices applied in
the source code by developers. In the recent past, several studies have demonstrated
the negative impact of code smells on the maintainability of the source
code, as well as on the ability of developers to comprehend a software system.
This is the reason why several automatic techniques and tools aimed at discovering
portions of code affected by design flaws have been devised. Most of them
rely on the analysis of the structural properties (e.g., method calls) mined from the
source code.
Despite the effort spent by the research community in recent years, there are
still limitations that threat the industrial applicability of tools for detecting code
smells. Specifically, there is a lack of evicence regarding (i) the circustamces leading
to code smell introduction, (ii) the real impact of code smells on maintainability,
since previous studies focused the attention on a limited number of software
projects. Moreover, existing code smell detectors might be inadeguate for
the detection of many code smells defined in literature. For instance, a number
xi
of code smells are intrinsically characterized by how code elements change over
time, rather than by structural properties extractable from the source code.
In the context of this thesis we face these specific challenges, by proposing a
number of large-scale empirical investigations aimed at understanding (i) when
and why smells are actually introduced, (ii) what is their longevity and the way
developers remove them in practice, (iii) what is the impact of code smells on
change- and fault-proneness, and (iv) how developers perceive code smells. At
the same time, we devise two novel approaches for code smell detection that rely
on alternative sources of information, i.e., historical and textual, and we evaluate
and compare their ability in detecting code smells with respect to other existing
baseline approaches solely relying structural analysis.
The findings reported in this thesis somehow contradicts common expectations.
In the first place, we demonstrate that code smells are usually introduced
during the first commit on the repository involving a source file, and therefore
they are not the result of frequent modifications during the history of source code.
More importantly, almost 80% of the smells survive during the evolution, and
the number of refactoring operations performed on them is dramatically low. Of
these, only a small percentage actually removed a code smell. At the same time,
we also found that code smells have a negative impact on maintainability, and in
particular on both change- and fault-proneness of classes. In the second place, we
demonstrate that developers can correctly perceive only a subset of code smells
characterized by long or complex code, while the perception of other smells depend
on the intensity with which they manifest themselves.
Furthermore, we also demonstrate the usefulness of historical and textual analysis
as a way to improve existing detectors using orthogonal informations. The
usage of these alternative sources of information help developers in correctly diagnose
design problems and, therefore, they should be actively exploited in future
research in the field.
Finally, we provide a set of open issues that need to be addressed by the research
community in the future, as well as an overview of further future applications
of code smells in other software engineering field. [edited by author]I sistemi software stanno diventando il cuore delle attivit`a di molte aziende e, per
questa ragione, sono sempre pi `u grandi e complessi. Inoltre, sono frequentemente
soggetti a modifiche che riguardano lâimplementazione di nuove funzionalit`a o
la risoluzione di difetti. In questo contesto, spesso gli sviluppatori non hanno la
possibilit`a di progettare ed implementare soluzioni ideali, introducendo quindi
technical debt, ovvero codice non ben progettato, la cui ri-progettazione viene
postposta nel futuro.
Un notevole sintomo della presenza di technical debt `e rappresentato dai bad
code smell, che sono stati definiti da Fowler per indicare scelte di progettazione
e/o implementazione sub-ottimali applicati dai programmatori durante lo sviluppo
di un progetto software.
Nel recente passato, molti studi hanno dimostrato lâimpatto negativo dei code
smell sulla manutenibilit`a e comprensibilit`a del codice sorgente. Per questa ragione,
molte tecniche sono state proposte per lâidentificazione di porzioni di codice
affetto da problemi di progettazione. Molte di queste tecniche si basano sullâanalisi
delle propriet strutturali (ad esempio, chiamate a metodi esterni) estraibili dal
codice sorgente.
Nonostante lo sforzo che la comunit`a di ricerca ha profuso negli anni recenti,
ci sono ancora limitazioni che precludono lâapplicabilit`a industriale di tool per
lâidentificazione di smell. Nello specifico, câ`e una mancanza di evidenza empirica
riguardo (i) le circostanze che portano allâintroduzione degli smell, e (ii) il
reale impatto degli smell sulla manutenibilit`a, in quanto studi precedenti hanno
focalizzato lâattenzione su un numero limitato di progetti software. Inoltre, le tecii
niche esistenti per lâidentificazione di smell sono inadeguate per quanto concerne
lâidentificazione di molti dei code smell definiti in letteratura. Ad esempio, molti
code smell sono intrinsecamente caratterizzati da come gli elementi nel codice
cambiano nel tempo, piuttosto che da propriet`a strutturali estraibili dal codice
sorgente.
Nel contesto di questa tesi abbiamo affrontato queste sfide specifiche, proponendo
diversi studi empirici su larga scala aventi come obiettivo quello di capire (i)
quando e perch`e i code smell sono realmente introdotti, (ii) qual `e la loro longevit`a
e come gli sviluppatori li rimuovono, (iii) qual `e lâimpatto degli smell sulla propensione
ai difetti e ai cambiamenti, e (iv) come gli sviluppatori percepiscono gli smell.
Allo stesso tempo, abbiamo proposto due nuovi approcci per la rilevazione
di code smell che si basano sullâutilizzo di sorgenti alternative di informazioni,
ovvero storiche e testuali, e abbiamo valutato e confrontato la loro capacit`a nella
identificazione rispetto alle altre tecniche basate su analisi strutturale.
I risultati riportati in questa tesi contraddicono le aspettative comuni. Ad esempio,
abbiamo dimostrato che i code smell sono spesso introdotti durante il primo
commit che introduce lâartefatto affetto dal problema di progettazione. Dallâaltro
lato, abbiamo dimostrato lâutilit`a dellâanalisi storica e testuale come un modo aggiuntivo
per migliorare tecniche esistenti con informazioni ortogonali. Inoltre, forniamo
un insieme di problemi aperti che necessitato di ulteriore attenzione in futuro,
cos`ı come una panoramica di ulteriori applicazioni future dei code smell in
altri contesti nel campo dellâingegneria del software. [a cura dell'autore]XV n.s
Exploring community smells in open-source:an automated approach
Software engineering is now more than ever a community effort. Its success often weighs on balancing distance, culture, global engineering practices and more. In this scenario many unforeseen socio-technical events may result into additional project cost or ?social" debt, e.g., sudden, collective employee turnover. With industrial research we discovered community smells, that is, sub-optimal patterns across the organisational and social structure in a software development community that are precursors of such nasty socio-technical events. To understand the impact of community smells at large, in this paper we first introduce CodeFace4Smells, an automated approach able to identify four community smell types that reflect socio-technical issues that have been shown to be detrimental both the software engineering and organisational research fields. Then, we perform a large-scale empirical study involving over 100 years worth of releases and communication structures data of 60 open-source communities: we evaluate (i) their diffuseness, i.e., how much are they distributed in open-source, (ii) how developers perceive them, to understand whether practitioners recognize their presence and their negative effects in practice, and (iii) how community smells relate to existing socio-technical factors, with the aim of assessing the inter-relations between them. The key findings of our study highlight that community smells are highly diffused in open-source and are perceived by developers as relevant problems for the evolution of software communities. Moreover, a number of state-of-the-art socio-technical indicators (e.g., socio-technical congruence) can be used to monitor how healthy a community is and possibly avoid the emergence of social debt.</p
A survey on software coupling relations and tools
Context
Coupling relations reflect the dependencies between software entities and can be used to assess the quality of a program. For this reason, a vast amount of them has been developed, together with tools to compute their related metrics. However, this makes the coupling measures suitable for a given application challenging to find.
Goals
The first objective of this work is to provide a classification of the different kinds of coupling relations, together with the metrics to measure them. The second consists in presenting an overview of the tools proposed until now by the software engineering academic community to extract these metrics.
Method
This work constitutes a systematic literature review in software engineering. To retrieve the referenced publications, publicly available scientific research databases were used. These sources were queried using keywords inherent to software coupling. We included publications from the period 2002 to 2017 and highly cited earlier publications. A snowballing technique was used to retrieve further related material.
Results
Four groups of coupling relations were found: structural, dynamic, semantic and logical. A fifth set of coupling relations includes approaches too recent to be considered an independent group and measures developed for specific environments. The investigation also retrieved tools that extract the metrics belonging to each coupling group.
Conclusion
This study shows the directions followed by the research on software coupling: e.g., developing metrics for specific environments. Concerning the metric tools, three trends have emerged in recent years: use of visualization techniques, extensibility and scalability. Finally, some coupling metrics applications were presented (e.g., code smell detection), indicating possible future research directions. Public preprint [https://doi.org/10.5281/zenodo.2002001]
Guest Editorial: Special issue on software engineering for mobile applications
Erworben im Rahmen der Schweizer Nationallizenzen (http://www.nationallizenzen.ch
- âŠ