1. A method of designing a system that includes a computer application hosted on a hosting environment, the method comprising: (a) modeling the hosting environment such that the hosting environment model includes hosting environment settings and constraints placed on the application; (b) modeling the application such that the application model includes application settings and constraints placed on the hosting environment; and (c) validating the design of the system by comparing the hosting environment model to the application model.