10

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.

1
  • There's also Dev/Integration/QA/Pre-Prod/Production but it really depends on the specific process you do. There's a lot of overlap and similarities because as the answer from @RobertHarvey states, they evolved out of necessity. Aug 20, 2018 at 18:49

1 Answer 1

9

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.

2
  • References are a key thing I'm looking for here. Where is this actually specified? How do we account for the slightly different formulation of dev, build, integration, uat, prod described in the SDLC link above? Also, how can we know this practice wasn't included in the SDLC because it was in use elsewhere? Aug 18, 2018 at 13:48
  • @mikewilliamson: The idea of separating the development environment from the testing environment has been around for a very long time. I doubt very much that you'll find a "point of origin" for this, and stand by my assertion that it naturally emerged as the logical solution to a common problem, much like adding memory or a new hard disk to your computer solves a specific, common problem. Have a look at Continuous Delivery; it explains how separate collaborative environments emerged with the rise of the Internet. Aug 20, 2018 at 18:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.