@article {2017:jwe:liquid,
	title = {Architecting Liquid Software},
	journal = {Journal of Web Engineering},
	volume = {16},
	year = {2017},
	month = {September},
	pages = {433-470},
	abstract = {The Liquid Software metaphor refers to software that can operate seamlessly across multiple devices owned by one or multiple users. Liquid software applications can take advantage of the computing, storage and communication resources available on all the devices owned by the user. Liquid software applications can also dynamically migrate from one device to another, following the user{\textquoteright}s attention and usage context. The key design goal in Liquid Software development is to minimize the additional efforts arising from multiple device ownership (e.g., installation, synchronization and general maintenance of personal computers, smartphones, tablets, home and car displays, and wearable devices), while keeping the users in full control of their devices, applications and data. In this paper we present the design space for Liquid Software, categorizing and discussing the most important architectural dimensions and technical choices. We also provide an introduction and comparison of two frameworks implementing Liquid Software capabilities in the context of the World Wide Web.
},
	keywords = {design space, liquid software, multi-device programming, software architecture},
	doi = {10.26421/JWE16.5-6},
	url = {http://www.rintonpress.com/journals/jweonline.html$\#$v16n56},
	author = {Andrea Gallidabino and Cesare Pautasso and Tommi Mikkonen and Kari Systa and Jari-Pekka Voutilainen and Antero Taivalsaari}
}
@conference {liquidjs:2016:wicsa,
	title = {On the Architecture of Liquid Software: Technology Alternatives and Design Space},
	booktitle = {13th Working IEEE/IFIP Conference on Software Architecture (WICSA 2016)},
	year = {2016},
	month = {April},
	address = {Venice, Italy},
	abstract = {The liquid metaphor refers to software that operates seamlessly across multiple devices owned by one or multiple users. Liquid software architectures can dynamically deploy and redeploy stateful software components and transparently adapt them to the capabilities of heterogeneous target devices. The key design goal in liquid software development is to minimize the efforts that are related to multiple device ownership (e.g., installation, synchronization and general maintenance of personal computers, smartphones, tablets, home displays, cars and wearable devices), while keeping the users in full control of their devices, applications and data. In this paper we present a design space for liquid software, categorizing and discussing the most important architectural issues and alternatives. These alternatives represent relevant capabilities offered by emerging technologies and deployment platforms that are then positioned and compared within the design space presented in the paper.},
	keywords = {design space, liquid software, liquid.js},
	author = {Andrea Gallidabino and Cesare Pautasso and Ville Ilvonen and Tommi Mikkonen and Kari Systa and Jari-Pekka Voutilainen and Antero Taivalsaari}
}
@conference {lisa:wicsa2014,
	title = {The Stream Software Connector Design Space: Frameworks and Languages for Distributed Stream Processing},
	booktitle = {11th Working IEEE/IFIP Conference on Software Architecture (WICSA 2014)},
	year = {2014},
	month = {April},
	address = {Sydney, Australia},
	abstract = {In recent years we witnessed the rise of applications in which data is continuously generated and pushed towards consumers in real time through complex processing pipelines. Software connectors like remote procedure call (RPC) do not fit with the needs of such applications, for which the publish/subscribe and the stream connectors are more suitable. 
This paper introduces the design space of the stream software connector by analyzing recent stream processing engine frameworks and domain specific languages featuring native streaming support. On the one side, we want to classify and compare streaming systems based on a taxonomy derived from the wide range of features they offer (i.e., pipeline dynamicity and representation, load balancing and deployment flexibility).
On the other side, the gaps in the design space we identify point at future research directions in the area of distributed stream processing. 
To do so, we gather valuable architectural knowledge in terms of architectural issues and alternatives, elicited by surveying the most important architectural decisions made by the designers of several representative streaming framework architectures.},
	keywords = {design space, software connector, streaming, survey},
	author = {Masiar Babazadeh and Cesare Pautasso}
}
@conference {DBLP:conf/eics/AghaeeNP12,
	title = {Reusable decision space for mashup tool design},
	booktitle = {4th ACM SIGCHI symposium on Engineering interactive computing systems (EICS 2012)},
	year = {2012},
	month = {June},
	pages = {211-220},
	address = {Copenhagen, Denmark},
	abstract = {Mashup tools are a class of integrated development environments that enable rapid, on-the-fly development of mashups - a type of lightweight Web applications mixing content and services provided through the Web. In the past few years there have been growing number of projects, both from academia and industry, aimed at the development of innovative mashup tools. From the software architecture perspective, the massive effort behind the development of these tools creates a large pool of reusable architectural decisions from which the design of future mashup tools can derive considerable benefits. In this paper, focusing on the design of mashup tools, we explore a design space of decisions comprised of design issues and alternatives. The design space knowledge not only is broad enough to explain the variability of existing tools, but also provides a road-map towards the design of next generation mashup tools.},
	keywords = {architectural decisions, design space, survey, Web mashups},
	doi = {10.1145/2305484.2305520},
	author = {Saeed Aghaee and Marcin Nowak and Cesare Pautasso}
}
