The origin of “deployment environments” (dev/test/staging/prod)

deploymentdevelopment-environmentsdlc

When reading about software deployment/release, I see many people referring to an idea that Wikipedia calls "deployment environments".

The deployment environments of Development, Test, Acceptance and Production are referred to remarkably consistently, but I can never find references that point to an origin.

I've tried to look at both SDLC and ITIL. At least according to Wikipedia, the SDLC prescribes a similar list of separate development environments, and ITIL has a concept of separate environments and a release management process to move software between them.

I'm curious about from where/whom this concept of Development, Test, Acceptance and Production originated, and why those particular environments (both "why 4?" and "why those four) and any of the original reasoning behind it. Specifically I'm after references to original documents and sources.

Best Answer

The environments of Development, Test, Acceptance and Production evolved out of necessity, pragmatism and convenience. In other words, they exist because they make sense.

The origin of these environments is the Software Development Life Cycle. The three environments correspond roughly to the Development, Integration and test, and Operations and Maintenance phases of the SDLC.

Why these particular environments? To provide isolation between the SDLC phases.

  • The Development environment provides a sandbox with which software developers can try out their ideas in safety.

  • The Test environment provides an area where Q&A (i.e. attempting to break the software) can be performed without affecting either the development or production environments.

  • The Acceptance environment exactly duplicates the production environment, but allows stakeholders to try out the software without worrying about breaking actual production.

  • Production is isolated from the other environments until the software has passed all of the other stages and is ready to deploy.

Related Topic