Automatically Injecting Robustness Statements into Distributed Applications

When developing a distributed application, several issues need to be handled, and software components should include some mechanisms to make their execution resilient when network faults, delays, or tampering occur. For example, synchronous calls represent a too-tight connection between a client req...

Full description

Saved in:
Bibliographic Details
Main Authors: Daniele Marletta, Alessandro Midolo, Emiliano Tramontana
Format: Article
Language:English
Published: MDPI AG 2024-11-01
Series:Future Internet
Subjects:
Online Access:https://www.mdpi.com/1999-5903/16/11/416
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1846153467395047424
author Daniele Marletta
Alessandro Midolo
Emiliano Tramontana
author_facet Daniele Marletta
Alessandro Midolo
Emiliano Tramontana
author_sort Daniele Marletta
collection DOAJ
description When developing a distributed application, several issues need to be handled, and software components should include some mechanisms to make their execution resilient when network faults, delays, or tampering occur. For example, synchronous calls represent a too-tight connection between a client requesting a service and the service itself, whereby potential network delays or temporary server overloads would keep the client side hanging, exposing it to a domino effect. The proposed approach assists developers in dealing with such issues by providing an automatic tool that enhances a distributed application using simple blocking calls and makes it robust in the face of adverse events. The proposed devised solution consists in automatically identifying the parts of the application that connect to remote services using simple synchronous calls and substituting them with a generated customized snippet of code that handles potential network delays or faults. To accurately perform the proposed transformation, the devised tool finds application code statements that are data-dependent on the results of the original synchronous calls. Then, for the dependent statements, a solution involving guarding code, proper synchronization, and timeouts is injected. We experimented with the analysis and transformation of several applications and report a meaningful example, together with the analysis of the results achieved.
format Article
id doaj-art-cfbdfd2392fc456fbb047d0f9411a506
institution Kabale University
issn 1999-5903
language English
publishDate 2024-11-01
publisher MDPI AG
record_format Article
series Future Internet
spelling doaj-art-cfbdfd2392fc456fbb047d0f9411a5062024-11-26T18:05:15ZengMDPI AGFuture Internet1999-59032024-11-01161141610.3390/fi16110416Automatically Injecting Robustness Statements into Distributed ApplicationsDaniele Marletta0Alessandro Midolo1Emiliano Tramontana2Dipartimento di Matematica e Informatica, University of Catania, 95125 Catania, ItalyDipartimento di Matematica e Informatica, University of Catania, 95125 Catania, ItalyDipartimento di Matematica e Informatica, University of Catania, 95125 Catania, ItalyWhen developing a distributed application, several issues need to be handled, and software components should include some mechanisms to make their execution resilient when network faults, delays, or tampering occur. For example, synchronous calls represent a too-tight connection between a client requesting a service and the service itself, whereby potential network delays or temporary server overloads would keep the client side hanging, exposing it to a domino effect. The proposed approach assists developers in dealing with such issues by providing an automatic tool that enhances a distributed application using simple blocking calls and makes it robust in the face of adverse events. The proposed devised solution consists in automatically identifying the parts of the application that connect to remote services using simple synchronous calls and substituting them with a generated customized snippet of code that handles potential network delays or faults. To accurately perform the proposed transformation, the devised tool finds application code statements that are data-dependent on the results of the original synchronous calls. Then, for the dependent statements, a solution involving guarding code, proper synchronization, and timeouts is injected. We experimented with the analysis and transformation of several applications and report a meaningful example, together with the analysis of the results achieved.https://www.mdpi.com/1999-5903/16/11/416resiliencerefactoringstatic code analysisRMInetwork faultsparallelism
spellingShingle Daniele Marletta
Alessandro Midolo
Emiliano Tramontana
Automatically Injecting Robustness Statements into Distributed Applications
Future Internet
resilience
refactoring
static code analysis
RMI
network faults
parallelism
title Automatically Injecting Robustness Statements into Distributed Applications
title_full Automatically Injecting Robustness Statements into Distributed Applications
title_fullStr Automatically Injecting Robustness Statements into Distributed Applications
title_full_unstemmed Automatically Injecting Robustness Statements into Distributed Applications
title_short Automatically Injecting Robustness Statements into Distributed Applications
title_sort automatically injecting robustness statements into distributed applications
topic resilience
refactoring
static code analysis
RMI
network faults
parallelism
url https://www.mdpi.com/1999-5903/16/11/416
work_keys_str_mv AT danielemarletta automaticallyinjectingrobustnessstatementsintodistributedapplications
AT alessandromidolo automaticallyinjectingrobustnessstatementsintodistributedapplications
AT emilianotramontana automaticallyinjectingrobustnessstatementsintodistributedapplications