{"id":11102,"date":"2017-01-03T14:42:14","date_gmt":"2017-01-03T12:42:14","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=11102"},"modified":"2019-08-05T14:35:26","modified_gmt":"2019-08-05T12:35:26","slug":"transducing-service-descriptions-into-saas-prototypes","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/","title":{"rendered":"Transducing service descriptions into SaaS prototypes"},"content":{"rendered":"\n<p>by <a href=\"https:\/\/blog.zhaw.ch\/icclab\/josef-spillner\/\">Josef Spillner<\/a><\/p>\n\n\n<p>Service prototyping is still a young topic when it comes to cloud services, web services or other network services. Researchers are concerned with defining the topic more accurately and finding out which metrics matter, for instance time, quality or cost. New definitions, methods and tools will result from this process.<\/p>\n<p>In a <a href=\"https:\/\/blog.zhaw.ch\/icclab\/rapid-api-generation-with-ramses\/\">previous blog post<\/a>, we have discussed the process of automating service and API prototyping tools on the scripting level, ensuring that all commands to install dependencies and to configure the software are executed properly, in order and without omission. The tool in focus has been <a href=\"http:\/\/ramses.tech\/\">Ramses<\/a> which turns RAML web service descriptions into executable prototypes. The focus of this post is to take this idea further to the SaaS and web application level. A convenient web application, accessible from every browser, should offer a guided prototypical service generation based on just the service interface description which specifies its resources, methods and data types.<\/p>\n<p><!--more--><\/p>\n<p>We call this new class of tools <a href=\"http:\/\/www.oed.com\/view\/Entry\/204675\">transducers<\/a>. This term may or may not make sense depending on how much philosophy is allowed into the research. To give a definition: A transducer is a (software) device which converts one representation of a service into another one. This definition is flexible enough to cover other methods such as representing the same executable service in two different hosting technologies.<\/p>\n<p>The quantitative goal of transducer construction is the reduction of time and effort it takes to build a service which realises a new idea for functionality. In the figure below, the two axes represent time (t) and effort (e). A prior phase not shown in the diagram is needed for finding the right idea. In the first phase in the diagram, a service description then needs to be authored to capture the ideas. This usually requires a high cognitive investment for manual creation and still a high to moderate one when using tool support such as <a href=\"http:\/\/apiworkbench.com\/docs\/\">graphical API modellers<\/a>. In the second phase, this description is turned into a service. This part should be completely automated, taking close to zero effort and likewise close to zero seconds of time.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-11106 aligncenter\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg\" alt=\"\" width=\"400\" height=\"343\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg 400w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper-300x257.jpg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper-350x300.jpg 350w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n<p>We have implemented the first transducer based on the previous automation work. The focus is on speeding up the process, hence it is called <strong>Rapid Interface Transducer<\/strong>. As proper service offering, an <a href=\"https:\/\/serviceprototypinglab.github.io\/transducer\/\">online version<\/a> is available, as is the <a href=\"https:\/\/github.com\/serviceprototypinglab\/transducer\">source repository<\/a>. The complexity of the transducer is made apparent by the software packages it uses (ramses, elasticsearch, sqlite, docker, python, virtualenv, flask, bootstrap, javascript) and the various browser interaction constraints (CORS, mixed content) which are counter-intuitive from a service-oriented perspective.<\/p>\n<p>The sequence of interaction between the user, the web application, the web service and any tools behind is shown in the next figure. Step 1 is mandatory whereas step 2 is only required in certain cases and is skipped otherwise.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-11111 aligncenter\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-sequence.png\" alt=\"\" width=\"838\" height=\"482\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-sequence.png 838w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-sequence-300x173.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-sequence-768x442.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-sequence-500x288.png 500w\" sizes=\"auto, (max-width: 838px) 100vw, 838px\" \/><\/p>\n<p>A first timing comparison estimation is reflected in the figure below (mind the logarithmic axis). Due to the high technological complexity of the used tools and frameworks, the original time needed to turn a web service description into a service easily exceeded the one-and-a-half hours available in a lab or in general in between other important work. Following the instructions of our blog post, this was reduced to about half an hour. Still, for quickly trying out a service idea, this may be too high. Finally, with the transducer, all it takes is copy-and-paste of the declarative files and pressing a few buttons, all of which fits comfortably into a single minute. Therefore, the transducer concept has significantly reduced the time needed to prototype a service.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-11103 size-full\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-estimation.jpg\" width=\"354\" height=\"291\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-estimation.jpg 354w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/transducer-estimation-300x247.jpg 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/p>\n<p>(Note that following the notion of <a href=\"https:\/\/duckduckgo.com\/?q=paper+prototyping&amp;t=hs&amp;iax=1&amp;ia=images\">paper prototyping<\/a>, the figures in this post have been made on actual paper and are not meant to be fully correct.)<\/p>\n<p>Our online instance runs distributed across two providers. The frontend web application is hosted directly on Github and the backend service executes on Azure. For such a deployment, the configuration of the virtual machine, basic operating system and network security groups needs to be considered beyond what is documented in the README file and in the provided installation scripts. As there is a lack of portable cloud provider configurations, the following documents the actual setup on Azure as textual screenshot from the provider&#8217;s portal.<\/p>\n<pre>Priority | Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Destination | Service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Action\n1000&nbsp;&nbsp;&nbsp;&nbsp; | default-allow-ssh&nbsp;&nbsp; | 160.85.0.0\/16 | Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | SSH (TCP\/22)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Allow&nbsp; \u2026\n1010&nbsp;&nbsp;&nbsp;&nbsp; | transducer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Custom (Any\/5000)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Allow&nbsp; \u2026\n1020&nbsp;&nbsp;&nbsp;&nbsp; | transducer-services | Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Any&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Custom (Any\/10000-10200) | Allow&nbsp; \u2026<\/pre><div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/api\/\">api<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/automation\/\">automation<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/raml\/\">raml<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/rapid-prototyping\/\">rapid prototyping<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/saas\/\">saas<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/transducer\/\">transducer<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>Service prototyping is still a young topic when it comes to cloud services, web services or other network services. Researchers are concerned with defining the topic more accurately and finding out which metrics matter, for instance time, quality or cost. New definitions, methods and tools will result from this process. In a previous blog post, [&hellip;]<\/p>\n","protected":false},"author":486,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[829,51,830,727,839,840],"features":[],"class_list":["post-11102","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-api","tag-automation","tag-raml","tag-rapid-prototyping","tag-saas","tag-transducer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Transducing service descriptions into SaaS prototypes - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Transducing service descriptions into SaaS prototypes\" \/>\n<meta property=\"og:description\" content=\"Service prototyping is still a young topic when it comes to cloud services, web services or other network services. Researchers are concerned with defining the topic more accurately and finding out which metrics matter, for instance time, quality or cost. New definitions, methods and tools will result from this process. In a previous blog post, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T12:42:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-05T12:35:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg\" \/>\n<meta name=\"author\" content=\"icclab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"icclab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\"},\"author\":{\"name\":\"icclab\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"headline\":\"Transducing service descriptions into SaaS prototypes\",\"datePublished\":\"2017-01-03T12:42:14+00:00\",\"dateModified\":\"2019-08-05T12:35:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\"},\"wordCount\":713,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg\",\"keywords\":[\"api\",\"automation\",\"raml\",\"rapid prototyping\",\"saas\",\"transducer\"],\"articleSection\":[\"*.*\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\",\"name\":\"Transducing service descriptions into SaaS prototypes - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg\",\"datePublished\":\"2017-01-03T12:42:14+00:00\",\"dateModified\":\"2019-08-05T12:35:26+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg\",\"width\":400,\"height\":343},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Transducing service descriptions into SaaS prototypes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\",\"name\":\"icclab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"caption\":\"icclab\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Transducing service descriptions into SaaS prototypes - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/","og_locale":"en_US","og_type":"article","og_title":"Transducing service descriptions into SaaS prototypes","og_description":"Service prototyping is still a young topic when it comes to cloud services, web services or other network services. Researchers are concerned with defining the topic more accurately and finding out which metrics matter, for instance time, quality or cost. New definitions, methods and tools will result from this process. In a previous blog post, [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2017-01-03T12:42:14+00:00","article_modified_time":"2019-08-05T12:35:26+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg","type":"","width":"","height":""}],"author":"icclab","twitter_card":"summary_large_image","twitter_misc":{"Written by":"icclab","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/"},"author":{"name":"icclab","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"headline":"Transducing service descriptions into SaaS prototypes","datePublished":"2017-01-03T12:42:14+00:00","dateModified":"2019-08-05T12:35:26+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/"},"wordCount":713,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg","keywords":["api","automation","raml","rapid prototyping","saas","transducer"],"articleSection":["*.*"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/","url":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/","name":"Transducing service descriptions into SaaS prototypes - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg","datePublished":"2017-01-03T12:42:14+00:00","dateModified":"2019-08-05T12:35:26+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/01\/scanpaper.jpg","width":400,"height":343},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/transducing-service-descriptions-into-saas-prototypes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Transducing service descriptions into SaaS prototypes"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563","name":"icclab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","caption":"icclab"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/486"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=11102"}],"version-history":[{"count":9,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11102\/revisions"}],"predecessor-version":[{"id":12524,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11102\/revisions\/12524"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=11102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=11102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=11102"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=11102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}