Towards Software Product Lines Based Cloud Architectures
Cloud computing has emerged as a model for utility computing that promotes on-demand scalability, flexible application deployment and reuse. Software product lines (SPL) promote reusable application development for product families. As any computing system, cloud-based systems evolve to respond to changing clients' requirements. Cloud-based applications can be modeled as Software-as-a-Service (SaaS) families similar to the SPL products. As SPL development techniques rely on feature models to describe the commonality and variability of family member applications, such techniques can be used to model variability in SaaS. In this paper, we describe a unified and systematic framework for modeling cloud services in a vendor-neutral manner. In addition, we demonstrate the applicability of the variability framework for building and customizing SaaS multitenant applications. Our approach is based on a meta-model that formalizes the multiple views of service-oriented SaaS applications. A proof of concept tool that automatically generates multitenant applications (to adapt to changing requirements of tenants) is presented. Our approach facilitates development of cloud SaaS families in a systematic, consistent, and platform independent way.