This is an old revision of the document!
A Software Stack is comprised from a set of Software Subsystems or Components connected together to create a complete Platform. Once defined, a Software Stack is self-contained and requires no additional subsystems or components to support applications. Applications are said to run on or run on top of the resulting Software Stack.
For example, to develop a web application, the architect defines the stack as the target Operating System (OS), Web Server, Database, and Programming Language environment. Another version of a software stack is operating system, middleware, database, and applications.[2] Regularly, the components of a software stack are developed by different developers independently from one another.
Some components/subsystems of an overall system are chosen together often enough that the particular set is referred to by a name representing the whole, rather than by naming the parts. Typically, the name is an acronym representing the individual components.[3]