Term Paper – CSC 557 Distributed and Cloud Computing
Name: Richard Appiah
Topic: Contemporary Software Development Using Cloud Resources
Executive Summary
Cloud-based software development is a modern and an alternative approach to traditional software development where most of the development resources such as hardware, software and teams of developers are built on the cloud and mostly organized around the principles of what is known as Service Oriented Architectures (SOA). Many cloud-based software development tools exist on the internet. Some popular ones, according to the website venturebeat.com, includeGoogle Cloud Playground, New Relic, Adobe Edge & Creative Cloud, Parse, GitHub, Heroku, Microsoft Azure, Joyent, Kinvey and Urban Airship.
Benefits
- Higher computing power – for both large global software solutions providers and small scale enterprises
- Professional and technical management and ability to track projects in real time
- Better security handling by Cloud service providers
- Reliability and ease of resource expansion through virtualization
- Availability of common software development tools on the cloud
- Easy and cheaper to create software testing environment on the cloud
- Building efficient software development team on the cloud
- On-demand approach to cloud resource usage offers cost-effective way of cloud-based software development
- Proximity to stakeholders
- 24-hour development by following the sun.
Some Known Challenges
- Difficulty in team members bridging the gap between client requirements and the available facilities on the cloud – a complexity that could potentially result in higher development cost and dissatisfied clients.
- Developers have to master numerous applications programing interfaces (APIs) for interacting with the cloud infrastructure, provided by Cloud vendors.
- Distributed software development on the cloud brings about diverse challenges due to geographic, cultural, linguistic, and temporal distances between project development teams.
- Difficulty in managing project knowledge transfer, among teams.
Introduction
Influenced by globalization and off-shoring, many software developers increasingly find themselves operating from multiple countries and cultures across several time zones. This has, in recent times, necessitated the need for such developers to work across cities and countries in an efficient and cost effective manner. The cloud, which is described as a World Wide Web environment where logged in users can access different features deployed by the underlying cloud resource provider, usually in an elastic fashion. Collaborative software development had been in existence for a while, and it usually involved developers working on same corporate network. Cloud-based software development, thus takes this concept to a higher level that harnesses the aggregating computing powers and innovations offered in such computing technologies as grid computing, distributed computing, parallel computing, utility computing, network storage technologies, virtualization, load balance among others.
Cloud-Based Software Development Architectures
Following show one generic cloud-motivated agile software development model and three specific implementations of cloud-based software development architectures:
Architecture 1: A generic Cloud-based Software Development Architecture – an extended version of the Agile Software Development Model.
Architecture 2: Cloud-Powered Software Development Life Cycle - an innovative social gaming and location based platform in AWS, for the creation of locally branded applications.
Architecture 3: The OpenCloudwareSDLC architecture:An Open Software Engineering Platform for the collaborative development of distributed applications to be deployed on multiple Cloud infrastructures.
Architecture 4: The WSO2 App Factory Architecture: A multi-tenant, elastic and self-service Enterprise DevOps platform that enables multiple project teams to collaboratively create, run and manage enterprise applications. Combining complete application lifecycle management and Platform-as-a-Service (PaaS) capabilities, WSO2 App Factory makes it possible to develop, test, deploy to production and retire applications with a single click.
Comparison: Application Development Productivity – Oldversus New Ways
The Old Ways / The New WaysSlow application building / Quicker application development
Business applications building becoming complex / Simplifies business application development
Involves too many moving parts, both software & hardware to buy, install, configure and maintain / The entire development takes place on the Web – with extremely powerful, scalable, and secured development platform
Complex development environment where one little change triggers repercussions throughout the development / Highly reduced app. Development life cycle, with faster response to customer requests
Difficulty in addressing constantly changing developmental needs / Developers and resources can be added anytime anywhere
Higher development cost / Development cost under control
Motivation for Software Development onthe Cloud
Global software solutions providers have adopted the use of the Cloud in enhancing their software projects outputs through the implementation of the Global Software Development paradigm. This approach results in increased interoperability, diversification, and a better business-technology alignment, as well as overcoming the inability of standard software development procedures dynamically scaling up to meet global scale software projects.Other supporting factors in favor of the shift to cloud-based software development include ease of code reusability, reliability, extendibility, and the inexpensive nature of using the cloud – mostly in the SaaS, which intrinsically offers efficient collaboration between geographically distributed teams during the various developmental phases as requirements, design, coding and testing.
Current Trends
- Domain Specific Languages
Many researchers are working on Domain Specific Languages (DSL) that provide higher levels of abstraction and automated code generation tools to allow cloud-based software developers to focus mainly on the design. One major issue currently faced is the vendor specific nature of cloud computing resources. This group of researchers believes that progress in efficient DSLs will help manage this challenge with a comparable effect like how a DSL like SQL has become a useful binding force among many vendors.
- Innovations in Cloud-Based Software Development Models
Researchers are working mostly on how current software development models can be modified to suite software developers who intend migrating their development workforce and resource to the cloud. One such work is the proposed Extended Agile Model by S. Patidar et al that seeks to encourage higher level of collaboration between development teams and representatives from the cloud provider – illustrated in Architecture 1.
The Major Elements of Cloud-Based Software Development: A Summary
The cloud-based SDLC is designed to leverage all the benefits of cloud computing as well as mitigating its associated challenges throughout the development process in a strategic way.
All the phases like planning, designing, construction, testing and deployment require interaction with representatives from the cloud provider(s).
Based on work by S. Patidar et al, the separated roles of cloud provider(s) and software developers are as shown in the following table:
Activity / RolesSW Developer / Cloud Provider
Requirement Gathering / Elicitation / Resource, Accounting, VM
Analysis / Software Modules / Software/ Hardware Architecture
Design / Interface Design, Data Types, Cost Estimation, Schedule Estimation / Component Reuse
Construction / Coding, Integration of Web Services / Implementation Details
Testing / Unit Test, Integration Test / Integration Test
Deployment / Operation & Maintenance
It must also be noted here that resource accounting on the cloud platform is done by the cloud provider in the requirement gathering phase.
Software, software – hardware mapping, interface design, data types design, cost estimation and schedule estimation of the project, all are done in collaboration with the cloud provider.
In the construction phase where many enterprises are involved, then errors should be mitigated with mediations from the cloud provider, and ideally, all these must be clearly spelt out in a Quality of Service based maintenance agreement with the cloud provider.
Conclusion
Cloud computing offers a paradigm shift over traditional computing infrastructure for the development and deployment of software. Although, there is no doubt this comes with a number of associated software engineering challenges such as developing teams having to learn large number of APIs and working across different cultures, times zones and jurisdictions, it has revolutionized the way software solution providers undertake their operations around the globe. As it draws strength from the underlying service oriented cloud infrastructure, cloud-based software development has reduced drastically the amount of work required to produce efficient software in a timely manner and within corporate budgets.
Works Cited
- OpenCloud
- Amazon Web Services Blog
- WSO2 App Factory
- A DSL-based Approach to Software Development and Deployment on Cloud
- Development of Software with Cloud Computing in 3TZ Collaborative Team Environment
- The Application and Development of Software Testing in Cloud Computing Environment
- Challenges of Software Development on Cloud Platform
- A Model for Global Software Development with Cloud Platforms
- Using the Cloud to Facilitate Global Software Development Challenges
- A Survey on Trusted Cloud Software Development