Type-Safe Evolution of Web Services

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.

Original languageEnglish
Title of host publicationProceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017
PublisherInstitute of Electrical and Electronics Engineers Inc.
Pages20-26
Number of pages7
ISBN (Electronic)978-153862803-4
DOIs
Publication statusPublished - 3 Jul 2017
Event2nd IEEE/ACM International Workshop on Variability and Complexity in Software Design, VACE 2017 - Buenos Aires, Argentina
Duration: 27 May 2017 → …

Conference

Conference2nd IEEE/ACM International Workshop on Variability and Complexity in Software Design, VACE 2017
CountryArgentina
CityBuenos Aires
Period27/05/17 → …

Fingerprint

Web services
Servers
Mobile devices
Software engineering

Keywords

  • API evolution
  • JavaScript
  • type safe
  • web services

Cite this

Campinhos, J., Seco, J. C., & Cunha, J. (2017). Type-Safe Evolution of Web Services. In Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017 (pp. 20-26). [7968059] Institute of Electrical and Electronics Engineers Inc.. https://doi.org/10.1109/VACE.2017.6
Campinhos, João ; Seco, João Costa ; Cunha, Jácome. / Type-Safe Evolution of Web Services. Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017. Institute of Electrical and Electronics Engineers Inc., 2017. pp. 20-26
@inproceedings{d5793d377842480da4092daa4585bdbc,
title = "Type-Safe Evolution of Web Services",
abstract = "Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.",
keywords = "API evolution, JavaScript, type safe, web services",
author = "Jo{\~a}o Campinhos and Seco, {Jo{\~a}o Costa} and J{\'a}come Cunha",
note = "ERDF - European Regional Development Fund through the Operational Programme for Competitiveness and Internationalisation - COMPETE 2020 Programme within project POCI-01-0145-FEDER-016718, by FCT projects ref. UID/CEC/04516/2013 and PTDC/EEICTP/4293/2014, and by the FLAD project ref. 233/2014.",
year = "2017",
month = "7",
day = "3",
doi = "10.1109/VACE.2017.6",
language = "English",
pages = "20--26",
booktitle = "Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017",
publisher = "Institute of Electrical and Electronics Engineers Inc.",
address = "United States",

}

Campinhos, J, Seco, JC & Cunha, J 2017, Type-Safe Evolution of Web Services. in Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017., 7968059, Institute of Electrical and Electronics Engineers Inc., pp. 20-26, 2nd IEEE/ACM International Workshop on Variability and Complexity in Software Design, VACE 2017, Buenos Aires, Argentina, 27/05/17. https://doi.org/10.1109/VACE.2017.6

Type-Safe Evolution of Web Services. / Campinhos, João; Seco, João Costa; Cunha, Jácome.

Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017. Institute of Electrical and Electronics Engineers Inc., 2017. p. 20-26 7968059.

Research output: Chapter in Book/Report/Conference proceedingConference contribution

TY - GEN

T1 - Type-Safe Evolution of Web Services

AU - Campinhos, João

AU - Seco, João Costa

AU - Cunha, Jácome

N1 - ERDF - European Regional Development Fund through the Operational Programme for Competitiveness and Internationalisation - COMPETE 2020 Programme within project POCI-01-0145-FEDER-016718, by FCT projects ref. UID/CEC/04516/2013 and PTDC/EEICTP/4293/2014, and by the FLAD project ref. 233/2014.

PY - 2017/7/3

Y1 - 2017/7/3

N2 - Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.

AB - Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.

KW - API evolution

KW - JavaScript

KW - type safe

KW - web services

UR - http://www.scopus.com/inward/record.url?scp=85027163930&partnerID=8YFLogxK

U2 - 10.1109/VACE.2017.6

DO - 10.1109/VACE.2017.6

M3 - Conference contribution

SP - 20

EP - 26

BT - Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017

PB - Institute of Electrical and Electronics Engineers Inc.

ER -

Campinhos J, Seco JC, Cunha J. Type-Safe Evolution of Web Services. In Proceedings - 2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design, VACE 2017. Institute of Electrical and Electronics Engineers Inc. 2017. p. 20-26. 7968059 https://doi.org/10.1109/VACE.2017.6