Claudio Guidi - Academia.edu (original) (raw)
Papers by Claudio Guidi
Service Oriented Computing (SOC) allows for the composition of services which communicate using u... more Service Oriented Computing (SOC) allows for the composition of services which communicate using unidirectional notification or bidirectional request-response primitives. Most of the service orchestration languages proposed so far provide also primitives to handle faults and manage the subsequent compensation activities. The interplay between these two aspects is non trivial since, for instance, faults should be notified to the request-response communication partners in order to compensate also the remote activities. We first present a simple orchestration scenario requiring a precise distributed fault handling strategy. We show that this strategy cannot be programmed using current orchestration languages; then, we propose a new style for orchestration programming able to specify the required fault management strategy. Finally, we show the generality of our approach by analyzing its properties and applying it to a nontrivial scenario.
On the interplay between fault handling and request-response service invocations
Application Programming Interfaces (APIs) are a standard feature of any application that exposes ... more Application Programming Interfaces (APIs) are a standard feature of any application that exposes its functionalities to external invokers. APIs can be composed thus obtaining new programs with new functionalities. However API composition can easily become a frustrating task which often prevents developers from using this possibility when implementing and publishing new applications. This fact is due to several specific features of API composition performed using current technology, such as the need of extensive documentation, the need of protocol integration, security issues and others. In this paper we introduce a view of the API as a Service (APIaaS) layer as a tool which ease the development and deployment of applications based on API compositions, by abstracting communication protocols and message formats. We elicit the desirable features of such a layer and provide a proof-of-concept prototype implemented using a Service Oriented language.
Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment, 2020
Microservices have received and are still receiving an increasing attention, both from academia a... more Microservices have received and are still receiving an increasing attention, both from academia and the industrial world. To guarantee scalability and availability while developing modern software systems, microservices allow developers to realize complex systems as a set of small services that operate independently and that are easy to maintain and evolve. Migration from monolithic applications to microservices-based application is a challenging task that very often it is done manually by the developers taking into account the main business functionalities of the input application and without a supporting tool. In this paper, we present a model-driven approach for the automatic migration to microservices. The approach is implemented by means of JetBrains MPS, a text-based metamodelling framework, and validated using a first migration example from a Java-based application to Jolie - a programming language for defining microservices.
Fundamenta Informaticae, 2009
Service Oriented Computing (SOC) allows for the composition of services which communicate using u... more Service Oriented Computing (SOC) allows for the composition of services which communicate using unidirectional one-way or bidirectional request-response communication patterns. Most service orchestration languages proposed so far provide also primitives for error handling based on fault, termination, and compensation handlers. Our work is motivated by the difficulties encountered in programming some error handling strategies using current error handling primitives. We propose as a solution an orchestration programming style in which handlers are dynamically installed. We assess our proposal by formalizing our approach as an extension of the process calculus SOCK and by proving that our formalization satisfies some expected high-level properties.
Microservices is an emerging development paradigm where software isobtained by composing autonomo... more Microservices is an emerging development paradigm where software isobtained by composing autonomous entities, called (micro)services. However, microservice systems are currently developed using general-purpose programminglanguages that do not provide dedicated abstractions for service composition. Instead, current practice is focused on the deployment aspects of microservices, in particular by using containerization. In this chapter, we make the case for a language-based approach to the engineering of microservice architectures, which we believe is complementary to current practice. We discuss the approach in general, and then we instantiate it in terms of the Jolie programming language.
2008 Sixth European Conference on Web Services, 2008
Dynamic fault handling is a new approach for dealing with fault management in service-oriented ap... more Dynamic fault handling is a new approach for dealing with fault management in service-oriented applications. Fault handlers, termination handlers and compensation handlers are installed at execution time instead of being statically defined. In this paper we present this programming style and our implementation of dynamic fault handling in JOLIE, providing finally a nontrivial example of its usage.
Service Oriented Computing is a new programming paradigm for addressing distributed system design... more Service Oriented Computing is a new programming paradigm for addressing distributed system design issues. Services are autonomous computational entities which can be dynamically discovered and composed in order to form more complex systems able to achieve different kinds of task. E-government, e-business and e-science are some examples of the IT areas where Service Oriented Computing will be exploited in the next years. At present, the most credited Service Oriented Computing technology is that of Web Services, whose specifications are enriched day by day by industrial consortia without following a precise and rigorous approach. This PhD thesis aims, on the one hand, at modelling Service Oriented Computing in a formal way in order to precisely define the main concepts it is based upon and, on the other hand, at defining a new approach, called bipolar approach, for addressing system design issues by synergically exploiting choreography and orchestration languages related by means of ...
Service Oriented Computing (SOC) allows for the composition of services which communicate using u... more Service Oriented Computing (SOC) allows for the composition of services which communicate using unidirectional notification or bidirectional request-response primitives. Most of the service orchestration languages proposed so far provide also primitives to handle faults and manage the subsequent compensation activities. The interplay between these two aspects is non trivial since, for instance, faults should be notified to the request-response communication partners in order to compensate also the remote activities. We first present a simple orchestration scenario requiring a precise distributed fault handling strategy. We show that this strategy cannot be programmed using current orchestration languages; then, we propose a new style for orchestration programming able to specify the required fault management strategy. Finally, we show the generality of our approach by analyzing its properties and applying it to a nontrivial scenario.
2011 IEEE International Conference on Service-Oriented Computing and Applications (SOCA), 2011
Recursion is a well known programming pattern and, even if it is not often used because of its lo... more Recursion is a well known programming pattern and, even if it is not often used because of its low efficiency, it is always considered as a milestone pattern because it supplies a mathematical foundation for addressing research in the area of computer science. Almost all programming languages provide supports for recursion and the way they address it could be considered
Lecture Notes in Computer Science, 2016
Microservices is an emerging paradigm for the development of distributed systems that, originatin... more Microservices is an emerging paradigm for the development of distributed systems that, originating from Service-Oriented Architecture, focuses on the small dimension, the loose coupling, and the dynamic topology of services. Microservices are particularly appropriate for the development of distributed systems in the Cloud. However, their dynamic nature calls for suitable techniques for their automatic deployment. In this paper we address this problem and we propose JRO (Jolie Redeployment Optimiser), a tool for the automatic and optimised deployment of microservices written in the Jolie language. The tool uses Zephyrus, a state of the art tool that automatically generates a fully detailed Service-Oriented Architecture configuration starting from a partial and abstract description of the target application.
Proceedings - 6th IEEE International Conference on Software Engineering and Formal Methods, SEFM 2008, 2008
In service oriented computing, choreography languages are used to specify multi-party service com... more In service oriented computing, choreography languages are used to specify multi-party service compositions. Two main approaches have been followed: the interaction-oriented approach of WS-CDL and the process-oriented approach of BPEL4Chor. We investigate the relationship between them. In particular, we consider several interpretations for interaction-oriented choreographies spanning from synchronous to asynchronous communication. Under each of these interpretations we characterize the class
Lecture Notes in Computer Science, 2006
The usual context of service oriented computing is characterized by several services offering the... more The usual context of service oriented computing is characterized by several services offering the same functionalities, new services that are continuosly deployed and other ones that are removed. In this case it can be useful to discover and compose services dynamically at run-time. Orchestration languages provide a mean to deal with service composition, while the problem of fulfilling at run-time the information about the involved services is usually referred to as open-endedness. When designing service-based applications both composition and open endedness play a central role. Such issues are strongly related to mobility mechanisms which make it possible to design applications where services acquire during the execution the necessary information to invoke services. In this paper we discuss the mobility mechanisms for the service oriented computing paradigm. To this end we model a service by means of the notions of interface, location, process and internal state, then we formalize a calculus supporting a specific form of mobility for each of them. We conclude by comparing mobility mechanisms of our calculus with the ones supported by the Web Services technology.
Lecture Notes in Computer Science, 2006
In a previous work we have presented a formal framework devoted to show the relevance of choreogr... more In a previous work we have presented a formal framework devoted to show the relevance of choreography and orchestration in the design of service oriented applications. Even if useful to start a formal investigation of the relationship between choreography and orchestration, the proposed framework was not suitable to specify real case studies. In fact, it simply permitted to specify all possible computations abstracting away from the conditions driving the choice of the actual behaviour. In this paper we tackle this problem by introducing the notion of state variables. The addition of state requires a substantial modification of the entire framework because the same state variable, at the level of choreography, can be actually stored in distributed orchestrators that will need to synchronize in order to maintain consistent views. In order to faithfully investigate this problem we also need to modify the formal model at the orchestration level, moving from synchronous to asynchronous communication as the latter is the communication modality of the ordinary communication infrastructures.
Lecture Notes in Computer Science, 2005
... represents the be-haviour that a participant has to exhibit in order to fulfill the activity ... more ... represents the be-haviour that a participant has to exhibit in order to fulfill the activity defined by ... After the payment is per-formed the store service can send the response to the customer (CustBuyResp). ... Choreography and Orchestration: A Synergic Approach for System Design ...
Lecture Notes in Computer Science, 2006
Service oriented computing is an emerging paradigm for designing distributed applications where s... more Service oriented computing is an emerging paradigm for designing distributed applications where service and composition are the main concepts it is based upon. In this paper we propose SOCK, a threelayered calculus equipped with a formal semantics, for addressing all the basic mechanisms of service communication and composition. The main contribute of our work is the development of a formal framework where the service design is decomposed into three fundamental parts: the behaviour, the declaration and the composition where each part can be designed independently of the other ones.
ABSTRACT In this paper we present PaaSSOA, our vision for a next-generation PaaS layer intended f... more ABSTRACT In this paper we present PaaSSOA, our vision for a next-generation PaaS layer intended for openness and federation for the support of service oriented applications in the Cloud. PaaSSOA provides for the design of service oriented applications into the Cloud. Its architecture follows a service oriented design style and facilitates interoperation between the PaaS and possibly heterogeneous IaaS layers. We describe the architecture of PaaSSOA and present the early results we have obtained from a first prototype implementation.
ABSTRACT The wide adoption of service-oriented computing has led to a heterogeneous scenario form... more ABSTRACT The wide adoption of service-oriented computing has led to a heterogeneous scenario formed by different technologies and specifications. Examples can be found both at the design level-the frameworks for defining services and those for defining their coordination feature fundamentally different primitives-and at the implementation level-different communication technologies are used depending on the context. In this chapter we present Jolie, a fully-fledged service-oriented programming language. Jolie addresses the aforementioned heterogeneity in two ways. On the one hand, it combines computation and composition primitives in an intuitive and concise syntax. On the other hand, the behaviour and deployment of a Jolie program are orthogonal: they can be independently defined and recombined as long as they have compatible typing. © 2014 Springer Science+Business Media New York. All rights are reserved.
Lecture Notes in Computer Science, 2008
Web service instances are often replicated to allow service provision to scale to support larger ... more Web service instances are often replicated to allow service provision to scale to support larger population sizes of users. However, such systems are difficult to analyse because the scale and complexity inherent in the system itself poses challenges for accurate qualitative or quantitative modelling. We use two process calculi cooperatively in the analysis of an example Web service replicated across many servers. The SOCK calculus is used to model service-oriented aspects closely and the PEPA calculus is used to analyse the performance of the system under increasing load.
Service Oriented Computing (SOC) allows for the composition of services which communicate using u... more Service Oriented Computing (SOC) allows for the composition of services which communicate using unidirectional notification or bidirectional request-response primitives. Most of the service orchestration languages proposed so far provide also primitives to handle faults and manage the subsequent compensation activities. The interplay between these two aspects is non trivial since, for instance, faults should be notified to the request-response communication partners in order to compensate also the remote activities. We first present a simple orchestration scenario requiring a precise distributed fault handling strategy. We show that this strategy cannot be programmed using current orchestration languages; then, we propose a new style for orchestration programming able to specify the required fault management strategy. Finally, we show the generality of our approach by analyzing its properties and applying it to a nontrivial scenario.
On the interplay between fault handling and request-response service invocations
Application Programming Interfaces (APIs) are a standard feature of any application that exposes ... more Application Programming Interfaces (APIs) are a standard feature of any application that exposes its functionalities to external invokers. APIs can be composed thus obtaining new programs with new functionalities. However API composition can easily become a frustrating task which often prevents developers from using this possibility when implementing and publishing new applications. This fact is due to several specific features of API composition performed using current technology, such as the need of extensive documentation, the need of protocol integration, security issues and others. In this paper we introduce a view of the API as a Service (APIaaS) layer as a tool which ease the development and deployment of applications based on API compositions, by abstracting communication protocols and message formats. We elicit the desirable features of such a layer and provide a proof-of-concept prototype implemented using a Service Oriented language.
Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment, 2020
Microservices have received and are still receiving an increasing attention, both from academia a... more Microservices have received and are still receiving an increasing attention, both from academia and the industrial world. To guarantee scalability and availability while developing modern software systems, microservices allow developers to realize complex systems as a set of small services that operate independently and that are easy to maintain and evolve. Migration from monolithic applications to microservices-based application is a challenging task that very often it is done manually by the developers taking into account the main business functionalities of the input application and without a supporting tool. In this paper, we present a model-driven approach for the automatic migration to microservices. The approach is implemented by means of JetBrains MPS, a text-based metamodelling framework, and validated using a first migration example from a Java-based application to Jolie - a programming language for defining microservices.
Fundamenta Informaticae, 2009
Service Oriented Computing (SOC) allows for the composition of services which communicate using u... more Service Oriented Computing (SOC) allows for the composition of services which communicate using unidirectional one-way or bidirectional request-response communication patterns. Most service orchestration languages proposed so far provide also primitives for error handling based on fault, termination, and compensation handlers. Our work is motivated by the difficulties encountered in programming some error handling strategies using current error handling primitives. We propose as a solution an orchestration programming style in which handlers are dynamically installed. We assess our proposal by formalizing our approach as an extension of the process calculus SOCK and by proving that our formalization satisfies some expected high-level properties.
Microservices is an emerging development paradigm where software isobtained by composing autonomo... more Microservices is an emerging development paradigm where software isobtained by composing autonomous entities, called (micro)services. However, microservice systems are currently developed using general-purpose programminglanguages that do not provide dedicated abstractions for service composition. Instead, current practice is focused on the deployment aspects of microservices, in particular by using containerization. In this chapter, we make the case for a language-based approach to the engineering of microservice architectures, which we believe is complementary to current practice. We discuss the approach in general, and then we instantiate it in terms of the Jolie programming language.
2008 Sixth European Conference on Web Services, 2008
Dynamic fault handling is a new approach for dealing with fault management in service-oriented ap... more Dynamic fault handling is a new approach for dealing with fault management in service-oriented applications. Fault handlers, termination handlers and compensation handlers are installed at execution time instead of being statically defined. In this paper we present this programming style and our implementation of dynamic fault handling in JOLIE, providing finally a nontrivial example of its usage.
Service Oriented Computing is a new programming paradigm for addressing distributed system design... more Service Oriented Computing is a new programming paradigm for addressing distributed system design issues. Services are autonomous computational entities which can be dynamically discovered and composed in order to form more complex systems able to achieve different kinds of task. E-government, e-business and e-science are some examples of the IT areas where Service Oriented Computing will be exploited in the next years. At present, the most credited Service Oriented Computing technology is that of Web Services, whose specifications are enriched day by day by industrial consortia without following a precise and rigorous approach. This PhD thesis aims, on the one hand, at modelling Service Oriented Computing in a formal way in order to precisely define the main concepts it is based upon and, on the other hand, at defining a new approach, called bipolar approach, for addressing system design issues by synergically exploiting choreography and orchestration languages related by means of ...
Service Oriented Computing (SOC) allows for the composition of services which communicate using u... more Service Oriented Computing (SOC) allows for the composition of services which communicate using unidirectional notification or bidirectional request-response primitives. Most of the service orchestration languages proposed so far provide also primitives to handle faults and manage the subsequent compensation activities. The interplay between these two aspects is non trivial since, for instance, faults should be notified to the request-response communication partners in order to compensate also the remote activities. We first present a simple orchestration scenario requiring a precise distributed fault handling strategy. We show that this strategy cannot be programmed using current orchestration languages; then, we propose a new style for orchestration programming able to specify the required fault management strategy. Finally, we show the generality of our approach by analyzing its properties and applying it to a nontrivial scenario.
2011 IEEE International Conference on Service-Oriented Computing and Applications (SOCA), 2011
Recursion is a well known programming pattern and, even if it is not often used because of its lo... more Recursion is a well known programming pattern and, even if it is not often used because of its low efficiency, it is always considered as a milestone pattern because it supplies a mathematical foundation for addressing research in the area of computer science. Almost all programming languages provide supports for recursion and the way they address it could be considered
Lecture Notes in Computer Science, 2016
Microservices is an emerging paradigm for the development of distributed systems that, originatin... more Microservices is an emerging paradigm for the development of distributed systems that, originating from Service-Oriented Architecture, focuses on the small dimension, the loose coupling, and the dynamic topology of services. Microservices are particularly appropriate for the development of distributed systems in the Cloud. However, their dynamic nature calls for suitable techniques for their automatic deployment. In this paper we address this problem and we propose JRO (Jolie Redeployment Optimiser), a tool for the automatic and optimised deployment of microservices written in the Jolie language. The tool uses Zephyrus, a state of the art tool that automatically generates a fully detailed Service-Oriented Architecture configuration starting from a partial and abstract description of the target application.
Proceedings - 6th IEEE International Conference on Software Engineering and Formal Methods, SEFM 2008, 2008
In service oriented computing, choreography languages are used to specify multi-party service com... more In service oriented computing, choreography languages are used to specify multi-party service compositions. Two main approaches have been followed: the interaction-oriented approach of WS-CDL and the process-oriented approach of BPEL4Chor. We investigate the relationship between them. In particular, we consider several interpretations for interaction-oriented choreographies spanning from synchronous to asynchronous communication. Under each of these interpretations we characterize the class
Lecture Notes in Computer Science, 2006
The usual context of service oriented computing is characterized by several services offering the... more The usual context of service oriented computing is characterized by several services offering the same functionalities, new services that are continuosly deployed and other ones that are removed. In this case it can be useful to discover and compose services dynamically at run-time. Orchestration languages provide a mean to deal with service composition, while the problem of fulfilling at run-time the information about the involved services is usually referred to as open-endedness. When designing service-based applications both composition and open endedness play a central role. Such issues are strongly related to mobility mechanisms which make it possible to design applications where services acquire during the execution the necessary information to invoke services. In this paper we discuss the mobility mechanisms for the service oriented computing paradigm. To this end we model a service by means of the notions of interface, location, process and internal state, then we formalize a calculus supporting a specific form of mobility for each of them. We conclude by comparing mobility mechanisms of our calculus with the ones supported by the Web Services technology.
Lecture Notes in Computer Science, 2006
In a previous work we have presented a formal framework devoted to show the relevance of choreogr... more In a previous work we have presented a formal framework devoted to show the relevance of choreography and orchestration in the design of service oriented applications. Even if useful to start a formal investigation of the relationship between choreography and orchestration, the proposed framework was not suitable to specify real case studies. In fact, it simply permitted to specify all possible computations abstracting away from the conditions driving the choice of the actual behaviour. In this paper we tackle this problem by introducing the notion of state variables. The addition of state requires a substantial modification of the entire framework because the same state variable, at the level of choreography, can be actually stored in distributed orchestrators that will need to synchronize in order to maintain consistent views. In order to faithfully investigate this problem we also need to modify the formal model at the orchestration level, moving from synchronous to asynchronous communication as the latter is the communication modality of the ordinary communication infrastructures.
Lecture Notes in Computer Science, 2005
... represents the be-haviour that a participant has to exhibit in order to fulfill the activity ... more ... represents the be-haviour that a participant has to exhibit in order to fulfill the activity defined by ... After the payment is per-formed the store service can send the response to the customer (CustBuyResp). ... Choreography and Orchestration: A Synergic Approach for System Design ...
Lecture Notes in Computer Science, 2006
Service oriented computing is an emerging paradigm for designing distributed applications where s... more Service oriented computing is an emerging paradigm for designing distributed applications where service and composition are the main concepts it is based upon. In this paper we propose SOCK, a threelayered calculus equipped with a formal semantics, for addressing all the basic mechanisms of service communication and composition. The main contribute of our work is the development of a formal framework where the service design is decomposed into three fundamental parts: the behaviour, the declaration and the composition where each part can be designed independently of the other ones.
ABSTRACT In this paper we present PaaSSOA, our vision for a next-generation PaaS layer intended f... more ABSTRACT In this paper we present PaaSSOA, our vision for a next-generation PaaS layer intended for openness and federation for the support of service oriented applications in the Cloud. PaaSSOA provides for the design of service oriented applications into the Cloud. Its architecture follows a service oriented design style and facilitates interoperation between the PaaS and possibly heterogeneous IaaS layers. We describe the architecture of PaaSSOA and present the early results we have obtained from a first prototype implementation.
ABSTRACT The wide adoption of service-oriented computing has led to a heterogeneous scenario form... more ABSTRACT The wide adoption of service-oriented computing has led to a heterogeneous scenario formed by different technologies and specifications. Examples can be found both at the design level-the frameworks for defining services and those for defining their coordination feature fundamentally different primitives-and at the implementation level-different communication technologies are used depending on the context. In this chapter we present Jolie, a fully-fledged service-oriented programming language. Jolie addresses the aforementioned heterogeneity in two ways. On the one hand, it combines computation and composition primitives in an intuitive and concise syntax. On the other hand, the behaviour and deployment of a Jolie program are orthogonal: they can be independently defined and recombined as long as they have compatible typing. © 2014 Springer Science+Business Media New York. All rights are reserved.
Lecture Notes in Computer Science, 2008
Web service instances are often replicated to allow service provision to scale to support larger ... more Web service instances are often replicated to allow service provision to scale to support larger population sizes of users. However, such systems are difficult to analyse because the scale and complexity inherent in the system itself poses challenges for accurate qualitative or quantitative modelling. We use two process calculi cooperatively in the analysis of an example Web service replicated across many servers. The SOCK calculus is used to model service-oriented aspects closely and the PEPA calculus is used to analyse the performance of the system under increasing load.