{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,11]],"date-time":"2025-10-11T01:34:47Z","timestamp":1760146487090,"version":"build-2065373602"},"reference-count":41,"publisher":"MDPI AG","issue":"11","license":[{"start":{"date-parts":[[2024,11,10]],"date-time":"2024-11-10T00:00:00Z","timestamp":1731196800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Future Internet"],"abstract":"<jats:p>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.<\/jats:p>","DOI":"10.3390\/fi16110416","type":"journal-article","created":{"date-parts":[[2024,11,11]],"date-time":"2024-11-11T11:34:11Z","timestamp":1731324851000},"page":"416","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Automatically Injecting Robustness Statements into Distributed Applications"],"prefix":"10.3390","volume":"16","author":[{"ORCID":"https:\/\/orcid.org\/0009-0004-9520-6163","authenticated-orcid":false,"given":"Daniele","family":"Marletta","sequence":"first","affiliation":[{"name":"Dipartimento di Matematica e Informatica, University of Catania, 95125 Catania, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9575-8054","authenticated-orcid":false,"given":"Alessandro","family":"Midolo","sequence":"additional","affiliation":[{"name":"Dipartimento di Matematica e Informatica, University of Catania, 95125 Catania, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7169-659X","authenticated-orcid":false,"given":"Emiliano","family":"Tramontana","sequence":"additional","affiliation":[{"name":"Dipartimento di Matematica e Informatica, University of Catania, 95125 Catania, Italy"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1968","published-online":{"date-parts":[[2024,11,10]]},"reference":[{"key":"ref_1","first-page":"265","article-title":"A Distributed Object Model for the Java System","volume":"9","author":"Wollrath","year":"1996","journal-title":"Comput. Syst."},{"key":"ref_2","doi-asserted-by":"crossref","first-page":"747","DOI":"10.1145\/506315.506317","article-title":"Efficient Java RMI for parallel programming","volume":"23","author":"Maassen","year":"2001","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"ref_3","doi-asserted-by":"crossref","first-page":"664","DOI":"10.1109\/TSE.2006.93","article-title":"Static Analysis of Object References in RMI-Based Java Software","volume":"32","author":"Sharp","year":"2006","journal-title":"IEEE Trans. Softw. Eng."},{"key":"ref_4","doi-asserted-by":"crossref","unstructured":"Bhamidipaty, A., Lotlikar, R., and Banavar, G. (2007, January 9\u201313). RMI: A Framework for Modeling and Evaluating the Resiliency Maturity of IT Service Organizations. Proceedings of the IEEE International Conference on Services Computing (SCC 2007), Salt Lake City, UT, USA.","DOI":"10.1109\/SCC.2007.94"},{"key":"ref_5","doi-asserted-by":"crossref","unstructured":"Duc Phung, T., Van Nguyen, T., and Quy Tran, B. (2021, January 23\u201326). Design and Implementation a Secured and Distributed System using CBC, Socket, and RMI Technologies. Proceedings of the International Conference on Software and Computer Applications (ICSCA), Kuala Lumpur, Malaysia.","DOI":"10.1145\/3457784.3457830"},{"key":"ref_6","doi-asserted-by":"crossref","unstructured":"Joshi, A.P., Kaur, N., and Kaur, A. (2024, January 14\u201315). Unveiling the Achilles\u2019 Heel: A Comprehensive Exploration of Vulnerabilities in RMI and Bindshell Communication. Proceedings of the International Conference on Reliability, Infocom Technologies and Optimization (Trends and Future Directions) (ICRITO), Noida, India.","DOI":"10.1109\/ICRITO61523.2024.10522462"},{"key":"ref_7","doi-asserted-by":"crossref","unstructured":"AL-Taie, R.R.K., and Abu-Alsaad, H.A. (2020, January 10\u201312). Application of Encryption Algorithms with RMI Protocol. Proceedings of the International Arab Conference on Information Technology (ACIT), Zarqa, Jordan.","DOI":"10.1109\/ACIT50332.2020.9300118"},{"key":"ref_8","unstructured":"Richardson, C. (2019). Microservices Patterns: With Examples in Java, Manning Publications Co."},{"key":"ref_9","unstructured":"Hohpe, G., and Woolf, B. (2012). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, Addison-Wesley."},{"key":"ref_10","doi-asserted-by":"crossref","unstructured":"Mandarino, V., Pappalardo, G., and Tramontana, E. (2024). A Blockchain-Based Electronic Health Record (EHR) System for Edge Computing Enhancing Security and Cost Efficiency. Computers, 13.","DOI":"10.3390\/computers13060132"},{"key":"ref_11","doi-asserted-by":"crossref","first-page":"716","DOI":"10.1016\/j.future.2017.08.023","article-title":"Predictable remote invocations for distributed stream processing","volume":"107","year":"2020","journal-title":"Future Gener. Comput. Syst."},{"key":"ref_12","first-page":"517","article-title":"Socket Programming-Based RMI Application for Amazon Web Services in Distributed Cloud Computing","volume":"Volume 96","author":"Godla","year":"2022","journal-title":"Innovative Data Communication Technologies and Application, Proceedings of the ICIDCA 2021, Coimbatore, India, 20\u201321 August 2021"},{"key":"ref_13","doi-asserted-by":"crossref","unstructured":"Seemakhupt, K., Stephens, B.E., Khan, S., Liu, S., Wassel, H., Yeganeh, S.H., Snoeren, A.C., Krishnamurthy, A., Culler, D.E., and Levy, H.M. (2023, January 23\u201326). A Cloud-Scale Characterization of Remote Procedure Calls. Proceedings of the 29th Symposium on Operating Systems Principles, 2023, SOSP \u201923, Koblenz, Germany.","DOI":"10.1145\/3600006.3613156"},{"key":"ref_14","doi-asserted-by":"crossref","first-page":"1282","DOI":"10.1109\/JPROC.2021.3087029","article-title":"Recent Developments in Parallel and Distributed Computing for Remotely Sensed Big Data Processing","volume":"109","author":"Wu","year":"2021","journal-title":"Proc. IEEE"},{"key":"ref_15","unstructured":"Kaminsky, A. (2014, January 16\u201321). Parallel Java Library. Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, New Orleans, LA, USA."},{"key":"ref_16","doi-asserted-by":"crossref","unstructured":"Haidl, M., and Gorlatch, S. (2014, January 17). PACXX: Towards a Unified Programming Model for Programming Accelerators Using C++14. Proceedings of the LLVM Compiler Infrastructure in HPC (LLVM-HPC), New Orleans, LA, USA.","DOI":"10.1109\/LLVM-HPC.2014.9"},{"key":"ref_17","doi-asserted-by":"crossref","unstructured":"Kimura, K., Taguchi, G., and Kasahara, H. (2016, January 21\u201323). Accelerating Multicore Architecture Simulation Using Application Profile. Proceedings of the IEEE International Symposium on Embedded Multicore\/Many-Core Systems-on-Chip (MCSOC), Lyon, France.","DOI":"10.1109\/MCSoC.2016.16"},{"key":"ref_18","doi-asserted-by":"crossref","unstructured":"Kasahara, H., Kimura, K., Adhi, B.A., Hosokawa, Y., Kishimoto, Y., and Mase, M. (2017, January 4\u20138). Multicore Cache Coherence Control by a Parallelizing Compiler. Proceedings of the IEEE Annual Computer Software and Applications Conference (COMPSAC), Turin, Italy.","DOI":"10.1109\/COMPSAC.2017.174"},{"key":"ref_19","doi-asserted-by":"crossref","unstructured":"Felber, P.A. (2003). Semi-automatic Parallelization of Java Applications. On The Move to Meaningful Internet Systems 2003: CoopIS, DOA, and ODBASE, Proceedings of the OTM Confederated International Conferences CoopIS, DOA, and ODBASE 2003 Catania, Sicily, Italy, 3\u20137 November 2003, Springer.","DOI":"10.1007\/978-3-540-39964-3_86"},{"key":"ref_20","doi-asserted-by":"crossref","first-page":"757","DOI":"10.1109\/PGEC.1966.264565","article-title":"Analysis of Programs for Parallel Processing","volume":"EC-15","author":"Bernstein","year":"1966","journal-title":"IEEE Trans. Electron. Comput."},{"key":"ref_21","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/113446.113447","article-title":"Efficient and Exact Data Dependence Analysis","volume":"26","author":"Maydan","year":"1991","journal-title":"ACM SIGPLAN Not."},{"key":"ref_22","doi-asserted-by":"crossref","first-page":"137","DOI":"10.1007\/BF01379099","article-title":"Data Dependence and Its Application to Parallel Processing","volume":"16","author":"Wolfe","year":"1987","journal-title":"Int. J. Parallel Program."},{"key":"ref_23","doi-asserted-by":"crossref","first-page":"52","DOI":"10.1109\/MS.2015.133","article-title":"Refactoring for Asynchronous Execution on Mobile Devices","volume":"32","author":"Dig","year":"2015","journal-title":"IEEE Softw."},{"key":"ref_24","doi-asserted-by":"crossref","unstructured":"Lin, Y., Radoi, C., and Dig, D. (2014, January 16\u201321). Retrofitting concurrency for android applications through refactoring. Proceedings of the ACM International Symposium on Foundations of Software Engineering (FSE), Hong Kong, China.","DOI":"10.1145\/2635868.2635903"},{"key":"ref_25","doi-asserted-by":"crossref","unstructured":"Ozkan, B.K., Emmi, M., and Tasiran, S. (2015, January 18\u201324). Systematic asynchrony bug exploration for android apps. Proceedings of the International Conference on Computer Aided Verification, San Francisco, CA, USA.","DOI":"10.1007\/978-3-319-21690-4_28"},{"key":"ref_26","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/3485537","article-title":"Automatic Migration from Synchronous to Asynchronous JavaScript APIs","volume":"5","author":"Gokhale","year":"2021","journal-title":"Proc. ACM Program. Lang."},{"key":"ref_27","unstructured":"Arteca, E., Tip, F., and Sch\u00e4fer, M. (2021, January 11\u201317). Enabling Additional Parallelism in Asynchronous JavaScript Applications. Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Aarhus, Denmark."},{"key":"ref_28","doi-asserted-by":"crossref","unstructured":"Sch\u00e4fer, M., Sridharan, M., Dolby, J., and Tip, F. (2011, January 21\u201328). Refactoring Java Programs for Flexible Locking. Proceedings of the International Conference on Software Engineering (ICSE), Honolulu, HI, USA.","DOI":"10.1145\/1985793.1985804"},{"key":"ref_29","doi-asserted-by":"crossref","first-page":"102476","DOI":"10.1016\/j.scico.2020.102476","article-title":"Safe automated refactoring for intelligent parallelization of Java 8 streams","volume":"195","author":"Khatchadourian","year":"2020","journal-title":"Sci. Comput. Program."},{"key":"ref_30","doi-asserted-by":"crossref","unstructured":"Midolo, A., and Tramontana, E. (2021, January 22\u201324). Refactoring Java Loops to Streams Automatically. Proceedings of the 4th International Conference on Computer Science and Software Engineering, 2021, CSSE \u201921, Singapore.","DOI":"10.1145\/3494885.3494910"},{"key":"ref_31","doi-asserted-by":"crossref","first-page":"66292","DOI":"10.1109\/ACCESS.2019.2919203","article-title":"Refactoring Java Programs for Customizable Locks Based on Bytecode Transformation","volume":"7","author":"Zhang","year":"2019","journal-title":"IEEE Access"},{"key":"ref_32","doi-asserted-by":"crossref","unstructured":"Zhang, Y., Shao, S., Zhai, J., and Ma, S. (2020, January 18\u201322). FineLock: Automatically refactoring coarse-grained locks into fine-grained locks. Proceedings of the ACM International Symposium on Software Testing and Analysis (ISSTA), Los Angeles, CA, USA.","DOI":"10.1145\/3395363.3404368"},{"key":"ref_33","doi-asserted-by":"crossref","unstructured":"Ahmed, S., and Bagherzadeh, M. (2018, January 11\u201312). What Do Concurrency Developers Ask about? A Large-Scale Study Using Stack Overflow. Proceedings of the ACM\/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), Oulu, Finland.","DOI":"10.1145\/3239235.3239524"},{"key":"ref_34","doi-asserted-by":"crossref","unstructured":"Dig, D., Marrero, J., and Ernst, M.D. (2009, January 16\u201324). Refactoring Sequential Java Code for Concurrency via Concurrent Libraries. Proceedings of the IEEE International Conference on Software Engineering (ICSE), Vancouver, BC, Canada.","DOI":"10.1109\/ICSE.2009.5070539"},{"key":"ref_35","doi-asserted-by":"crossref","unstructured":"Ishizaki, K., Daijavad, S., and Nakatani, T. (2011, January 17). Refactoring Java Programs Using Concurrent Libraries. Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging (PADTAD), Toronto, ON, Canada.","DOI":"10.1145\/2002962.2002970"},{"key":"ref_36","doi-asserted-by":"crossref","unstructured":"Dig, D., Marrero, J., and Ernst, M.D. (2011, January 21\u201328). How Do Programs Become More Concurrent: A Story of Program Transformations. Proceedings of the ACM International Workshop on Multicore Software Engineering (IWMSE), Honolulu, HI, USA.","DOI":"10.1145\/1984693.1984700"},{"key":"ref_37","unstructured":"Smith, N., Van Bruggen, D., and Tomassetti, F. (2017). Javaparser: Visited, Leanpub."},{"key":"ref_38","doi-asserted-by":"crossref","unstructured":"Midolo, A., and Tramontana, E. (2022, January 29\u201331). An API for Analysing and Classifying Data Dependence in View of Parallelism. Proceedings of the Proocedings of the International Conference on Computer and Communications Management (ICCCM), Okayama, Japan.","DOI":"10.1145\/3556223.3556232"},{"key":"ref_39","doi-asserted-by":"crossref","unstructured":"Midolo, A., and Tramontana, E. (2023). An Automatic Transformer from Sequential to Parallel Java Code. Future Internet, 15.","DOI":"10.3390\/fi15090306"},{"key":"ref_40","unstructured":"(2024, July 15). Amazon Book Reviews Dataset. Available online: https:\/\/www.kaggle.com\/datasets\/mohamedbakhet\/amazon-books-reviews."},{"key":"ref_41","unstructured":"(2024, July 15). RMI Book Reviews. Available online: https:\/\/github.com\/AleMidolo\/RMI_Books_Reviews."}],"container-title":["Future Internet"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/1999-5903\/16\/11\/416\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T16:29:41Z","timestamp":1760113781000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/1999-5903\/16\/11\/416"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,11,10]]},"references-count":41,"journal-issue":{"issue":"11","published-online":{"date-parts":[[2024,11]]}},"alternative-id":["fi16110416"],"URL":"https:\/\/doi.org\/10.3390\/fi16110416","relation":{},"ISSN":["1999-5903"],"issn-type":[{"type":"electronic","value":"1999-5903"}],"subject":[],"published":{"date-parts":[[2024,11,10]]}}}