Software components

Self-contained, replaceable units of code that expose defined interfaces and can be combined to build larger systems.

Scheme

Broader terms