<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Facilitating Agile Prototyping of Cloud Applications -A Model-Based Approach</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author role="corresp">
							<persName><forename type="first">Ta</forename><forename type="middle">'</forename><surname>Id Holmes</surname></persName>
							<email>t.holmes@telekom.de</email>
							<affiliation key="aff0">
								<orgName type="department">Infrastructure Cloud</orgName>
								<orgName type="institution">Deutsche Telekom Technik GmbH Darmstadt</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Facilitating Agile Prototyping of Cloud Applications -A Model-Based Approach</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">5F60F0E50BD379A041118885890D8562</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T14:23+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>automation</term>
					<term>agile</term>
					<term>application</term>
					<term>cloud</term>
					<term>DSL</term>
					<term>model-based</term>
					<term>prototyping</term>
					<term>provisioning</term>
					<term>service topology</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Modern cloud applications, generally, demand complex service topologies, e.g., for meeting scalability, maintenance, or security requirements. Thus, often, it is desirable to increase the complexity of service topologies in cloud applications. The required changes, however, may constitute a burden for improving cloud applications. Changes, overall, are undertaken frequently in prototyping or when adopting agile development. Their costs correlate with the number of people involved. For facilitating agile prototyping of cloud applications this demonstration presents a model-based approach incorporating different roles. Using, integrating with, and building on top of open-source projects, it comprises domain-specific language editors and showcases their use and the realized automation fostering iterative development.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>For various reasons, modern cloud applications are composed of increasingly complex service topologies (cf. <ref type="bibr" target="#b0">[1]</ref>). Factors that contribute to the complexity of service topologies are the ability to scale out services for meeting varying user loads, security requirements that demand the separation of application logic as well as of data, and maintenance considerations that foster distribution of self-contained services for decoupling their lifecycle.</p><p>For expressing and capturing service topologies, the OASIS Topology and Orchestration Specification for Cloud Applications (TOSCA) standard 1 provides a metamodel. When describing a cloud application in terms of a metamodel and when following a model-driven engineering (MDE) approach, provisioning can be automated (cf. <ref type="bibr" target="#b1">[2]</ref>). Yet, development of a cloud application remains difficult as its service topology needs to be modeled and the various services implemented. In an agile practice, the architecture and implementation of cloud applications usually experiences early and frequent changes such as refactorings. For example, the topology may be changed in a way that requires alignment of the model, e.g., when services are split into distributed entities. At the same time, the respective services need to be adapted as well.</p><p>Multiple roles with particular responsibilities are involved in the engineering process, such as architects, test developers, and service engineers -each one having a different set of expertise. For realizing a new cloud application an enterprise architect performs a functional analysis and aligns architectural building 1 http://docs.oasis-open.org/tosca/TOSCA/v1.0/TOSCA-v1.0.pdf blocks (ABBs) with software building blocks (SBBs) (cf. <ref type="bibr" target="#b2">[3]</ref>). The service topology, that comprises latter building blocks, may be modeled by a team of experts. Some services are available off the shelf, while others need to be implemented by service engineers. Deployment services automate the provisioning of different stages such as for testing or pre-production. Finally, a continuous integration service executes various tests that have been implemented by test developers.</p><p>In case of iterative development all of these roles repeatably need to coordinate their activities. If a cloud architect would like a particular service to be decoupled from another because of scalability issues the alignment of building blocks may need adjustment, the model reflecting the service topology needs to be changed, tests may have to be adapted, and service implementations have to be modified.</p><p>For lowering the burden of improving the cloud application accordingly the overall turnaround time shall be kept as short as possible in such cases. With a multitude of people and roles involved, agile development of complex cloud applications is challenging: Most of all, coordination needs have to be addressed. Next, development of individual services needs to be facilitated in a sense that integration into the service topology is eased. Finally, overall automation is required.</p><p>Tackling these issues, the demonstration proposes a modelbased approach and presents a toolset comprising domainspecific language (DSL) editors for facilitating agile prototyping of cloud applications. Showcasing an overall example, it combines two former contributions: Addressing coordination needs, a descriptive DSL <ref type="bibr" target="#b3">[4]</ref> permits to define roles, artifacts, and services. The alignment of ABBs and SBBs can be undertaken by an enterprise architect using another DSL which is also used for describing the provisioning of the cloud application <ref type="bibr" target="#b4">[5]</ref>. Using a running example, this demonstration describes the overall process, artifacts, and tools involved. Abstracting from infrastructure as a service (IaaS) providers, the approach automates various tasks and enables developers to incrementally deploy cloud services facilitating iterative prototyping of cloud applications.</p><p>The remainder is structured as follows: Section II introduces the running example of the demonstration by describing its context and by characterizing related problems as a further motivation. The approach using the running example is presented in Section III. The work is compared to some related work in Section IV and Section V concludes.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. RUNNING EXAMPLE: CONTEXT AND MOTIVATION</head><p>Let us now consider an industrial machine-to-machine (M2M) context in which a new business idea arose. As part of the value proposition it envisages the correlation of sensor data with other data and the visualization of results in a dashboard. In this scenario M2M devices emit data from sensors to an M2M gateway. A backend server receives and processes aggregated sensor data from these gateways. For this, the data is normalized and correlated with user data and data from an external data source. Results are stored in a database and visualized in a web application. Figure <ref type="figure" target="#fig_0">1</ref> depicts a rudimentary server landscape for the M2M scenario.</p><p>Various roles participate in the engineering: among them are service and web engineers that implement different parts of a minimum viable product (MVP) (see below) as well as architects that describe the functional architecture. Following the idea of the lean startup philosophy <ref type="bibr" target="#b5">[6]</ref> the value proposition of the business idea is to be tested with potential customers. For this, prototyping constitutes a suitable approach for the (rapid) development of a MVP (cf. <ref type="bibr" target="#b6">[7]</ref>) and for gaining findings such as customer requirements.</p><p>In situations in which products depend on several cloud services a platform as a service (PaaS) may provide a suitable basis for the development and deployment of software as a service (SaaS). It needs to cover the requirements of the product in terms of deployed technologies and available cloud services. For the development of a MVP the decision to deploy a (certain) PaaS may be an early decision to take. Indeed, one of the principles of lean management is deferring decisions for being able to also consider new information.</p><p>As an alternative and as exercised in the demonstration, the entire cloud stack from IaaS to SaaS -realizing the MVPneeds to be described for cloud provisioning and deployed. This is particularly interesting when customized cloud stacks are preferred over a uniform cloud stack or a PaaS. At the same time the specification and deployment of a customized cloud stack, e.g., in TOSCA without further tool support, requires expert knowledge. This burden may prevent a project to opt for a tailored cloud setup and hinder lean development.</p><p>For realizing the MVP the functional architecture of the cloud application needs to become manifested in tangible cloud services and resources. The mapping from ABBs to SBBs -performed by architects (indicated with Role A) -is shown in the top three levels of Figure <ref type="figure" target="#fig_2">2</ref>. Describing the cloud provisioning, the services are associated with server instances  A lack of automation renders the process -consisting of a multitude of steps -time-consuming and costly. As a result, iterative cycles involving the reprovisioning of (parts of) the service topology may be avoided. Decreasing agility, this may proof problematic at an early phase of product development such as when developing a MVP. Besides the loss of flexibility (e.g., as required when performing adjustments), the complexity of the overall process may render effective participation of architects problematic.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. DOMAIN-SPECIFIC LANGUAGES FOR FACILITATING THE ENGINEERING OF CLOUD APPLICATIONS</head><p>For addressing the issues mentioned in the introduction and as further elaborated in the previous section, a modelbased approach is proposed. That is, separation of concerns is realized between architecture, functionality, and technology platforms while automating provisioning and deployment in a role-based development process. After giving an overview, the use of the DSLs is illustrated by means of the running example. The demonstrator entirely relies on open source software: The Eclipse Modeling Framework (EMF) <ref type="foot" target="#foot_0">2</ref> was chosen with Xtext for defining the DSLs and for realizing respective editors and Xtend for implementing the model transformations. At runtime and besides the resulting DSL editors, Git<ref type="foot" target="#foot_1">3</ref> is used as version control system (VCS), and Puppet<ref type="foot" target="#foot_2">4</ref> for the CM. Finally, OpenStack<ref type="foot" target="#foot_3">5</ref> serves as an IaaS solution. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Cloud Application</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Approach Overview</head><p>In addition to Figure <ref type="figure" target="#fig_2">2</ref>, a technical overview of the modelbased realization is depicted in Figure <ref type="figure" target="#fig_3">3</ref>. The cloud provisioning is described using a DSL as shown in the upper left part of the figure. Through a sequence of model transformations an IaaS consumer is generated that realizes the provisioning of cloud infrastructure services. Platform and software services as referenced in the DSL program are provisioned using a CM system. CM modules are looked up for such services and a CM server is instructed accordingly while server instances are provisioned with CM clients.</p><p>A coordination DSL program declarativly describes roles, artifacts, services, and dependencies between these. Coordination tools are generated that interplay with a VCS and the workspaces of stakeholders. For developed services, CM modules are prepared in addition and built for further simplifying the overall engineering process while profiting from the functionality and automation as realized by the CM system.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Business Idea and Functional Analysis</head><p>Starting from the business idea from Section II, architects conduct a functional analysis. The resulting functional architecture comprises sensors, a broker, converters, a business intelligence (BI), and a dashboard as shown in Figure <ref type="figure" target="#fig_2">2</ref>. Resulting ABBs are sensors, a messaging platform, an analytics engine, a database server, a web server, and a web application. Using a DSL editor and profiting from syntax highlighting, code completion, and scoping as shown in Figure <ref type="figure" target="#fig_5">4</ref>, the ABBs are associated with SBBs (i.e., Mosquitto as a MQ Telemetry Transport (MQTT) broker, a PostgreSQL server, an Apache HTTP server, and three different parts of a proof of concept (PoC) implementation). The abstract building blocks are so associated with concrete building blocks to be deployed and are used (i.e., referenced) for the provisioning as shown later.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Domain-Specific Language for Cloud Provisioning</head><p>The DSL program in the upper left part of Figure <ref type="figure" target="#fig_3">3</ref> shows an excerpt for defining the cloud provisioning. For  this, services are grouped in hostingUnits. Through model transformations and automation, the latter are mapped to server instances or clusters and appropriate IaaS clients are generated. Please note, that the services reference the abstract serviceDefs from Figure <ref type="figure" target="#fig_5">4</ref>. This and further relationships (implies) are exploited for automating the provisioning. The DSL facilitates specification of custom cloud stacks as required for different stages of the engineering lifecycle such as development (DEV), testing (TEST), or production (PROD). Choosing a profile the provisioning is performed similarly for each of the defined stages. If desired this is done in different cloud regions (also defined in the respective profile).</p><p>If not bound to certain stages (e.g., sensor data generators for development and test) server instances (e.g., broker) are provisioned for all stages (e.g., in all the related cloud regions).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>D. Formalizing Dependencies of Services, Artifacts, and Roles</head><p>A declarative DSL allows to enumerate roles participating in the engineering process, artifacts, services, and their dependencies in a generic way. From these, coordination tools are generated (cf. <ref type="bibr" target="#b3">[4]</ref>). Integrated into a VCS these may send out notifications when artifacts are available and synchronize workspaces accordingly. In addition to supporting the coordination, automation tools are derived from the DSL programs for preparing the deployment of developed services to the respective hostingUnits and for pushing and applying incremental changes through Puppet. Services that are devel-oped such as the PoC parts are referenced by serviceDefs following the realizedBy keyword (see Figure <ref type="figure" target="#fig_5">4</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>E. Integration with Configuration Management Software</head><p>Higher-level cloud services depending on IaaS are provisioned through a CM system. For this, Puppet modules are looked up for services using name-based matching. Using the realizedBy keyword Puppet modules are automatically synchronized with required software artifacts using the VCS. Yet, module manifests need to be supplied by Puppet experts. At execution time, the approach integrates with Puppet by generating manifest files and cloud-init<ref type="foot" target="#foot_4">6</ref> configs (passed as user-data when launching server instances). This way the different engineers can work independently using their workspace focusing on their actual task while the packaging and deployment is automated.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>F. Iterative Development and Continuous Deployment</head><p>When executing the generated IaaS consumer all the cloud services (see right box of Figure <ref type="figure" target="#fig_3">3</ref>) -starting from IaaS (i.e., security groups, volumes, and instances) and PaaS (i.e., Apache HTTP server, Mosquitto, and PostgreSQL) to SaaS (i.e., PoC Parts 1-3) -are provisioned in an interplay with Puppet and thus the cloud application is deployed. If work is performed in the VCS, e.g., when modifying a particular service, changes can be applied incrementally using Puppet behind the scenes facilitating continuous deployment. Changes to the service topology are more critical: While in many cases they are respected by the demonstrator, a reprovisioning may become necessary, e.g., when renaming occurs. Please note that while the latter takes longer until all services are provisioned it is still fully automated and may be thus acceptable for prototyping.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. RELATED WORK</head><p>Rapid application development (RAD) (cf. <ref type="bibr" target="#b7">[8]</ref>) can help to obtain results in a timely and efficient manner. For instance, various RAD frameworks exist (cf. <ref type="bibr" target="#b8">[9]</ref>) that are tailored towards web applications and that can be combined with the approach. For the development of cloud applications a development PaaS such as the Google App Engine<ref type="foot" target="#foot_5">7</ref> may provide ready to use (technology) stacks of services while easing the development of SaaS. In contrast this work permits to define and work with customized cloud stacks. Realizing separation of concerns it incorporates different roles in the engineering using tailored DSLs and coordinates workspaces. As it directly operates on IaaS deployments in an interplay with CM systems it is independent of a PaaS and certain (technology) stacks.</p><p>As mentioned, TOSCA provides a metamodel for service topologies. As a standard, it constitutes a desirable basis for an implementation of the approach presented. Similar to the presented work TOSCA can be combined with CM systems (cf. <ref type="bibr" target="#b9">[10]</ref>). The DSL building on top of Amazon Elastic Compute Cloud (EC2) <ref type="foot" target="#foot_6">8</ref> concepts and used in this work for describing the provisioning permits to define rudimentary service topologies. While they can be mapped to TOSCA the DSL aims particularly at giving stakeholders access to the modeling. In fact, a provisioning can be described in a couple of lines and can be changed easily. Instead of the DSL shown the approach can use any modeling as long as it does not slow down development and iteration cycles. User studies have to be carried out in this regard in order to answer the question which modeling tools for service topologies are best for the development of cloud applications as required in prototyping.</p><p>V. CONCLUSION Agile development of cloud applications can be facilitated using a model-based approach, e.g., using textual DSLs as presented. For this a high degree of automation is required beyond provisioning. Also, as many stakeholders are involved in the engineering, it is crucial to harmonize their collaboration and to provide them with means for participation. This is realized by exploiting formalized dependencies and by providing tailored DSL editors while abstracting from technologies such as CM and IaaS solutions.</p><p>For wide applicability, the approach directly builds on top of IaaS and does not rely on a development PaaS. Yet, in case the code generator is adapted, the presented work can build on different application programming interfaces (APIs) or other technologies both for the provisioning and the CM. The approach was successfully adopted for the rapid development of several demonstrators and a PoC in an industrial context.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .</head><label>1</label><figDesc>Figure 1. Server Landscape of a Machine-to-Machine Scenario</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2. From Design to Deployment of the Cloud Application</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. Overview of the Model-Based Approach for the Development and Continuous Deployment of Cloud Applications</figDesc><graphic coords="3,388.41,142.09,52.58,59.00" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head></head><label></label><figDesc>realizedBy PoC_part1 implies services MosquittoClient PyXB serviceDef Broker implies services Mosquitto serviceDef Analytics realizedBy PoC_part2 implies services MosquittoClient PyXB SQLAlchemy serviceDef Database implies services PostgreSQL serviceDef Report realizedBy PoC_part3 implies services SQLAlchemy ApacheWSGI</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 .</head><label>4</label><figDesc>Figure 4. Mapping Architectural to Software Building Blocks</figDesc></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_0">http://eclipse.org/modeling/emf</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_1">http://git-scm.com</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_2">http://puppetlabs.com</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_3">http://openstack.org</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_4">http://launchpad.net/cloud-init</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="7" xml:id="foot_5">http://cloud.google.com/appengine/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="8" xml:id="foot_6">http://awsdocs.s3.amazonaws.com/EC2/latest/ec2-api.pdf</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">How to Adapt Applications for the Cloud Environment</title>
		<author>
			<persName><forename type="first">V</forename><surname>Andrikopoulos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Binz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Leymann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Strauch</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computing. Springer</title>
		<imprint>
			<biblScope unit="volume">95</biblScope>
			<biblScope unit="page" from="493" to="535" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">CloudMF: Applying MDE to Tame the Complexity of Managing Multi-cloud Applications</title>
		<author>
			<persName><forename type="first">N</forename><surname>Ferry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Song</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rossini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Chauvel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Solberg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM 7th International Conference on Utility and Cloud Computing (UCC). IEEE</title>
				<imprint>
			<date type="published" when="2014-12">Dec 2014</date>
			<biblScope unit="page" from="269" to="277" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Iacob</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Jonkers</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Quartel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Franken</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Van Den</surname></persName>
		</author>
		<author>
			<persName><surname>Berg</surname></persName>
		</author>
		<title level="m">Delivering Enterprise Architecture with TOGAF and ARCHIMATE</title>
				<meeting><address><addrLine>Enschede</addrLine></address></meeting>
		<imprint>
			<publisher>BIZZdesign</publisher>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Facilitating Development and Provisioning of Service Topologies through Domain-Specific Languages</title>
		<author>
			<persName><forename type="first">T</forename><surname>Holmes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">18th IEEE International Enterprise Distributed Object Computing Conference Workshops and Demonstrations</title>
				<editor>
			<persName><forename type="first">G</forename><surname>Grossmann</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Hallé</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Karastoyanova</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Reichert</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Rinderle-Ma</surname></persName>
		</editor>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2014-09">Sep. 2014</date>
			<biblScope unit="page" from="422" to="425" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Automated Provisioning of Customized Cloud Service Stacks using Domain-Specific Languages</title>
		<ptr target="CEUR-WS.org" />
	</analytic>
	<monogr>
		<title level="m">2nd International Workshop on Model-Driven Engineering on and for the Cloud</title>
				<imprint>
			<date type="published" when="2014-09">Sep. 2014</date>
			<biblScope unit="volume">1242</biblScope>
			<biblScope unit="page" from="46" to="55" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">The Lean Startup: How Today&apos;s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses</title>
		<author>
			<persName><forename type="first">E</forename><surname>Ries</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2011">2011</date>
			<publisher>Crown Business</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Lean software development: A tutorial</title>
		<author>
			<persName><forename type="first">M</forename><surname>Poppendieck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">A</forename><surname>Cusumano</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">29</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="26" to="32" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Rapid application development (RAD): An empirical review</title>
		<author>
			<persName><forename type="first">P</forename><surname>Beynon-Davies</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Carne</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Mackay</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Tudhope</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">European Journal of Information Systems</title>
		<imprint>
			<biblScope unit="issue">8</biblScope>
			<biblScope unit="page" from="211" to="223" />
			<date type="published" when="1999">1999</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Server-centric web frameworks: An overview</title>
		<author>
			<persName><forename type="first">I</forename><surname>Vosloo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">G</forename><surname>Kourie</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<biblScope unit="issue">2</biblScope>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Integrating Configuration Management with Model-Driven Cloud Management based on TOSCA</title>
		<author>
			<persName><forename type="first">J</forename><surname>Wettinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Behrendt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Binz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Breitenbücher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Breiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Leymann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Moser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Schwertle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Spatzier</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">3rd International Conference on Cloud Computing and Services Science</title>
				<editor>
			<persName><forename type="first">F</forename><surname>Desprez</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Ferguson</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">E</forename><surname>Hadar</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">F</forename><surname>Leymann</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Jarke</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Helfert</surname></persName>
		</editor>
		<imprint>
			<publisher>SciTePress</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="437" to="446" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
