A method comprising: using a system definition model in a development phase to design a system, wherein the system definition model includes one or more requirements of the system to be satisfied by an environment in which the system is to be deployed in order for the system to run in the environment, wherein the system includes an application; validating the environment for the system by comparing the one or more requirements of the system with the environment in which the system is to be deployed to determine whether the one or more requirements of the system are satisfied by the environment during the development phase; validating the system for the environment by comparing one or more requirements of the environment with the system to determine whether the one or more requirements of the environment are satisfied by the system during the development phase; subsequently using the system definition model in a deployment phase of the system to deploy the system on one or more computing devices; and after deployment of the system, calling one or more functions defined within the system definition model during a management phase of the system to make changes to one or more systems deployed on the one or more computing devices, characterised in that: wherein the requirements of the respective system are used to determine how the changes affect the system, wherein the changes are provided as an atomic set of actions that complete or fail as a group, and wherein the actions include references to instances on the system, said action references populated with the value they refer to. using a system definition model in a development phase to design a system, wherein the system definition model includes one or more requirements of the system to be satisfied by an environment in which the system is to be deployed in order for the system to run in the environment, wherein the system includes an application; validating the environment for the system by comparing the one or more requirements of the system with the environment in which the system is to be deployed to determine whether the one or more requirements of the system are satisfied by the environment during the development phase; validating the system for the environment by comparing one or more requirements of the environment with the system to determine whether the one or more requirements of the environment are satisfied by the system during the development phase; subsequently using the system definition model in a deployment phase of the system to deploy the system on one or more computing devices; and after deployment of the system, calling one or more functions defined within the system definition model during a management phase of the system to make changes to one or more systems deployed on the one or more computing devices, characterised in that: wherein the requirements of the respective system are used to determine how the changes affect the system, wherein the changes are provided as an atomic set of actions that complete or fail as a group, and wherein the actions include references to instances on the system, said action references populated with the value they refer to. wherein the requirements of the respective system are used to determine how the changes affect the system, wherein the changes are provided as an atomic set of actions that complete or fail as a group, and wherein the actions include references to instances on the system, said action references populated with the value they refer to.