Conference paper Open Access

From OpenAPI Fragments to API Pattern Primitives and Design Smells

Serbout, Souhaila; Pautasso, Cesare; Zdun, Uwe; Zimmermann, Olaf


DataCite XML Export

<?xml version='1.0' encoding='utf-8'?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
  <identifier identifierType="URL">https://zenodo.org/record/5727094</identifier>
  <creators>
    <creator>
      <creatorName>Serbout, Souhaila</creatorName>
      <givenName>Souhaila</givenName>
      <familyName>Serbout</familyName>
      <affiliation>Software Institute, USI</affiliation>
    </creator>
    <creator>
      <creatorName>Pautasso, Cesare</creatorName>
      <givenName>Cesare</givenName>
      <familyName>Pautasso</familyName>
      <affiliation>Software Institute, USI</affiliation>
    </creator>
    <creator>
      <creatorName>Zdun, Uwe</creatorName>
      <givenName>Uwe</givenName>
      <familyName>Zdun</familyName>
      <nameIdentifier nameIdentifierScheme="ORCID" schemeURI="http://orcid.org/">0000-0002-6233-2591</nameIdentifier>
      <affiliation>University of Vienna</affiliation>
    </creator>
    <creator>
      <creatorName>Zimmermann, Olaf</creatorName>
      <givenName>Olaf</givenName>
      <familyName>Zimmermann</familyName>
      <affiliation>University of Applied Sciences of Eastern Switzerland</affiliation>
    </creator>
  </creators>
  <titles>
    <title>From OpenAPI Fragments to API Pattern Primitives and Design Smells</title>
  </titles>
  <publisher>Zenodo</publisher>
  <publicationYear>2021</publicationYear>
  <subjects>
    <subject>Application Programming Interfaces</subject>
    <subject>API Patterns</subject>
    <subject>API Design Smells</subject>
    <subject>API Structural Fragments</subject>
    <subject>Pattern Minning</subject>
    <subject>OpenAPI</subject>
  </subjects>
  <dates>
    <date dateType="Issued">2021-11-25</date>
  </dates>
  <language>en</language>
  <resourceType resourceTypeGeneral="ConferencePaper"/>
  <alternateIdentifiers>
    <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/5727094</alternateIdentifier>
  </alternateIdentifiers>
  <relatedIdentifiers>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsIdenticalTo">10.1145/3489449.3489998</relatedIdentifier>
  </relatedIdentifiers>
  <rightsList>
    <rights rightsURI="https://creativecommons.org/licenses/by/4.0/legalcode">Creative Commons Attribution 4.0 International</rights>
    <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
  </rightsList>
  <descriptions>
    <description descriptionType="Abstract">&lt;p&gt;In the past few years, the OpenAPI Specification (OAS) has emerged&lt;br&gt;
as a standard description language for accurately modeling Web&lt;br&gt;
APIs. Today, thousands of OpenAPI descriptions can be found by&lt;br&gt;
mining open source repositories. In this paper, we attempt to exploit&lt;br&gt;
these artifacts to extract commonly occurring building blocks used&lt;br&gt;
inWeb API structures, in order to assistWeb API designers in their&lt;br&gt;
modelling task. Our work is based on a fragmentation mechanism,&lt;br&gt;
that starts from OpenAPI descriptions ofWeb APIs to extract their&lt;br&gt;
structures, then fragment these structures into smaller blocks. This&lt;br&gt;
approach enabled us to extract a large dataset of reoccurring fragments&lt;br&gt;
from a collection of 6619 API specifications. Such fragments&lt;br&gt;
have been found multiple times in the same or across different APIs.&lt;br&gt;
We have classified the most reoccurring fragments into four pattern&lt;br&gt;
primitives used to expose in the API access to collections of items.&lt;br&gt;
We distinguish for each primitive variants from design smells. This&lt;br&gt;
classification is based on the specific combinations of operations&lt;br&gt;
associated with the collection items and on an in-depth analysis of&lt;br&gt;
their natural language labels and descriptions. The resulting pattern&lt;br&gt;
primitives are intended to support designers who would like to introduce&lt;br&gt;
one or more collections for a specific class of items in their&lt;br&gt;
HTTP-based API.&lt;/p&gt;</description>
  </descriptions>
  <fundingReferences>
    <fundingReference>
      <funderName>Schweizerischer Nationalfonds zur Förderung der Wissenschaftlichen Forschung</funderName>
      <funderIdentifier funderIdentifierType="Crossref Funder ID">10.13039/501100001711</funderIdentifier>
      <awardNumber awardURI="info:eu-repo/grantAgreement/SNSF/Project funding - Project funding (Div. I-III)/200021L_184692/">200021L_184692</awardNumber>
      <awardTitle>API-ACE: Analytics-based Continuous Design and Evolution of Microservice APIs</awardTitle>
    </fundingReference>
    <fundingReference>
      <funderName>Austrian Science Fund</funderName>
      <funderIdentifier funderIdentifierType="Crossref Funder ID">10.13039/501100002428</funderIdentifier>
      <awardNumber awardURI="info:eu-repo/grantAgreement/FWF/Internationale+Projekte/I+4268/">I 4268</awardNumber>
      <awardTitle>Analytics-centric Continuous Design of Microservice APIs</awardTitle>
    </fundingReference>
  </fundingReferences>
</resource>
69
92
views
downloads
Views 69
Downloads 92
Data volume 316.0 MB
Unique views 64
Unique downloads 87

Share

Cite as