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...
Saved in:
| Main Authors: | , , |
|---|---|
| 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 |