Modeling for the Cloud
(based on [FR10b])
Cloud computing is poised to become a major driving force behind European and American businesses. Long-standing projects like the SETI@Home project and facilities such as SourceForge leverage third-party distributed storage and computational resources to deliver services. Companies are seeking to commercialize this approach to service delivery through the use of cloud computing technologies. Cloud computing commerce can take several forms: customers can rent an infrastructure, a platform, or predefined services. While predefined cloud-based services for email, blogs, wikis, and media storage are well-known, more complex business-oriented applications like customer relationship management are starting to appear. While companies such as Amazon, Google, and Force.com are providing services for and from the cloud there are aspects of cloud computing that can benefit from research in the model-driven software development area. For example, software and system modeling research can yield results that address problems related to the safety and integrity of data (where the user does not control the physical location of the storage anymore), efficiency of storage and retrieval, and decoupling of applications from underlying operating systems, and other computing platforms and infrastructures. Software and system modeling research can also produce results that head-off future problems related to migration of services to new cloud computing environments that will inevitably arise as technologies evolve. For example, enabling interoperability across cloud computing environments, and integrating mobile and cloud-based applications are challenging problems that will arise. As is the case for many new technologies, cloud computing may be a solution for some problems, but its use will give rise to other challenging problems.
From our perspective, it is also interesting to understand what forms of specialized processes are needed to develop cloud applications. While it is not clear, how an appropriate development process will look like, we suspect that traditional processes may not be adequate. The following are some of the issues that must be addressed in a good process: when delivering a 24/7 highly available service to a wide customer base, significant errors cannot be tolerated; evolution of the software, as well as its data, have to be better supported by tools, because versions of old and new software need to run in parallel for compatibility reasons; and customer upgrades to enhanced functionality must be supported. Business process-aware services flexibly need to be tailored and customized to evolving user requirements. Services that run in parallel will occasionally need to interact and exchange information.
Use of product line methods, evolutionary techniques such as refactoring, and automated testing may help, but the use of model-based software engineering can have a major impact through its support for separating platform-specific concerns from platform-independent concerns. Use of models and intelligent generators will help us to more efficiently develop and evolve a service. Model transformation techniques will also help cloud application developers to migrate data in the spirit of schema evolution. Achieving good coverage with automated tests is much easier, when only the model needs to be covered and the code is generated from the model. Furthermore, automated tests can also be generated from test models. Finally, models can be used to create customizable services. For example, restricted forms of class and activity diagrams, state transition diagrams, and even domain-specific languages, can be used to customize a general service to company or project specific needs.
Model-based software development approaches can help manage the complexity of developing of current and future cloud computing applications, but efficient development of beneficial applications requires the availability of appropriate, lightweight, and easy-to-use techniques and tools. We can envision that in the not-so-distant future, online customers will configure their own information storage and functionality for various services.
This essay is essentially taken from a SoSyM editorial, which is published under the Creative Commons licence and contains some updates:
-
[FR10b]In: Journal Software and Systems Modeling (SoSyM), Volume 9(2), pp. 139-140, Springer Berlin / Heidelberg, 2010.