A set of routines, protocols, and tools for building software applications.