Ein Software Stack ist ein Satz von Softwarekomponenten oder Subsystemen, die verwendet werden, um Anwendungen zu erstellen, die in einem Computernetzwerk funktionieren, ohne dass zusätzliche externe Ressourcen benötigt werden, um optimal zu laufen. Damit ein Software-Ingenieur eine Desktop- oder mobile Anwendung erstellen kann, muss er verschiedene Komponenten (oder Abschnitte) des Software Stacks nutzen. Software Stacks bestehen in der Regel aus verschiedenen Ebenen (z. B. Operating System, Webserver,
Middleware, Datenbank), und die Anwendungen werden auf dem Stack ausgeführt. In den meisten
Netzwerkarchitekturen besteht der Stack aus mehreren Schichten, z. B. dem
Application Layer, dem Client Layer und dem Service Layer.