## 3 Related Work  
Much of the recent work on cloud-based application development concentrates on the infrastructure level. For example, the ability to manipulate, integrate and customize cloud service descriptions across different cloud providers has been studied in [12] that has IaaS, application and deployment orchestrators but falls short of proposing a solution for the problem at hand. The DMTF has published standards such as the Open Virtualization Format (OVF) [8], to provide an open packaging and distribution format for virtual machines. The work in [13] is grounded on the OVF and proposes a service definition language for deploying complex Internet applications in federated IaaS clouds. These applications consist of a collection of virtual machines (VMs) with several configuration parameters (e.g., hostnames, IP addresses and other application specific details) for software components (e.g., web/application servers, database, operating system) running on the VMs. In [14], this language has been extended into a _service definition manifest_ to serve as a contract between a service provider and the infrastructure provider. In this contract, architectural constraints and invariants regarding the infrastructure resource provisioning for an application service are specified and can be used for on-demand cloud infrastructure provisioning at run-time. Using the service definition manifest to specify the structure of a SaaS application, _i.e._, the SaaS components and their required Virtual Execution Environments (VEE), the Reservoir architecture in [15] can automatically provision the VEE instances that can run simultaneously without conflict on a federated cloud infrastructure of multiple providers. KPI monitoring mechanisms and elasticity rules in the manifest act as a contract that guarantees the required Service Level Agreement (SLA) between the SaaS provider and the Reservoir architecture. Model-driven approaches are also employed for the purpose of automating the deployment of complex IaaS services on cloud infrastructure. For instance, the work in [16] proposes a virtual appliance model, which treats virtual images as building blocks for IaaS composite solutions. Virtual appliances are composed into virtual solution model and deployment time requirements are then determined in a cloud-independent manner using a parameterized deployment plan. In a similar way, the approach in [17] describes a solution-based provisioning mechanism using composite appliances to automate the deployment of complex application services on a cloud infrastructure. In practice, many products have appeared on the market that target the integration issue among different IaaS clouds. The Nimbula product [18] allows users to build their own private IaaS clouds that are interoperable with the Amazon's EC2 IaaS offerings, _i.e._, users can swap in and out virtual images between their private Nimbula cloud and the public EC2 cloud. Besides, the most appealing attempt for API standardization is the Deltacloud solution [19] that provides a f a pde API for customers to consume IaaS offerings from different providers. In conclusion, the above mentioned cloud initiatives in developing cloud-based applications, especially the ones related to the OVF, target the infrastructure level only. _I.e._, they allow the specification of infrastructure constraints for deploying the applications directly on (federated) data centers but fail to cover the holistic picture of a top-down development of SBAs on the cloud that can guide developers in selecting, resolving and composing SaaS and PaaS offerings. On the cloud application level, we observe some initial efforts in proposing methodologies for application development on the cloud. The authors in [20] propose a systematic process for developing high-quality cloud SaaS, taking into considerations the key design criteria for SaaSs and the essential commonality/variability analysis to maximize the reusability.