Article Preview
Top1. Introduction
Cloud computing is defined as applications, services and resource pools that are dynamically provisioned over Internet in a co-ordinated fashion. It is a recently emerging computing paradigm that enables convenient on-demand access to a pool of shared computing resources that can be rapidly configured and provisioned (NIST, 2011). However, there are many concerns and issues to be settled before venturing into the cloud (Benson et al., 2010; Bisong & Rahman, 2011). Fundamental challenges in adapting current software engineering concepts into the cloud are not explored and given due importance (Guha & Al-Dabass, 2010; Mohagheghi & Sæther, 2011). This paper identifies such challenges and issues involved in bringing existing software systems into the cloud, since such systems are predominantly developed based on traditional service-oriented architecture (SOA) concepts. These have to be adapted and extended suitably for the cloud. Our premise is that these challenges should be given prominence as they provide opportunities for software engineering experts and researchers to re-engineer their thinking. This paper takes a modest step to facilitate this process by providing a research roadmap.
Cloud computing has the capability of combining the recent developments in Web technologies, both in hardware as well as software contexts, such as networking, APIs, semantic Web 2.0 languages, SOA protocols and standards (Guha & Al-Dabass, 2010; Mohagheghi & Sæther, 2011). Apart from the maturity achieved in high-end anywhere and anytime distributed computing paradigms such as Internet and Grid networks, recent trends in utilising these resources for intelligent data analysis and provisioning of user-centric services indicate the capacity of cloud to provide quality of services in a cost-effective manner. Small and large organisations could now host their data and business application centres virtually in the cloud. However, for the existing data, workflow and business applications to be migrated into the cloud, there are software engineering challenges that need to be addressed first (Guha & Al-Dabass, 2010).
Due to the unprecedented scale and heterogeneity of the required infrastructure, cloud computing poses a variety of challenges to conventional software engineering principles adopted in the existing systems (Enck et al., 2010; Venkatraman & Wadhwa, 2012). Some challenges that are typical of any new information system paradigm would cover the technological issues, while others are non-technological in nature (Jennings, 2010; Shenai et al., 2013). In this context, there requires a rethinking to exploit the Grid, SOA and Web technologies for the realisation of services on the cloud systems (Ramanathan & Venkatraman, 2010). This demands setting up a research roadmap to address both technological and non-technological gaps that relate to topics for research such as, elastic scalability, programming models, data management, systems life cycle management, privacy and security, economic models, governance and legislation.
In general, problems in deep understanding of the challenges encompassing the cloud arise due to lack of proper knowledge of the cloud architecture, types, models and user-roles that impact the cloud adoption (Elson & Howell, 2009; Ramanathan & Venkatraman, 2012). Hence, the aim of this paper is to identify the technological and non-technological gaps present between current cloud models and software engineering design principles and practices that need to be adapted and extended for the new cloud paradigm. We adopt a systemic methodology, and identify the software engineering research challenges for these gaps. Finally, we provide a set of recommendations for addressing the identified software engineering challenges suitably in order to facilitate a smooth migration to the cloud service paradigm.