Environments are built to support different activities e.g. User Acceptance Test(UAT), System Integration Test(SIT), Development, Test etc.
They must be guaranteed to be in a known state, otherwise testing and validation is pointless as they don't reflect the target production environment.
Deliverable: A versioned binary object that has been approved by the Development team for deployment and localisation to an Environment. This should include OS, middle-ware, applications, network, security.
Release: A complete set of versioned Deliverables that constitute a candidate release (and subsequently approved for release to production by Release Management). Think of this as a list of deliverables that should be installed to recreate a specific environment instance)
Environment: A self-contained physical and/or virtual infrastructure that has a sub-set (depending on the needs of an Environment) of the Deliverables from a specific Release deployed.
Environment Config: Each environment has a set of properties that makes it unique when compared to other environments. These can be stored in a property file as a set of name/value pairs. The Names are used as TOKENS in the Deliverables. Each Deliverable contains a manifest of files that require localisation before deployment.
Validation: Automated validation process to ensure that all Deliverables in an Environment are at the correct version (according to the Release being used by an Environment) and that common issues are accounted for.