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. Regularly, the Components of a Software Stack are developed by different developers independently of one another and are integrated together and single named entity, forming the basis for many systems. For example:
See also Solution Stack