A Model-Driven Method for Fast Building Consistent Web Services from OpenAPI-Compatible Models

Lots of software companies rely on web technologies to test market hypotheses in order to develop viable businesses. They often need to quickly build web services that are at the core of their Minimum Viable Products (MVPs). MVPs must be reliable whereas they are based on specifications and hypotheses that are likely to change. Web services need to be well documented, to make it easy to develop applications that consume them. Model Driven Engineering approaches have been proposed and used to develop and evolve web services on one hand, and document them on the other hand. However, these approaches lack the ability to be suitable for both (i) rapid prototyping, (ii) model verification, (iii) compatibility with common programming languages and (iv) alignment between documentation and implementation. Here we propose a meta-model to express web services, the related tool to verify models consistency and an integration of this approach into the OpenAPI Specification. We adopt a shallow verification process to allow rapid prototyping by developers who are not formal methods experts, while still offering design-time guarantees that improve product quality and development efficiency. Web services are defined using parametric components which enable to express and formally verify web service patterns and to safely reuse them in other contexts. We built a tool to check consistency of extended OpenAPI 3.0 models and associated components implementations in order to generate corresponding web services. This allows us to give flexibility and verification support to developers, even in the context of an incremental development, as illustrated by a case study.

[1]  Jonathan Mélius,et al.  Automatic OpenAPI to Bio.tools Conversion , 2017, bioRxiv.

[2]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[3]  Fabrizio Maria Maggi,et al.  Automated development of constraint-driven web applications , 2016, SAC.

[4]  J. Christian Attiogbé,et al.  A Model-Driven Method for Fast Building Consistent Web Services in Practice , 2018, MODELSWARD.

[5]  Roy Grønmo,et al.  Model-driven Web services development , 2004, IEEE International Conference on e-Technology, e-Commerce and e-Service, 2004. EEE '04. 2004.

[6]  Gregor Engels,et al.  From Open API to Semantic Specifications and Code Adapters , 2017, 2017 IEEE International Conference on Web Services (ICWS).

[7]  Wil M. P. van der Aalst,et al.  Declarative workflows: Balancing between flexibility and support , 2009, Computer Science - Research and Development.

[8]  Xiang Fu,et al.  Analysis of interacting BPEL web services , 2004, WWW '04.

[9]  Marco Cremaschi,et al.  Toward Automatic Semantic API Descriptions to Support Services Composition , 2017, ESOCC.

[10]  Dimitris Askounis,et al.  Community-based API Builder to manage APIs and their connections with Cloud-based Services , 2015, CAiSE Forum.

[11]  Xavier Blanc,et al.  Automated Generation of REST API Specification from Plain HTML Documentation , 2017, ICSOC.

[12]  Markus Scheidgen,et al.  Metamodeling vs Metaprogramming: A Case Study on Developing Client Libraries for REST APIs , 2016, ECMFA.

[13]  Fabrizio Maria Maggi,et al.  M3D: a tool for the model driven development of web applications , 2012, WIDM '12.

[14]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[15]  Bartosz Michalik,et al.  Software Engineering Methodology for Development of APIs for Network Management using the MEF LSO Framework , 2017, IEEE Communications Standards.

[16]  Jérôme Rocheteau,et al.  Reifier: Model-Driven Engineering of Component-Based and Service-Oriented JEE Applications , 2016, D&P@MoDELS.